#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
Zu den anderen Definierungen
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
Zu den anderen Definierungen
Brauchst noch sscanf.
Ganz unten ins Skript.
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;
}
Pawn Einstieg 2.0
Viel erfolg!
dcmd(heal,4,cmdtext);
dcmd_heal(playerid,params[])
{
if(Spieler[playerid][alvl] < 2){ // Abfrage ob der Spieler Admin lvl 2 hat
return SendClientMessage (playerid,grau,"Du musst ein Admin sein um Healen zu können");
}
new pID,life;
if(sscanf(params,"ud",pID,life)){
return SendClientMessage(playerid,grau,"USAGE: /heal [playerid] [float(0-100!)]*");
}
if(!IsPlayerConnected(pID)){
return SendClientMessage(playerid,grau,"Niemand ist Online mit dieser ID");
}
if(life < 0){
return SendClientMessage(playerid,grau,"INVALID FLOAT!");
}
if(life > 100){
return SendClientMessage(playerid,grau,"INVALID FLOAT!");
}
new string[128],string2[128],aname[MAX_PLAYER_NAME],name[MAX_PLAYER_NAME];
SetPlayerHealth(pID,life);
GetPlayerName(playerid,aname,sizeof(aname));
GetPlayerName(pID,name,sizeof(name));
format(string,sizeof(string),"Du hast das leben von %s auf %d gesetzt",name,life);
format(string2,sizeof(string2),"Admin %s hat dein HP auf %d gesetzt",aname,life);
SendClientMessage(playerid,COLOR_GREEN,string);
SendClientMessage(pID,COLOR_GREEN,string2);
return 1;
}
is ungetestet sollte aber gehen
Nice Work!
Nicht das ich wüsste
Jaja, meine erste Map halt :>
Nyoa. mal guggen was wird. Ich werde aufjedenfall nur manchmal reinschauen :>
Besser als NeoPhoenix's seins :>
Aber hat ihr beide gut gemacht.
Najo ,hab ein Server bei DeDi Hosting und wollte den Server auf die Hosted liste haben. Wir haben auch gezahlt, schreiben ihn jeden Tag an. Doch seit Tagen antwortet ehr nicht
Ich find das nicht sehr zufehrlässig Und eine frechheit noch dazu.
Außerdem brauchen die eh für eine Version alleine fast eine habe ewigkeit^^
Mir egal, ehrlich gesagt.
Ich blick in die Zukunft. IV:MP
/é: falscher link?
Jo mach mal. Aber wenn ich eins brauch mach ich mir selber eins. :>
Jo, Danke. Ich werd das Skript vllt. nach Zeit und Laune weiter editieren.
wiso unrealistisch?
Weil kein Polizeirevier ein Gefängniss aufen Dach der Garage hat ô_O
Unrealistisch.
Aber für die Mühe 6/10
Was kann da passieren? ô_O
Macht kein Drama drauß und nimmt nen anderen Port wenn euch der zu Gefährlich ist :facepalm:
Gut gemappt, is aber nix schweres. 7/10