Проблема с системой бизнесов

В теме 8 сообщений

BigPaulo
Новичок

Установил себе систему бизнесов на сервер DM,Drift. Через РКОН ставлю сам бизнес, купая его мне высвечивается ошибка о недостатке средств на счету, а на счету у меня есть данная сумма. ПОмогите вот вся система бизнеса.

Спойлер

// ========================================================================== //

// ~~~~~~~~~~~~~~~ ДИНАМИЧЕСКАЯ СИСТЕМА БИЗНЕСОВ ОТ REMARION ~~~~~~~~~~~~~~~~ //
// ___________________Переделал и исправил баги Roman_Zomse _________________ //
// ========================================================================== //

#include <a_samp>

#include <streamer>
#include <MXini>

#undef MAX_PLAYERS
#define MAX_PLAYERS 51 //максимум игроков на сервере + 1 (если 50 игроков, то пишем 51 !!!)

#define BUS_MAX 300 //максимум бизнесов на сервере (от 1 до 300)
#define BUS_PLAY 2 //максимум бизнесов, сколько может купить один игрок (от 1 до 5)
#define BUS_DAY 3 //число суток, сколько бизнес "закреплён" за игроком без права перекупки (от 1 до 5)

#if (BUS_MAX < 1)
    #undef BUS_MAX
    #define BUS_MAX 1
#endif
#if (BUS_MAX > 300)
    #undef BUS_MAX
    #define BUS_MAX 300
#endif
#if (BUS_PLAY < 1)
    #undef BUS_PLAY
    #define BUS_PLAY 1
#endif
#if (BUS_PLAY > 5)
    #undef BUS_PLAY
    #define BUS_PLAY 5
#endif
#if (BUS_DAY < 1)
    #undef BUS_DAY
    #define BUS_DAY 1
#endif
#if (BUS_DAY > 5)
    #undef BUS_DAY
    #define BUS_DAY 5
#endif

forward LoadBusSystem();//загрузка системы бизнесов
forward UnloadBusSystem();//выгрузка системы бизнесов
forward DatCor();//коррекция даты
forward TimCor();//коррекция времени
forward ReadCorTime();//чтение файла cortime.ini
forward dopfunction(per);//функция дальнего вызова для чтения коррекции времени
forward OneMin();//1-минутный таймер

new timecor[8];//переменная коррекции времени 2
new CorTime[5];//переменная коррекции времени 1
new RealName[MAX_PLAYERS][MAX_PLAYER_NAME];//реальный ник игрока
new playspabs[MAX_PLAYERS];//спавн игрока
new playIDbus[MAX_PLAYERS];//ИД бизнеса для игрока
new DelayPickup[MAX_PLAYERS];//задержка вызовов паблика пикапов
new buscount[BUS_MAX];//0- бизнес не создан, 1- бизнес создан
new busidplay[BUS_MAX];//-600- если владелец бизнеса офф-лайн, ИД игрока- если владелец бизнеса он-лайн
new busmoney[BUS_MAX];//счётчик минут бизнеса (если игрок он-лайн)
new busname[BUS_MAX][64];//название бизнеса
new busplayname[BUS_MAX][MAX_PLAYER_NAME];//имя владельца бизнеса
new buscost[BUS_MAX];//стоимость бизнеса
new busminute[BUS_MAX];//через сколько минут бизнес будет приносить доход
new busincome[BUS_MAX];//доход от бизнеса
new busday[BUS_MAX];//дата окончания срока без права перекупки
new Float:buscordx[BUS_MAX];//координаты бизнеса
new Float:buscordy[BUS_MAX];
new Float:buscordz[BUS_MAX];
new PickupID[BUS_MAX];//массив ИД пикапов
new MapIconID[BUS_MAX];//массив ИД мап-иконок
new Text3D:Nbus[BUS_MAX];//массив ИД 3D-текстов
new timeronemin;//переменная 1-минутного таймера

public OnFilterScriptInit()
{
    LoadBusSystem();//загрузка системы бизнесов
    timeronemin = SetTimer("OneMin", 59981, 1);//запуск 1-минутного таймера
    return 1;
}

public OnFilterScriptExit()
{
    KillTimer(timeronemin);//остановка 1-минутного таймера
    UnloadBusSystem();//выгрузка системы бизнесов
    return 1;
}

public OnPlayerConnect(playerid)
{
    playspabs[playerid] = 0;//игрок не заспавнился
    playIDbus[playerid] = -600;//не существующий ИД бизнеса для игрока
    new pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pname, sizeof(pname));
    strdel(RealName[playerid], 0, MAX_PLAYER_NAME);//очистить реальный ник игрока
    new aa333[64];//доработка для использования Русских ников
    format(aa333, sizeof(aa333), "%s", pname);//доработка для использования Русских ников
    strcat(RealName[playerid], aa333);//запомнить реальный ник игрока (доработка для использования Русских ников)
//    strcat(RealName[playerid], pname);//запомнить реальный ник игрока
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    playspabs[playerid] = 0;//игрок не заспавнился
    for(new j; j < BUS_MAX; j++)//цикл для всех бизнесов
    {
        if(buscount[j] == 1 && strcmp(RealName[playerid], busplayname[j], false) == 0)//если бизнес существует,
        {//и это бизнес игрока, то:
            busidplay[j] = -600;//даём бизнесу несуществующий ИД игрока
            busmoney[j] = 0;//обнуляем счётчик минут бизнеса
        }
    }
    return 1;
}

public OnPlayerSpawn(playerid)
{
    if(playspabs[playerid] == 0)//если игрок ещё не заспавнился, то:
    {
        for(new j; j < BUS_MAX; j++)//цикл для всех бизнесов
        {
            if(buscount[j] == 1 && strcmp(RealName[playerid], busplayname[j], false) == 0)//если бизнес существует,
            {//и это бизнес игрока, то:
                busidplay[j] = playerid;//даём бизнесу ИД он-лайн игрока - владельца бизнеса
                busmoney[j] = 0;//обнуляем счётчик минут бизнеса
            }
        }
    }
    playspabs[playerid] = 1;//игрок заспавнился
    return 1;
}

stock ini_GetKey( line[] )
{
    new keyRes[256];
    keyRes[0] = 0;
    if ( strfind( line , "=" , true ) == -1 ) return keyRes;
    strmid( keyRes , line , 0 , strfind( line , "=" , true ) , sizeof( keyRes) );
    return keyRes;
}

