Originally Posted by Twisted_Insane
pawn Code:
CMD:freeze(playerid,params[]) { if(PlayerInfo[playerid][pAdmin] >=4 ) //setting permissions, again your enum-stuff here, don't take mine 1:1 {
}
return 1; }
Now, we'll not only got to define the stuff from earlier, we'll also check the enum's variables and set them to true, so the compiler knows that the player's frozen in this command!
pawn Code:
COMMAND:freeze(playerid,params[]) { if(PlayerInfo[playerid][pAdmin] >= 5) { new Target; //defines the playerid we wanna freeze if(sscanf(params, "u", Target)) SendClientMessage(playerid, COLOR_LIGHTBLUE, "USAGE: /freeze [playerid]"); //tell sscanf again if the parameters/syntax is wrong to return a special message if(!IsPlayerConnected(Target)) //if the ID doesn't exist, return an error-message return SendClientMessage(playerid, COLOR_GREY, "ERROR:Player is not connected!"); if(!sscanf(params, "u", Target)) { if(Target == playerid) return SendClientMessage(playerid, COLOR_RED, "ERROR: Cant perform this command on yourself!" ); //I wouldn't add this line, because it won't let you perform this CMD on yourself if(PlayerInfo[Target][pAdmin] > PlayerInfo[playerid][pAdmin]) return SendClientMessage(playerid,red,"ERROR: You cant perform this on Admins that are higher than your level!"); // if the player you're performing this command on has a higher level as you, return a message, you ain't able to freeze him new tname[MAX_PLAYER_NAME]; //define the new target-name of the playerid GetPlayerName(Target,tname,sizeof(tname)); //get the playername with this function new pname[MAX_PLAYER_NAME]; //define the adminname GetPlayerName(playerid,pname,sizeof(pname)); //get the adminname with this function new tstring[128]; //define the string for the player (victim) new pstring[128];// define the string for the admin which is performing new astring[128];//define the string for all the players which are online format(tstring,sizeof(tstring),"You have been frozen by administrator %s! You cant move!",pname); //this is formatting the player-string, while it's also getting the adminname format(pstring,sizeof(pstring),"You have frozen player %s(%d)!",tname,Target); //this is formatting the adminname-string, while it's also getting the playername and his ID(target) format(astring,sizeof(astring),"Administrator %s has frozen %s!",pname,tname); //this is formatting the all-string, while it's sending this message to everybody and is getting admin- and playername SendClientMessage(Target,COLOR_GOLD,tstring);//sends the message to the victim SendClientMessage(playerid,TEAM_GROVE_COLOR,pstring);//sends the message to the admin SendClientMessageToAll(COLOR_LIGHTBLUE,astring);//sends the message to everybody TogglePlayerControllable(Target,0); //with that function, the player won't be able to mov, while we're using the variable "Target" as the playerid PlayerInfo[Target][Frozen] = 1;//IMPORTANT:we're getting the variable "[frozen]" out of the enum, and set it's value to "1', the compiler knows now that the player is frozen } } // if he doesn't have permissions, return that message! else return SendClientMessage(playerid,COLOR_RED,"ERROR: You must be level 5 to use this command!"); return 1; }
The most important thing for you is this line:
pawn Code:
PlayerInfo[Target][Frozen] = 1;
We're telling the compiler, that he should put the variable "frozen" outta the enum into the info of the player! If you set the value to 1, the compiler knows that the player is frozen now!
Also that wasn't that difficult, the "unfreeze-CMD" is the same, we just have to set the enum's variable to "0" that the compiler knows that the player's unfrozen yet:
pawn Code:
COMMAND:unfreeze(playerid,params[]) { if(PlayerInfo[playerid][pAdmin] >= 5) { new Target; //defines the playerid we wanna unfreeze if(sscanf(params, "u", Target)) SendClientMessage(playerid, COLOR_LIGHTBLUE, "USAGE: /unfreeze [playerid]"); //tell sscanf again if the parameters/syntax is wrong to return a special message if(!IsPlayerConnected(Target)) //if the ID doesn't exist, return an error-message return SendClientMessage(playerid, COLOR_GREY, "ERROR:Player is not connected!"); if(!sscanf(params, "u", Target)) { if(Target == playerid) return SendClientMessage(playerid, COLOR_RED, "ERROR: Cant perform this command on yourself!" ); //I wouldn't add this line, because it won't let you perform this CMD on yourself if(PlayerInfo[Target][pAdmin] > PlayerInfo[playerid][pAdmin]) return SendClientMessage(playerid,red,"ERROR: You cant perform this on Admins that are higher than your level!"); // if the player you're performing this command on has a higher level as you, return a message, you ain't able to unfreeze him new tname[MAX_PLAYER_NAME]; //define the new target-name of the playerid GetPlayerName(Target,tname,sizeof(tname)); //get the playername with this function new pname[MAX_PLAYER_NAME]; //define the adminname GetPlayerName(playerid,pname,sizeof(pname)); //get the adminname with this function new tstring[128]; //define the string for the player (victim) new pstring[128];// define the string for the admin which is performing new astring[128];//define the string for all the players which are online format(tstring,sizeof(tstring),"You have been unfrozen by administrator %s! You cant move!",pname); //this is formatting the player-string, while it's also getting the adminname format(pstring,sizeof(pstring),"You have unfrozen player %s(%d)!",tname,Target); //this is formatting the adminname-string, while it's also getting the playername and his ID(target) format(astring,sizeof(astring),"Administrator %s has unfrozen %s!",pname,tname); //this is formatting the all-string, while it's sending this message to everybody and is getting admin- and playername SendClientMessage(Target,COLOR_GOLD,tstring);//sends the message to the victim SendClientMessage(playerid,TEAM_GROVE_COLOR,pstring);//sends the message to the admin SendClientMessageToAll(COLOR_LIGHTBLUE,astring);//sends the message to everybody TogglePlayerControllable(Target,1; //with that function, the player will be able to move again, while we're using the variable "Target" as playerid again PlayerInfo[Target][Frozen] = 0;//IMPORTANT:we're getting the variable "[frozen]" out of the enum, and set it's value to "0", the compiler knows now that the player is unfrozen } } // if he doesn't have permissions, return that message! else return SendClientMessage(playerid,COLOR_RED,"ERROR: You must be level 5 to use this command!"); return 1; }
[/I]
|