/cage and /uncage -
SnG.Scot_MisCuDI - 14.12.2011
sup d00dz, im using luxadmin and they have a /cage (id) (time) command. But i dont want to put a time limit in. I just want to do /cage (id). Then when i want i can do /uncage (id)
And also How can i make it give a reason. Like: ** ADMIN CAGE: Player (1) has been caged - Hacking
here is the script
pawn Код:
dcmd_cage(playerid,params[])
{
if(AccInfo[playerid][Level] < 4)
return ErrorMessages(playerid, 5);
new Index;
new tmp[256]; tmp = strtok(params, Index);
new tmp2[256]; tmp2 = strtok(params, Index);
new player1 = ReturnUser(tmp);
new time = strval(tmp2);
if(!strlen(tmp)) return
SendClientMessage(playerid, LIGHTBLUE2, "Usage: /cage [PlayerID] [Time]") &&
SendClientMessage(playerid, orange, "Function: Will hold player in a Cage by specified Time");
if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID && player1 != playerid && (AccInfo[player1][Level] != ServerInfo[MaxAdminLevel]))
{
if(!strlen(tmp2))
return SendClientMessage(playerid, red, "ERROR: Not specified Time!");
if(time < 10)
return SendClientMessage(playerid, red, "ERROR: Time must be greater than 10 Seconds!");
if(AccInfo[player1][pCaged] == 1)
return SendClientMessage(playerid, red, "ERROR: Player is already in Cage!");
new string[128];
new playername[MAX_PLAYER_NAME];
new adminname [MAX_PLAYER_NAME];
SendCommandToAdmins(playerid,"Cage");
GetPlayerName(player1, playername, sizeof(playername));
GetPlayerName(playerid, adminname, sizeof(adminname));
format(string, sizeof(string), "** ADMIN CAGE: %s Has Been Caged", playername);
SendClientMessageToAll(adminpink, string);
TogglePlayerControllable(player1, 0);
AccInfo[player1][pCageTime] = time;
AccInfo[player1][pCaged] = 1;
GetPlayerPos(playerid, LPosX[player1], LPosY[player1], LPosZ[player1]);
SetTimerEx("CagePlayer", 1000, 0, "i", player1);
SetTimerEx("UnCagePlayer", AccInfo[player1][pCageTime]*1000, 0, "i", player1);
}
else return ErrorMessages(playerid, 3);
return 1;
}
i know i can take out SetTimerEx but i dont know how to make the /uncage
Re: /cage and /uncage -
Mokerr - 14.12.2011
Try this out:
pawn Код:
dcmd_cage(playerid,params[])
{
if(AccInfo[playerid][Level] < 4) return ErrorMessages(playerid, 5);
new Index;
new tmp[256]; tmp = strtok(params, Index);
new tmp2[256]; tmp2 = strtok(params, Index);
new player1 = ReturnUser(tmp);
new reason[128]; reason = strval(tmp2);
if(!strlen(tmp)) return
SendClientMessage(playerid, LIGHTBLUE2, "Usage: /cage [PlayerID] [Reason]") &&
SendClientMessage(playerid, orange, "Function: Will hold player in a Cage by specified Time");
if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID && player1 != playerid && (AccInfo[player1][Level] != ServerInfo[MaxAdminLevel]))
{
if(time < 10) return SendClientMessage(playerid, red, "ERROR: Time must be greater than 10 Seconds!");
new string[128];
new playername[MAX_PLAYER_NAME];
new adminname[MAX_PLAYER_NAME];
SendCommandToAdmins(playerid,"Cage");
GetPlayerName(player1, playername, sizeof(playername));
GetPlayerName(playerid, adminname, sizeof(adminname));
if(AccInfo[player1][pCaged] == 0)
{
if(!reason) return SendClientMessage(playerid, red, "ERROR: You need to give a reason!");
format(string, sizeof(string), "** ADMIN CAGE: %s Has Been Caged by %s for %s.", playername, adminname, reason);
SendClientMessageToAll(adminpink, string);
TogglePlayerControllable(player1, 0);
AccInfo[player1][pCageTime] = time;
AccInfo[player1][pCaged] = 1;
GetPlayerPos(playerid, LPosX[player1], LPosY[player1], LPosZ[player1]);
SetTimerEx("CagePlayer", 1000, 0, "i", player1);
}
else
{
format(string, sizeof(string), "** ADMIN CAGE: %s Has been un-caged by %s", playername, adminname);
SendClientMessageToAll(adminpink, string);
TogglePlayerControllable(player1, 1);
AccInfo[player1][pCageTime] = 0;
AccInfo[player1][pCaged] = 0;
SetTimerEx("UnCagePlayer", 1000, 0, "i", player1);
}
}
else return ErrorMessages(playerid, 3);
return 1;
}
Haven't tested it.
If you /cage a player it will cage him, and if you /cage again on him it will uncage him. So you don't need 2 cmds.
Re: /cage and /uncage -
SnG.Scot_MisCuDI - 14.12.2011
(182

: error 033: array must be indexed (variable "reason")
(1835) : error 017: undefined symbol "time"
(1844) : error 033: array must be indexed (variable "reason")
(184

: error 017: undefined symbol "time"
(4667) : warning 204: symbol is assigned a value that is never used: "playername"[/pawn]
Re: /cage and /uncage -
Mokerr - 15.12.2011
Ah yeahh forgot.
so you can delete this pvar:
pawn Код:
AccInfo[player1][pCageTime]
pawn Код:
dcmd_cage(playerid,params[])
{
if(AccInfo[playerid][Level] < 4) return ErrorMessages(playerid, 5);
new Index;
new tmp[256]; tmp = strtok(params, Index);
new tmp2[256]; tmp2 = strtok(params, Index);
new player1 = ReturnUser(tmp);
new reason[128];
reason = strlen(tmp2);
if(!strlen(tmp)) return
SendClientMessage(playerid, LIGHTBLUE2, "Usage: /cage [PlayerID] [Reason]") &&
SendClientMessage(playerid, orange, "Function: Will hold player in a Cage by specified Time");
if(IsPlayerConnected(player1) && player1 != INVALID_PLAYER_ID && player1 != playerid && (AccInfo[player1][Level] != ServerInfo[MaxAdminLevel]))
{
new string[128];
new playername[MAX_PLAYER_NAME];
new adminname[MAX_PLAYER_NAME];
SendCommandToAdmins(playerid,"Cage");
GetPlayerName(player1, playername, sizeof(playername));
GetPlayerName(playerid, adminname, sizeof(adminname));
if(AccInfo[player1][pCaged] == 0)
{
if(!reason) return SendClientMessage(playerid, red, "ERROR: You need to give a reason!");
format(string, sizeof(string), "** ADMIN CAGE: %s Has Been Caged by %s for %s.", playername, adminname, reason);
SendClientMessageToAll(adminpink, string);
TogglePlayerControllable(player1, 0);
AccInfo[player1][pCaged] = 1;
GetPlayerPos(playerid, LPosX[player1], LPosY[player1], LPosZ[player1]);
SetTimerEx("CagePlayer", 1000, 0, "i", player1);
}
else
{
format(string, sizeof(string), "** ADMIN CAGE: %s Has been un-caged by %s", playername, adminname);
SendClientMessageToAll(adminpink, string);
TogglePlayerControllable(player1, 1);
AccInfo[player1][pCaged] = 0;
SetTimerEx("UnCagePlayer", 1000, 0, "i", player1);
}
}
else return ErrorMessages(playerid, 3);
return 1;
}