stock ini_GetValue( line[] )
{
    new valRes[256];
    valRes[0]=0;
    if ( strfind( line , "=" , true ) == -1 ) return valRes;
    strmid( valRes , line , strfind( line , "=" , true )+1 , strlen( line ) , sizeof( valRes ) );
    return valRes;
}

strtok(const string[], &index)
{
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
        index++;
    }

    new offset = index;
    new result[30];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
        result[index - offset] = string[index];
        index++;
    }
    result[index - offset] = EOS;
    return result;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    new idx;
    idx = 0;
    new string[256];
    new sendername[MAX_PLAYER_NAME];
    new cmd[256];
    new tmp[256];
    cmd = strtok(cmdtext, idx);
    if(strcmp(cmd, "/helpbus", true) == 0)
    {
        if(IsPlayerAdmin(playerid))
        {
            SendClientMessage(playerid, 0x00FFFFFF, " -------------------------- Система бизнесов -------------------------- ");
            SendClientMessage(playerid, 0x00FFFFFF, "   /helpbus - помощь по командам BusSystem");
            SendClientMessage(playerid, 0x00FFFFFF, "   /createbus - создать бизнес");
            SendClientMessage(playerid, 0x00FFFFFF, "   /removebus - удалить бизнес по его ID");
            SendClientMessage(playerid, 0x00FFFFFF, "   /removebusall - удалить все бизнесы");
            SendClientMessage(playerid, 0x00FFFFFF, "   /gotobus - телепортироваться к бизнесу по его ID");
            SendClientMessage(playerid, 0x00FFFFFF, "   /reloadbus - перезагрузка системы бизнесов");
            SendClientMessage(playerid, 0x00FFFFFF, " --------------------------------------------------------------------------------- ");
        }
        else
        {
            SendClientMessage(playerid, 0xFF0000FF, " У Вас нет прав на использование этой команды !");
        }
        return 1;
    }
    if(strcmp(cmd, "/createbus", true) == 0)
    {
        if(IsPlayerAdmin(playerid))
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, 0x00FFFFFF, " Используйте: /createbus [стоимость(100-2000000 $)] [число минут, через");
                SendClientMessage(playerid, 0x00FFFFFF, " которое бизнес будет приносить доход(10-120)] [доход от бизнеса");
                SendClientMessage(playerid, 0x00FFFFFF, " за минуты он-лайн игры(100-2000000 $)] [название бизнеса(от 3 до 32 символов)]");
                return 1;
            }
            new para1 = strval(tmp);
            if(para1 < 100 || para1 > 2000000)
            {
                SendClientMessage(playerid, 0xFF0000FF, " Стоимость от 100 $ до 2000000 $ !");
                return 1;
            }
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, 0xFF0000FF, " /createbus [стоимость] [число минут] [доход] [название бизнеса] !");
                return 1;
            }
            new para2 = strval(tmp);
            if(para2 < 10 || para2 > 120)
            {
                SendClientMessage(playerid, 0xFF0000FF, " Число минут от 10 до 120 !");
                return 1;
            }
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, 0xFF0000FF, " /createbus [стоимость] [число минут] [доход] [название бизнеса] !");
                return 1;
            }
            new para3 = strval(tmp);
            if(para3 < 100 || para3 > 2000000)
            {
                SendClientMessage(playerid, 0xFF0000FF, " Доход от 100 $ до 2000000 $ !");
                return 1;
            }
            new length = strlen(cmdtext);
            while ((idx < length) && (cmdtext[idx] <= ' '))
            {
                idx++;
            }
            new offset = idx;
            new result[128];
            while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
            {
                result[idx - offset] = cmdtext[idx];
                idx++;
            }
            result[idx - offset] = EOS;
            if(strlen(result) < 3 || strlen(result) > 32)
            {
                SendClientMessage(playerid, 0xFF0000FF, " Название от 3 до 32 символов !");
                return 1;
            }
            if(GetPlayerInterior(playerid) != 0 || GetPlayerVirtualWorld(playerid) != 0)
            {
                SendClientMessage(playerid, 0xFF0000FF, " Бизнес можно создать только в 0-м интерьере, и на основной карте !");
                return 1;
            }
            new para4 = 0;
            new para5 = 0;
            while(para4 < BUS_MAX)
            {
                if(buscount[para4] == 0)
                {
                    para5 = 1;
                    break;
                }
                para4++;
            }
            if(para5 == 0)
            {
                SendClientMessage(playerid, 0xFF0000FF, " Превышен лимит создания бизнесов !");
                SendClientMessage(playerid, 0xFF0000FF, " Для продолжения - увеличьте максимум бизнесов на сервере !");
                return 1;
            }
            buscount[para4] = 1;//создаём бизнес
            GetPlayerPos(playerid, buscordx[para4], buscordy[para4], buscordz[para4]);//задаём координаты бизнеса
            strdel(busname[para4], 0, 64);//задаём название бизнеса
            strcat(busname[para4], result);
            strdel(busplayname[para4], 0, MAX_PLAYER_NAME);//удаляем имя владельца бизнеса
            strcat(busplayname[para4], "*** INV_PL_ID");
            buscost[para4] = para1;//задаём стоимость бизнеса
            busminute[para4] = para2;//задаём, через сколько минут бизнес будет приносить доход
            busincome[para4] = para3;//задаём доход от бизнеса
            busday[para4] = 0;//даём бизнесу право на его перекупку (покупку)

            new file, f[256];//запись бизнеса в файл
            format(f, 256, "bussystem/%i.ini", para4);
            file = ini_createFile(f);
            if(file == INI_OK)
            {
                ini_setString(file, "BusName", busname[para4]);
                ini_setString(file, "PlayName", busplayname[para4]);
                ini_setInteger(file, "Cost", buscost[para4]);
                ini_setInteger(file, "Minute", busminute[para4]);
                ini_setInteger(file, "Income", busincome[para4]);
                ini_setInteger(file, "Day", busday[para4]);
                ini_setFloat(file, "CordX", buscordx[para4]);
                ini_setFloat(file, "CordY", buscordy[para4]);
                ini_setFloat(file, "CordZ", buscordz[para4]);
                ini_closeFile(file);
            }

            PickupID[para4] = CreateDynamicPickup(1274, 1, buscordx[para4], buscordy[para4], buscordz[para4], 0, 0, -1, 100.0);//создаём пикап бизнеса
            MapIconID[para4] = CreateDynamicMapIcon(buscordx[para4], buscordy[para4], buscordz[para4], 52, -1, 0, 0, -1, 200.0);//создаём мап-иконку бизнеса
            format(string, sizeof(string), "Бизнес: %s\nID: %d", busname[para4], para4);
            Nbus[para4] = Create3DTextLabel(string, 0x00FF00FF, buscordx[para4], buscordy[para4], buscordz[para4]+0.70, 50, 0, 1);//создаём 3D-текст бизнеса
            GetPlayerName(playerid, sendername, sizeof(sendername));
            printf("[BusSystem] Админ %s [%d] создал бизнес ID: %d .", sendername, playerid, para4);
            format(string, sizeof(string), " Бизнес ID: %d успешно создан.", para4);
            SendClientMessage(playerid, 0xFFFF00FF, string);
        }
        else
        {
            SendClientMessage(playerid, 0xFF0000FF, " У Вас нет прав на использование этой команды !");
        }
        return 1;
    }
    if(strcmp(cmd, "/removebus", true) == 0)
    {
        if(IsPlayerAdmin(playerid))
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, 0x00FFFFFF, " Используйте: /removebus [ID бизнеса]");
                return 1;
            }
            new para1 = strval(tmp);
            format(string, sizeof(string), "bussystem/%i.ini", para1);
            if(fexist(string) || buscount[para1] == 1)//если файл или сам бизнес существует, то:
            {
                DestroyDynamicPickup(PickupID[para1]);//удаляем пикап бизнеса
                if(busday[para1] == 0)//если есть мап-иконка бизнеса, то:
                {
                    DestroyDynamicMapIcon(MapIconID[para1]);//удаляем мап-иконку бизнеса
                }
                Delete3DTextLabel(Nbus[para1]);//удаляем 3D-текст бизнеса
                if(fexist(string))//если файл существует, то:
                {
                    fremove(string);//удаляем файл
                }
                buscount[para1] = 0;//удаляем бизнес
                strdel(busplayname[para1], 0, MAX_PLAYER_NAME);//удаляем имя владельца бизнеса
                strcat(busplayname[para1], "*** INV_PL_ID");
                PickupID[para1] = -600;//задаём несуществующий ID-номер пикапа для бизнеса
                GetPlayerName(playerid, sendername, sizeof(sendername));
                printf("[BusSystem] Админ %s [%d] удалил бизнес ID: %d .", sendername, playerid, para1);
                format(string, sizeof(string), " Бизнес ID: %d успешно удалён.", para1);
                SendClientMessage(playerid, 0xFF0000FF, string);
            }
            else//если ни файл, и ни сам бизнес не существуют, то:
            {
                SendClientMessage(playerid, 0xFF0000FF, " Бизнеса с таким ID не существует !");
            }
        }
        else
        {
            SendClientMessage(playerid, 0xFF0000FF, " У Вас нет прав на использование этой команды !");
        }
        return 1;
    }
    if(strcmp(cmd, "/removebusall", true) == 0)
    {
        if(IsPlayerAdmin(playerid))
        {
            new para1 = 0;
            for(new i; i < BUS_MAX; i++)
            {
                format(string, sizeof(string), "bussystem/%i.ini", i);
                if(fexist(string) || buscount == 1)//если файл или сам бизнес существует, то:
                {
                    para1 = 1;
                    DestroyDynamicPickup(PickupID);//удаляем пикап бизнеса
                    if(busday == 0)//если есть мап-иконка бизнеса, то:
                    {
                        DestroyDynamicMapIcon(MapIconID);//удаляем мап-иконку бизнеса
                    }
                    Delete3DTextLabel(Nbus);//удаляем 3D-текст бизнеса
                    if(fexist(string))//если файл существует, то:
                    {
                        fremove(string);//удаляем файл
                    }
                    buscount = 0;//удаляем бизнес
                    strdel(busplayname, 0, MAX_PLAYER_NAME);//удаляем имя владельца бизнеса
                    strcat(busplayname, "*** INV_PL_ID");
                    PickupID = -600;//задаём несуществующий ID-номер пикапа для бизнеса
                }
            }
            if(para1 == 1)
            {
                GetPlayerName(playerid, sendername, sizeof(sendername));
                printf("[BusSystem] Админ %s [%d] удалил все бизнесы.", sendername, playerid);
                SendClientMessage(playerid, 0xFF0000FF, " Все бизнесы были успешно удалены.");
            }
            else
            {
                SendClientMessage(playerid, 0xFF0000FF, " На сервере не создано ни одного бизнеса !");
            }
        }
        else
        {
            SendClientMessage(playerid, 0xFF0000FF, " У Вас нет прав на использование этой команды !");
        }
        return 1;
    }
    if(strcmp(cmd, "/gotobus", true) == 0)
    {
        if(IsPlayerAdmin(playerid))
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, 0x00FFFFFF, " Используйте: /gotobus [ID бизнеса]");
                return 1;
            }
            new para1 = strval(tmp);
            if(buscount[para1] == 1)//если бизнес существует, то:
            {
                SetPlayerPos(playerid, buscordx[para1], buscordy[para1]+2, buscordz[para1]+1);
                GetPlayerName(playerid, sendername, sizeof(sendername));
                printf("[BusSystem] Админ %s [%d] телепортировался к бизнесу ID: %d .", sendername, playerid, para1);
                format(string, sizeof(string), " Вы телепортировались к бизнесу ID: %d .", para1);
                SendClientMessage(playerid, 0x00FF00FF, string);
            }
            else//если бизнес не существуют, то:
            {
                SendClientMessage(playerid, 0xFF0000FF, " Бизнеса с таким ID не существует !");
            }
        }
        else
        {
            SendClientMessage(playerid, 0xFF0000FF, " У Вас нет прав на использование этой команды !");
        }
        return 1;
    }
    if(strcmp(cmd, "/reloadbus", true) == 0)
    {
        if(IsPlayerAdmin(playerid))
        {
            GetPlayerName(playerid, sendername, sizeof(sendername));
            printf("[BusSystem] Админ %s [%d] начал перезагрузку системы бизнесов.", sendername, playerid);
            format(string, sizeof(string), " Админ %s [%d] начал перезагрузку системы бизнесов.", sendername, playerid);
            SendClientMessageToAll(0xFF0000FF, string);
            SetTimerEx("reloadbus1", 1000, 0, "i", playerid);
        }
        else
        {
            SendClientMessage(playerid, 0xFF0000FF, " У Вас нет прав на использование этой команды !");
        }
        return 1;
    }
    return 0;
}

forward reloadbus1(playerid);
public reloadbus1(playerid)
{
    UnloadBusSystem();//выгрузка системы бизнесов
    SetTimerEx("reloadbus2", 1000, 0, "i", playerid);
    return 1;
}

forward reloadbus2(playerid);
public reloadbus2(playerid)
{
    LoadBusSystem();//загрузка системы бизнесов
    SetTimerEx("reloadbus3", 1000, 0, "i", playerid);
    return 1;
}

forward reloadbus3(playerid);
public reloadbus3(playerid)
{
    new string[256];
    new sendername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, sendername, sizeof(sendername));
    printf("[BusSystem] Админ %s [%d] перезагрузил систему бизнесов.", sendername, playerid);
    format(string, sizeof(string), " Админ %s [%d] перезагрузил систему бизнесов.", sendername, playerid);
    SendClientMessageToAll(0xFF0000FF, string);
    return 1;
}

public OnPlayerPickUpDynamicPickup(playerid, pickupid)
{
    if(DelayPickup[playerid] == 0)
    {
        DelayPickup[playerid]++;
        return 1;
    }
    if(DelayPickup[playerid] == 1)
    {
        DelayPickup[playerid]++;
        return 1;
    }
    if(DelayPickup[playerid] == 2)
    {
        DelayPickup[playerid] = 0;
    }
    if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
    {
        new para1 = 0;
        new para2 = 0;
        while(para1 < BUS_MAX)
        {
            if(PickupID[para1] == pickupid)
            {
                para2 = 1;
                break;
            }
            para1++;
        }
        if(para2 == 1)
        {
            new string[2048];
            playIDbus[playerid] = para1;//запоминаем ИД бизнеса для игрока
            if(busday[para1] == 0 && strcmp(RealName[playerid], busplayname[para1], false) != 0)
            {//если у бизнеса есть право на его перекупку, и этот бизнес не игрока, то:
                format(string, sizeof(string), "{ADFF2F}Название бизнеса: %s\nСтоимость бизнеса: %d $\n\nЭтот бизнес будет Вам приносить доход: %d $\
                \nкаждые %d минут Вашего он-лайн отыгранного времени.\n\nВнимание ! Через %d суток, со дня покупки этого бизнеса,\
                \nэтот бизнес сможет перекупить любой другой игрок !", busname[para1], buscost[para1], busincome[para1],
                busminute[para1], BUS_DAY);
                ShowPlayerDialog(playerid, 8001, 0, "Информация.", string, "Купить", "Отмена");
            }
            if(busday[para1] != 0 && strcmp(RealName[playerid], busplayname[para1], false) != 0)
            {//если у бизнеса нет права на его перекупку, и этот бизнес не игрока, то:
                format(string, sizeof(string), "{ADFF2F}Название бизнеса: %s\nВладелец бизнеса: %s\nСтоимость бизнеса: %d $", busname[para1],
                busplayname[para1], buscost);
                ShowPlayerDialog(playerid, 8000, 0, "Информация.", string, "OK", "");
            }
            if(strcmp(RealName[playerid], busplayname[para1], false) == 0)
            {//если этот бизнес - бизнес игрока, то:
                format(string, sizeof(string), "{ADFF2F}Название бизнеса: %s\nСтоимость бизнеса: %d $\n\nЭтот бизнес Вам приносит доход: %d $\
                \nкаждые %d минут Вашего он-лайн отыгранного времени.\n\nВы хотите продать этот бизнес ?", busname[para1], buscost[para1],
                busincome[para1], busminute[para1]);
                ShowPlayerDialog(playerid, 8002, 0, "Информация.", string, "Продать", "Отмена");
            }
        }
    }
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == 8000)
    {
        playIDbus[playerid] = -600;//не существующий ИД бизнеса для игрока
        return 1;
    }
    if(dialogid == 8001)
    {
        if(response)
        {
            new string[256];
            if(GetPlayerMoney(playerid) > buscost[playIDbus[playerid]])//если у игрока недостаточно денег, то:
            {
                ShowPlayerDialog(playerid, 8000, 0, "Информация.", "{ADFF2F}У Вас недостаточно денег для покупки этого бизнеса !", "OK", "");
                return 1;
            }
            new para1 = 0;
            for(new i; i < BUS_MAX; i++)//подсчёт числа уже купленных бизнесов
            {
                if(buscount == 1 && strcmp(RealName[playerid], busplayname, false) == 0) { para1++; }
            }
            if(para1 >= BUS_PLAY)
            {
                format(string, sizeof(string), "{ADFF2F вас уже есть %d бизнеса !   Что бы купить этот бизнес -\
                \nпродайте хотя бы один из своих существующих бизнесов !", para1);
                ShowPlayerDialog(playerid, 8000, 0, "Информация.", string, "OK", "");
                return 1;
            }
            GivePlayerMoney(playerid, - buscost[playIDbus[playerid]]);//списывание денег со счёта игрока
            gettime(timecor[0], timecor[1]);
            getdate(timecor[2], timecor[3], timecor[4]);
            TimCor();//коррекция времени
            DatCor();//коррекция даты
            new per22;//вычисление даты окончания срока без права перекупки
            per22 = BUS_DAY + timecor[4];
            if(per22 > 28 && timecor[7] == 0 && timecor[3] == 2)
            {
                per22 = per22 - 28;
            }
            if(per22 > 29 && timecor[7] == 1 && timecor[3] == 2)
            {
                per22 = per22 - 29;
            }
            if(per22 > 30 && (timecor[3] == 4 || timecor[3] == 6 || timecor[3] == 9 || timecor[3] == 11))
            {
                per22 = per22 - 30;
            }
            if(per22 > 31 && (timecor[3] == 1 || timecor[3] == 3 || timecor[3] == 5 || timecor[3] == 7 || timecor[3] == 8 || timecor[3] == 10 || timecor[3] == 12))
            {
                per22 = per22 - 31;
            }
            busidplay[playIDbus[playerid]] = playerid;//даём бизнесу ИД он-лайн игрока - владельца бизнеса
            busmoney[playIDbus[playerid]] = 0;//обнуляем счётчик минут бизнеса
            strdel(busplayname[playIDbus[playerid]], 0, MAX_PLAYER_NAME);//изменение имени владельца бизнеса
            strcat(busplayname[playIDbus[playerid]], RealName[playerid]);
            busday[playIDbus[playerid]] = per22;//изменение даты окончания срока без права перекупки
            new file, f[256];//записываем изменения в файл
            format(f, 256, "bussystem/%i.ini", playIDbus[playerid]);
            file = ini_openFile(f);
            if(file == INI_OK)
            {
                ini_setString(file, "PlayName", busplayname[playIDbus[playerid]]);
                ini_setInteger(file, "Day", busday[playIDbus[playerid]]);
                ini_closeFile(file);
            }
            DestroyDynamicMapIcon(MapIconID[playIDbus[playerid]]);//удаляем мап-иконку бизнеса
            printf("[BusSystem] Игрок %s [%d] купил бизнес %s .", RealName[playerid], playerid, busname[playIDbus[playerid]]);
            format(string, sizeof(string), " Игрок %s [%d] купил бизнес %s .", RealName[playerid], playerid, busname[playIDbus[playerid]]);
            SendClientMessageToAll(0x00FFFFFF, string);
            playIDbus[playerid] = -600;//не существующий ИД бизнеса для игрока
        }
        else
        {
            playIDbus[playerid] = -600;//не существующий ИД бизнеса для игрока
        }
        return 1;
    }
    if(dialogid == 8002)
    {
        if(response)
        {
            new string[256];
            GivePlayerMoney(playerid, buscost[playIDbus[playerid]]);//возврат денег игроку
            busidplay[playIDbus[playerid]] = -600;//даём бизнесу несуществующий ИД игрока
            busmoney[playIDbus[playerid]] = 0;//обнуляем счётчик минут бизнеса
            strdel(busplayname[playIDbus[playerid]], 0, MAX_PLAYER_NAME);//изменение имени владельца бизнеса
            strcat(busplayname[playIDbus[playerid]], "*** INV_PL_ID");
            if(busday[playIDbus[playerid]] != 0)//если бизнес без права его перекупки, то:
            {
                MapIconID[playIDbus[playerid]] = CreateDynamicMapIcon(buscordx[playIDbus[playerid]], buscordy[playIDbus[playerid]],
                buscordz[playIDbus[playerid]], 52, -1, 0, 0, -1, 200.0);//создаём мап-иконку бизнеса
            }
            busday[playIDbus[playerid]] = 0;//изменение даты окончания срока без права перекупки
            new file, f[256];//записываем изменения в файл
            format(f, 256, "bussystem/%i.ini", playIDbus[playerid]);
            file = ini_openFile(f);
            if(file == INI_OK)
            {
                ini_setString(file, "PlayName", busplayname[playIDbus[playerid]]);
                ini_setInteger(file, "Day", busday[playIDbus[playerid]]);
                ini_closeFile(file);
            }
            printf("[BusSystem] Игрок %s [%d] продал бизнес %s .", RealName[playerid], playerid, busname[playIDbus[playerid]]);
            format(string, sizeof(string), " Игрок %s [%d] продал бизнес %s .", RealName[playerid], playerid, busname[playIDbus[playerid]]);
            SendClientMessageToAll(0x00FFFFFF, string);
            playIDbus[playerid] = -600;//не существующий ИД бизнеса для игрока
        }
        else
        {
            playIDbus[playerid] = -600;//не существующий ИД бизнеса для игрока
        }
        return 1;
    }
    return 0;
}

public DatCor()
{
    new Float:flyear;
    timecor[3] = timecor[3] + CorTime[3];//обработка месяца
    timecor[5] = 0;//перенос на год
    if(timecor[3] < 1)
    {
        timecor[3] = 12 + timecor[3];
        timecor[5] = -1;//перенос на год
    }
    if(timecor[3] > 12)
    {
        timecor[3] = timecor[3] - 12;
        timecor[5] = 1;//перенос на год
    }
    timecor[2] = timecor[2] + CorTime[4] + timecor[5];//обработка года
    flyear = float(timecor[2]);
    flyear = floatdiv(flyear, 4);
    flyear = floatfract(flyear);
    if(flyear != 0){timecor[7] = 0;}//НЕ високосный год
    if(flyear == 0){timecor[7] = 1;}//високосный год
    timecor[4] = timecor[4] + CorTime[2] + timecor[6];//обработка числа
    timecor[5] = 0;//перенос на месяц
    if(timecor[4] < 1 && timecor[3] == 3 && timecor[7] == 0)
    {
        timecor[4] = 28 + timecor[4];
        timecor[5] = -1;//перенос на месяц
    }
    if(timecor[4] < 1 && timecor[3] == 3 && timecor[7] == 1)
    {
        timecor[4] = 29 + timecor[4];
        timecor[5] = -1;//перенос на месяц
    }
    if(timecor[4] < 1 && (timecor[3] == 5 || timecor[3] == 7 || timecor[3] == 10 || timecor[3] == 12))
    {
        timecor[4] = 30 + timecor[4];
        timecor[5] = -1;//перенос на месяц
    }
    if(timecor[4] < 1 && (timecor[3] == 2 || timecor[3] == 4 || timecor[3] == 6 || timecor[3] == 8 || timecor[3] == 9 || timecor[3] == 11 || timecor[3] == 1))
    {
        timecor[4] = 31 + timecor[4];
        timecor[5] = -1;//перенос на месяц
    }
    if(timecor[4] > 28 && timecor[3] == 2 && timecor[7] == 0)
    {
        timecor[4] = timecor[4] - 28;
        timecor[5] = 1;//перенос на месяц
    }
    if(timecor[4] > 29 && timecor[3] == 2 && timecor[7] == 1)
    {
        timecor[4] = timecor[4] - 29;
        timecor[5] = 1;//перенос на месяц
    }
    if(timecor[4] > 30 && (timecor[3] == 4 || timecor[3] == 6 || timecor[3] == 9 || timecor[3] == 11))
    {
        timecor[4] = timecor[4] - 30;
        timecor[5] = 1;//перенос на месяц
    }
    if(timecor[4] > 31 && (timecor[3] == 1 || timecor[3] == 3 || timecor[3] == 5 || timecor[3] == 7 || timecor[3] == 8 || timecor[3] == 10 || timecor[3] == 12))
    {
        timecor[4] = timecor[4] - 31;
        timecor[5] = 1;//перенос на месяц
    }
    timecor[3] = timecor[3] + timecor[5];//коррекция месяца
    timecor[5] = 0;//перенос на год
    if(timecor[3] < 1)
    {
        timecor[3] = 12 + timecor[3];
        timecor[5] = -1;//перенос на год
    }
    if(timecor[3] > 12)
    {
        timecor[3] = timecor[3] - 12;
        timecor[5] = 1;//перенос на год
    }
    timecor[2] = timecor[2] + timecor[5];//коррекция года
    return 1;
}

