Guten Mittag euch allen,
ich habe mich mal ein bisschen umgeschaut und gesehen, dass einige Personen nach einer sleep Funktion in Pawn suchen.
Doch wie sie festgestellt haben gibt es sowas wie in Java (Thread.sleep(1000);) nicht...
Also habe ich mal so eine Funktion geschrieben:
1. Beispiele:
Also, so funktioniert die Funktion:
public OnGameModeInit() //Mal als Beispiel genommen
{
print("test"); //Wird normal ohne Verzögerung aufgerufen
sleep(1000)<a>; //Hier findet ein Timeout von 1000ms statt
print("test2"); //Dann wird das geprintet
sleep(1000)<b>; //Wieder Timeout von 1000ms
print("test3"); //und dann wird geprintet
return 1;
}
//Oder wenn man Parameter noch übergeben will
public OnPlayerConnect(playerid) //Mal als Beispiel
{
SendClientMessage(playerid,-1,"hi");
pSleep(1000)<a,"i",playerid>; //Unten ist eine nähere Erklärung
SendClientMessage(playerid,-1,"hallo nach 1000ms!");
}
2. Nähere Funktions Erklärung
Also, das sleep(1000)...sollte jedem klar sein sleep so heißt halt die Funktion und 1000 ist das Attribut für die Millisekunden von dem Timeout
Was ich dann noch gemacht habe, z.B. dieses <a> steht für den Namen des Callbacks der Aufgerufen wird, sobald der Timeout zuende ist!
Wichtig: Das darf nicht doppelt vorkommen, man kann in einem Script nicht 2x <a> machen oder 2x <b>, diese Reihe weiter fortführen!! Egal wie! Nichts doppelt machen!
Einfach so: <a>, dann <b>, dann <c>,...usw und wenn man dann 26 Buchstaben durch hat, dann <aa>, <bb> usw
Zu pSleep, ist zu sagen, dass mit dem "i" ist halt wie bei SetTimerEx und steht für den Typ der Variable (i = Integer) und danach kommen halt die ganzen Variablen.
//Wenn man mehr Variablen übergeben will, macht man einfach:
pSleep(1000)<a,"ii",playerid,x);
3. Source Code:
Der Source Code beschränkt sich nur auf ein kleines Makro, was ihr oben im Script einfügen könnt und sieht folgender maßen aus:
//(c) by Kaliber
#define sleep(%0)<%1>; SetTimer("@sleep_"#%1#,%0,0); return 1;}\
@sleep_%1();@sleep_%1() {
#define pSleep(%0)<%1,%2,%3>; SetTimerEx("@sleep_"#%1#,%0,0,%2,%3); return 1;}\
@sleep_%1(%3);@sleep_%1(%3) {
4. Schlusswort
Ich würde mich über ein kleines Feedback freuen
mfg.
//Edited: pSleep