Funktion / Optimierung

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
  • Guten Abend liebe Breadfishler,
    ich suche Jemanden, der sich so mindestens mittelgut auskennt in Sachen von Optimierung und Funktionen, heißt also, man soll nicht denselben Mi** 5x abfragen und daher ne Funktion bauen, die dann abgerufen werden kann.


    Das Script kann ich hier nicht posten, da es zurzeit für einen Server dient, später werde ich es dann veröffentlichen, falls der Server down geht.


    Mich würde es freuen, falls Teamviewer + TS3 mitgebracht wird :)


    MfG, TehEbil.


    Edit:
    Hier mal ein Beispiel:


    #define TestGebiet BssGebiet // ohne gibt warning


    enum spezGebiet
    {
    LvGebiet,
    LsGebiet,
    };


    enum spezGangfight
    {
    Aktiv,
    Besitzer
    };


    new Gebiet[spezGebiet];
    new Gangfight[spezGangfight][spezGebiet];



    if(strcmp("/befehl", cmdtext, true) == 0)
    {
    //#define TestGebiet LsGebiet
    GetGebiet(playerid);
    if(Gangfight[Aktiv][TestGebiet] == 1)
    {
    ...
    }
    }


    if(strcmp("/befehl2", cmdtext, true) == 0)
    {
    GetGebiet(playerid);
    if(gTeam[playerid] == Gangfight[Besitzer][TestGebiet])
    {
    SendClientMessage(playerid, FARBE_ROT, "Du kannst das nicht tun!");
    return 1;
    }
    Gangfight[Aktiv][TestGebiet] = 1;
    GangZoneFlashForAll(Gebiet[TestGebiet], GetFarbe());
    }


    stock GetGebiet(playerid)
    {
    #undef TestGebiet
    if(IsPlayerInGebiet(playerid, 922.5522, -1564.835, 1062.687, -1413.023))
    {
    #define TestGebiet LsGebiet
    return;
    }

    else if(IsPlayerInGebiet(playerid, 2474.133, 2598.861, 2735.758, 2865.758))
    {
    #define TestGebiet LvGebiet
    return;
    }
    return;
    }


    So wollte ich es machen, damit ich nicht für jedes einzelne Gebiet Abfragen muss und dann für jedes gebiez einzeln [LvGebiet] etc. machen muss und dann immer dasselbe, wenn ihr versteht. Ich habe ja auch weit aus mehr als nur 12 Gebiete. MfG

    Einmal editiert, zuletzt von TehEbil ()

  • also zu allgemeinen Optimierung: [ SCRIPTING ] Code Optmierungen


    ZU deiner Fragen.
    forward erstellen
    den Puplic dazu und da dann deine Abfrage rein. Das ganze kannst du dann immer mit dem Befehl abfragen so wie dein erstellter Puplic heist.


    MfG
    BlackHawk


    Bitte keine Script/Supportanfragen via PN!!!
    (Ausnahme: Scripten gegen Bezahlung!)

  • genau das habe ichi gemacht :D


    in manchen Fällen auch gut gegangen, nur bei einem Fall hab ich halt ein Problem, und zwar ich möchte es dynamisch machen:


    Spieler gibt was ein, dann wird durch funktion ein Wert unter gewissen Umständen zurückgegeben.


    meine Variable / Array sieht so aus:


    Geld[Benutzer][Objekt] // frei erfunden.


    das Objekt ist das Resultat der Funktion, oben habe ich ein enum, mit verschiedenen Objekten. Nehmen wir als Beispiel: Tor.


    Geld[Benutzer][Tor]


    jetzt möchte ich meine Funktion "Tor" returnen lassen, daher habe ich es so versucht:


    #define Test Tor // ganz am Anfang, sonst kommt ne Fehlermeldung.


    dann wird vor der 1. Abfrage dieser Var die Funktion aufgerufen, diese sieht in etwa wie in folgt aus:


    stock funktion()
    {
    if...
    #undef Test
    #define Test Tor
    ...
    }


    und Abfrage anstatt Tor dann halt [Test].


    Bei diesem ist es noch möglich, aber ich habe irgendwie bemerkt, dass die defines innerhalb der Funktion bleiben, //durch austesten i.v.m anderen Funktionen, kann aber auch sein, dass es einfach nur diese Funktion war, in der es nicht geht oder sonstiger Fehler
    daher brauch ich eine andere Variante. Habe es auch schon versucht, mithilfe einer Var zu lösen, jedoch ebenfalls ohne Erfolg. Außerdem ist vieles in meinem Script überflüssig, ich mache immer so viele Variablen, und weiß nicht, ob man da oben noch ne Menge optimieren kann oder diese auch so zu gebrauchen sind wie ich sie da erstellt habe ^^


    Danke für deine Antwort.


    MfG


    PS: Das mit dem Optimieren hab ich natürlich schon angeguckt und bin erstaunt davon, aber mit optimieren meinte ich bei mir was anderes, DAS Optimieren kommt erst am Ende des Scriptes ^^ btw.: Im moment verwende ich da noch das lästige str... ist im Gamemod auch noch, und dies ist ein fs dazu, wird später mit dem GM geändert.

  • Test und Tor, dann mit einer anderen Funktion diese nutzen, bsp.:


    #define Test Tor
    GangZoneFlashForAll(Gebiet[Test], GetFarbe()); // ähnlich aus meinem script, wird ein Gebiete(gangfight)script.


    Und mithilfe der Funktion soll das dann geregelt werden, jedoch wenn ich statt #define die Funktion nehme, geht es nicht, obwohl die funktion stimmen müsste.

  • Ich hoffe, ich darf hier doppelpost machen, damit es gebumpt wird :/


    Ich habe es oben reinzitiert. MfG


    //Edit: Ich habe gerade gemerkt, dass defines nicht während des Scripts aufgerufen werden können, da sie nur vom Compiler verwendet werden, hat jemand noch ne andere Lösung und/oder kann mir sagen, wie man dies mit Variablen löst? ( ich komm mit strings und arrays nicht klar.. keine Ahnung wieso)


    mfG

    Einmal editiert, zuletzt von TehEbil ()

  • Doppel Post is verboten du hast sogar 3 fach Post beschreib nun mal genau was du brauchst damit ich dir helfen kann


    //edit meinst du sowas



    stock GetGebiet(playerid)
    {
    new Gebiet[32];
    if(IsPlayerInGebiet(playerid, 922.5522, -1564.835, 1062.687, -1413.023))
    {
    Gebiet = "blub";
    }

    else if(IsPlayerInGebiet(playerid, 2474.133, 2598.861, 2735.758, 2865.758))
    {
    Gebiet = "blub2";
    }
    return Gebiet;
    }

    RFT

    Einmal editiert, zuletzt von RFT ()

  • So ich hab mal für dich was gemacht in ner txt Datei, weil es ins Forum ned passt ^^ Ich hoffe es ist das, was du gesucht hast ^^.

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Naja, tut mir leid wegen dreifachpost, habe mich bemüht, dieses nicht zu übertreiben, jedoch hatte der Thread hier keine Aufmerksamkeit mehr und war auf der 3. Seite.


    Julian, so habe ich es auch probiert, nur kam ich dann nicht mit folgendem weiter:
    GetGebiet(playerid); // hier wird Gebiet auf LsGebiet gesetzt.
    Gangfight[Aktiv][Gebiet] = 1;


    Naja, ich schicke euch beide mal die Datei, ich denke, ihr seid vertrauenswürdig und habt Ahnung, wovon ihr redet, vielleicht versteht ihr es dann, aber langsam denke ich, dass ich in eine falsche Richtung denke und das ganze garnicht so einfach dynamisch lösen kann sondern mit einem loop.


    Darauf bin ich dank Templer gekommen, ps: darf ich das script bearbeiten? Also auch Sachen rausschmeißen etc.? Oder ist das nur zum Anschauen? Wirst gleich verstehen, weshalb ich hier frage, wenn ich dir die pwn geschickt habe ;)


    Und danke für eure Mühe, nochmals.


    MfG

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