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 пользователей онлайн

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

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

    • Chopick
      От Chopick
      Всем здравствуйте! Делаю систему домов/бизнесов по туториалу knox know с плагином GoodArea. Есть проблема, если заходишь в интерьер бизнеса, то когда выходишь спавнит почему-то на пикап дома.

      Вот енумы:
       
      #define MAX_HOUSES 1000 #define MAX_BIZS 1000 enum house {         hID,         STREAMER_TAG_PICKUP:hPICKUP,         STREAMER_TAG_AREA:hAREA,         hOWNER[MAX_PLAYER_NAME],         STREAMER_TAG_3D_TEXT_LABEL:hTEXT[256],         STREAMER_TAG_MAP_ICON:hICON,         hPRICE,         hCLASS,         hINTERIOR,         Float:hX,         Float:hY,         Float:hZ,         Float:hA,         hCONDITION // Закрыт/Открыт } new House[MAX_HOUSES][house]; new Houses; new HouseGroup; enum biz {         bID,         STREAMER_TAG_PICKUP:bPICKUP,         STREAMER_TAG_AREA:bAREA,         bOWNER[MAX_PLAYER_NAME],         STREAMER_TAG_3D_TEXT_LABEL:bTEXT[256],         STREAMER_TAG_MAP_ICON:bICON,         bNAME[25],         bPRICE,         bTYPE,         bINTERIOR,         Float:bX,         Float:bY,         Float:bZ,         Float:bA } new Biz[MAX_BIZS][biz]; new Bizs; new BizGroup; enum interior_info {         intID,         intNAME[41],         intINTERIOR,         Float:intX,         Float:intY,         Float:intZ,         Float:intA,         STREAMER_TAG_AREA:intAREA } new Interior[MAX_INTERIORS][interior_info]; new Interiors; new InteriorGroup; Вот что у меня в OnGameModeInit:
      HouseGroup = CreateGroupGoodAreas(GoodArea:HouseEnter); InteriorGroup = CreateGroupGoodAreas(GoodArea:InteriorExit); BizGroup = CreateGroupGoodAreas(GoodArea:BizArea);  
      Вот стоки:
      GAResponse:HouseEnter(playerid, response, key, index) {         switch(response)         {             case GA_RESPONSE_PRESS_KEY:             {                 if(key & KEY_WALK)                 {                 if(House[index][hCONDITION] > 0 && House[index][hOWNER] == player_info[playerid][NAME] || House[index][hCONDITION] == 0)                 {                                         GoToInterior(playerid, House[index][hINTERIOR]);                                         SetPlayerVirtualWorld(playerid, index);                                 }                                 else if(House[index][hCONDITION] > 0 && House[index][hOWNER] != player_info[playerid][NAME]) return SCM(playerid, COLOR_RED, "[Ошибка]{ffffff}Этот дом закрыт на ключ!");                         }                 }                 case GA_RESPONSE_ENTER:                 {                     if(House[index][hOWNER] == 0)                     {                         CreateNoOwnerHouseTD(playerid);                         for(new i = 0; i < sizeof NoOwnerTextDraw_PTD[]; i++)                         {                             PlayerTextDrawShow(playerid, NoOwnerTextDraw_PTD[playerid][i]);                                 }                                 new price[8];                                 format(price, sizeof(price), "%d$", House[index][hPRICE]);                                 PlayerTextDrawSetString(playerid, NoOwnerTextDraw_PTD[playerid][2], price);                                 new id[9];                                 format(id, sizeof(id), "%d", House[index][hID]);                                 PlayerTextDrawSetString(playerid, NoOwnerTextDraw_PTD[playerid][0], id);                                 switch(House[index][hCLASS])                                 {                                     case 1: PlayerTextDrawSetString(playerid, NoOwnerTextDraw_PTD[playerid][1], "A");                                     case 2: PlayerTextDrawSetString(playerid, NoOwnerTextDraw_PTD[playerid][1], "B");                                     case 3: PlayerTextDrawSetString(playerid, NoOwnerTextDraw_PTD[playerid][1], "C");                                 }                                 for(new i = 0; i < sizeof NoOwnerTextDraw_TD; i++)                         {                             TextDrawShowForPlayer(playerid, NoOwnerTextDraw_TD[i]);                                 }                         }                 }                 case GA_RESPONSE_LEAVE:                 {                 for(new i = 0; i < sizeof NoOwnerTextDraw_PTD[]; i++)                 {                     PlayerTextDrawHide(playerid, NoOwnerTextDraw_PTD[playerid][i]);                         }                         for(new i = 0; i < sizeof NoOwnerTextDraw_TD; i++)                 {                     TextDrawHideForPlayer(playerid, NoOwnerTextDraw_TD[i]);                         }                 }         }         return 1; } GAResponse:BizArea(playerid, response, key, index) {         switch(response)         {             case GA_RESPONSE_PRESS_KEY:             {                 if(key & KEY_WALK)                 {                     GoToInteriorBiz(playerid, Biz[index][bINTERIOR]);                                 SetPlayerVirtualWorld(playerid, index);                 }                 }         }         return 1; } GAResponse:InteriorExit(playerid, response, key, index) {         switch(response)         {             case GA_RESPONSE_PRESS_KEY:             {                 new world = GetPlayerVirtualWorld(playerid);                 if(key & KEY_WALK)                 {                     if(world < MAX_HOUSES)                     {                         SetPlayerInterior(playerid, 0);                             SetPlayerVirtualWorld(playerid, 0);                             SetPlayerPos(playerid, House[world][hX], House[world][hY], House[world][hZ]);                             SetPlayerFacingAngle(playerid, House[world][hA]);                                 }                                 else if(world < MAX_HOUSES + MAX_BIZS)                     {                         world -= MAX_HOUSES;                                         printf("%d index world", world);                         SetPlayerInterior(playerid, 0);                             SetPlayerVirtualWorld(playerid, 0);                             SetPlayerPos(playerid, Biz[world][bX], Biz[world][bY], Biz[world][bZ]);                             SetPlayerFacingAngle(playerid, Biz[world][bA]);                                 }                         }                         if(key & KEY_CTRL_BACK)                         {                             if(player_info[playerid][HOUSE] != House[world][hID]) return SCM(playerid, COLOR_RED, "[Ошибка]{ffffff}Вы не владелец данного дома!");                             new dialog[256];                                 format(dialog, sizeof(dialog),                                         "{ffd900}[1]{ffffff}Информация о доме\n\                                         {ffd900}[2]{ffffff}%s дом",                                 (House[world][hCONDITION] == 1) ? ("{00ff00}Открыть") : ("{ff0000}Закрыть"));                             SPD(playerid, DLG_HMENU, DIALOG_STYLE_LIST, "{ffd900}Меню дома", dialog, "Выбрать", "Закрыть");                             return 1;                         }                 }         }         return 1; } stock GoToInterior(playerid, interior) {     for(new i = 0; i < Interiors; i++)         {             if(Interior[i][intID] != interior) continue;             SetPlayerInterior(playerid, Interior[i][intINTERIOR]);             SetPlayerPos(playerid, Interior[i][intX], Interior[i][intY], Interior[i][intZ]);             SetPlayerFacingAngle(playerid, Interior[i][intA]);             SetPlayerCheckpoint(playerid, Interior[i][intX], Interior[i][intY], Interior[i][intZ], 1.0);             new str[128];             format(str, sizeof(str),                         "Нажмите \"ALT\" для выхода\n\                         Нажмите \"H\", чтобы открыть меню дома");             Create3DTextLabel(str, -1, Interior[i][intX], Interior[i][intY], Interior[i][intZ], 15.0, 0, 1);             return 1;         }         return 0; } stock GoToInteriorBiz(playerid, interior) {     for(new i = 0; i < Interiors; i++)         {             if(Interior[i][intID] != interior) continue;             SetPlayerInterior(playerid, Interior[i][intINTERIOR]);             SetPlayerPos(playerid, Interior[i][intX], Interior[i][intY], Interior[i][intZ]);             SetPlayerFacingAngle(playerid, Interior[i][intA]);             SetPlayerCheckpoint(playerid, Interior[i][intX], Interior[i][intY], Interior[i][intZ], 1.0);             new str[128];             format(str, sizeof(str),                         "Нажмите \"ALT\" для выхода");             Create3DTextLabel(str, -1, Interior[i][intX], Interior[i][intY], Interior[i][intZ], 15.0, 0, 1);             return 1;         }         return 0; }  
       
      Что мне делать, подскажите пожалуйста?
    • Jdjdjd
      От Jdjdjd
      Как сделать открытие закрытие ворот в Радмир рп на копии,и куд а нужно вставлять код?
       
    • Мемен Томорли
      От Мемен Томорли
      Как создать команду /warns чтобы игрок смог просматривать активные варны у персонажа ??
      Типо как на Малиновка ЛП
    • Jocker
      От Jocker
      каждый бич может открыть меню парковки, тут есть проверка но она не работает, хелп плиз
       
      Код:   if IsPlayerInRangeOfPoint(playerid, 1.5, -2390.5017, 2702.4512, 14.5300) *then { if !TeamDuty{playerid} && PI[playerid][pMember]==2 != TEAM_RCPD *then return SCM(playerid, -1, "Вы не сост в организации."); SPD(playerid, 22222, DIALOG_STYLE_LIST, "{BE2D2D}Фракционная парковка","1. Tesla [3 ранг]\n\ 2. Tesla (3 ранг)\n\ 3. Skoda (4 ранг)\n\ 4. Skoda(4 ранг)\n\ 5. Audi (5 ранг)\n\ 6. Audi (5 ранг)\n\ 7. Mersedes (6 ранг)\n\ 8. Mersedes (6 ранг)\n\ 9. Тачка (7 ранг)\n\ 10. Тест (7 ранг)", "Выбрать", "Отмена"); }
      надо сделать чтобы бомж и типы с других организаций не смогли открыть парк. меню
      но оставить проверку на дежурство (teamduty)
    • Akcent RolePlay
      От Akcent RolePlay
      Akcent RolePlay — многопользовательская онлайн-игра, погружающая игроков в атмосферу Советского Союза, где каждый может ощутить уникальный вкус истории, культуры и общественной жизни этой великой страны. Игра предлагает широкий спектр возможностей для взаимодействия с окружающим миром, включая реализацию ролей, от трудяг на заводах до высокопоставленных партийных чиновников.

      Игроки могут выбирать свои профессии, создавать семьи и участвовать в политической жизни, принимая участие в выборах и обсуждениях, что добавляет элемент стратегии и реализма. Роскошные улицы Москвы в 80-х, многолюдные рынки и уютные дворы становятся идеальной площадкой для серьезных разборок, дружеских встреч и неожиданных событий.

      Кроме того, Akcent RolePlay включает в себя разнообразные квесты, позволяющие познавать не только игровой сюжет, но и элементы настоящей истории, такие как важные события, культурные достижения и социальные изменения того времени. Разнообразие игровых механизмов и глубокая проработка персонажей делают каждую сессию уникальной и насыщенной, погружая игроков в многослойный и яркий мир Советского Союза.