wenn ich das aber mit jedem start des servers löse, so entspricht das nach einem restart ja auch nicht ein tag.
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Ich verstehe nicht ganz was du meinst.
Du musst es am Tageswechsel zurücksetzen. Dazu kannst du in einer Datei zum Beispiel den aktuellen Tag (Heute 14) speichern. Wenn dann der nicht mehr mit dem von gettime übereinstimmt (morgen dann 15), dann setzt du es zurück. -
Hab das nun so:
CodePlayerTextDrawFont(playerid,Textdraw52[playerid], TEXT_DRAW_FONT_MODEL_PREVIEW);//TEXT_DRAW_FONT_MODEL_PREVIEW bzw. 5 PlayerTextDrawSetPreviewModel(playerid, Textdraw52[playerid], Pfahrzeug[slot][playerid][Vehicle]); PlayerTextDrawSetPreviewRot(playerid, Textdraw52[playerid], 0.000000, 0.000000, 15.000000, 0.899999);
Jedoch wird mir ein Skin angezeigt.
-
Welcher Wert (ggf. Code?) wird Pfahrzeug[slot][playerid][Vehicle] zugewiesen?
-
Wieso wird mir trotz das ich neben einem meiner Autos stehe angezeigt, ich wäre nicht in der Nähe ?
Codefor(new i=0; i<MAX_AUTOS; i++) { if(!strcmp(CarInfo[i][Besitzer], pname) && strlen(CarInfo[i][Besitzer]) > 2 && CarInfo[i][modelID] > 0) { if(!IsPlayerInRangeOfPoint(playerid,2.0,CarInfo[i][c_x],CarInfo[i][c_y],CarInfo[i][c_z])) return SendClientMessage(playerid, error, "Du bist nicht in der Nähe eines deiner Fahrzeuge!"); } }
-
Ist die Fahrzeug Position denn auch Aktuell?
Lass dir mal deine Position ausgeben und die Koordinaten aus den Variablen -
Versuche es so:
C
Alles anzeigennew bool:near = false; for(new i=0; i<MAX_AUTOS; i++) { if(!strcmp(CarInfo[i][Besitzer], pname) && strlen(CarInfo[i][Besitzer]) > 2 && CarInfo[i][modelID] > 0) { if(IsPlayerInRangeOfPoint(playerid,2.0,CarInfo[i][c_x],CarInfo[i][c_y],CarInfo[i][c_z])) { near = true; break; } } } if(!near) return SendClientMessage(playerid, error, "Du bist nicht in der Nähe eines deiner Fahrzeuge!");
-
Hi, kleines Problem und zwar, ich hab eine Tafel wo paar Server Stats drauf stehen sollen.
Dies hab ich einmal auf einer Tafel und im Dialog. Der Dialog zeigt mir alles richtig an, nur die Tafel nicht.
Die Tafel zählt das nicht hoch bzw. von Anfang an, steht da eine 0.Cformat(tstring,sizeof(tstring),"{FF9000}\nAllgemeine Logins: %d\nTode: %d",ServerInfo[sLogin],ServerInfo[sDeaths]); format(tstring2,sizeof(tstring2),"{FF9000}\nKills: %d\nWarns: %d",ServerInfo[sKills],ServerInfo[sWarns]); format(tstring3,sizeof(tstring3),"{FF9000}\ninsg. Kicks: %d\ninsg. Banns: %d",ServerInfo[sKicks],ServerInfo[sBans]); new test = CreateObject(5811, 1321.06189, -1381.73303, 15.53630, 0.00000, 0.00000, -88.56000); SetObjectMaterialText(test,"{FF9000}Dieser Text",5,80,"Arial",24,0,0xFFFFFFFF,1,1); SetObjectMaterialText(test,tstring,4,80,"Arial",24,0,0xFFFFFFFF,1,1); SetObjectMaterialText(test,tstring2,3,80,"Arial",24,0,0xFFFFFFFF,1,1); SetObjectMaterialText(test,tstring3,2,80,"Arial",24,0,0xFFFFFFFF,1,1); SetObjectMaterialText(test,"Test,testtest",1,80,"Arial",24,0,0xFFFFFFFF,1,1);
-
Wenn ich eine Array einen Wert zuweisen möchte, der für jeden Index im Array gleich ist, mache ich das so:
new var[Index] = {Wert, ...};
Wenn ich nun aber ein multidimensionalen Array habe, wie muss ich das dann machen? oder geht das nicht?
new var[index][J] = ??
Normalerweise würde ich das ja so machen:
new var[index][J] = {
{Wert, Wert, Wert, ...},
{Wert, Wert, Wert, ...},
...
};
Gibt es dafür eine kürzere schreibweise wie bei einem normalen Array? -
Das kommt darauf an, was der Wert von der "index" Variable bei dir ist.
Wenn diese schreibbar ist..also z.B. 20, musst du das 20x auflisten...
Ansonsten einfach unter OnGameModeInit 2 Schleifen nutzen
-
Die Tafel zählt das nicht hoch bzw. von Anfang an, steht da eine 0.
Du musst das mit einem Timer (oder auf Aufruf) aktualisieren lassen, sprich diesen Code nochmal aufrufen.
-
Was ist sinnvoller?
Ein globaler timer (333ms repeat) der alle spieler durchläuft und und Abfragen durchführt um ggf. etwas zu machen
Ein Spielerbezogenen Timer(333ms repeat der für den jeweiligen Spieler abfragen durchführt um ggf. etwas zu machenBeim globalentimer wäre es nur ein Timer der läuft und auch nur ein public welches aufgerufen wird, indem dann aber mehr gemacht wird.
Beim Spielerbezogenen wären es mehrere Timer (je nach spieleranzahl unterschiedlich) und dann jedesmal ein public aufruft, indem dann aber dementsprechend weniger gemacht wird, weil er nicht alle anderen Spieler durchlaufen muss.Hört sich ausgeglichen an, aber was genau ist sinnvoller
-
Ein Timer ist meistens sinnvoller, da du sonst eine X-Fache Belastung der CPU durch X Timer hast.
Mehrere Timer bieten sich nur dann an, wenn die Last verteilt werden soll, und das ist nur dann der Fall, wenn im Timer viel gemacht wird, dass ein einmaliger Aufruf gegebenenfalls zu lag führt (Dateiaufrufe, SQL Queries, ...). -
In dem Timer soll einfach nur geschaut werden, wer so gerade im Auto sitzt und fährt und dann soll das Tacho angepasst werden. Das heißt spieler die gar nicht fahren werden direkt übersprungen, bei den spielern die fahren, werden daten des Autos berechnet die für das Tacho relevant sind und in form eines TextDraws angezeigt.
-
Da würde ich einen Timer nehmen, mit einer Schleife darin.
-
Weiß einer wo ich includes für ein Textdrawinput finde?
-
C
Alles anzeigenocmd:create(playerid, params[]) { new str[32]; if(sscanf(params, "s[32]", str))return SendClientMessage(playerid, COLOR_GREY, "Benutze: /create [ Pickup]"); if(strcmp(str, "Pickup", true) == 0) { new weaponid, ammo; if(sscanf(params,"{s[32]}ii",weaponid, ammo))return SendClientMessage(playerid, COLOR_GREY,"Benutze: /create pickup [WaffenID / ID] [Ammo / Wert]"); SendClientMessage(playerid,COLOR_GREY,"Klappt"); } return 1; }
Funktioniert nicht.
Was mache ich falsch? -
Mache es einfach so:
C
Alles anzeigen//Das Makro für isnull #define isnull(%1) ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1])))) ocmd:create(playerid, params[]) { if(isnull(params)) return SendClientMessage(playerid, COLOR_GREY, "Benutze: /create [ Pickup]"); if(!strcmp(params,"Pickup",true)) { //Hier hat er Pickup eingegeben } return 1; }
-
Beitrag von malE ()
Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: ... (). -
Hat jemand ein Vorschlag wie ich die Bankkonten aller verbunden Spieler zusammenrechnen kann und auslesen natürlich.
Hoffe ich versteht was ich meine, denn ich weiß nicht wie ich es sonst erklären soll.