Was ist das für eine "Kontruktion" und wie wende ich sie an?

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
  • WIe gesagt weiß nicht wie man sowas erstellt und wie es heißt und wie ich es anwenden kann Hier mal ein Beispiel mit Orten
    (nett wäre wnen ihr mir erklären könntet wie ich das anwende spizell jetzt auch mit den Orten)


    static const SanAndreasZones[][MainZone] = {
    {"The Big Ear", {-410.00,1403.30,-3.00,-137.90,1681.20,200.00}},
    {"Aldea Malvada", {-1372.10,2498.50,0.00,-1277.50,2615.30,200.00}},
    {"Angel Pine", {-2324.90,-2584.20,-6.10,-1964.20,-2212.10,200.00}},
    {"Arco del Oeste", {-901.10,2221.80,0.00,-592.00,2571.90,200.00}},
    {"Avispa Country Club", {-2646.40,-355.40,0.00,-2270.00,-222.50,200.00}}
    };
    L.G.
    heyho :)

  • static bedeutet das du es nur dort verwenden kannst wo du es implementiert hast also zum beispiel nur in einer include.
    const bedeutet das es ein konstanter wert ist er lässt sich nicht ändern.(damit kann man auch den beanspruchten memoryverbrauch einer funktion reduzieren)


    was man auch machen könnte wäre wenn man lüstig wäre.


    stock static const SanAndreasZones[][MainZone]



    nun zur der zweiten zeile


    {"The Big Ear", {-410.00,1403.30,-3.00,-137.90,1681.20,200.00}},


    en dem enum befindet sich ein array mit 6 Elementen wo für jede Zelle ein wert initalisiert wird.


    also ist das damit gleichzusetzen


    new array[6] = {-410.00,1403.30,-3.00,-137.90,1681.20,200.00};


    //edit
    Um ein klares Anwendungsbeispiel zu machen solltest du das enum MainZone posten.

  • Zum ersten hast du das hier schonmal gefragt
    Kennzeichen Hilfe


    enum MainZone {
    Zone_Name[28],
    Float:Zone_Area[6]
    };


    Die 3 Koordinate ist die höhe damit kannst du einen würfel um die Zone erstellen


    stock GetPlayer3DZone(playerid, zone[], len) {
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    for(new i = 0; i != sizeof(SanAndreasZones); i++ ){
    if(x >= SanAndreasZones[i][Zone_Area][0] && x <= SanAndreasZones[i][Zone_Area][3] && y >= SanAndreasZones[i][Zone_Area][1] && y <= SanAndreasZones[i][Zone_Area][4] && z >= SanAndreasZones[i][Zone_Area][2] && z <= SanAndreasZones[i][Zone_Area][5]){return format(zone, len, SanAndreasZones[i][Zone_Name], 0); }
    }
    return false;
    }
    stock GetPlayer2DZone(playerid, zone[], len) {
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    for(new i = 0; i != sizeof(SanAndreasZones); i++ ){
    if(x >= SanAndreasZones[i][Zone_Area][0] && x <= SanAndreasZones[i][Zone_Area][3] && y >= SanAndreasZones[i][Zone_Area][1] && y <= SanAndreasZones[i][Zone_Area][4]){
    return format(zone, len, SanAndreasZones[i][Zone_Name], 0);}
    }
    return false;
    }


    Was google so alles bewirkt.


    //edit


    Das ganz ist letztendlich je nach Verwendungszweck mit dem streamer plugin zu kombinieren und darüber die Zonen zu erstellen da es dafür sogar ein callback gibt welches aufgerufen wird wenn du die zone betritst.

  • if (!strcmp("/wobinich", cmdtext)){
    new ZName[28];
    if(!GetPlayer2DZone(playerid,ZName,28))return SendClientMessage(playerid,-1,"Du bist in keiner bekannten Zone!");
    SendClientMessage(playerid,-1,ZName);
    return 1;
    }


    Der Name der Zone wird zurück gegeben an den string der für das argument zone[] eingesetzt wurde da dieser formatiert wird. sollte nix gefunden werden gibt die funktion 0 zurück, sollte ein eintrag gefunden werden so ist der rückgabewert 1.



  • Was bring 3DZone Und wie kann ich es machen, dass ich einfach jedes abfragen kann ohne die länge anzugeben (was ich rigendiwe nicht ganz checke?!)


    L.G.
    heyho :)

  • Was bring 3DZone Und wie kann ich es machen, dass ich einfach jedes abfragen kann ohne die länge anzugeben (was ich rigendiwe nicht ganz checke?!)


    L.G.
    heyho :)


    Was ist der Unterschied zwischen einem Rechteck und einem Quader(2D vs 3D) ?
    ( noch ein kleiner tipp a*b(Flächeninhalt) und a*b*c(Volumen)).


    Die länge wird für format genutzt
    format(zone, len, SanAndreasZones[i][Zone_Name], 0);


    kannst du auch natürlich entfernen als argument und hier len durch sizeof(zone) ersetzen.
    Das macht man weil konstante werte schneller sind als erstmal die Größe über eine funktion abzurufen.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • ok Mathe =D kann ich eigentlich.... (stehe 2 Gynasium)..
    Aber die Kontruktion aheb ich eben nicht versteanden =D.
    So zu meiner Frage ich verstehe nicht wie mans abfragt aber beschäftige mich später damit....
    Könntest mir es ja nochmal versuchen zu erklären ;)


    L.G.
    heyho

  • kannst du auch natürlich entfernen als argument und hier len durch sizeof(zone) ersetzen.
    Das macht man weil konstante werte schneller sind als erstmal die Größe über eine funktion abzurufen.


    Sizeof ist ein Opperator und kein Macro, also macht es daraus keinen Konstanten Wert und ist somit nicht zwingend schneller als eine Variable ;)

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

    Margarete Stokowski


  • Sizeof ist ein Opperator und kein Macro, also macht es daraus keinen Konstanten Wert und ist somit nicht zwingend schneller als eine Variable ;)


    BlackAce der Satz gebe ich zu ist etwas undeutlich ich meinte nicht das die verwendung von sizeof() schneller ist sondern die eines konstanten Wertes.
    Also bezieht sich der nachfolgende Satz darauf das die verwendung von sizeof langsamer ist als ein konstanter Wert, auch wenn der Unterschied in die tausendstel geht. :D
    "Das macht man weil konstante werte schneller sind als erstmal die Größe über einen Operator zu ermitteln."