Makro "Wait" von variable abgreifen

Wilkommen im Forum von Runes of Magic DE

Regeln und Richtlinien: Spielregeln - Community-Richtlinien - Allgemeine Nutzungsbedingungen - RoM Servers Status

Kontaktmöglichkeiten: Support System - Discord
  • ich hab das makro mal etwas gekürzt...

    Probleme der vorherigen Makros:

    - bei zwei Umhängen mit gleichem Namen -> falscher Umhang

    - kein doppelter Check auf korrekten Umhang -> falscher Umhang

    - kein schutz vor doppelklick -> falscher Umhang


    Code
    1. /run _itm="Umhang der Kühnheit von Aoth"
    2. /run _check=_check or 0 if _check==0 then _bi=nil _bn=nil for i=1,180 do z,_,n=GetBagItemInfo(i)if n==_itm then _bi=z;_bn=i;UseBagItem(z)break end end _check=1 end
    3. /wait .3
    4. /run if _bi and _check==1 then UseEquipmentItem(5)_check=2 end
    5. /wait .3
    6. /run if _bi and _check==2 then UseBagItem(_bi)_check=3 end
    7. /wait .3
    8. /run if _bi and _check==3 then _,_,n=GetBagItemInfo(_bn) if n~=_itm then UseBagItem(_bi) end _check=0 end
    9. /wait .3
    10. /run if _bi then m,c=GetBagItemCooldown(_bi)pylib.lib.timer.Add(c,function()SendSystemMsg("Zorn-Umhang wieder frei")end,"UCD", 1)end

    Zeile 2: rausfinden des Rucksackindex des Umhangs / Anziehen des Umhangs

    Zeile 4: Verwenden des Umhangs

    Zeile 6: Anziehen des Originalumhangs

    Zeile 8: Anziehen des Originalumhangs sollte das erste mal fehlgeschlagen sein

    Zeile 10: Auslesen des CDs


    _bi = Rucksackindex

    _bn = Rucksackslot

    _itm = Umhang Name


    => Skill ausgelöst nach 0.3 Sekunden

    => Original Umhang angezogen nach spätestens 1 sekunde (normalerweise nach 0.6 sekunden)


    Du bist mit einer Entscheidung von mir nicht zufrieden? Kontaktiere meinen Superior SaitoHajime

  • ich hab das makro mal etwas gekürzt...


    Hi,


    Danke Grimthar für das Kürzen und Härten des Makro's - ich hab definitiv viel gelernt in diesem Post..


    Da du "_check" als globale Variable verwendest, funktioniert das Makro bei mir einmalig, da "_check" bis zum Logout auf 2 oder 3 bleibt.

    Ergo im letzten Schritt die globale Variable "_check" wieder nullen, bzw auf "nil" setzen.




    Bin gespannt auf die nächsten Post's.


    Viel Spass am Probieren.

    Zwergtarkan, Asteria

    Edited 3 times, last by tarkan447 ().

  • eigentlich sollte _check in Zeile 8 wieder genullt werden  [...] end _check=0 end


    aber ja nochmal nen zusätzliches nullen schadet nicht.

    außer ich hätte da irgendwo einen Fehler eingebaut ;)

    Du bist mit einer Entscheidung von mir nicht zufrieden? Kontaktiere meinen Superior SaitoHajime

  • wird nur genullt, wenn das Item beim zweiten Versuch angezogen wird, oder anders herum - wird nicht genullt, wenn das Item im ersten Versuch in Zeile 6 angezogen wird 8)


    Insofern also meine obiger Post falsch - Zeile 8 wurde nicht ausgeführt und _check blieb auf 2 und wurde nie 3.

  • Ich find's ja sehr cool, wie ihr hier optimiert und die beste Methode sucht. :thumbup:


    Wenn wir jetzt gerade schon die geballte Kompetenz versammelt haben: Kennt ihr das Phänomen, dass die Zeilenumbrüche beim Kopieren aus dem Forum (oder auch aus dem Texteditor) ein weiteres "unsichtbares Zeichen" vor dem eigentlichen Umbruch bekommen wenn man es im Makroeditor im Spiel einfügt?


    Ich gehe dann immer ans Ende jeder Zeile und lösche dieses Zeichen im Makro-Editor im Spiel, denke mir aber jedesmal: Das müsste doch auch irgendwie besser gehen bzw. vermieden werden könnnen. Im Texteditor habe ich auch schon verschiedene Zeichensätze und Zeilen-Endungs-Codierungen ausprobiert, aber bislang noch keinen Erfolg gehabt.


    Leider ist das nicht nur unschön und verbraucht unnötige Zeichen, sondern es führt stellenweise auch dazu, dass Befehle nicht ausgeführt werden.

  • Hi,


    lua benutzt normalerweise das Unix-Zeilenende "0a". Windows "0a"+"0d". Der Browser erkennt im Hintergrund den Unterschied und zeigt beide Möglichkeiten normalerweise korrekt an.


    Beim copy_paste direkt in ein Makro, wird eben auch das "0d" als nichtdruckbares Zeichen ans Ende gestellt..


    Ich habe mir angewöhnt, es zuerst in notepade++ in eine offene Datei mit UNIX-Zeilenformat zu pasten - hier macht diese Einstellung die Arbeit im Hintergrund und löscht "0d", wenn davor ein "0a" gefunden wird.

  • eine kleine Verbesserung/Bugfix:

    (aktuell buggt das Makro wenn der Umhang nicht im Rucksack war und man das Makro ausgeführt hat... _check bleibt auf 1 stehen)


    Code
    1. /run _itm=GetObjName(227728)
    2. /run _check=_check or 0 if _check==0 then _bi=nil _bn=nil for i=1,180 do z,_,n=GetBagItemInfo(i)if n==_itm then _bi=z;_bn=i;UseBagItem(z) _check=1 return end end end _check=0
    3. /wait .3
    4. /run if _bi and _check==1 then UseEquipmentItem(5)_check=2 end
    5. /wait .3
    6. /run if _bi and _check==2 then UseBagItem(_bi)_check=3 end
    7. /wait .3
    8. /run if _bi and _check==3 then _,_,n=GetBagItemInfo(_bn) if n~=_itm then UseBagItem(_bi) end _check=0 end
    9. /wait .3
    10. /run if _bi then m,c=GetBagItemCooldown(_bi)pylib.lib.timer.Add(c,function()SendSystemMsg("Zorn-Umhang wieder frei")end,"UCD", 1)end