Para empezar nunca hagas esto (lo que esta en negritas):
Код:
dcmd_jail(playerid, params[])
{
if(sscanf(params, "u", params[0]))
return SendClientMessage(playerid, -1, "/jail < playerid >");
if(params[0] == INVALID_PLAYER_ID)
return SendClientMessage(playerid, red, "Player must be connected.");
if(Jailed[params[0]] == true)
return SendClientMessage(playerid, red, "Player already jailed.");
new string[83];
SetTimerEx("unjail", 60000, false, "d", params[0]);
format(string, sizeof(string), "%s has been jailed", GetPlayerNameEx(params[0]));
SendClientMessageToAll(red, string);
SetPlayerInterior(params[0], 0);
SetPlayerPos(params[0], -27.1455, 2321.1648, 24.3034);
SendClientMessage(params[0], -1, "You're on jail");
Jailed[params[0]] = true;
return true;
}
Te retornara todo mal y algunas veces no te funcionara el codigo. Por ejemplo si creas un sistema de casas y quieres borrar una casa (3d text label, checkpoint, etc), no hara nada, aunque le das el id de la casa que le fue asignada ("si lo creastes asi: Label[params[0]] = CreateDynamic3DTextLabel(...);")
Aqui te va, tomalo como un ejemplo de como harias tus otros comandos y un arreglo del mismo:
pawn Код:
new tmUnJail[MAX_PLAYERS];
dcmd_jail(playerid, params[])
{
new lookupid;
if(sscanf(params, "u", lookupid)) return SendClientMessage(playerid, -1, "/jail < playerid >");
if(!IsPlayerConnected(lookupid)) return SendClientMessage(playerid, red, "Player must be connected.");
if(Jailed[lookupid] == true) return SendClientMessage(playerid, red, "Player already jailed.");
new string[83];
KillTimer(tmUnJail[lookupid]);
tmUnJail[lookupid] = SetTimerEx("unjail", 60000, false, "i", lookupid);
format(string, sizeof(string), "%s has been jailed", GetPlayerNameEx(lookupid));
SendClientMessageToAll(red, string);
SetPlayerInterior(lookupid, 0);
SetPlayerPos(lookupid, -27.1455, 2321.1648, 24.3034);
SendClientMessage(lookupid, -1, "You're on jail");
Jailed[lookupid] = true;
return 1;
}
dcmd_unjail(playerid, params[])
{
new lookupid;
if(sscanf(params, "u", lookupid)) return SendClientMessage(playerid, -1, "/unjail < playerid >");
if(!IsPlayerConnected(lookupid)) return SendClientMessage(playerid, red, "Player must be connected.");
if(Jailed[lookupid] == false) return SendClientMessage(playerid, red, "Player is not in jail.");
new string[83];
format(string, sizeof(string), "%s now is free", GetPlayerNameEx(lookupid));
SendClientMessageToAll(red, string);
SetPlayerInterior(lookupid, 0);
SetPlayerPos(lookupid, -20.8889, 2334.4663, 24.1406);
KillTimer(tmUnJail[lookupid]);
Jailed[lookupid] = false;
return 1;
}
forward unjail(playerid);
public unjail(playerid)
{
new string[128];
SetPlayerPos(playerid, -20.8889, 2334.4663, 24.1406);
SetPlayerInterior(playerid, 0);
format(string, sizeof(string), "%s now is free", GetPlayerNameEx(playerid));
SendClientMessageToAll(red, string);
Jailed[playerid] = false;
return 1;
}