Random, Zufall, 1, 2, 3, 4, 5, 6, 7
zu:
Random, Zufall, 1, 7
Beiträge von Jeffry
-
-
Ich veröffentliche hier mal meine strtok-Version, die ich vor langer Zeit erstellt habe. Diese macht 1:1 das Gleiche wie die originale strtok-Funktion, nur mit dem Unterschied, dass sie mehr als doppelt so schnell ist.
Original: http://wiki.sa-mp.com/wiki/Strtok
v2.0 by Jeffry:
stock strtok(const string[], &index) //©Jeffry
{
new result[20], length = strlen(string), i = index;
while ((i < length) && (string[i] == ' ')) i++;
strmid(result,string,i,((index = strfind(string, " ", false, i)) == -1) ? (index = length) : (index) , 20);
index++;
return result;
}Man kann einfach die alte strtok Funktion mit der Meinen ersetzen, mehr ist nicht notwendig.
ZitatZeit-Tests [07/09/2014 15:22:34] Original: 3233ms
[07/09/2014 15:22:36] Jeffry: 1455msZeit-Tests
new idx, t;
new params[16] = "abc def ghi";
t = GetTickCount();
for(new i=0; i<1000000; i++)
{
idx = 0;
strtok_Original(params, idx);
strtok_Original(params, idx);
strtok_Original(params, idx);
}
printf("Original: %dms", GetTickCount() - t);Zeit-Tests t = GetTickCount();
for(new i=0; i<1000000; i++)
{
idx = 0;
strtok_Jeffry(params, idx);
strtok_Jeffry(params, idx);
strtok_Jeffry(params, idx);
}
printf("Jeffry: %dms", GetTickCount() - t);
Die Tests wurden mit einem Intel® Core™ i7-3770 Prozessor durchgeführt.Keywords: strtok
-
So weit bin ich auch noch gekommen. Aber wie gesagt bei Zahlungsarten steht nichts von PaySafeCard.
Achso, ich dachte du meinst hier im Thread. Warum es da fehlt weiß ich nicht. Vielleicht wird es noch nicht wieder akzeptiert.Da wartest du am besten auf Android:.
-
Wie kann ich da mit PSC bezahlen? Bei den Zahlungsarten ist nicht "Paysafecard" aufgelistet.
Schau dir mal den ersten Post an, dort stehen die Preise und ganz unten in dem ersten Post ist der Link zur Zahlung mit PaySafeCard. Sollte nicht zu übersehen sein.Falls doch: https://www.gta-servers.de/donator/
-
Die Größe des Arrays (String), also der Destination, in der die Ausgabezeile der Statistiken landen.
-
Suche nach
mysql_log
Und kommentiere die Zeile aus. -
Mit alle, meinst du alle FraktionsCars deiner Fraktion?
Falls ja
if(i == FraktionsCars[i][f_car_id_x] && FraktionsCars[i][f_id] == Spieler[playerid][fraktion]) SetVehicleToRespawn(i);
zu
if(FraktionsCars[i][f_id] == Spieler[playerid][fraktion]) SetVehicleToRespawn(FraktionsCars[i][f_car_id_x]); -
Es kommt nur bis v-ID 99. Jeffry:
Ok, dann ändere in der Schleife:
MAX_VEHICLES
zu
sizeof(FraktionsCars); -
Liegt wohl an einem gesprengten Array. Welches das ist müssen wir über Debugging herausfinden:
ocmd:fcarrespawn(playerid, params[])
{
printf("Befehl gestartet: %d", playerid);
if(Spieler[playerid][fraktion] == 0) return SCM(playerid, C_DRED, "Du bist in keiner Fraktion");
if(Spieler[playerid][rang] != 8) return SCM(playerid, C_DRED, "Du bist kein Leader");
for(new i = 0; i < MAX_VEHICLES; i++)
{
printf("Gehe in V-ID: %d", i);
if(AnyPlayerInVehicle(i)) continue;
if(i == FraktionsCars[i][f_car_id_x] && FraktionsCars[i][f_id] == Spieler[playerid][fraktion]) SetVehicleToRespawn(i);
}
printf("Erste Schleife beendet.");
format(s, sizeof(s), "%s %s hat alle Fraktions-Cars respawnt", FRangName(playerid), GetName(playerid));
printf("Vor zweiter Schleife. => s = %s", s);
for(new i = 0; i < MAX_PLAYERS; i++)
{
printf("Prüfe ID: %d", i);
if(!InFrak(i, Spieler[playerid][fraktion])) continue;
SCM(i, C_YELLOW, s);
}
printf("Ende");
return 1;
}
Was wird geprintet? (Achtung, könnte viel sein!) -
Die Koordinaten von "IsPlayerInRangeOfPoint" stimmen nicht.
if(IsPlayerInRangeOfPoint(playerid,5,1037.4674,2428.6323,10.8203))
{
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid,1037.4674,2428.6323,10.8203,3.0);
}
Das sind dieselben Koordinaten, das macht keinen Sinn.------
@FerienFreak: Wo gibst du dem Spieler denn den Skin ID 1? -
forward WantedLoss();
public WantedLoss()
{
for(new playerid=0; playerid<MAX_PLAYERS; playerid++)
{
if(WantedLevel[playerid] > 0)
{
WantedLevel[playerid] --;
SetPlayerWantedLevel(playerid, WantedLevel[playerid]);
new tmp[64];
format(tmp,sizeof(tmp), "Aktuelles Wantedlevel: %i", wlevel-1);
SendClientMessage(playerid, COLOR_GREEN,tmp);
}
}
return 1;
}Der Timer unter OnGameModeInit:
SetTimer("WantedLoss",15*60*1000,1); -
Mach mal das
[128]
in sscanf weg. Wenn du die Funktion verwendest, dann geht das damit nicht. -
Bei multidimensionalen Arrays geht das nicht. Da musst du Format nutzen.
format(Feld[0][Besitzer], MAX_PLAYER_NAME, ""); -
-
Es geht ja darum das er die Include von seinem FTP laden will, nicht von einer lokalen Festplatte
Wie ich bereits gesagt habe, die Include wird vom Compiler gelesen und muss beim Starten des Servers nicht verfügbar sein. Daher muss sie auch nicht auf den FTP-Server hochgeladen werden.
Deshalb heißt das Ding ja auch "Include", was so viel heißt wie "beinhaltet", das heißt der Code der in der Include steht, steht nach dem Compilieren in der .amx des GameModes bzw. des FilterScripts in dem die Include inkludiert ist.Hochladen kann man sie zwar, das bringt aber rein gar nichts. Der Server benötigt nur die amx Dateien, die pwn und die inc Dateien interessieren den Server nicht, die sind nur für den Compilier und den Programmierer interessant.
Im GameMode
#inlcude <myobjects>
public OnGameModeInit()
{
LoadObject();
return 1;
}In der Include "myobjects.inc" (in /pawno/includes):
stock LoadObjects()
{
CreateObject(...);
//...
return 1;
}=> GameMode kompilieren und amx Datei hochladen. Die Include muss nicht hochgeladen werden.
-
Hier steht nicht die Bezeichnung für Enter Eingabe und F http://forum.sa-mp.de/index.php?form=PostAdd&threadID=389
Der Link ist irgendwie falsch. Was genau suchst du? -
Ein paar Zeilen voll Zahlen im Compiler.
Was ergab der print im Log? -
Mache den zweiten Print zu:
printf("playerid: %d Eingeloggt: %d", playerid, pInfo[playerid][eingeloggt]);Hast du zufällig die Heap Stack Meldung im Compiler?
-
Ein Include wird vom Compiler ausgelesen, die brauchst du nicht hochladen, die musst du mit einem Code kompilieren, den Code, also deinen Gamemode musst du dann hochladen.
-
Dann wird SavePlayer nicht aufgerufen. Prüfe das, dort wo es aufgerufen werden sollte.