public TimCor()
{
    timecor[1] = timecor[1] + CorTime[1];//обработка минут
    timecor[5] = 0;//перенос на час
    if(timecor[1] < 0)
    {
        timecor[1] = 60 + timecor[1];
        timecor[5] = -1;//перенос на час
    }
    if(timecor[1] > 59)
    {
        timecor[1] = timecor[1] - 60;
        timecor[5] = 1;//перенос на час
    }
    timecor[0] = timecor[0] + CorTime[0] + timecor[5];//обработка часов
    timecor[6] = 0;//перенос на день
    if(timecor[0] < 0)
    {
        timecor[0] = 24 + timecor[0];
        timecor[6] = -1;//перенос на день
    }
    if(timecor[0] > 23)
    {
        timecor[0] = timecor[0] - 24;
        timecor[6] = 1;//перенос на день
    }
    return 1;
}

public ReadCorTime()
{
    new string[256];
    format(string,sizeof(string),"data/cortime.ini");
    if(fexist(string))//если файл существует, то:
    {
        new File: UserFile = fopen(string, io_read);//чтение файла
        new key[ 256 ] , val[ 256 ];
        new Data[ 256 ];
        while ( fread( UserFile , Data , sizeof( Data ) ) )
        {
            key = ini_GetKey( Data );
            if( strcmp( key , "hour" , true ) == 0 ) { val = ini_GetValue( Data ); CorTime[0] = strval( val ); }
            if( strcmp( key , "minute" , true ) == 0 ) { val = ini_GetValue( Data ); CorTime[1] = strval( val ); }
            if( strcmp( key , "day" , true ) == 0 ) { val = ini_GetValue( Data ); CorTime[2] = strval( val ); }
            if( strcmp( key , "month" , true ) == 0 ) { val = ini_GetValue( Data ); CorTime[3] = strval( val ); }
            if( strcmp( key , "year" , true ) == 0 ) { val = ini_GetValue( Data ); CorTime[4] = strval( val ); }
        }
        fclose(UserFile);
    }
    return 1;
}

