Beiträge von Thommylee
-
-
sscanf definieren.
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;
}wäre mein Lösungsvorschlag
-
-
joa die includes machens
sonst nix
/edit: runter laden
/edit²: edit hinzugefügt
-
Joa ganz gut, hat mir "damals" geholfen bei dem schreiben eines eigenen Adminsystems
-
Codes? - Gamemode?
Ohne Infos kann man nicht helfen.... Wie oft muss man das noch sagen ?
-
wo/wie leg ich die Position fest für nen TextDraw?
-
das ist keine Lösung für das genannte Problem....
Meines Wissen nach geht es nicht, wenn man den freezt, kann er nich mehr fliegen, und ne andere möglichkeit sähe ich jetzt nicht
-
-
Der Radius definiert die Entfernung zum angegebenen Punkt.
Die Koordinaten, sollten die sein, an denen du auch das Pickup erstellt hast, dass abgefrat wird, ob der Spieler an dem Pickup ist.
-
du machst ganz oben im Script
new BSNEssen;Unter OnGameModeInit
BSNEssen=CreatePickup(Pickupmodell,Art des Pickups[am besten 1, dann is es nur zu Fuß aufnehmbar],Koordinaten[x,y,z]);
Unter OnPlayerPickupPickup
if(pickupid==BSNEssen)
{
GameTextForPlayer(playerid,"Benutze /essen ~n~ um etwas zu essen",1000*3,3);
}Bei OnPlayerCommandtext
if(strcmp("/essen",cmdtext,true)==0)
{
if(IsPlayerInRangeOfPoint(playerid,Radius,X,Y,Z[hier musst die Koords einfügen, wo du das Pickip erstellt hast]))
{
SetPlayerHealth(playerid,100);
GivePlayerMoney(playerid,-50);
SendClientMessage(playerid,FARBE,"Du hast etwas gegessen für 50$");
}
else
{
SendClientMessage(playerid,FARBE,"Du bist nicht im BSN");
}
return 1;
}/edit: pwn hinzugefügt
/edit: else hinzugefügt -
sorry, aber er hat genug Tuts für sowas, und ein bisschen muss man schon selber lernen....
DU erstellst ein Pickup im BSN -> wird es aufgesammelt, erscheint ein GameText "Benutze /essen" oder sowas, dann den Essensbefehl dazu und ende.
-
new Float:rX,Float:rY,Float:rZ;
GetPlayerPos(playerid,yX,rY,rZ);/e zum entfernen der Straßensperren, benutz einfach die DestroyObjects Funktion.
-
Die tuts sind sehr gut hier, damit kann man das leicht lernen, sollst ja was lernen, nich nur C&P, d.h. Viele tuts lesen, dann kannst das alleine
-
Hol dir das LoH oder so, und editier es, das es passt
-
muss dann halt genau die Koords hoeln, die du brauchst
-
-
ich kann :
Deutsch
Englisch (Realschulabschluss - aber nich so gut, aber das wihtigste kann ich ^^)und.....
TADA Schwäbisch
i
Schwäbisch, aber kaum einer versteht es..... -.-
-
sieht man an den Abfragen, wer den cmd benutzen darf, zum Beispiel
-
new string[128],name[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
format(string,sizeof(string),"%s hat den String erstellt",name);
SendClientMessage(playerid,FARBE,string);