BigPaulo

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

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

Установил себе систему бизнесов на сервер 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 , создано

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

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


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

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

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


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

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

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

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


Ссылка на сообщение
Поделиться на другие сайты
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

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


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

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

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

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

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


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

Войти

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


Войти

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

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

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

    • KAIF
      От KAIF


      Скачать файл GTA RolePlay-МОД,СБОРКА
      !!!!!ВСЕГО ОДНА КОПИЯ!!!! 
      Единственный мод GTA RP.
       
      Фракции:
      Правительство
      ГИБДД
      Полиция Южного
      ФСБ
      ЦГБ-А
      Автошкола
      Китайская мафия
      Русская Мафия
      Итальянская Мафия
      Американская Мафия
      Чеченская Мафия
      ВВС
      МЧС
      ОПГ Тяп-Ляп
      ОПГ Хади-Такташ
      СМИ Южного
      ФСИН
      В комплекте идёт СБОРКА И МОД.
      Единственный мод GTA RP.
      Добавил KAIF Добавлено 01.01.2024 Категория Моды Автор Aleksandr  
    • KAIF
      От KAIF
      !!!!!ВСЕГО ОДНА КОПИЯ!!!! 
      Единственный мод GTA RP.
       
      Фракции:
      Правительство
      ГИБДД
      Полиция Южного
      ФСБ
      ЦГБ-А
      Автошкола
      Китайская мафия
      Русская Мафия
      Итальянская Мафия
      Американская Мафия
      Чеченская Мафия
      ВВС
      МЧС
      ОПГ Тяп-Ляп
      ОПГ Хади-Такташ
      СМИ Южного
      ФСИН
      В комплекте идёт СБОРКА И МОД.
      Единственный мод GTA RP.
    • Узбек
      От Узбек
      Всем добрый вечер ребят! 
      Я начинающий, сегодня я вам сливаю команду 2(шт) на технические работы
      Ловите 
       
    • Talex
      От Talex
      Всем привет, сливаю первый мод!
      Информация о моде:

      — Основа Gamenix.
      — Мод переведен на Mysql R39, теперь ни каких слётов нет, мод работает стабильно с онлайном 160+.
      — Новый автосалон на TextDraw.
      — Система 3-х автомобилей (1 можно купить по дефолту, 2 и 3 за донат).
      — Автомобили у игроков теперь не пропадают (Id'ы авто сбивались, с номерами теперь тоже всё в порядке).
      — Оформление сервера полностью переработано, теперь оно более красивое.
      — Защита от копирования карты.
      — в меню сервера добавлен пункт визуальных настроек.
      — Номера на транспорт теперь можно приобрести в /donate.
      — Сделан новый красивый спидометр.
      — При получении номера, добавлен выбор региона.
      — Сделана система радаров и промокодов, создание прямо из игры.
      — Новый интерьер казино.
      — Магазин скинов теперь на TextDraw.
      — Автошкола полностью функционирует.
      — Добавлена информация после коннекта о последнем входе в собственный аккаунт.
      — Приватная защита от всех видов DDoS атак и DoS атак.                                                                                                                                    
      — пароль от АП (/alog) теперь у каждого администратора индивидуальный.
      — Изменено оформление самого мода
      Это не все изменения мода, их ещё очень много. все не упомнишь. 
      Автор мода: Неизвестен
      CUNBERS RP 8.4.3.rar
       

    • Tufxgod
      От Tufxgod
      Пойду на проект в качестве разработчика.
      Опыт в павн 2 года, умею писать системы любой сложности, владею mysql.
      Пишите в лс!