public dopfunction(per)
{
    ReadCorTime();
    return 1;
}

public OneMin()//1-минутный таймер
{
    for(new i; i < BUS_MAX; i++)//цикл для всех бизнесов
    {
        if(buscount == 1 && busidplay != -600)//если бизнес существует,
        {//и его владелец он-лайн, то:
            if(IsPlayerConnected(busidplay) && playspabs[busidplay] == 1 &&
            strcmp(RealName[busidplay], busplayname, false) == 0)//дополнительная проверка на коннект игрока,
            {//спавн игрока, и его ник (в случае некорректного отключения от скрипта, или если игрок не заспавнился)
                busmoney++;//прибавляем счётчик минут бизнеса
                if(busmoney >= busminute)//если счётчик минут больше или равен минуте дохода от бизнеса, то:
                {
                    busmoney = 0;//обнуляем счётчик минут бизнеса
                    GivePlayerMoney(busidplay, busincome);//прибавление дохода к счёту игрока
                    new string[256];
                    printf("[BusSystem] Игрок %s [%d] получил доход %d $ от своего бизнеса %s .", RealName[busidplay], busidplay, busincome, busname);
                    format(string, sizeof(string), " Игрок %s [%d] получил доход %d $ от своего бизнеса %s .", RealName[busidplay], busidplay, busincome, busname);
                    SendClientMessageToAll(0x00FFFFFF, string);
                }
            }
        }
    }
    return 1;
}

public LoadBusSystem()//загрузка системы бизнесов
{
    CorTime[0] = 0;//обнуление коррекции времени
    CorTime[1] = 0;
    CorTime[2] = 0;
    CorTime[3] = 0;
    CorTime[4] = 0;

    new count = 0;
    new file, f[256];//чтение всех бизнесов
    for(new i; i < BUS_MAX; i++)
    {
        PickupID = -600;//задаём несуществующий ID-номер пикапа для бизнеса
        format(f, 256, "bussystem/%i.ini", i);
        file = ini_openFile(f);
        if(file == INI_OK)
        {
            count++;
            buscount = 1;//бизнес создан (сущесвует)
            ini_getString(file, "BusName", busname);
            ini_getString(file, "PlayName", busplayname);
            ini_getInteger(file, "Cost", buscost);
            ini_getInteger(file, "Minute", busminute);
            ini_getInteger(file, "Income", busincome);
            ini_getInteger(file, "Day", busday);
            ini_getFloat(file, "CordX", buscordx);
            ini_getFloat(file, "CordY", buscordy);
            ini_getFloat(file, "CordZ", buscordz);
            ini_closeFile(file);
        }
        else
        {
            buscount = 0;//бизнес не создан (не сущесвует)
            strdel(busplayname, 0, MAX_PLAYER_NAME);//удаляем имя владельца бизнеса
            strcat(busplayname, "*** INV_PL_ID");
            busday = 0;//даём бизнесу право на его перекупку (покупку)
        }
    }
    print(" ");
    printf(" %d бизнесов загружено.", count);

    ReadCorTime();//чтение коррекции времени
    gettime(timecor[0], timecor[1]);
    getdate(timecor[2], timecor[3], timecor[4]);
    TimCor();//коррекция времени
    DatCor();//коррекция даты
    new string[256];
    for(new i; i < BUS_MAX; i++)
    {
        busidplay = -600;//владелец бизнеса офф-лайн
        busmoney = 0;//обнуляем счётчик минут бизнеса
        if(busday == timecor[4])//если реальная дата равна дате окончания срока без права перекупки, то:
        {
            busday = 0;//даём бизнесу право на его перекупку,
            format(f, 256, "bussystem/%i.ini", i);//и записываем изменения в файл
            file = ini_openFile(f);
            if(file == INI_OK)
            {
                ini_setInteger(file, "Day", busday);
                ini_closeFile(file);
            }
        }
        if(buscount == 1)//если бизнес создан, то:
        {
            PickupID = CreateDynamicPickup(1274, 1, buscordx, buscordy, buscordz, 0, 0, -1, 100.0);//создаём пикап бизнеса
            if(busday == 0)//если у бизнеса есть право на его перекупку, то:
            {
                MapIconID = CreateDynamicMapIcon(buscordx, buscordy, buscordz, 52, -1, 0, 0, -1, 200.0);//создаём мап-иконку бизнеса
            }
            format(string, sizeof(string), "Бизнес: %s\nID: %d", busname, i);
            Nbus = Create3DTextLabel(string, 0x00FF00FF, buscordx, buscordy, buscordz+0.70, 50, 0, 1);//создаём 3D-текст бизнеса
        }
    }

    new pname[MAX_PLAYER_NAME];//прочитать реальные ники всех игроков
    new aa333[64];//доработка для использования Русских ников
    for(new i; i < MAX_PLAYERS; i++)
    {
        playspabs = 0;//игрок не заспавнился
        playIDbus = -600;//не существующий ИД бизнеса для игрока
        if(IsPlayerConnected(i))//если игрок в коннекте, то:
        {
            GetPlayerName(i, pname, sizeof(pname));
            strdel(RealName, 0, MAX_PLAYER_NAME);//очистить реальный ник игрока
            format(aa333, sizeof(aa333), "%s", pname);//доработка для использования Русских ников
            strcat(RealName, aa333);//запомнить реальный ник игрока (доработка для использования Русских ников)
//            strcat(RealName, pname);//запомнить реальный ник игрока
            if(GetPlayerState(i) != 0)//если игрок уже заспавнился, то:
            {
                playspabs = 1;//игрок заспавнился
                for(new j; j < BUS_MAX; j++)//цикл для всех бизнесов
                {
                    if(buscount[j] == 1 && strcmp(RealName, busplayname[j], false) == 0)//если бизнес существует,
                    {//и это бизнес игрока, то:
                        busidplay[j] = i;//даём бизнесу ИД он-лайн игрока - владельца бизнеса
                        busmoney[j] = 0;//обнуляем счётчик минут бизнеса
                    }
                }
            }
        }
    }
    print("\n--------------------------------------");
    print("     BusSystem успешно загружена! ");
    print("--------------------------------------\n");
    return 1;
}

