[CMD]: Респавн авто и отмена спавна последнего транспорта - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: [CM]OlegEhtler, Getbackthere, Phoenixxx_Czar  
[CMD]: Респавн авто и отмена спавна последнего транспорта
iCortezik Дата: Среда, 26.03.2014, 12:02 | Сообщение # 1
Боец
Сообщений: 190
Статус: Offline
Путешествия по просторам интернета, я искал оптимизацию кодов, но наткнулся на это. Думаю вам пригодится!


Описание команды:

- /spcars - респавн ТС с задержкой в 10 секунд.

- /sn - отмена респавна последней машины ( для всех игроков )


Скриншот:


Автор: Umid_Sam

И так приступим!

Ко всем new добавить:
Код

new gLastCar[MAX_PLAYERS];
new allspcarstimeview = 0;
new killallspcarstime;
new killallspcars;     


В OnPlayerConnect:
Код

gLastCar[playerid] = -1;


В OnPlayerSpawn или ваш пабликspawn'a
Код

gLastCar[playerid]          = -1;     


Далее ищем такую строчку:
Код

if(newstate == PLAYER_STATE_DRIVER) //Когда игрок сел в машину     
{


И после вставляем:
Код

gLastCar[playerid] = newcar;


В enum pInfo:
Код

pNoSpcars,


Далее ко всем пабликам/стокам добавить сток(Если есть заменить на этот):
Код

stock IsVehicleOccupied(vehicleid)
{
        for(new i = 0; i < MAX_PLAYERS; i++)
        {
            if (IsPlayerInVehicle(i, vehicleid) && GetPlayerState(i) == PLAYER_STATE_DRIVER) return 1;
            if (gLastCar[i] == vehicleid && PlayerInfo[i][pNoSpcars] == 1)
            {
                PlayerInfo[i][pNoSpcars] = 0;
                return 1;
            }
        }
        return 0;
}
forward allspcars();
forward allspcarstime();
public allspcars()
{
        KillTimer(killallspcarstime);
        for(new c=0; c<MAX_VEHICLES; c++)
        {
            if(!IsVehicleOccupied(c))
            {
                if (!IsATrailer(c))    SetVehicleToRespawn(c);
            }
        }
        SendClientMessageToAll(COLOR_BLUE, " Сервер: Все не занятые людьми машины обновлены");
        return 0;
}
public allspcarstime()
{
        new string[20];
        if (allspcarstimeview >=0)
        {
            for(new i = 0; i < MAX_PLAYERS; i++)
            {
                if(IsPlayerConnected(i))
                {

                    format(string, sizeof(string), "~y~%d", allspcarstimeview);
                    GameTextForPlayer(i, string, 1000, 6);
                }
            }
            allspcarstimeview --;
        }
        return 1;
}


Добавлено (26.03.2014, 12:02)
---------------------------------------------
Теперь ко всем командам в OnPlayerCommandText:
Код

else if(strcmp(cmd, "/ns", true) == 0)
        {
            if(IsPlayerConnected(playerid))
            {
                if(gLastCar[playerid] != -1 && PlayerInfo[playerid][pNoSpcars] != 1)
                {
                    PlayerInfo[playerid][pNoSpcars] = 1;
                    SendClientMessage(playerid, COLOR_WHITE, "Ваш последний транспорт не будет спавниться");
                }
            }
            return true;
        }


И команду:
Код

else if(strcmp(cmd, "/spcars", true) == 0)
        {
            if(IsPlayerConnected(playerid))
            {
                if(PlayerInfo[playerid][pAdmin] < 5) return SendClientMessage(playerid, COLOR_GREY, "Вы не уполномочены использовать эту команду!");
                KillTimer(killallspcarstime);
                KillTimer(killallspcars);
                format(string, sizeof(string), " %s: Внимание автореспавн через 10 секунд", sendername);
                SendClientMessageToAll(COLOR_BLUE, string);
                SendClientMessageToAll(COLOR_BLUE,  " *Если хотите чтобы ваш последний транспорт не спавнился введите {FFFFFF}/ns");
                killallspcars = SetTimer("allspcars", 11000, 0);
                killallspcarstime = SetTimer("allspcarstime",1000,true);
                allspcarstimeview = 10;
            }
            return 1;
        }


Kоманды на ZCMD:
Код

CMD:ns(playerid, params[])
{
        if(!IsPlayerConnected(playerid)) return true;
        {
            if(gLastCar[playerid] != -1 && PlayerInfo[playerid][pNoSpcars] != 1)
            {
                PlayerInfo[playerid][pNoSpcars] = 1;
                SendClientMessage(playerid, COLOR_WHITE, "Ваш последний транспорт не будет спавниться");
            }
        }
        return true;
}
CMD:spcars(playerid, params[])
{
        if(!IsPlayerConnected(playerid)) return true;
        if(PlayerInfo[playerid][pAdmin] < 5) return SendClientMessage(playerid, COLOR_GREY, "Вы не уполномочены использовать эту команду!");
        KillTimer(killallspcarstime);
        KillTimer(killallspcars);
        format(string, sizeof(string), " %s: Внимание автореспавн через 10 секунд", sendername);
        SendClientMessageToAll(COLOR_BLUE, string);
        SendClientMessageToAll(COLOR_BLUE,  " *Если хотите чтобы ваш последний транспорт не спавнился введите {FFFFFF}/ns");
        killallspcars = SetTimer("allspcars", 11000, 0);
        killallspcarstime = SetTimer("allspcarstime",1000,true);
        allspcarstimeview = 10;
        }
        return true;
}
Прикрепления: 3809673.png (80.1 Kb)


Коплю 2к репы.
Skype : iCortezik
Vk ( id ) : icortezik_cm
WMR : R385286787930
Ask (id) : Sanay4ik_Cortezik


Сообщение отредактировал iCortezik - Среда, 26.03.2014, 12:18
  • Страница 1 из 1
  • 1
Поиск: