[SAMMELTHREAD] Kleine Scripting Fragen

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:

    Code
    PlayerTextDrawFont(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.

  • Wieso wird mir trotz das ich neben einem meiner Autos stehe angezeigt, ich wäre nicht in der Nähe ?


    Code
    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])) return SendClientMessage(playerid, error, "Du bist nicht in der Nähe eines deiner Fahrzeuge!");
                      }
                  }



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Versuche es so:

  • 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.


    C
    format(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 ;)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • 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 machen


    Beim 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.

  • Funktioniert nicht.
    Was mache ich falsch?

  • Mache es einfach so:


    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Beitrag von malE ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: ... ().
  • do.de - Domain-Offensive - Domains für alle und zu super Preisen