public UnloadBusSystem()//выгрузка системы бизнесов
{
    for(new i; i < BUS_MAX; i++)
    {
        if(buscount == 1)//если бизнес существует, то:
        {
            DestroyDynamicPickup(PickupID);//удаляем пикап бизнеса
            if(busday == 0)//если есть мап-иконка бизнеса, то:
            {
                DestroyDynamicMapIcon(MapIconID);//удаляем мап-иконку бизнеса
            }
            Delete3DTextLabel(Nbus);//удаляем 3D-текст бизнеса
        }
        buscount = 0;//бизнес не создан (не сущесвует)
        strdel(busplayname, 0, MAX_PLAYER_NAME);//удаляем имя владельца бизнеса
        strcat(busplayname, "*** INV_PL_ID");
        busidplay = -600;//владелец бизнеса офф-лайн
        busmoney = 0;//обнуляем счётчик минут бизнеса
        PickupID = -600;//задаём несуществующий ID-номер пикапа для бизнеса
    }
    return 1;
} 

 

 

Отредактировано пользователем odosenok
Причина: Поправил код.

Заметка от Cawfee , создано

Как правильно выкладывать большой код?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
LilPokemon
Гуру форума

У тебя скорее всего стоит система античита на деньги, по этому пишет что у тебя не ма денег, попробуй вставить систему в мод ... Или же покажи античит я может придумаю чет 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
LilPokemon
Гуру форума
1 минуту назад, BigPaulo сказал:

Сейчас попробую. в мод вставить.

Если не будет скину античит

Тебе в любом случае нужна будет изменить GetPlayerMoney на функцию античита, покажи мне любую команду где используются проверка на деньги из мода .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Спойлер

new swper, locmoney, locmoney22, locscore, locscore22;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
         if(IsPlayerConnected(i))
         {
            if(autorepair == 1 && GetPlayerState(i) == 2)//если авторемонт включен,
            {//И игрок на месте водителя, то:
                 new car = GetPlayerVehicleID(i);
                 RepairVehicle(car);
                 SetVehicleHealth(car, 1000);
             }
            if(gPlayerLogged == 1)
            {
                locmoney = GetPlayerMoney(i);
                locscore = GetPlayerScore(i);
                if(GetPVarInt(i, "MonControl") == 2)
                {
                    moneycontrol = locmoney;
                    SetPVarInt(i, "MonControl", 0);
                }
                if(GetPVarInt(i, "MonControl") == 1)
                {
                    SetPVarInt(i, "MonControl", 2);
                }
                if(GetPVarInt(i, "MonControl") == 0)
                {
                    locmoney22 = locmoney - moneycontrol;
                    if(locmoney22 > 100000 || locmoney22 < -10000000)
                    {
                        swper = 2;//чит на деньги
                        moneycontrol22 = 1;
                    }

 

Заметка от Cawfee , создано

Еще раз посмотрите внимательно, что находится по ссылке, оставленной мной постом выше (для этого нажмите на слово правильно)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Zishka
Новичок

по моему, просто нужно вшивать данный скрипт в мод, т.к разная система денег

 

Отредактировано пользователем Zishka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Андрей Лазарев
      От Андрей Лазарев
      ROSTOV-HOST.RU - Современный Хостинг Игровых Серверов по невероятно низким ценам и удобной панелью управления 

      — Защита от DDoS-атак 
      — Бесплатная техническая поддержка 
      — Доступ в панель управления и личный кабинет 
      — Переустановка игрового сервера в любое время суток 
      — Редактирование конфигурационных файлов игрового сервера 
      — FTP доступ к файлам игрового сервера 
      — Мониторинг процессов 
      — Изменение количества слотов игрового сервера 
      — Система управления счетами и оплаты услуг 
      — Локальная MySQL база данных 
      — Автоустановка модов
      — Смена (версии / игры) сразу в панели управления


      Цены: с помесячной оплатой
      — GTA: SAMP              - 1слот / 0.40копп.
      — GTA: CRMP              - 1слот / 0.40копп.
      — GTA: MTA                 - 1слот / 0.80копп.
      — GTA: United MP       - 1слот / 0.80копп.
      — MineCraft: PE           - 1слот / 3.00копп.
      — MineCraft                  - 1слот / 5.00копп.
      — Counter Strike 1.6    - 1слот / 4.00копп.
       
      Цены: плати один раз пользуйся до скончания веков
      — 1 200 руб / SA:MP 0.3е/ CR:MP 0.3е/ МТА /    500 слотов
      — 1 800 руб / SA:MP 0.3.7/ CR:MP 0.3.7/ МТА /    1000 слотов
       

      Сайт: https://rostov-host.ru
      Группа в VK: https://vk.com/rostov_host
       
       
    • FanVan
      От FanVan

       
      Дешевый хостинг серверов SAMP, CRMP, Minecraft: Java & Bedrock Edition
       
      Помогаем запуститься начинающим проектам без больших вложений.
      Сделаем так, чтобы твои затраты на хостинг уменьшились без потери качества.
       
      Размещаем серверы в Хельсинках, Финляндия на процессоре частотой до 4.8 ГГц и NVMe диске.
      У нас нет красивого сайта, покупка услуг производится через бота в ЛС группы, а управление сервером -- посредством панели Pterodactyl.
      Мы не ограничиваем тебя слотами: все тарифы -- это маленькие компьютеры, ты волен сам устанавливать максимальное количество игроков, без повышения стоимости.
       
      К нам обращаются, когда хостинг начинает съедать большую часть бюджета из-за того, что хостер захотел выпендриться и добавил бесполезный функционал. Но лучше обратиться еще в начале, чтобы уменьшить затраты на хостинг и вложить как можно больше в рекламу.
       
      Никто не идеален, ничто не идеально: мы не можем помочь
      если у тебя высоконагруженный проект если тебе требуется защита от DDOS если тебе нужен пинг -1 если тебе важна автоустановка модов  
      Но ты можешь написать нам в тех. поддержку и, возможно, мы подберем более мощный тариф на отдельном сервере персонально для тебя по цене ниже, чем у других.
       
      Мы стремимся сделать создание сервера доступным каждому. Если остались вопросы или хочешь протестировать оборудование, напиши нам в ЛС группы.
    • 9at0z
      От 9at0z
      Flatgame.ru - Хостинг игровых серверов. Gta SAMP: 0.50коп/слот Gta СRMP: 0.50коп/слот MTA: 0.50коп/слот Minecraft: 5руб/слот Counter Stire 1.6: 7руб/слот Все сервера с автоусновкой модов, которые есть доступны. Обширная панель управления сервером. Тестовый периуд 3 дня. И очень много чего интересного!

    • f0295655
      От f0295655

      _______________________________________________
      VM-HOSTING.COM
      Качественный хостинг для вашего проекта, качественные сервера с защитой от DDoS аттак.
      Мы предоставляем услуги:
      VDS/VPS хостинга
      Web хостинга
      Игрового хостинга(SAMP, CRMP, MINECRAFT)
      _______________________________________________
      ТАРИФЫ
      XEON E5-2680v2
      Strix / 1 vCore / 2 GB RAM / 25 GB SSD / до 1 Gbit/s - 350Руб (28 дней)
      Duende / 2 vCore / 4 GB RAM / 40 GB SSD / до 1 Gbit/s - 650Руб (28 дней)
      Lynx / 4 vCore / 8 GB RAM / 50 GB SSD / до 1 Gbit/s - 1200Руб (28 дней)
      Devil / 8 vCore / 16 GB RAM / 80 GB SSD / до 1 Gbit/s - 1200Руб (28 дней)
      Drake / 10 vCore / 32 GB RAM / 120 GB SSD / до 1 Gbit/s - 3100Руб (28 дней)

      INTEL i7-8700K
      Strix / 1 vCore / 2 GB RAM / 25 GB SSD / до 1 Gbit/s - 450Руб (28 дней)
      Duende / 2 vCore / 4 GB RAM / 40 GB SSD / до 1 Gbit/s - 850Руб (28 дней)
      Lynx / 2 vCore / 8 GB RAM / 50 GB SSD /  до 1 Gbit/s - 1200Руб (28 дней)
      Devil / 4 vCore / 16 GB RAM / 80 GB SSD / до 1 Gbit/s - 1200Руб (28 дней)
      Drake / 6 vCore / 24 GB RAM / 120 GB SSD / до 1 Gbit/s - 2799Руб (28 дней)
      _______________________________________________
      ПРЕИМУЩЕСТВА
      Многофункциональная и удобная панель управления
      Высокоскоростные диски NVME SSD
      Высокоскоростные интернет каналы 
      Оптимальный пинг по всему миру
      Качественное оборудование
      Отзывчивая тех.поддержка
      _______________________________________________
      Ссылка на хостинг: Жмяк
      Vk: Жмяк 
      Telegram: Жмяк
      Отзывы: Жмяк
      _______________________________________________
      Начало работы хостинга 01.01.2023
       
       
      Промокод 10% - #FORUM10  
    • Hunter Wright
      От Hunter Wright
          Large-Host - Предоставляем услуги профессионального дешевого игрового хостинга и самую удобную панель управления.

      — Защита от DDoS-атак
      — Техническая поддержка работает для вас 24/7
      — Быстрый доступ в панель управления и личный кабинет
      — Быстрая переустановка игрового сервера в любое время суток  
      — Редактирование конфигурационных файлов игрового сервера 
      — FTP доступ к файлам игрового сервера
      — Изменение количества слотов игрового сервера 
      — Система управления счетами и оплаты услуг
      — Большое количество всех возможных платежных систем
      — Бесплатная MySQL база данных — Автоустановка модов, есть как бесплатные моды, так и платные моды — У нас есть услуги, где вы можете заказать, установку мода, смену названия и т.д
      — Предоставляется доступ к firewall для блокировки злоумышленников   Тарифные планы (на данный момент): — GTA: SA-MP 0.3.7 - от 20р / месяц — GTA: CR-MP 0.3e - от 20р / месяц — GTA: CR-MP 0.3.7 - от 20р / месяц   Ссылки на хостинг и социальные сети: Сайт хостинга - Перейти на сайт хостинга Группа во ВКонтакте - Перейти в группу во ВКонтакте Группа тех.поддержки во ВКонтакте - Перейти в группу во ВКонтакте
      Телеграм канал хостинга - Перейти в телеграм YouTube канал хостинга - Перейти на YouTube канал
      Почта тех.поддержки - support@large-hosting.ru