Koordinaten speichern in enum?

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
  • enum TankKoordinaten
    {
    2114.4126,928.6173,10.5474,
    2115.1919,922.9832,10.5474,
    2114.7725,917.8232,10.5474,
    2115.0771,911.6562,10.5474,
    2639.7839,1098.0349,10.5474,
    2639.5811,1103.5743,10.5474,
    2639.9871,1108.9187,10.5474,
    2639.6855,1114.6630,10.5474,
    2194.1582,2474.6921,11.0082,
    2199.8157,2475.2302,11.0145,
    2205.0735,2474.8633,11.0137,
    2210.7324,2475.4531,11.0077
    };


    new TankKords[MAX_PLAYERS][TankKoordinaten];Ich will die Tankstellen Punkte zum tanken abspeichern damit ich sie leicht abrufen kann, geht das nicht über enum?
    Die Errors sind hier drunter zu finden.
    (59) : error 001: expected token: "-identifier-", but found "-rational value-"
    (71) : error 010: invalid function or declaration
    (1224) : warning 203: symbol is never used: "TankKords"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Errors.

  • Ich will die Tankstellen Punkte zum tanken abspeichern damit ich sie leicht abrufen kann, geht das nicht über enum?


    Ein Enum definiert nur den Typ für die Variablen, es initialisiert nichts ^^


    Zudem funktioniert das so nicht mit MAX_PLAYERS, was willst du da überhaupt machen? :huh:


    Sinnvoll wäre so etwas:


    //Ohne Enum:
    new Float:TankKords[][3] = {
    {2114.4126,928.6173,10.5474},
    {2115.1919,922.9832,10.5474},
    {2114.7725,917.8232,10.5474},
    {2115.0771,911.6562,10.5474},
    {2639.7839,1098.0349,10.5474},
    {2639.5811,1103.5743,10.5474},
    {2639.9871,1108.9187,10.5474},
    {2639.6855,1114.6630,10.5474},
    {2194.1582,2474.6921,11.0082},
    {2199.8157,2475.2302,11.0145},
    {2205.0735,2474.8633,11.0137},
    {2210.7324,2475.4531,11.0077}
    };
    //Abfragen machst du so:
    TankKords[0][0] //-> Gibt dir die X Koordinate von der 1. Reihe


    Wenn du das unbedingt mit einem Enum lösen willst, was in diesem Fall nicht erforderlich ist, kannst du es auch so machen:


    enum TankKoordinaten {
    Float:t_X,
    Float:t_Y,
    Float:t_Z
    };


    new TankKords[][TankKoordinaten] = {
    {2114.4126,928.6173,10.5474},
    {2115.1919,922.9832,10.5474},
    {2114.7725,917.8232,10.5474},
    {2115.0771,911.6562,10.5474},
    {2639.7839,1098.0349,10.5474},
    {2639.5811,1103.5743,10.5474},
    {2639.9871,1108.9187,10.5474},
    {2639.6855,1114.6630,10.5474},
    {2194.1582,2474.6921,11.0082},
    {2199.8157,2475.2302,11.0145},
    {2205.0735,2474.8633,11.0137},
    {2210.7324,2475.4531,11.0077}
    };
    //Abfragen machst du so:
    TankKords[0][t_X] //-> Gibt dir die X Koordinate von der 1. Reihe


    //Edit: Ups hatte was vergessen ^^


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

    Einmal editiert, zuletzt von Kaliber ()

  • Ich habe 3 Tankstellen in LV zum Beispiel, doch damit ich nicht tausend mal /tanken machen muss oder den Befehl vollspamme,
    will ich sie vorher definieren, das /tanken alle diese Koordinaten erreicht und abruft, verstehst du, dass so gesehen an all diesen Punkten /tanken geht.

  • Ich habe 3 Tankstellen in LV zum Beispiel, doch damit ich nicht tausend mal /tanken machen muss oder den Befehl vollspamme,
    will ich sie vorher definieren, das /tanken alle diese Koordinaten erreicht und abruft, verstehst du, dass so gesehen an all diesen Punkten /tanken geht.


    Ja, dazu brauchst du aber kein MAX_PLAYERS und auch kein Enum ;)


    Nimm mein 1. Codebeispiel und dann kannst du so eine Funktion schreiben:


    stock IsInRangeOfTankstelle(playerid) {
    for(new i; i<sizeof TankKords; i++) {
    if(IsPlayerInRangeOfPoint(playerid,7.5,TankKords[i][0],TankKords[i][1],TankKords[i][2])) return 1;
    }
    return 0;
    }


    //Nutzung:
    if(!IsInRangeOfTankstelle(playerid)) return SendClientMessage(playerid,-1,"Du befindest dich an keiner Tankstelle!");


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • der stock ist doch eigentlich sinloss oder nicht er kann doch direct im Befehl die for schleife erstelln und die if abfrage machen ...


    Natürlich kann er das machen.


    Man brauch eigentlich gar keine Funktionen, man kann auch alles direkt in den Code klatschen.


    Allerdings fände ich diese Funktion nützlich und übersichtlicher, er muss sie natürlich nicht nutzen.


    Ich habe ihm lediglich das Beispiel gegeben, wie so eine Abfrage aussehen kann :rolleyes:


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • der stock ist doch eigentlich sinnlos


    Zum stock


    Nicht ganz, diese Funktion ist nicht unbedingt sinnlos.
    Denn Funktionen werden dann erstellt, wenn häufig auf sie zugegriffen werden müssen.


    Siehe IsPlayerInRangeOfPoint oder ehemals PlayerToPoint.
    Es wäre unglaublich umständlich das immer neu schreiben zu müssen.


    Aber in einigen Fällen ist das wirklich bescheuert, bspw. wenn man es nur gaz selten braucht oder irrwitzige Informationen versucht zurückzugeben.
    bspw. der "stock" SpielerName.


    Variablen sind so etwas schönes und trotzdem werden sie durch Funktionen ersetzt :pinch:

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski


  • Wie definiere ich die Koordinaten und was ist das 2te [] ? die Zahl da drinne?

  • Wie definiere ich die Koordinaten und was ist das 2te [] ? die Zahl da drinne?


    Das zweite [3] sorgt dafür, damit wird die Länge einer Reihe definiert. Sprich 3 Einträge X,Y und Z wäre das in diesem Fall.


    Eine neue Position, kannst du einfach darunter schreiben in der Variable, so wie ich es gemacht habe ^^


    mfg. :thumbup:

    ast2ufdyxkb1.png


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


  • Das zweite [3] sorgt dafür, damit wird die Länge einer Reihe definiert. Sprich 3 Einträge X,Y und Z wäre das in diesem Fall.


    Eine neue Position, kannst du einfach darunter schreiben in der Variable, so wie ich es gemacht habe ^^


    mfg. :thumbup:


    Meinst du das?


    Wenn ja, dann denke ich, dass ich es verstanden habe, die [3] <-- steht für x, y, z die dann dort mit [i][0] 1 mal [i][1] 2 mal usw. abgerufen werden, richtig?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen