Hab ich Bereits hinbekommen.
aber jetzt failed der bann Befehl.
ocmd:ban(playerid,params[])
{
new pID,string[128],grund[128];
if(!IsPlayerConnected(pID))return SendClientMessage(playerid,Color_Red,"Der angegebene Spieler ist nicht connected!");
if(sscanf(params,"us",pID))return SendClientMessage(playerid,Color_Red,"Benutzung: /ban [ID] [Grund]");
if (AdminLevel[playerid] >= 1)
{
SetPVarInt(playerid,"Banned",1);
format(string,sizeof(string),"[AdmCmd] %s hat %s permanent vom Server gebannt. Grund: %s",SpielerName(pID),SpielerName(playerid),grund);
SendClientMessageToAll(orange,string);
FreezePlayer(pID);
Kick(pID);
speichern(pID);
}
else
{
SendClientMessage(playerid,Color_Red,"Dein Adminlevel ist zu niedrig");
return 1;
}
return 1;
}
Es kommt nur.
Benutzung: /ban [ID] [Grund]
Beiträge von phN
-
-
Hallo, mein Sscanf ist leider Fail.
Das ist mein sscanf
stock sscanf(string[], format[], {Float,_}:...)
{
#if defined isnull
if (isnull(string))
#else
if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
#endif
{
return format[0];
}
#pragma tabsize 4
new
formatPos = 0,
stringPos = 0,
paramPos = 2,
paramCount = numargs(),
delim = ' ';
while (string[stringPos] && string[stringPos] <= ' ')
{
stringPos++;
}
while (paramPos < paramCount && string[stringPos])
{
switch (format[formatPos++])
{
case '\0':
{
return 0;
}
case 'i', 'd':
{
new
neg = 1,
num = 0,
ch = string[stringPos];
if (ch == '-')
{
neg = -1;
ch = string[++stringPos];
}
do
{
stringPos++;
if ('0' <= ch <= '9')
{
num = (num * 10) + (ch - '0');
}
else
{
return -1;
}
}
while ((ch = string[stringPos]) > ' ' && ch != delim);
setarg(paramPos, 0, num * neg);
}
case 'h', 'x':
{
new
num = 0,
ch = string[stringPos];
do
{
stringPos++;
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 = string[stringPos]) > ' ' && ch != delim);
setarg(paramPos, 0, num);
}
case 'c':
{
setarg(paramPos, 0, string[stringPos++]);
}
case 'f':
{new changestr[16], changepos = 0, strpos = stringPos;
while(changepos < 16 && string[strpos] && string[strpos] != delim)
{
changestr[changepos++] = string[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(string, format[formatPos], false, stringPos)) == -1)
{
if (format[end + 1])
{
return -1;
}
return 0;
}
format[end] = '\'';
stringPos = ch + (end - formatPos);
formatPos = end + 1;
}
case 'u':
{
new
end = stringPos - 1,
id = 0,
bool:num = true,
ch;
while ((ch = string[++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
string[end] = '\0';
num = false;
new
name[MAX_PLAYER_NAME];
id = end - stringPos;
foreach (Player, playerid)
{
GetPlayerName(playerid, name, sizeof (name));
if (!strcmp(name, string[stringPos], true, id))
{
setarg(paramPos, 0, playerid);
num = true;
break;
}
}
if (!num)
{
setarg(paramPos, 0, INVALID_PLAYER_ID);
}
string[end] = ch;
#if defined __SSCANF_FOREACH__
#undef foreach
#undef __SSCANF_FOREACH__
#endif
}
stringPos = end;
}
case 's', 'z':
{
new
i = 0,
ch;
if (format[formatPos])
{
while ((ch = string[stringPos++]) && ch != delim)
{
setarg(paramPos, i++, ch);
}
if (!i)
{
return -1;
}
}
else
{
while ((ch = string[stringPos++]))
{
setarg(paramPos, i++, ch);
}
}
stringPos--;
setarg(paramPos, i, '\0');
}
default:
{
continue;
}
}
while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
{
stringPos++;
}
while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
{
stringPos++;
}
paramPos++;
}
do
{
if ((delim = format[formatPos++]) > ' ')
{
if (delim == '\'')
{
while ((delim = format[formatPos++]) && delim != '\'') {}
}
else if (delim != 'z')
{
return delim;
}
}
}
while (delim > ' ');
return 0;
}
Bekomme aber den Error.
C:\Dokumente und Einstellungen\test\Desktop\Gta Shit\gamemodes\yaki2.pwn(646) : error 017: undefined symbol "ize"
Die Zeile
#pragma tabsize 4 -
Hallo, sobald ich den Kick Befehl mit OCMD rein mache kommt das hier
----------------------
v0.3e, (C)2005-2012 SA-MP Team[19:39:27] filterscripts = "" (string)
[19:39:27] weburl = "www.sa-mp.com" (string)
[19:39:27]
[19:39:27] Server Plugins
[19:39:27] --------------
[19:39:27] Loading plugin: streamer
[19:39:27]*** Streamer Plugin v2.6 by Incognito loaded ***
[19:39:27] Loaded.
[19:39:27] Loaded 1 plugins.[19:39:27]
[19:39:27] Filterscripts
[19:39:27] ---------------
[19:39:27] Loaded 0 filterscripts.[19:39:27] Script[gamemodes/yaki2.amx]: Run time error 19: "File or function is not found"
[19:39:27] Number of vehicle models: 0
[19:39:32] --- Server Shutting Down.
[19:39:32]*** Streamer Plugin v2.6 by Incognito unloaded ***
ohne Kick Befehl
SA-MP Dedicated Server
----------------------
v0.3e, (C)2005-2012 SA-MP Team[19:41:05] filterscripts = "" (string)
[19:41:05] weburl = "www.sa-mp.com" (string)
[19:41:05]
[19:41:05] Server Plugins
[19:41:05] --------------
[19:41:05] Loading plugin: streamer
[19:41:05]*** Streamer Plugin v2.6 by Incognito loaded ***
[19:41:05] Loaded.
[19:41:05] Loaded 1 plugins.[19:41:05]
[19:41:05] Filterscripts
[19:41:05] ---------------
[19:41:05] Loaded 0 filterscripts.[19:41:05]
----------------------------------
[19:41:05] YaKuZa EST und DM Server Loaded
[19:41:05] ----------------------------------[19:41:05] Number of vehicle models: 3
[19:41:06] --- Server Shutting Down.
[19:41:06]*** Streamer Plugin v2.6 by Incognito unloaded ***
Der Kick befehl.
ocmd:kick(playerid,params[])
{
new pID;
new string[64];
new grund[64];
if (AdminLevel[playerid] >= 1)
{
if(sscanf(params,"us",pID))return SendClientMessage(playerid,Color_Red,"Benutzung: /kick [ID] [Grund]");
format(string,sizeof(string),"[Server News]: %s hat %s von Server gekickt. Grund: %s",SpielerName(pID),SpielerName(playerid),grund);
FreezePlayer(pID);
Kick(pID);
speichern(pID);
}
else
{
SendClientMessage(playerid,Color_Red,"Dein Adminlevel ist zu niedrig Benötigt: YaKuZa Member");
return 1;
}
}
Es ist Errorlos Compiled -
eines morgens...
ne spaß
auf meinem debian squeeze 64bit root geht ts ned ich weiß ned warum und im logordner herscht gänende leere...Coderoot@server:/home/TS# sh ts3server_startscript.sh start ts3server.pid found, but no server running. Possibly your previously started server crashed Please view the logfile for details. Starting the TeamSpeak 3 server TeamSpeak 3 server started, for details please view the log file
wie gesagt logfile existiert ned chmod 777 is auf SÄMTLICHEN datein die iwas damit zu tun haben...
was interessant sein könnte: der ts wurde aus einem backup wiederhergestellt was aber sonst immer gefunzt hat
Hatte , das auch mal, Habe aber die Ts3server.Pid Gelöscht , danach war mein Problem Behoben.
Also Probier das einfach mal aus. -
Das mit dem Ingame + Forum Account ist mit Denke ich mal WBB_Connect gemacht.
Gibt auch ein Tutorial dazu musst einfach mal im Forum Gucken. -
-
Ah sry storm habs ueberlesen.
Schau ich heute nachmittag an, ok?
Alles klar, meld dich per PN wenn du zeit hast. -
Morgen, eine Kleine Frage,
Undzwar ich hab kein Bock mehr auf Dini und Was würdest du Haben wollen mein GF also die User Abspeicherung von Dini auf MySQL Umzuschreiben? -
Statt
#define COLOR_T 0x00004D5B
Machst du glaub ich
#define COLOR_T 0x00004D96
oder
#define COLOR_T 0x00004D5B96
weiß es nicht mehr genau- -
dann versuch mal nicht .so sonder .dll
Ich denke ne Info vom Root würde nicht helfen wa also Leistung etc..
Liegt ja an den Plugins, oder hat es Funktioniert bevor du was drann gemacht hast
So habe dir mal meine Plugins als Dateianhang hinzugefügt. -
dann versuch mal nicht .so sonder .dll
Hör auf hier zuspammen, oder Lies RIchtig.Habe derzeit das Virtual Reallife Script aka RGR,
Habe mir nen Linux Root zugelegt, habe soweit alles oben auf dem Root, doch wenn ich Konsole Server starte, klappt alles wunderbar der Server ist an, Alle plugins wurden geladen, doch der server.log zeigt
Da Steht drinn das er sich einen Linux Root zugelegt hat. -
kann möglich sein doch weshalb veraltet wenn genau die gleichen plugins auf dem Homeserver Funktionieren?
Ich lad dir Gleich mal mein Ordner hoch, wo es dort Keine Probleme gab. -
Kanns sein , das deine Linux Plugins Verältet sind. Hatte das Selbe mal.
plugins streamer.so audio.so sscanf.soin
plugins streamer audio sscanf
Linux brauch die .So endungen. -
war Klar das das Down geht.
Wenn du es Sagst.
So Nerdbase wird es noch Geben.
Aber es gibt kein Forum mehr! -
Grad eben wurde das Forum Gelöscht und eine Rundemail Rausgeschickt das Nerdbase Offline geht.
Nexus sieht einfach Kein Sinn mehr in dem Projekt. -
Hallo, Pawno zeigt mir an Das Stock Register Undefined Symbol ist..
error 017: undefined symbol "Register"
: error 029: invalid expression, assumed zero
: error 017: undefined symbol "Register"Code des Stocks
stock Register(playerid,key[])
{return 1;
}Codes von dem Dialog
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid==DIALOG_REGISTER)
{
if(response==0)
{
SendClientMessage(playerid,Color_Lightblue,"Du musst dich Registrieren, Sonst Kannst du nicht Spielen!");
Kick(playerid);
return 1;
}
if(response==1)
{
if(!strlen(inputtext))
{
SendClientMessage(playerid,Color_Lightblue,"Das Password war zu Kurz!");
new name[64], string2[256];
GetPlayerName(playerid,name,sizeof(name));
format(string2,sizeof(string2),"Hallo %s um hier Spielen zu können brauchst du einen Account",name);
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrieren",string2,"okay","abbrechen");
return 1;
}
else
{
Register(playerid,inputtext);
}
return 1;
}
return 1;
} -
Erstell einen Ordner in Scriptfiles Namens : "Accounts" .
Also füge die ganzen Scriptfiles sachen von deinem Script in den Scriptfiles Ordner.
Hab ich doch schon.
Ich bin nicht dumm.
Ich habs Geschafft das die Accounts Gespeichert werden nur mit dem Passwort: ocmd_ds... -
Hilft leider Nix.
Habe es Probiert.. -
Die Community ist Zwar klein.
Jedoch sind wir Eine Freundliche Community die Jeder Frage zuverfügung Steht.
Würden uns Über mehr Benutzer Freuen.
MfG Ein treuer User der Community -
Hallo, der Account wird nicht Erstellt.
Error und Warning Los Compiled.
Script:
// Includes
#include <ocmd>
#include <dini>
#include <a_samp>// Farben
#define Rot 0xFF0037FF
#define Orange 0xFFA000FF
#define green 0x00FF28FF
#define grey 0xAAAAAAFF
#define blau 0x0019FFFF
#define gelb 0xE1FF00FF
#define hellblau 0x00EBFFFF
// DIaloge
#define DIALOG_REGISTER 1
#define DIALOG_LOGIN 2
main()
{
print("\n----------------------------------");
print(" Blank Gamemode by your name here");
print("----------------------------------\n");
}public OnGameModeInit()
{
// Don't use these lines if it's a filterscript
SetGameModeText("Blank Script");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}public OnGameModeExit()
{
return 1;
}public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}public OnPlayerConnect(playerid)
{
new Playerdatei[128];
new name[MAX_PLAYER_NAME];
new string[128];
GetPlayerName(playerid,name,sizeof(name));
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
if(dini_Exists(Playerdatei))
{
SendClientMessage(playerid,green," ** Wikkommen Zurück ** ");
format(string,sizeof(string),"Willkommen %s wir Haben deinen Account Gefunden",name);
SendClientMessage(playerid,green,string);
SendClientMessage(playerid,green,"Bitte gib dein Passwort nun unten in das Feld ein");
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login Vorgang","Gebe bitte nun dein Passwort ein","Einloggen","Abbrechen");
}
else
{
SendClientMessage(playerid,Rot," ** Wikkommen auf dem Server von [REP] ** ");
format(string,sizeof(string),"Willkommen %s wir haben deinen Account nicht Gefunden",name);
SendClientMessage(playerid,Rot,string);
SendClientMessage(playerid,Rot,"Bitte gib dein Passwort nun unten in das Feld ein");ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrations Vorgang","Bitte wähle ein Passwort","Register","Abbrechen");
}
return 1;
}public OnPlayerDisconnect(playerid, reason)
{
if(GetPVarInt(playerid,"loggedin")==1)
{
SpielerSpeichern(playerid);
}
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[])
{
return 1;
}public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/mycommand", cmdtext, true, 10) == 0)
{
// Do something here
return 1;
}
return 0;
}public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}public OnPlayerStateChange(playerid, newstate, oldstate)
{
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;
}public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid==DIALOG_LOGIN)
{
if(response==0)
{
SendClientMessage(playerid,Rot,"Du hast den Log In Vorgang abgebrochen!");
Kick(playerid);
return 1;
}
if(response==1)
{
if(!strlen(inputtext))
{
SendClientMessage(playerid,Orange,"Dein eingegebenes Passwort war nicht lang genug!");
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Log In Vorgang","Dein Account wurde in unserer Datenbank gefunden!\nBitte gib nun dein Passwort ein! ","LogIn", "Abbrechen");
return 1;
}
else
{
Login(playerid,inputtext);
return 1;
}
}if(dialogid==DIALOG_REGISTER)
{
if(response==0)
{
SendClientMessage(playerid,Rot,"Du hast den Registrations Vorgang abgebrochen!");
Kick(playerid);
return 1;
}
if(response==1)
{
if(!strlen(inputtext))
{
SendClientMessage(playerid,Orange,"Dein eingegebenes Passwort war nicht lang genug!");
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"Registrieren","bitte gib nun dein gewünschtes Passwort ein :","Register","Abbrechen");
return 1;
}
else
{
Register(playerid,inputtext);
return 1;
}
}
}
return 1;
}
return 1;
}public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
// Stocks
stock Register(playerid,key[])
{
new Playerdatei[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
dini_Create(Playerdatei);
dini_Set(Playerdatei,"Passwort",key);
SendClientMessage(playerid,green,"Du hast dich erfolgreich eingeloggt.");
SetPlayerScore(playerid,0);
dini_IntSet(Playerdatei,"Adminlevel",0);
SetPVarInt(playerid,"Eingeloggt",1);
return 1;
}stock Login(playerid,key[])
{
new Playerdatei[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
if(!strcmp(key,dini_Get(Playerdatei,"Passwort"),false))
{
AccountLaden(playerid);
SendClientMessage(playerid,green,"Du hast dich erfolgreich eingeloggt.");
}
else
{
SendClientMessage(playerid,Orange,"Dein hast ein falsches Passwort eingegeben!");
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login Vorgang","Bitte gib nun dein Passwort ein! ","LogIn", "Abbrechen");
}
return 1;
}stock AccountLaden(playerid)
{
new Playerdatei[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
SetPlayerScore(playerid,dini_Int(Playerdatei,"Level"));
GivePlayerMoney(playerid,dini_Int(Playerdatei,"Geld"));
SetPVarInt(playerid,"Adminlevel",dini_Int(Playerdatei,"Adminlevel"));
SetPVarInt(playerid,"Eingeloggt",1);
return 1;
}stock SpielerSpeichern(playerid)
{
if(GetPVarInt(playerid,"Eingeloggt")==1)
{new Playerdatei[128];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
dini_IntSet(Playerdatei,"Level",GetPlayerScore(playerid));
dini_IntSet(Playerdatei,"Geld",GetPlayerMoney(playerid));
dini_IntSet(Playerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
}
}stock SpielerName(playerid)
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
return name;
}stock IsPlayerAnAdmin(playerid,rang)
{
if(GetPVarInt(playerid,"Adminlevel")>=rang)return 1;
return 0;
}
//Scanf
stock sscanf(string[], format[], {Float,_}:...)
{
#if defined isnull
if (isnull(string))
#else
if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
#endif
{
return format[0];
}
#pragma tabsize 4
new
formatPos = 0,
stringPos = 0,
paramPos = 2,
paramCount = numargs(),
delim = ' ';
while (string[stringPos] && string[stringPos] <= ' ')
{
stringPos++;
}
while (paramPos < paramCount && string[stringPos])
{
switch (format[formatPos++])
{
case '\0':
{
return 0;
}
case 'i', 'd':
{
new
neg = 1,
num = 0,
ch = string[stringPos];
if (ch == '-')
{
neg = -1;
ch = string[++stringPos];
}
do
{
stringPos++;
if ('0' <= ch <= '9')
{
num = (num * 10) + (ch - '0');
}
else
{
return -1;
}
}
while ((ch = string[stringPos]) > ' ' && ch != delim);
setarg(paramPos, 0, num * neg);
}
case 'h', 'x':
{
new
num = 0,
ch = string[stringPos];
do
{
stringPos++;
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 = string[stringPos]) > ' ' && ch != delim);
setarg(paramPos, 0, num);
}
case 'c':
{
setarg(paramPos, 0, string[stringPos++]);
}
case 'f':
{new changestr[16], changepos = 0, strpos = stringPos;
while(changepos < 16 && string[strpos] && string[strpos] != delim)
{
changestr[changepos++] = string[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(string, format[formatPos], false, stringPos)) == -1)
{
if (format[end + 1])
{
return -1;
}
return 0;
}
format[end] = '\'';
stringPos = ch + (end - formatPos);
formatPos = end + 1;
}
case 'u':
{
new
end = stringPos - 1,
id = 0,
bool:num = true,
ch;
while ((ch = string[++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
string[end] = '\0';
num = false;
new
name[MAX_PLAYER_NAME];
id = end - stringPos;
foreach (Player, playerid)
{
GetPlayerName(playerid, name, sizeof (name));
if (!strcmp(name, string[stringPos], true, id))
{
setarg(paramPos, 0, playerid);
num = true;
break;
}
}
if (!num)
{
setarg(paramPos, 0, INVALID_PLAYER_ID);
}
string[end] = ch;
#if defined __SSCANF_FOREACH__
#undef foreach
#undef __SSCANF_FOREACH__
#endif
}
stringPos = end;
}
case 's', 'z':
{
new
i = 0,
ch;
if (format[formatPos])
{
while ((ch = string[stringPos++]) && ch != delim)
{
setarg(paramPos, i++, ch);
}
if (!i)
{
return -1;
}
}
else
{
while ((ch = string[stringPos++]))
{
setarg(paramPos, i++, ch);
}
}
stringPos--;
setarg(paramPos, i, '\0');
}
default:
{
continue;
}
}
while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
{
stringPos++;
}
while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
{
stringPos++;
}
paramPos++;
}
do
{
if ((delim = format[formatPos++]) > ' ')
{
if (delim == '\'')
{
while ((delim = format[formatPos++]) && delim != '\'') {}
}
else if (delim != 'z')
{
return delim;
}
}
}
while (delim > ' ');
return 0;
}//ocmd befehle
ocmd:kick(playerid,params[])
{
new pID, Grund[128], string[128];
if(IsPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,Rot,"Du bist kein Admin!");
if(sscanf(params,"us",pID,Grund))return SendClientMessage(playerid,Rot,"Benutzung: /kick [ID] [Grund]");
format(string,sizeof(string),"Server News : %s wurde von Admin %s gekickt! Grund : %s",SpielerName(pID),SpielerName(playerid),Grund);
SendClientMessageToAll(Rot,string);
TogglePlayerControllable(pID,0);
Kick(pID);
kickLog(string);
return 1;
}//Logs
stock kickLog(string[])
{
new entry[256];
format(entry, sizeof(entry), "%s\n",string);
new File:hFile;
hFile = fopen("/SelfLogs/kick.log", io_append);
fwrite(hFile, entry);
fclose(hFile);
}