PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Macro fürs Pet


aths
2006-01-01, 03:58:27
Ich möchte per Macro folgendes, wenns geht:

- Test, ob das Pet da ist. Wenn ja: Mend Pet casten.
- Wenn das Pet nicht da ist, prüfen ob es tot ist. Wenn es tot ist, Revive Pet casten
- Ansonsten Call Pet casten.

Kurz: Ich will ein Button für alles. Der Button soll "intelligent" die Aktion bestimmen, die ausgeführt wird.

pubi
2006-01-01, 17:15:02
Kurz: Ich will ein Button für alles. Der Button soll "intelligent" die Aktion bestimmen, die ausgeführt wird.
"einen Button" bitte!

DerRob
2006-01-02, 00:27:04
mend pet = pet heilen?

hab da nen paar ideen wie man das realisieren könnte, allerdings hab ich (noch) keinen ausreichend hohen jäger, um auszutesten, ob die befehle auch das gewünschte machen... ;)

aths
2006-01-02, 04:40:57
Japp, Mend Pet heilt das Pet.

Bandit_SlySnake
2006-01-02, 07:14:36
Wenn das Macro fertig ist willste aber trotzdem noch in der WoW welt rumrennen oder klebst du dann Tesafilm auf die Macrotaste?

Ich frage nur weil es doch absolut keine Spass macht wenn man selber garnichts mehr machen muss.
Wenn ich alleine diese Priest-autoheal-macros sehe, frage ich mich echt, warum man überhaupt den Factor Mensch im Spiel braucht und nicht gleich nur Bots einsetzt.

-Sly

DerRob
2006-01-02, 11:23:34
noch nie was von nem interaktiven film gehört? :P

nee, mal im ernst, manchen leuten macht es vielleicht spaß, so schnell wie möglich irgendwelche tasten zu drücken, und combos usw. zu lernen. andere wiederum möchten das spiel erleben, ohne nen knoten in den fingern zu bekommen. wenn jemand spaß dadran hat, das ganze spiel mit einer einzigen taste durchzuspielen (und es von blizzard nicht verboten ist), bitte, warum nicht? oder bist du etwa neidisch? es hält dich doch niemand davon ab, das gleiche zu tun ;)
bei manchen klassen kommen ne ganze menge fähigkeiten zusammen, da wird das interface schnell unübersichtlich. warum sollte man da nicht einige funktionen, die z.b. voneinander abhängig sind, zusammenfassen?
ich hab beispielsweise ein macro, das mir für meinen mdw-buff automatisch den passenden rang für mein ziel raussucht, weil ich keine lust hab, mir alle 8 (?) versionen des buffs auf die buttonleiste zu legen, oder ständig mit offenem zauberbuch durch die gegend zu rennen. wieviel "automatismus" man haben möchte, sollte jeder für sich selbst entscheiden. wenn etwas zu weit geht, wird blizzard es eh verbieten, oder funktionsunfähig machen :)

so, mal ein erster versuch für das macro, kann es leider noch nicht selbst ausprobieren, daher ohne gewähr auf funktionsfähigkeit: ;)

/script if (HasPetUI()) then if UnitHealth("pet") > 0 then CastSpellByName("pet_heilen"); else CastSpellByName("pet_wiederbeleben"); end; else CastSpellByName("pet_rufen"); end

ich weiß leider nicht die namen für die einzelnen (zauber-)sprüche, außerdem benutzt du ja eh den englischen client... wenn die sprüche alle im zauberbuch stehen, sollte das ganze eigentlich so funktionieren :)

Hucke
2006-01-02, 11:54:19
Wenn das Macro fertig ist willste aber trotzdem noch in der WoW welt rumrennen oder klebst du dann Tesafilm auf die Macrotaste?

Ich frage nur weil es doch absolut keine Spass macht wenn man selber garnichts mehr machen muss.
Wenn ich alleine diese Priest-autoheal-macros sehe, frage ich mich echt, warum man überhaupt den Factor Mensch im Spiel braucht und nicht gleich nur Bots einsetzt.

-Sly

Priester Autoheal? Knöpfchen drücken muß wohl noch immer sein.
Aber Sachen wie Decursive möcht ich nicht mehr missen. Ansonsten wirst Du als Priester bei nem 40er Raid ja bekloppt.

aths
2006-01-02, 12:42:14
Wenn das Macro fertig ist willste aber trotzdem noch in der WoW welt rumrennen oder klebst du dann Tesafilm auf die Macrotaste?

Ich frage nur weil es doch absolut keine Spass macht wenn man selber garnichts mehr machen muss.
Wenn ich alleine diese Priest-autoheal-macros sehe, frage ich mich echt, warum man überhaupt den Factor Mensch im Spiel braucht und nicht gleich nur Bots einsetzt.

