hOops
Новичок
Что дает команда: Команда позволяет законника ставить блоки для так сказать перекрытия дороги, чтобы легче было проверять водителей и т.д. В общем сами решайте что делать будете.
Ко всем форвардам ставим:
Потом ко всем new ставим:
В pInfo ставим
В public OnPlayerConnect(playerid) ставим
Потом в public OnPlayerDisconnect(playerid, reason) а точнее в конец его ставим
Потом куда хотите ставьте паблики:
И наконец сами команды:
i
в игре пишем /roadblock
Ко всем форвардам ставим:
PHP:
forward ResetRoadblockTimer();
forward RemoveRoadblock(playerid);
PHP:
new roadblocktimer = 0;
В pInfo ставим
PHP:
pRoadblock
PHP:
PlayerInfo[playerid][pRoadblock] = 0;
Потом в public OnPlayerDisconnect(playerid, reason) а точнее в конец его ставим
PHP:
if (PlayerInfo[playerid][pRoadblock] != 0)
{
RemoveRoadblock(playerid);
}
PHP:
public ResetRoadblockTimer()
{
roadblocktimer = 0;
return 1;
}
//==============================================================================
public RemoveRoadblock(playerid)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(PlayerInfo[i][pMember] == 1 || PlayerInfo[i][pLeader] == 1)
{
DisablePlayerCheckpoint(i);
}
}
}
DestroyObject(PlayerInfo[playerid][pRoadblock]);
PlayerInfo[playerid][pRoadblock] = 0;
return 1;
}
i
PHP:
f(strcmp(cmdtext, "/roadblock", true)==0 || strcmp(cmdtext, "/rb", true)==0)
{
if(PlayerInfo[playerid][pMember] == 1 && PlayerInfo[playerid][pLeader] == 1
&& PlayerInfo[playerid][pMember] == 2 && PlayerInfo[playerid][pLeader] == 2
&& PlayerInfo[playerid][pMember] == 3 && PlayerInfo[playerid][pLeader] == 3) return SendClientMessage(playerid, COLOR_GREY, " Ты не законник!");
if (PlayerInfo[playerid][pRoadblock] != 0) return SendClientMessage(playerid, COLOR_GREY, " Ты можешь использовать только 1 блок за раз, используй /unrb чтобы убрать его.");
if (roadblocktimer != 0) return SendClientMessage(playerid, COLOR_GREY, " Подожди, прежде чем ставить еще один блок.");
new Float:X, Float:Y, Float:Z, Float:A;
GetPlayerPos(playerid, X, Y, Z);
GetPlayerFacingAngle(playerid, A);
PlayerInfo[playerid][pRoadblock] = CreateObject(981, X, Y, Z, 0.0, 0.0, A+180);
SetPlayerPos(playerid, X, Y, Z+4);
GameTextForPlayer(playerid, "~w~Roadblock ~r~Placed", 5000, 5);
SendClientMessage(playerid, COLOR_GREEN, " Блок поставлен успешно, используй /unrb или /roadunblock чтобы убрать его.");
roadblocktimer = 1;
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), " Штаб: %s установил дорожный блок, он помечен чекпоинтом на карте.", sendername);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1
|| PlayerInfo[playerid][pMember] == 2 || PlayerInfo[playerid][pLeader] == 2
|| PlayerInfo[playerid][pMember] == 3 || PlayerInfo[playerid][pLeader] == 3)
{
SetPlayerCheckpoint(playerid, X, Y, Z-10, 1.0);
SendClientMessage(i, TEAM_BLUE_COLOR, string);
if (PlayerInfo[i][pRank] >= 5 && PlayerInfo[i][pMember] || PlayerInfo[i][pLeader] == 1
|| PlayerInfo[i][pMember] || PlayerInfo[i][pLeader] == 2
|| PlayerInfo[i][pMember] || PlayerInfo[i][pLeader] == 3)
{
SendClientMessage(i, COLOR_YELLOW, " Ты можеш убрать все блоки, используя /unrball");
}
}
}
}
SetTimer("ResetRoadblockTimer", 60000, false);
return 1;
}
if(strcmp(cmdtext, "/roadunblock", true)==0 || strcmp(cmdtext, "/unrb", true)==0)
{
if(PlayerInfo[playerid][pMember] != 1 && PlayerInfo[playerid][pLeader] != 1
&& PlayerInfo[playerid][pMember] != 2 && PlayerInfo[playerid][pLeader] != 2
&& PlayerInfo[playerid][pMember] != 3 && PlayerInfo[playerid][pLeader] != 3)
{
SendClientMessage(playerid, COLOR_GREY, " Ты не законник!");
return 1;
}
if (PlayerInfo[playerid][pRoadblock] == 0)
{
SendClientMessage(playerid, COLOR_GREY, " У тебя нету установленных дорожных блоков!");
return 1;
}
RemoveRoadblock(playerid);
SendClientMessage(playerid, COLOR_GREEN, " Дорожный блок успешно убран.");
return 1;
}
if(strcmp(cmdtext, "/roadunblockall", true)==0 || strcmp(cmdtext, "/unrball", true)==0)
{
if (PlayerInfo[playerid][pRank] >= 5 && PlayerInfo[playerid][pMember] != 1||PlayerInfo[playerid][pLeader] != 1
||PlayerInfo[playerid][pMember] != 2 || PlayerInfo[playerid][pLeader] != 2
||PlayerInfo[playerid][pMember] != 3 || PlayerInfo[playerid][pLeader] != 3)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(PlayerInfo[i][pRoadblock] != 0)
{
RemoveRoadblock(i);
}
}
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), " Штаб: Все дорожные блоки были убраны по указанию %s.", sendername);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(PlayerInfo[i][pMember] == 1 || PlayerInfo[i][pLeader] == 1)
{
SendClientMessage(i, TEAM_BLUE_COLOR, string);
}
}
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Твой ранг должен быть 5, чтобы убрать се дорожные блоки!");
}
return 1;
}
