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
  • Hi hier veröffentliche ich nun ein kleines Tutorial was euch helfen soll mit Variablen umzugehen.
    _______________________________________________________________________________


    1. Deklaration einer Variable


    1.1. Allgemein


    Um eine Variable verwenden zu können muss diese erstmal deklariert(erklären/aufführen) werden.
    Dazu benutzen wir im Panwo die Funktion:


    Code
    new namedervariable;


    1.2. Int Variable


    Eine Int-Variable, also eine Variable der eine bestimmte Zahl zugeordnet werden kann würd so deklariert:


    Code
    new intvariable;


    Zur Definition dieser Variablae komme ich später.


    1.3. Player Variable


    Eine Player-Variable, also eine Variable die sich auf einen Player bezieht würd so deklariert:


    Code
    new playervariable[MAX_PLAYERS];


    Zur Definition dieser Variable komme ich später.


    1.4. String Variable


    Eine String Variable ist eine Variable der man einen String(bustaben,sätze,etc.) anhängt.Diese deklariert man so:


    Code
    new stringvariable[256];


    _______________________________________________________________________________
    2. Definition einer Variable


    2.1. Allgemein


    Durch die Definition einer Variable würd ein Wert/String in dieser gespeichert.


    Code
    variable = Wert;
    playervar = Wert;
    new stringvar[256]; // stringvar = Name; [256] = Meistbenutze Länge einer Variable in Zeichen 
    format(stringvar, sizeof(stringvar), "Ich bin der String von 'stringvar'."); // stringvar = Name; sizeof(stringvar) = Oben angegebene Länge der Variable
    //bitte mit den Stringgrößen sparen, es würd nie ein String von der größe 256 gebraucht!!!


    2.2. Arten der Wert zuweißung an Intvariablen


    Man kann auf verschiedene weißen den Wert einer Intvariable verändern:


    Deklaration und Definition auf einmal:


    Code
    new variable = Wert;


    Definition einzeln:


    Code
    variable = Wert;


    2.2.1. Wert verändern der Intvariable


    Code
    variable++; //zu der variable würd 1 dazu gerechnet
    variable--;//von der variable werden 1 abgezogen
    variable += wert; //+ den besagten wert
    variable -= wert;//- den besagten wert
    variable = wert;//überschreibt den alten wert
    variable = wert+wert;//variable würd zu der summe der beiden werte
    ...


    2.3. Stringvariablen


    Code
    format(stringvar, sizeof(stringvar), "Ich bin der String von 'stringvar'.");
    //der variable stringvar würd hier ein text(string) zugewiesen


    _______________________________________________________________________________
    3. Variablen Arrays zuweisen


    3.1. Was ist ein Array


    Arrays ermöglichen es uns eine Variable mehrmals in verschiedenster weiße zu benutzen. Also kann man mit einem Array mehrere Informationen für eine Variable speichern.


    3.2. Allgemeine Deklaration


    Code
    new array[5];//die 5 steht dafür wie viele Varianten diese Variable verfügbar ist


    3.3. Mehrdimensionale Arrays Deklarieren


    >> Eindimensionales Array:

    Code
    new array[5];//man kann 5 verschiedene Definitionen ausführen


    >>Zweidimensionales Array:

    Code
    new array[5][5];//man kann 5*5 verschiedene Definitionen ausführen


    >>Ndimensionales Array:

    Code
    new array[5][5][5]...;//man kann 5*N verschiedene Definitionen ausführen
    //in pawn sind nur bis zu Dreidimensionale arrays erlaubt, in c++ kann dies unendlich ausgeweitet werden


    3.4. Definieren eines Arrays


    Wie schon gesagt kann man nun eine Variable mehrfachnutzen. Wie die Definition aussieht seht ihr hier:


    Wir arbeiten hier mit einen einwertigen Array

    Code
    new array[5];//Deklaration
    
    
    /////Definition
    array[0] = 1; // erste variante
    array[1] = 2; // zweite variante
    array[2] = 3;
    array[3] = 4;
    array[4] = 5; // fünfte variante


    Vllt habt ihr bemerkt das wir array[5] nicht nutze, das liegt daran das wir nur 5 verschiedene Varianten der Definitionen hier anwenden können. Bei Array werden von [0] an gezählt, also [5] wäre die 6 Variante.


    Jetzt noch ein Beispiel mit einem zweiwertigen array

    Code
    new array[5][7];//Deklaration
    
    
    /////Definition
    array[0][0] = 1; 
    array[0][1] = 2; 
    array[0][2] = 3;
    array[1][5] = 4;
    array[4][6] = 5;


    Hier gibt es 5*7(also 35) varianten, die habe ich nicht alle aufgezählt aber ich hoffe aus der darstellung(oben) konntet ihr schließen wie mehrwertige Arrays zu Definieren sind.


    _______________________________________________________________________________
    4. Anwendungs Bsp.


    Ich werde hier aufgaben stellen mit denen ihr üben könnt.


    Die lösungen findest du ganz unten.


    4.1. Etwas leichtes zum Anfang


    Deklariere eine Variable namens " auto " und weiße dieser den Wert " 100 " zu.


    4.2. Das kann man Schaffen


    Deklariere eine Variable namens " sekunden ". Nun Starte einen Timer der eine Funktion aktiviert namens "zeit".(du weißt nicht wie dies geht? Keine Angst es gibt ein Tutorial dazu)Den Timer lässt du alle 1000milisekunden laufen. Die Funktion soll jedes mal 1 zu sekunden hinzu rechnen.


    4.3. Schwierig


    Konstruiere eine Funktion die die variable "sekunden==388" in die variable "minuten" umrechnet. Denke daran das 1minute: 60 sekunden hat. sollten die sekunden halt nicht auf gehn bleiben diese halt über.
    Stelle einen Gamemodetext her der schluss endlich anzeigt wie viele minuten(und übrige sekunden) aus 388 sekunden enstehen.





    _______________________________________________________________________________
    5. Lösungen


    5.1.Lösung zu "Etwas leichtes zum Anfang"




    5.2.Lösung zu "Das kann man Schaffen"




    5.3.Lösung zu "Schwierig"






    Ich hoffe ich konnte euch helfen


    mfg Yoda

    ________________________________________________________________________________
    Meine Scriptdingenserzeugnisse und hilfen xD:


    [TUT]Variablen [INC]YodasInc

    2 Mal editiert, zuletzt von Yoda ()

  • So ganz gutes Tutorial auch gut verständlich für Anfänger, jedoch sind noch ein paar mehr oder weniger wichtige Fehler drin

    http://forum.sa-mp.com/index.php?topic=78026.0


    256 sollte eigentlich der am wenigsten benutzte Wert einer String sein, da in SA-MP selber maximal 128 gebraucht werden in deinem Beispiel hätten sogar 34 gereicht....

    1.
    "Einwertiges" Array hört sich für mich etwas komisch an, es wird eigentlich sonst von einem "eindimensionalem" oder "einfachen" Array geredet.
    2.
    In Pawn gibt es eine Grenze was die Array Dimensionen angeht, new array[5][5][5] wäre das Maximum, benutzt man mehr gibt der compiler folgende Nachricht aus:

    Code
    error 053: exceeding maximum number of dimensions


    Aber ansonsten recht gut erklärt, für Anfänger jedenfalls.

  • ok, jo habch ne gewusst mit den arrays in c++ kann man unendlich arraydimensionen machn.


    das mit den namen... ja hab mir schon gedacht das der name net ganz stimmt, hab net nochmal nachschauen wolln


    und zu dem string


    der meist genutze string weil: jeder der nicht weiß das man den nicht so hoch brauch(also viele) den so nutzt, werdes mal ändern.



    ps: kritik und ergänzungen sind erwünscht

    ________________________________________________________________________________
    Meine Scriptdingenserzeugnisse und hilfen xD:


    [TUT]Variablen [INC]YodasInc

    Einmal editiert, zuletzt von Yoda ()

  • Ich verstehe die erklärung mit dem Arry´s nicht ganz. Gäbe es eine Arry,die sich auf einen USer bezieht und destotrotz ein String ist,wie Bsp[MAX_PLAYERS][100]; ?

    Suche Scriptlehrer :rolleyes:

  • Da ich ja die Daten aus der Datenbak nehme les ich sie aus.
    Wenn ich jetzt nur z.b. das Alter nehme, dann geht es:


    new field[1][100];


    Aber wenn ich alles haben will dann bleibt der bei


    new field[62][100];


    einfach hängen. Gibt es eine Grenze für Arrays?

    Einmal editiert, zuletzt von Silverdark ()

  • Angenommen ich definiere jetzt eine globale variable im script ->


    new variable;



    Könnte es nicht ein problem geben wenn mehrere Spieler gleichzeitig eine Funktion aufrufen welche etwas in diese variable schreibt um den inhalt dann innerhalb der funktion wieder zu verarbeiten ?

  • Ok, dann bin ich ja froh das ich es bisher auch immer so gemacht habe. Wollte es nurnoch mal bestätigt haben - danke :)




    Nur warum gibt es dann keine probleme bei variablen die innerhalb einer Funktion definiert werden um zb eine id zu speichern und dann innerhalb der funktion weiterzugeben.Diese variablen erweitert man ja nicht mit max_players bzw playerid und werden nur bei funktionsgebrauch erstellt.

  • Ich finde das Tutorial nicht so gut.
    Bis auf das Letzte, wo die Arrays erklärt werden.
    Deine Fehler:
    - Richtige Strings gibt´s in pawn nicht! Das sind alles nur Arrays...
    - Playervariablen? - Auch nur´n Array...

    PAWNit gratis nutzen?
    Geschenkcode: 2017VQXPKB8V3KA

    Hier könnte Ihre Werbung stehen.


  • variable++; //zu der variable würd 1 dazu gerechnet
    variable--;//von der variable werden 1 abgezogen
    variable += wert; //+ den besagten wert
    variable -= wert;//- den besagten wert
    variable = wert;//überschreibt den alten wert
    variable = wert+wert;//variable würd zu der summe der beiden werte
    ...


    Wenn dan auch



    ++variable;//Etc.