Hallo Community!
Ich bin noch Script anfänger ich scripte noch nicht solange und übe und übe immer weiter.
Jetzt mache ich ein Freeze/Unfreeze System ich habe das schon Geschrieben und es geht auch
Egal wie ich es schreibe ist meine Sache solange es Funktioniert deshalb möchte ich nicht solche Kommentare sehen z.b Falsch geschrieben e.t.c...
Nun gut fangen wir an an.
Als erstes müsst ihr euch das ocmd include und das sscanf include runter laden.
ocmd: http://www.solidfiles.com/d/fa12/
sscanf: http://www.solidfiles.com/d/ba2f/
Wenn ihr das habt öffnet irh euer Pawno Programm und includiert diese Include.
#include <ocmd>
#include <sscanf>
wenn ihr das habt sucht ihr euch eine Stelle wo ihr mit ocmd schreiben könnt ich mache es über OnPlayerCommandText.
Ihr könnt euch ein Kommentar machen wie z.b //ocmd-Befehle
Nun fangen wir mit unser system an.
ocmd:freeze(playerid,params[])
{
return 1;
}
Dan gehen wir über return 1 und schreiben
new pID,string[128],text[128]; //new = neu pID die ID vom anderen User die wir Freezen wollen string = Der die nachricht ausgibt text = was geschrieben wird z.b Pascal freezt Pascal Grund: HI
if(sscanf(params,"us",pID,text))return SendClientMessage(playerid,GRAU,"Fehler: /freeze [playerid][Grund]");// = if ist eine Abfrage, params = die Parameter von pID,text
else if(pID == INVALID_PLAYER_ID)SendClientMessage(playerid,ROT,"Spieler nicht Gefunden"); // Fragt ab ob der Spieler überhaupt Online ist b.z.w ob es den Spieler gibt.
else // Wenn es den Spieler gibt und der auch Online ist führt er den Befehl aus !
{
TogglePlayerControllable(pID,0); // TogglePlayerControllable = freezt den Spieler oder unfreezt den Spieler, 0= Freezt den Spieler
format(string,sizeof(string),"Admin: %s freezt %s Grund: %s",SpielerName(playerid),SpielerName(pID),text); //format = formatiert den string und die Länger sowie auch den Text, %s Player oder ein text das s bedeuet sowie wie Send e.t.c .)
SendClientMessageToAll(ROT,string);
}
return 1; // SendClientMessageToAll = Gibt eine Nachricht für den Ganzen server aus b.z.w das es jeder Lesen kann, ROT = Die Farbe und er was er an die Leute ausgeben soll was für eine Nachricht = string
Das ganze sieht so aus
ocmd:freeze(playerid,params[])
{
new pID,string[128],text[128];
if(sscanf(params,"us",pID,text))return SendClientMessage(playerid,GRAU,"Fehler: /freeze [playerid][Grund]");
else if(pID == INVALID_PLAYER_ID)SendClientMessage(playerid,ROT,"Spieler nicht Gefunden");
else
{
TogglePlayerControllable(pID,0);
format(string,sizeof(string),"Admin: %s freezt %s Grund: %s",SpielerName(playerid),SpielerName(pID),text);
SendClientMessageToAll(ROT,string);
}
return 1;
}
Das tut ihr Kopieren und schreibt es so um
new pID,string[128]; // Diesmal soll er kein Text rausgeben
if(sscanf(params,"u",pID))return SendClientMessage(playerid,ROT,"Fehler: /unfreeze [playerid]"); // von "us" ändert ihr es als "u" weil er soll es nur an die pID schicken.
TogglePlayerControllable(pID,1); //1= unfreeze
format(string,sizeof(string),"Admin: %s hat %s entfreezt",SpielerName(playerid),SpielerName(pID)); //Den text umschreiben unten hinter SpielerName den text raus nehmen
Das ganze sieht nun so aus
ocmd:freeze(playerid,params[])
{
new pID,string[128],text[128];
if(sscanf(params,"us",pID,text))return SendClientMessage(playerid,GRAU,"Fehler: /freeze [playerid][Grund]");
else if(pID == INVALID_PLAYER_ID)SendClientMessage(playerid,ROT,"Spieler nicht Gefunden");
else
{
TogglePlayerControllable(pID,0);
format(string,sizeof(string),"Admin: %s freezt %s Grund: %s",SpielerName(playerid),SpielerName(pID),text);
SendClientMessageToAll(ROT,string);
}
return 1;
}
ocmd:unfreeze(playerid,params[])
{
new pID,string[128];
if(sscanf(params,"u",pID))return SendClientMessage(playerid,ROT,"Fehler: /unfreeze [playerid]");
else if(pID == INVALID_PLAYER_ID)SendClientMessage(playerid,ROT,"Spieler nicht Gefunden");
else
{
TogglePlayerControllable(pID,1);
format(string,sizeof(string),"Admin: %s hat %s entfreezt",SpielerName(playerid),SpielerName(pID));
SendClientMessageToAll(ROT,string);
}
return 1;
}
und den stock SpielerName nicht vergessen
stock SpielerName(playerid)
{
new name[MAX_PLAYERS];
GetPlayerName(playerid,name,sizeof(name));
return name;
}
So ich hoffe ich konnte alles Richtig erklären weil ich bin anfänger ich weiß selber so manche sachen nicht ich weiß nicht ob ich es richtig erklärt habe sry.
Aber sonst müsste alles gehen
Viel Spaß