-SlyIch will, dass das Spiel-Interface stupide Entscheidungen, die je nach Situation immer gleich ausfallen, von alleine trifft.

so, mal ein erster versuch für das macro, kann es leider noch nicht selbst ausprobieren, daher ohne gewähr auf funktionsfähigkeit: ;)

/script if (HasPetUI()) then if UnitHealth("pet") > 0 then CastSpellByName("pet_heilen"); else CastSpellByName("pet_wiederbeleben"); end; else CastSpellByName("pet_rufen"); end

ich weiß leider nicht die namen für die einzelnen (zauber-)sprüche, außerdem benutzt du ja eh den englischen client... wenn die sprüche alle im zauberbuch stehen, sollte das ganze eigentlich so funktionieren :)Ich hab folgendes genutzt:

/script if (HasPetUI()) then if UnitHealth("LittleFella") > 0 then CastSpellByName("Med Pet"); end; else
CastSpellByName("Revive Pet); end; else
CastSpellByName("Call Pet"); end


Dabei bekomme ich diese Fehlermeldung:

http://www.dudv.de/files/3dcf/fehlermeldung1.jpg

Gast
2006-01-02, 12:47:30
Beknacktes Subject. Ich hab zuerst "Macro fürs Bett" gelesen und voller Erwartung reingeklickt. Und dann sowas langweiliges... Tsk, tsk, tsk.

DerRob
2006-01-02, 14:38:49
Ich hab folgendes genutzt:

/script if (HasPetUI()) then if UnitHealth("LittleFella") > 0 then CastSpellByName("Med Pet"); end; else
CastSpellByName("Revive Pet); end; else
CastSpellByName("Call Pet"); end


Dabei bekomme ich diese Fehlermeldung:

http://www.dudv.de/files/3dcf/fehlermeldung1.jpg
hmm, er bemängelt eine fehlende klammer, aber soweit ich sehe, sind alle klammern vorhanden. was mir aber grad auffällt (möglicherweise ist es aber auch nur ein darstellungsfehler hier im forum): du darfst hinter dem "else" keinen zeilenumbruch einfügen, sondern alles in eins wegschreiben. ansonsten steht der entsprechende befehl in einer neuen zeile und gehört nicht mehr zu dem /script befehl.
achja, und bei unithealth kannst du zwar den namen deines pets einfügen, dann funktioniert das macro aber auch nur mit diesem einen pet. wenn du statdessen das "pet" drinlässt, nimmt wow automatisch den namen deines aktuellen pets ;)

edit: ich seh grad, hinter "revive pet" fehlt ein anführungszeichen, das ist möglicherweise der fehler ;)

Muselbert
2006-01-02, 15:14:57
edit: ich seh grad, hinter "revive pet" fehlt ein anführungszeichen, das ist möglicherweise der fehler ;)


Und da steht "med pet" stand "mend pet" :)

aths
2006-01-02, 17:19:56
Den Zeilenumbruch habe ich nur im Posting eingefügt, im Macro-Editor ist die Zeile fortlaufend (und wird automatisch umgebrochen.)

Habe beim Makro die fehlenden Anführungszeichen ergänzt und Mend Pet richtig geschrieben, aber dann kommt folgender Fehler:

/script if (HasPetUI()) then if UnitHealth("LittleFella") > 0 then CastSpellByName("Mend Pet"); end; else CastSpellByName("Revive Pet"); end; else CastSpellByName("Call Pet"); end

http://www.dudv.de/files/3dcf/fehlermeldung2.jpg


Folgende versuchsweise Kurzversion des Markos bringt leider auch einen Fehler:

/script if (HasPetUI()) then if UnitHealth("Pet") > 0 then CastSpellByName("Mend Pet"); end

http://www.dudv.de/files/3dcf/fehlermeldung3.jpg

Habs auch jeweils mit "Pet" statt dem Pet-Namen "LittleFella" probiert, die Fehlermeldungen bleiben.


edit: Mit "Pet" statt dem Pet-Namen geht die Macro-Kurzversion, sofern man ein zweites "end" hinten anhängt. Die lange Version geht jedoch nicht. Er will ein <eof> near `else'. Mir wird auch langsam klar, woher das kommt: Wo ist die passende If-Abfrage?

edit2: (UnitIsDead("Pet") wäre als If-Bedingung möglich, aber langsam scheint mir, dass Macros kein else oder elseif akzeptieren.

edit3: Komisch, folgendes Macro

/script if (UnitIsDead("Pet")) then CastSpellByName("Revive Pet") end

macht nix, wenn das Pet tot ist.

DerRob
2006-01-02, 19:57:00
hmm, hab das macro mal mit ein paar ersatz-befehlen gefüttert,und bei mir funktioniert es einwandfrei,macht genau das was es soll... ich kann mir nur vorstellen, daß du irgendwo ein zeichen falsch gesetzt oder vergessen hast. länger als 256 zeichen ist das macro auch noch nicht, oder?

deine 2. version kann auch nicht funktionieren, weil da noch ein if...then zu viel drin ist. ich strukturiere das macro mal etwas, dann ist besser zu erkennen, was es eigentlich machen soll:

if HasPetUI() then -- existiert ein pet? wenn ja, dann
if UnitHealth("pet") > 0 then -- hat das pet mehr als 0 hp? wenn ja, dann
CastSpellByName("pet_heilen"); -- pet heilen ;)
else -- wenn das pet nicht mehr als 0 hp hat, mache folgendes
CastSpellByName("pet_wiederbeleben"); -- pet wiederbeleben
end; -- ende der inneren if-abfrage (pet-hp)
else -- wenn kein pet existiert, dann
CastSpellByName("pet_rufen"); -- rufe pet
end; -- ende der äußeren if-abfrage (pet da?)

wie gesagt, wenn die sprüche alle im zauberbuch stehen, müsste das so funktionieren, nur bei dem HasPetUI() bin ich mir nicht 100% sicher. aber syntax-fehler sollte es mit dem macro keine geben, ansonsten is irgendwas falsch eingetippt ;)

du könntest zum testen ja mal die äußere if-ten-else abfrage weglassen, um dem fehler evtl. auf die spur zu kommen.

edit: aah, ich seh grad welchen fehler du gemacht hast:

/script if (HasPetUI()) then if UnitHealth("LittleFella") > 0 then CastSpellByName("Mend Pet"); end; else CastSpellByName("Revive Pet"); end; else CastSpellByName("Call Pet"); end

ich hebs mal hervor:

if (HasPetUI()) then
if UnitHealth("LittleFella") > 0 then
CastSpellByName("Mend Pet");
end; <- hier wird die innere if-abfrage schon wieder beendet, das end is eigentlich zu viel
else
CastSpellByName("Revive Pet");
end; <- hier is alles zuende, alles nachfolgende ist jetzt über und verursacht den fehler

else
CastSpellByName("Call Pet");
end

aufpassen beim abtippen, mit copy&paste wär der fehler wohl nich passiert :P

aths
2006-01-02, 20:16:27
hmm, hab das macro mal mit ein paar ersatz-befehlen gefüttert,und bei mir funktioniert es einwandfrei,macht genau das was es soll... ich kann mir nur vorstellen, daß du irgendwo ein zeichen falsch gesetzt oder vergessen hast. länger als 256 zeichen ist das macro auch noch nicht, oder?

deine 2. version kann auch nicht funktionieren, weil da noch ein if...then zu viel drin ist. ich strukturiere das macro mal etwas, dann ist besser zu erkennen, was es eigentlich machen soll:

if HasPetUI() then -- existiert ein pet? wenn ja, dann
if UnitHealth("pet") > 0 then -- hat das pet mehr als 0 hp? wenn ja, dann
CastSpellByName("pet_heilen"); -- pet heilen ;)
else -- wenn das pet nicht mehr als 0 hp hat, mache folgendes
CastSpellByName("pet_wiederbeleben"); -- pet wiederbeleben
end; -- ende der inneren if-abfrage (pet-hp)
else -- wenn kein pet existiert, dann
CastSpellByName("pet_rufen"); -- rufe pet
end; -- ende der äußeren if-abfrage (pet da?)

wie gesagt, wenn die sprüche alle im zauberbuch stehen, müsste das so funktionieren, nur bei dem HasPetUI() bin ich mir nicht 100% sicher. aber syntax-fehler sollte es mit dem macro keine geben, ansonsten is irgendwas falsch eingetippt ;)

du könntest zum testen ja mal die äußere if-ten-else abfrage weglassen, um dem fehler evtl. auf die spur zu kommen.

edit: aah, ich seh grad welchen fehler du gemacht hast:



ich hebs mal hervor:

if (HasPetUI()) then
if UnitHealth("LittleFella") > 0 then
CastSpellByName("Mend Pet");
end; <- hier wird die innere if-abfrage schon wieder beendet, das end is eigentlich zu viel
else
CastSpellByName("Revive Pet");
end; <- hier is alles zuende, alles nachfolgende ist jetzt über und verursacht den fehler

else
CastSpellByName("Call Pet");
end

aufpassen beim abtippen, mit copy&paste wär der fehler wohl nich passiert :PIch hab es mit Copy&Paste übertragen, nicht abgetippt. Dein jetziges Makro frisst er zwar, aber obwohl ich die Sprüche angepasst habe, will er beim toten Pet jenes herbeipfeifen und nicht wiederbeleben.

DerRob
2006-01-02, 20:27:00
wollen wir uns jetzt streiten? :P
schau mal oben nach, 2x if, 2x else, 2x end muss im macro auftauchen, damits richtig ist ;)

hmm, totes pet herbeipfeifen... hast du die pet-leiste noch, wenn das pet tot ist? oder verschwindet die?
tausch evtl. mal HasPetUI() mit PetHasActionBar() aus, vielleicht funktionierts dann ja. :confused:

aths
2006-01-02, 20:38:47
Auch damit pfeift er nur, anstatt das Pet wiederzubeleben. Wenn das Pet tot ist, sind weder PetActionBar noch PetUI eingeblendet, aber wahrscheinlich intern aktiv, nur eben nicht zur Anzeige gebracht.

DerRob
2006-01-02, 23:32:16
hmm, ich habs grad mal mit meinem hexenmeister (und mit textausgaben anstelle der spells) ausprobiert, und es funktioniert einwandfrei, wie es soll. wenn das pet lebt, solls geheilt werden, wenn es tot ist, solls wiederbelebt werden, und wenn kein pet da ist, wird es gerufen.

http://img287.imageshack.us/img287/143/pet21vy.th.jpg (http://img287.imageshack.us/my.php?image=pet21vy.jpg) http://img287.imageshack.us/img287/4091/pet18zz.th.jpg (http://img287.imageshack.us/my.php?image=pet18zz.jpg) http://img287.imageshack.us/img287/6025/pet32na.th.jpg (http://img287.imageshack.us/my.php?image=pet32na.jpg)

ich werds nochmal mit meinem jäger testen sobald der soweit ist, aber das kann noch ein paar tage dauern :rolleyes:

aths
2006-01-03, 17:48:56
Ich hab entdeckt, dass man bei Macros lange Befehle abkürzen kann indem man Aliases definiert, um somit mit der Beschränkung auf 255 Zeichen besser auszukommen. Wenn du das Hunter-Pet-Macro hinbekommst, versuche ich es um eine 4. Aktion zu ergänzen: Füttern :)

Welches Addon hast du, um die Macro-Begrenzung von 18 Stück umgehen zu können?

DerRob
2006-01-03, 23:42:29
steht im macrofenster in den screenshots schon mit drin: supermacro ;)

damit kann man auch indirekt die 256 zeichen grenze umgehen, indem man teile vom macro auslagert. also ins rechte fenster z.b.:

function blahblub()
hier
steht
jede menge
macro/scriptkram
end


und links rufst das ganze dann mittels:

/script blahblub()

auf :biggrin:
besonders häufig benutzte funktionen kann man so gut abkürzen, z.b.:

function csbm(spell)
CastSpellByName(spell)
end

und im macro halt dann nur noch csbm("spell(rang x)"), spart immerhin jedes mal 11 zeichen ;)

Muselbert
2006-01-04, 00:07:34
Welches Addon hast du, um die Macro-Begrenzung von 18 Stück umgehen zu können?

Supermacro
http://ui.worldofwar.net/ui.php?id=1325

Da finde ich aber atm nur einen Link zu Version 3.0 und die funzt erst mit Patch 1.9, aber ich denke die paar Stunden kannste noch warten ;)

edit: da hab ich wohl zu lang gebraucht :(

DerRob
2006-01-04, 00:59:11
Da finde ich aber atm nur einen Link zu Version 3.0 und die funzt erst mit Patch 1.9, aber ich denke die paar Stunden kannste noch warten ;)
cursegaming hat auch noch die älteren versionen... aber deren server is momentan ganz platt :rolleyes:

aths
2006-01-04, 07:38:09
1.9, hab ich gerade gelesen, soll ohnehin mehr Macros offerieren. Zum Glück solls endlich auch die Möglichkeit geben, Keybindings charakterweise und nicht mehr nur global speichern zu können.

Gast
2006-01-04, 13:02:50
@DerRob: Ich wüsst gern, was das für eine Schriftart in deinem Chat ist und wo ich sie gegebenenfalls herbekommen kann. =p

Danke schonmal.

Und nein, ich kann nichts sinnvolles zum Thema des Topics beitragen ;)

DerRob
2006-01-05, 01:10:45
@DerRob: Ich wüsst gern, was das für eine Schriftart in deinem Chat ist und wo ich sie gegebenenfalls herbekommen kann. =p
das ist clearfont. sobald cursegaming wieder vernünftig erreichbar ist, findest du das addon dort ;)