/*============================================================================== Copyright (c) 2012-2013 mskamilor LRAS - Login Register Admin System by mskamilor V.0.1 - Login/Register - (TAB) Mini Admin Panel - stats - Administatoren Namen ========================= Befehle V.0.1: - Spec,Specoff - Ban - Kick - Fixveh - Cveh - Makeadmin - Heal - Kill - mute - unmute - muteall - unmuteall ===============================================================================*/ #include #include #include #define COLOR_RED 0xFF6347AA #define COLOR_WHITE 0xFFFFFFFF #define hellblau 0xFFFFFF #define BLAU 0xFFFFFF #define DIALOG_REGISTER 1 #define DIALOG_LOGIN 2 #define DIALOG_AH 3 #define DIALOG_STATS 4 #define DIALOG_PANEL 5 #define Adminlevel1 "Supporter" #define Adminlevel2 "Admin" #define Adminlevel3 "Super Admin" #define Adminlevel4 "Server Manager" #define Adminlevel5 "Server Owner" #define SLOT 50 // HIER IMMER DIE DERZEITIGE SOLTS ANZAHL EINGEBEN new bool:MuteNET[SLOT]; new Mut, MutTime, StrMut[100], PlayerName[MAX_PLAYER_NAME], PlayerName2[MAX_PLAYER_NAME]; forward UnMute(playerid); main() { print("\n----------------------------------"); print(" LRAS by mskamilor"); print("----------------------------------\n"); } public OnFilterScriptInit() { return 1; } public OnFilterScriptExit() { return 1; } public OnPlayerRequestClass(playerid, classid) { return 1; } public OnPlayerConnect(playerid) { for(new i=0; i<10; i++) SendClientMessage(playerid,COLOR_WHITE,""); new Datei[64]; new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); format(Datei,sizeof(Datei),"/%s.txt",name); if(dini_Exists(Datei)) { ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","{FFFFFF}Dein {FF8A05}Account {FFFFFF}wurde gefunden.\nDu kannst dich nun mit deinen Passwort einlogen{FF8A05}:","Login","Abbrechen"); } else { ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Registrieren","{FF8A05}Willkommen\n{FFFFFF}schön das du unseren Server gefunden hast\nWir sind ein Freeroam\nAlso ist hier alles außer Cheats erlaubt\n\n\nViel Spaß wünscht ihnen das {FF8A05}Team","Register","Abbrechen"); } SetPVarInt(playerid,"spect",-1); SetPVarInt(playerid,"spec",-1); MuteNET[playerid] = false; return 1; } public OnPlayerDisconnect(playerid, reason) { if(GetPVarInt(playerid,"loggedin")==1) { SpielerSpeichern(playerid); } if(GetPVarInt(playerid,"spect")!=-1) { TogglePlayerSpectating(GetPVarInt(playerid,"spect"),0); SetCameraBehindPlayer(GetPVarInt(playerid,"spect")); SetPVarInt(GetPVarInt(playerid,"spect"),"spec",-1); } else if(GetPVarInt(playerid,"spec")!=-1)SetPVarInt(GetPVarInt(playerid,"spec"),"spec",-1); return 1; } public OnPlayerSpawn(playerid) { return 1; } public OnPlayerDeath(playerid, killerid, reason) { return 1; } public OnVehicleSpawn(vehicleid) { return 1; } public OnVehicleDeath(vehicleid, killerid) { return 1; } public OnPlayerText(playerid, text[]) { if(MuteNET[playerid] == true) { SendClientMessage(playerid,COLOR_RED,"Du bist gemutet und kannst nicht reden!"); return 0; } return 1; } public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) { return 1; } public OnPlayerExitVehicle(playerid, vehicleid) { return 1; } public OnPlayerStateChange(playerid, newstate, oldstate) { if(GetPVarInt(playerid,"spect")!=-1) { switch(newstate) { case 0,1,7,8: PlayerSpectatePlayer(GetPVarInt(playerid,"spect"),playerid); case 2,3:PlayerSpectateVehicle(GetPVarInt(playerid,"spect"),GetPlayerVehicleID(playerid)); case 9: { SetPVarInt(GetPVarInt(playerid,"spect"),"spec",-1); TogglePlayerSpectating(GetPVarInt(playerid,"spect"),0); SetCameraBehindPlayer(GetPVarInt(playerid,"spect")); } } } return 1; } public OnPlayerEnterCheckpoint(playerid) { return 1; } public OnPlayerLeaveCheckpoint(playerid) { return 1; } public OnPlayerEnterRaceCheckpoint(playerid) { return 1; } public OnPlayerLeaveRaceCheckpoint(playerid) { return 1; } public OnRconCommand(cmd[]) { return 1; } public OnPlayerRequestSpawn(playerid) { return 1; } public OnObjectMoved(objectid) { return 1; } public OnPlayerObjectMoved(playerid, objectid) { return 1; } public OnPlayerPickUpPickup(playerid, pickupid) { return 1; } public OnVehicleMod(playerid, vehicleid, componentid) { return 1; } public OnVehiclePaintjob(playerid, vehicleid, paintjobid) { return 1; } public OnVehicleRespray(playerid, vehicleid, color1, color2) { return 1; } public OnPlayerSelectedMenuRow(playerid, row) { return 1; } public OnPlayerExitedMenu(playerid) { return 1; } public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid) { return 1; } public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { return 1; } public OnRconLoginAttempt(ip[], password[], success) { return 1; } public OnPlayerUpdate(playerid) { return 1; } public OnPlayerStreamIn(playerid, forplayerid) { return 1; } public OnPlayerStreamOut(playerid, forplayerid) { return 1; } public OnVehicleStreamIn(vehicleid, forplayerid) { return 1; } public OnVehicleStreamOut(vehicleid, forplayerid) { return 1; } new plID; public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dialogid==DIALOG_LOGIN) { if(response==0) { SendClientMessage(playerid,COLOR_WHITE,"Du hast den Vorgang abgebrochen."); Kick(playerid); return 1; } if(response==1) { if(!strlen(inputtext)) { SendClientMessage(playerid,COLOR_WHITE,"Das Passwort war nicht lang genug."); ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","{FFFFFF}Du hast nix eingegeben\n\nVersuche es erneut:","Login","Abbrechen"); return 1; } else { Login(playerid,inputtext); return 1; } } } if(dialogid==DIALOG_REGISTER) { if(response==0) { SendClientMessage(playerid,COLOR_WHITE,"Du hast den Vorgang abgebrochen."); Kick(playerid); return 1; } if(response==1) { if(!strlen(inputtext)) { SendClientMessage(playerid,COLOR_WHITE,"Das Passwort war nicht lang genug."); ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Registrieren","{FFFFFF}Du hast nix eingegeben\n\nVersuche es erneut:","Register","Abbrechen"); return 1; } else { Register(playerid,inputtext); return 1; } } if(dialogid == DIALOG_PANEL) { if(listitem==0) { SendClientMessage(plID,COLOR_RED,"Du wurdest Gebannt"),Ban(plID); } if(listitem==1) { SendClientMessage(plID,COLOR_RED,"Du wurdest Gekickt"),Kick(plID); } if(listitem==2) { new Float:x,Float:y,Float:z; GetPlayerPos(plID,x,y,z); SetPlayerPos(playerid,x,y,z); } if(listitem==3) { new Float:x,Float:y,Float:z; GetPlayerPos(playerid,x,y,z); SetPlayerPos(plID,x,y,z); } if(listitem==4) { new Float:x,Float:y,Float:z; GetPlayerPos(plID,x,y,z); CreateExplosion(x,y,z,0,20); } } return 1; } return 1; } public OnPlayerClickPlayer(playerid, clickedplayerid, source) { plID=clickedplayerid; if(!IsAdmin(playerid,2))return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin"); ShowPlayerDialog(playerid,DIALOG_PANEL,DIALOG_STYLE_LIST,"Admin Panel","Ban\nKick\nGo to\nGet here\nExplode\n","Weahlen","Abbrechen"); return 1; } ocmd:stats(playerid,params[]) { new string[124]; new adminlevel[124]; switch(GetPVarInt(playerid,"Adminlevel")) { case 1:{adminlevel=Adminlevel1;} case 2:{adminlevel=Adminlevel2;} case 3:{adminlevel=Adminlevel3;} case 4:{adminlevel=Adminlevel4;} case 5:{adminlevel=Adminlevel5;} } format(string,sizeof(string),"{FFFFFF}Name: %s\n\n{FF805A}Score: %i\n\n{FF8A05}Adminlevel: %s",SpielerName(playerid),GetPlayerScore(playerid),adminlevel); ShowPlayerDialog(playerid,DIALOG_STATS,DIALOG_STYLE_MSGBOX,"Stats",string,"OK",""); return 1; } ocmd:fixveh(playerid,params[]) { if(IsAdmin(playerid,2))return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin!"); new Vehicle; Vehicle = GetPlayerVehicleID(playerid); SetVehicleHealth(Vehicle,100); SendClientMessage(playerid,hellblau,"Fahrzeug erfolgreich gehealt."); return 1; } ocmd:cveh(playerid,params[]) { if(IsAdmin(playerid,3))return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin"); new vID,cID,cID2; new Float:X,Float:Y,Float:Z; GetPlayerPos(playerid,X,Y,Z); if(sscanf(params,"iii",vID,cID,cID2))return SendClientMessage(playerid,COLOR_RED,"Benutze /cveh [vID][cID][cID2]"); CreateVehicle(vID,X,Y,Z,0,cID,cID2,-1); SendClientMessage(playerid,hellblau,"Fahrzeug erfolgreich erstellt."); return 1; } ocmd:makeadmin(playerid,params[]) { if(IsAdmin(playerid,5))return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin"); new pID,rank; new string[124]; new adminlevel[124]; if(sscanf(params,"ui",pID,rank))return SendClientMessage(playerid,COLOR_RED,"Benutze /makeadmin [playerid][alevel]"); if(rank<1||rank>5)return SendClientMessage(playerid,COLOR_RED,"Bitte Gültigen Rang angeben."); SpielerSpeichern(pID); SetPVarInt(pID,"Adminlevel",rank); switch(GetPVarInt(playerid,"Adminlevel")) { case 1:{adminlevel=Adminlevel1;} case 2:{adminlevel=Adminlevel2;} case 3:{adminlevel=Adminlevel3;} case 4:{adminlevel=Adminlevel4;} case 5:{adminlevel=Adminlevel5;} } format(string,sizeof(string),"%s Wurde zum %s ernannt",SpielerName(pID),adminlevel); SendClientMessage(playerid,COLOR_RED,string); SendClientMessage(pID,COLOR_RED,string); return 1; } ocmd:ban(playerid,params[]) { if(IsAdmin(playerid,2))return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin!"); new reason[124],pID,string[124]; if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,COLOR_RED,"Benutze /ban [playerid] [grund]"); format(string,sizeof(string),"Admcmd: %s wurde von %s gebannt. Mit dem Grund: %s",SpielerName(pID),SpielerName(playerid),reason); SetPVarInt(pID,"Baned",1); Kick(pID); SendClientMessageToAll(COLOR_RED,string); return 1; } ocmd:kick(playerid,params[]) { if(IsAdmin(playerid,1))return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin!"); new reason[124],pID,string[124]; if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,COLOR_RED,"Benutze /kick [playerid][grund]"); format(string,sizeof(string),"Admcmd: %s wurde von %s gekickt. Mit dem Grund: %s",SpielerName(pID),SpielerName(playerid),reason); SendClientMessageToAll(COLOR_RED,string); Kick(pID); return 1; } ocmd:spec(playerid, params[]) { if(IsAdmin(playerid,1))return SendClientMessage(playerid,0xFF0000AA,"Du bist kein Admin"); if(!strlen(params))return SendClientMessage(playerid,0xFFFFFFAA,"/spec [id]"); new giveid=strval(params); if(!IsPlayerConnected(giveid) || giveid==playerid)return SendClientMessage(playerid,0xFF0000AA,"Falsche ID"); TogglePlayerSpectating(playerid,1); switch(GetPlayerState(giveid)) { case 2,3:PlayerSpectateVehicle(playerid,GetPlayerVehicleID(giveid)); case 0,1,7,8,4:PlayerSpectatePlayer(playerid,giveid); case 9:return SendClientMessage(playerid,0x00CC00AA,"Diesen Spieler kannst du nicht specen"); } SendClientMessage(playerid,0x00CC00AA,"Benutze /specoff wenn du den Spec modus verlassen willst"); SetPVarInt(playerid,"spect",giveid); SetPVarInt(giveid,"spec",playerid); return 1; } ocmd:specoff(playerid, params[]) { #pragma unused params TogglePlayerSpectating(playerid,0); SetCameraBehindPlayer(playerid); if(GetPVarInt(playerid,"spec")!=-1)SetPVarInt(GetPVarInt(playerid,"spec"),"spect",-1); SetPVarInt(playerid,"spec",-1); return 1; } ocmd:heal(playerid,params[]) { new pID,HP,str[200]; if(IsAdmin(playerid,2))return SendClientMessage(playerid,COLOR_RED,"du bist kein Admin"); if(sscanf(params,"ud",pID,HP))return SendClientMessage(playerid,COLOR_RED,"/heal [ID] [HP]"); if(HP<0||HP>100)return SendClientMessage(playerid,COLOR_RED,"Num ab 0 bis 100 möglich"); SetPlayerHealth(pID,HP); format(str,sizeof(str),"Du hast das HP von %s auf %d eingestellt",SpielerName(pID),HP); SendClientMessage(playerid,COLOR_RED,str); return 1; } ocmd:kill(playerid,params[]) { new pID,str[100],str2[100]; if(IsAdmin(playerid,2))return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin"); if(sscanf(params,"u",pID))return SendClientMessage(playerid,COLOR_RED,"/kill [ID]"); SetPlayerHealth(pID,0); format(str,sizeof(str),"Du hast den Spieler %s Getötet",SpielerName(pID)); SendClientMessage(playerid,COLOR_RED,str); format(str,sizeof(str2),"Du wurdest durch den Admin: %s Getötet",SpielerName(playerid)); SendClientMessage(pID,COLOR_RED,str2); return 1; } ocmd:mute(playerid, params[]) { if(IsAdmin(playerid,1))return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin"); if(sscanf(params,"ud",Mut,MutTime))return SendClientMessage(playerid,COLOR_RED,"/Mute [ID] [Sekunden]"); if(!IsPlayerConnected(Mut))return SendClientMessage(playerid,COLOR_RED,"Falsche ID"); if(MuteNET[Mut] == true)return SendClientMessage(playerid,COLOR_RED,"Dieser Spieler ist schon gemutet"); if(MutTime < 2 || MutTime > 900000)return SendClientMessage(playerid,COLOR_RED,"/Mute [ID] [2 - 900000]"); MuteNET[Mut] = true; SetTimerEx("UnMute",MutTime*1000,0,"d",Mut); GetPlayerName(playerid, PlayerName, sizeof(PlayerName)); GetPlayerName(Mut, PlayerName2, sizeof(PlayerName2)); format(StrMut, sizeof(StrMut), "Admin: %s Hat den Spieler: %s für %d sekunden gemutet ", PlayerName, PlayerName2, MutTime*1000); SendClientMessageToAll(COLOR_RED, StrMut); SendClientMessage(Mut,COLOR_RED, "Du wurdest gemutet"); return 1; } ocmd:unmute(playerid, params[]) { if(IsAdmin(playerid,1))return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin"); if(sscanf(params,"u",Mut))return SendClientMessage(playerid,COLOR_RED,"/UnMute [ID]"); if(IsPlayerConnected(Mut))return SendClientMessage(playerid,COLOR_RED,"Falsche ID"); if(IsPlayerConnected(playerid == Mut))return SendClientMessage(playerid,COLOR_RED,"Du kannst dich selber nicht unmuten"); if(MuteNET[Mut] == false)return SendClientMessage(playerid,COLOR_RED,"dieser Spieler ist nicht gemutet"); MuteNET[Mut] = false; GetPlayerName(playerid, PlayerName, sizeof(PlayerName)); GetPlayerName(Mut, PlayerName2, sizeof(PlayerName2)); format(StrMut, sizeof(StrMut), "Admin: %s Hat den Spieler: %s Unmutet", PlayerName, PlayerName2); SendClientMessageToAll(COLOR_RED, StrMut); return 1; } ocmd:muteall(playerid, params[]) { if(IsAdmin(playerid,2))return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin"); for(new i, g = GetMaxPlayers(); i < g; i++) { if(IsPlayerConnected(i)) { MuteNET[i] = true; } } GetPlayerName(playerid, PlayerName, sizeof(PlayerName)); format(StrMut, sizeof(StrMut), "Admin: %s Hat alle gemutet", PlayerName); SendClientMessageToAll(COLOR_RED, StrMut); return 1; } ocmd:unmuteall(playerid, params[]) { if(IsAdmin(playerid,2)) return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin"); for(new i, g = GetMaxPlayers(); i < g; i++) { if(IsPlayerConnected(i)) { MuteNET[i] = false; } } GetPlayerName(playerid, PlayerName, sizeof(PlayerName)); format(StrMut, sizeof(StrMut), "Admin: %s hat alle ungemutet", PlayerName); SendClientMessageToAll(COLOR_RED, StrMut); return 1; } ocmd:ah(playerid,params[]) { if(IsAdmin(playerid,1))return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin!"); ShowPlayerDialog(playerid,DIALOG_AH,DIALOG_STYLE_MSGBOX,"Admin Hilfe","{FFFFFF}/kick - Spieler kicken\n/fixveh - Fahrzeug reperieren\n/ban - Spieler Banen\n/cveh - Fahrzeug spawnen\n/spec - Einen Spieler beobachten\n/makeadmin - Einen Spieler zum Admin machen\n/heal - HP einstellen\n/kill - Spieler töten\n/mute - Spieler Muten\n/unmute - Spieler Unmuten\n/muteall - Alle muten\n/unmuteall - Alle unmuten","OK",""); return 1; } /* STOCKS BZW. PUBLICS */ stock SpielerName(playerid) { new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); return name; } stock Register(playerid,key[]) { new Spielerdatei[64]; new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); format(Spielerdatei,sizeof(Spielerdatei),"/%s.txt",name); dini_Create(Spielerdatei); dini_Set(Spielerdatei,"Passwort",key); SetPlayerScore(playerid,1); SetPVarInt(playerid,"loggedin",1); return 1; } stock Login(playerid,key[]) { new Spielerdatei[64]; new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); format(Spielerdatei,sizeof(Spielerdatei),"/%s.txt",name); if(!strcmp(key,dini_Get(Spielerdatei,"Passwort"),false)) { LoadAccount(playerid); SendClientMessage(playerid,COLOR_RED,"Erfolgreich eingeloggt."); return 1; } else { ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","{FFFFFF}Du hast ein Falsches Passwort angegeben.\n\nVersuche es erneut:","Login","Abbrechen"); return 1; } } stock LoadAccount(playerid) { new Spielerdatei[64]; new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); format(Spielerdatei,sizeof(Spielerdatei),"/%s.txt",name); SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel")); SetPVarInt(playerid,"Baned",dini_Int(Spielerdatei,"Baned")); if(GetPVarInt(playerid,"Baned")==1) { SendClientMessage(playerid,COLOR_RED,"Du bist vom Server gebannt."); Kick(playerid); } SetPVarInt(playerid,"loggedin",1); return 1; } stock SpielerSpeichern(playerid) { if(GetPVarInt(playerid,"loggedin")==1) { new Spielerdatei[64]; new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); format(Spielerdatei,sizeof(Spielerdatei),"/%s.txt",name); dini_IntSet(Spielerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel")); dini_IntSet(Spielerdatei,"Baned",GetPVarInt(playerid,"Baned")); } return 1; } stock IsAdmin(playerid,rank) { if(GetPVarInt(playerid,"Adminlevel")<=rank)return 1; return 0; } stock sscanf(sstring[], format[], {Float,_}:...) { #if defined isnull if (isnull(sstring)) #else if (sstring[0] == 0 || (sstring[0] == 1 && sstring[1] == 0)) #endif { return format[0]; } #pragma tabsize 4 new formatPos = 0, sstringPos = 0, paramPos = 2, paramCount = numargs(), delim = ' '; while (sstring[sstringPos] && sstring[sstringPos] <= ' ') { sstringPos++; } while (paramPos < paramCount && sstring[sstringPos]) { switch (format[formatPos++]) { case '\0': { return 0; } case 'i', 'd': { new neg = 1, num = 0, ch = sstring[sstringPos]; if (ch == '-') { neg = -1; ch = sstring[++sstringPos]; } do { sstringPos++; if ('0' <= ch <= '9') { num = (num * 10) + (ch - '0'); } else { return -1; } } while ((ch = sstring[sstringPos]) > ' ' && ch != delim); setarg(paramPos, 0, num * neg); } case 'h', 'x': { new num = 0, ch = sstring[sstringPos]; do { sstringPos++; switch (ch) { case 'x', 'X': { num = 0; continue; } case '0' .. '9': { num = (num << 4) | (ch - '0'); } case 'a' .. 'f': { num = (num << 4) | (ch - ('a' - 10)); } case 'A' .. 'F': { num = (num << 4) | (ch - ('A' - 10)); } default: { return -1; } } } while ((ch = sstring[sstringPos]) > ' ' && ch != delim); setarg(paramPos, 0, num); } case 'c': { setarg(paramPos, 0, sstring[sstringPos++]); } case 'f': { new changestr[16], changepos = 0, strpos = sstringPos; while(changepos < 16 && sstring[strpos] && sstring[strpos] != delim) { changestr[changepos++] = sstring[strpos++]; } changestr[changepos] = '\0'; setarg(paramPos,0,_:floatstr(changestr)); } case 'p': { delim = format[formatPos++]; continue; } case '\'': { new end = formatPos - 1, ch; while ((ch = format[++end]) && ch != '\'') {} if (!ch) { return -1; } format[end] = '\0'; if ((ch = strfind(sstring, format[formatPos], false, sstringPos)) == -1) { if (format[end + 1]) { return -1; } return 0; } format[end] = '\''; sstringPos = ch + (end - formatPos); formatPos = end + 1; } case 'u': { new end = sstringPos - 1, id = 0, bool:num = true, ch; while ((ch = sstring[++end]) && ch != delim) { if (num) { if ('0' <= ch <= '9') { id = (id * 10) + (ch - '0'); } else { num = false; } } } if (num && IsPlayerConnected(id)) { setarg(paramPos, 0, id); } else { #if !defined foreach #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2)) #define __SSCANF_FOREACH__ #endif sstring[end] = '\0'; num = false; new name[MAX_PLAYER_NAME]; id = end - sstringPos; foreach (Player, playerid) { GetPlayerName(playerid, name, sizeof (name)); if (!strcmp(name, sstring[sstringPos], true, id)) { setarg(paramPos, 0, playerid); num = true; break; } } if (!num) { setarg(paramPos, 0, INVALID_PLAYER_ID); } sstring[end] = ch; #if defined __SSCANF_FOREACH__ #undef foreach #undef __SSCANF_FOREACH__ #endif } sstringPos = end; } case 's', 'z': { new i = 0, ch; if (format[formatPos]) { while ((ch = sstring[sstringPos++]) && ch != delim) { setarg(paramPos, i++, ch); } if (!i) { return -1; } } else { while ((ch = sstring[sstringPos++])) { setarg(paramPos, i++, ch); } } sstringPos--; setarg(paramPos, i, '\0'); } default: { continue; } } while (sstring[sstringPos] && sstring[sstringPos] != delim && sstring[sstringPos] > ' ') { sstringPos++; } while (sstring[sstringPos] && (sstring[sstringPos] == delim || sstring[sstringPos] <= ' ')) { sstringPos++; } paramPos++; } do { if ((delim = format[formatPos++]) > ' ') { if (delim == '\'') { while ((delim = format[formatPos++]) && delim != '\'') {} } else if (delim != 'z') { return delim; } } } while (delim > ' '); return 0; } public UnMute(playerid) { if(MuteNET[playerid] == true) { MuteNET[playerid] = false; SendClientMessage(playerid,COLOR_RED,"Du bist nicht mehr gemutet"); } return 1; }