PDA

View Full Version : [Tutorial-ACS]RoadBlock



Aldu.
09-05-15, 23:28
In acest tutorial va voi invata cum sa faceti comanda
/rb. Acest RoadBlock nu este la tunel, este cel clasic.
Sub
forward AddsOn(); adaugam
forward ResetRoadblockTimer();
forward RemoveRoadblock(playerid). Acum la functiile definite prin
new adaugam
new roadblocktimer = 0;. Sub
pMarriedTo[128], adaugam
pRoadblock,, acum sub
PlayerInfo[playerid][pFuel] = 0; adaugam
PlayerInfo[playerid][pRoadblock] = 0;, sub
else if(PlayerInfo[playerid][pJob] == 7)
{
if(JobDuty[playerid] == 1) { Mechanics -= 1; }
} adaugam
if (PlayerInfo[playerid][pRoadblock] != 0)
{
RemoveRoadblock(playerid);
}. La
OnPlayerCommandText adaugam sub o comanda
//--------------------------------[Roadblock]-----------------------------------
if(strcmp(cmdtext, "/roadblock", true)==0 || strcmp(cmdtext, "/rb", true)==0)
{
if (PlayerInfo[playerid][pMember] != 1 && PlayerInfo[playerid][pLeader] != 1) return SendClientMessage(playerid, COLOR_GREY, "You are not a cop!");
if (PlayerInfo[playerid][pRank] < 5)
{
SendClientMessage(playerid, COLOR_GREY, "You have to be rank 5 to use this command!");
return 1;
}
if (PlayerInfo[playerid][pRoadblock] != 0) return SendClientMessage(playerid, COLOR_GREY, "You can only deploy 1 roadblock at a time, type /rrb to remove your existing one.");
if (roadblocktimer != 0) return SendClientMessage(playerid, COLOR_GREY, "Please wait before trying to spawn another roadblock!");
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, "Roadblock deployed successfully, type /rrb or /roadunblock to remove it.");
roadblocktimer = 1;
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "HQ: A roadblock has been deployed by %s, it has been marked on the map by a checkpoint.", sendername);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(PlayerInfo[i][pMember] == 1 || PlayerInfo[i][pLeader] == 1)
{
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)
{
SendClientMessage(i, COLOR_YELLOW, "You can remove all roadblocks by typing /rrball");
}
}
}
}
SetTimer("ResetRoadblockTimer", 60000, false);
return 1;
}

if(strcmp(cmdtext, "/roadunblock", true)==0 || strcmp(cmdtext, "/rrb", true)==0)
{
if (PlayerInfo[playerid][pMember] != 1 && PlayerInfo[playerid][pLeader] != 1)
{
SendClientMessage(playerid, COLOR_GREY, "Only PD members can use this !");
return 1;
}
if (PlayerInfo[playerid][pRank] < 5)
{
SendClientMessage(playerid, COLOR_GREY, "You have to be rank 5 to use this command!");
return 1;
}
if (PlayerInfo[playerid][pRoadblock] == 0)
{
SendClientMessage(playerid, COLOR_GREY, "You haven't deployed a roadblock!");
return 1;
}
RemoveRoadblock(playerid);
SendClientMessage(playerid, COLOR_GREEN, "Roadblock removed successfully.");
return 1;
}

if(strcmp(cmdtext, "/roadunblockall", true)==0 || strcmp(cmdtext, "/rrball", true)==0)
{
if (PlayerInfo[playerid][pRank] >= 5 && PlayerInfo[playerid][pMember] || PlayerInfo[playerid][pLeader] == 1)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(PlayerInfo[i][pRoadblock] != 0)
{
RemoveRoadblock(i);
}
}
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "HQ: All roadblocks in the area are to be disbanded immediately by order of %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, "You have to be rank 5+ or a police leader to remove all roadblocks!");
}
return 1;
}. Sub
public AddsOn()
{
adds=1;
return 1;
} adaugam
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;
}.