#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