Ergebnis 1 bis 6 von 6

Thema: [DynRPG] BetterEventDetection

  1. #1

    [DynRPG] BetterEventDetection

    Nun, nachdem ich herrausgefunden habe das mein Selfswitch Plugin fürn Müll ist, da es bereits sowas gibt habe ich einfach mal innerhalb eines Tages dieses Plugin zussammengeschustert, die Idee schwirrte mir schon lange im Kopf herum.

    Vielleicht kann man es schon am Namen erkennen, aber dieses Plugin ermöglicht eine bessere EventErkennung.
    Mit diesem Plugin kann man jedes Event abfragen, selbst wenn sich 2 oder mehr auf einem einzigen Feld befinden.
    Dazu kommt die Möglichkeit den Namen des Events abzufragen und den Layer.

    Insgesamt, kann dieses Plugin also sehr hilfreich sein wenn es darum geht ein AKS zu basteln und man selber nicht so bewandert ist was C++ angeht.
    Falls noch jemand Wünsche hat, kann er sie hier gerne posten, bugs ebenso...

    download BetterEventDetection Plugin.zip

    Falls sich jemand den Code anschauen möchte, ich freue mich sehr über Verbesserungsvorschläge:
    download BetterEventDetection Code.zip

    Geändert von djeurissen (04.01.2014 um 19:45 Uhr)

  2. #2
    Zitat Zitat
    Wenn ein Befehl die ID eines Switches oder einer Variable benötigt,
    darf niemals eine nicht existente ID angegeben werden,
    es kann zum Absturz des Spiels führen.

    Hä? Warum das? RPG::variables hat kein Problem mit zu hohen Variablennummern, selbiges gilt für RPG::switches. Es werden einfach mehr Variablen bzw. Switches erzeugt.

    Steht afaik auch so in der Dokumentation.


    EDIT: Gerade den Code gelesen. Mir sind ein paar Sachen aufgefallen:

    1) Warum CUSTOM_DLLMAIN? Das versteh ich nicht. Erstens mal hast du keine eigene DllMain-Funktion, wozu dann? Zweitens hast du das nach dem #include, also hat es sowieso keine Wirkung.
    2) using namespace RPG ist zwar vielleicht praktisch, aber das ist nicht umsonst in einem Namespace - nämlich damit man erstens sofort sieht wenn man auf etwas von DynRPG zugreift und zweitens nicht neue Features alten Code zerstören können weil sie zufällig denselben Namen für ein Objekt verwenden wie du für eine Variable.
    3) Dein Code wird furchtbar failen wenn es Lücken in den Event-IDs gibt. Ich erkläre dir mal:

    Du zählst die Event-IDs von 1 bis zur Anzahl Events. Was passiert jetzt wenn es die Events 1, 3, 4 und 6 auf der Map gibt? Dann zählst nicht 1, 3, 4, 6 sondern 1, 2, 3, 4 und wirst bei "2" crashen weil es das Event nicht gibt.
    Ich nehme an, du willst danach nicht events[i] (also i = EventID) sondern events.ptr->list[i] (also i = Index) verwenden, und mit 0 zu zählen beginnen:

    Code:
    for(int i = 0; i < RPG::events.count(); i++) {
        RPG::Event *myEvent = RPG::map->events.ptr->list[i];
        // Event ID would be myEvent->id
    }
    Ich sollte das vielleicht mal besser in der Dokumentation erklären, oder vielleicht "list" vom darunterliegenden RPG::NamedCatalog durchreichen sodass man "RPG::events.byIndex(i)" verwenden kann o.ä.

    Geändert von Cherry (04.01.2014 um 19:24 Uhr)

  3. #3
    Kein Problem mit zu hohen Variablennummern, aber mit der nummer 0, zumindenst entstand bei mir immer ein Crash...
    Deswegen habe ich das vorsichtshalber da mal hingeschrieben, um evtl Bugs aus dem Weg zu gehen...

    Namespace habe ich nun entfernt und alles mit RPG ersetzt...

    Zudem habe ich:
    Code:
    if(RPG::map->events[(unsigned int)parsedData->parameters[0].number]->getName() == parsedData->parameters[1].text)
                RPG::switches[(unsigned int)parsedData->parameters[2].number] = true;
            else
                RPG::switches[(unsigned int)parsedData->parameters[2].number] = false;
    mit
    Code:
    RPG::switches[(unsigned int)parsedData->parameters[2].number] = (RPG::map->events[(unsigned int)parsedData->parameters[0].number]->getName() == parsedData->parameters[1].text);
    ersetzt, ist mir mal so im Nachhinein noch aufgefallen als ich alles mit RPG ausgestattet habe ^^...

    Naja, an diese Möglichkeit habe ich gar nicht gedacht und beim Testen muss ich wohl ziemlich glück gehabt haben das alles immer geklappt hat, weil ich extra einige events gelöscht habe zum testen...
    Allerdings weiß ich jetzt nicht genau wie ich auf die Liste zugreife, zurzeit sieht das so aus:
    RPG::map->events.ptr->list[i]->x
    Allerdings führt das zu einer Fehlermeldung beim ausführen des codes, NICHT beim compilieren...

    Edit: Custom_DLLMAIN war nur mal zum Test vorhanden, habe es nun entfernt, ich werde die neue Version hochladen sobald ich den Bug entfernt habe ._.

    Geändert von djeurissen (04.01.2014 um 19:22 Uhr)

  4. #4
    Und du zählst wirklich von 0 und nicht 1 weg? Zeig mal den Code.


    EDIT: ......oh ich vergaß, da ist ja ein Bug der zwar schon gefixt, aber noch nicht released ist (v0.20 wird gerade getestet): http://www.multimediaxis.de/threads/...=1#post3040635
    Mit diesem Fix sollte es gehen

    Geändert von Cherry (04.01.2014 um 19:28 Uhr)

  5. #5
    Schon gut XD, ich habe ausversehen <= gleichgelassen, somit kommt es am ende natürlich zu nem Fehler...

    Edit: Neue Version hochgeladen, falls sie noch Bugs beinhaltet kann ich mich erst morgen drum kümmern, bin jetzt erstmal weg..
    Ich denke aber das es das jetzt war ._.

    PS: Was für ein Bug? Ich habe die Version 0.20 auf meinem Projekt, steht sogar in der readme XD

    Geändert von djeurissen (04.01.2014 um 19:44 Uhr)

  6. #6
    Oh, hast du, OK das ist was anderes. Das hab ich wohl überlesen. Das heißt im Moment natürlich dass deine Benutzer auch diese Version haben müssen, was aber im Moment noch nicht geht weil sie noch nicht wirklich released ist und auch noch ein paar Probleme zu haben scheint, was ich hier so lese.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •