Nützliche Scripts
Aus Romwiki
RoM kennt den Befehl /script, und er funktioniert wie in WoW. Es lassen sich Funktionen der API aufrufen, die der von WoW recht ähnlich ist.
Solange noch keine richtige Lua-Integration vorhanden (bzw. dokumentiert) ist, kann man die folgenden Code-Sequenzen einfach als Makros definieren und dann z.B. von den QuickBars aufrufen.
Die folgenden Informationen entstammen alle dem Forum auf der englischen RoM-Site, und zwar dem Thread Technical Section / AddOns & UI / [Guide]Advanced Macroing(by TheGooch).
Achtung: Die spitzen Klammern ( < > ) in den Sequenzen gehören natürlich nicht in den Code, sondern zeigen an, wo ein Wert eingesetzt werden muss.
Contents |
Fenster-Management
Die Fenster-Namen
| Name | Beschreibung | Kommentar |
|---|---|---|
| ChatFrame1 | Das Chat-Fenster | |
| BagFrame | Die Tasche | |
| FramerateText | Das FPS-Fenster | Strg-X |
| CastingBarFrame | Die Cast-Bar | = Fortschrittsanzeige fürs Craften |
| EquipDameFrame | Das Bild mit der beschädigten Rüstung | |
| ScrollBannerFrame | Der Scroll-Text mit den nervigen Nachrichten | |
| BankFrame | Die Bank | Nur gucken! |
| BootyFrame | Das Loot-Fenster | |
| GroupLootFrame1 | Die Würfelfenster bei Gruppendrops | |
| GroupLootFrame2 | ||
| GroupLootFrame3 | ||
| GroupLootFrame4 | ||
| GroupLootFrame5 | ||
| GroupLootFrame6 | ||
| AuctionFrame | Auktionshaus-Fenster | Nur gucken, und damit fast nutzlos. |
| PlayerFrame | Das Spieler-Portrait | |
| TargetFrame | Das Portrait des selektierten Ziels | |
| UnitFrame_party1 | Party-Fenster 1 | |
| UnitFrame_party2 | Party-Fenster 2 | |
| UnitFrame_party3 | Party-Fenster 3 | |
| UnitFrame_party4 | Party-Fenster 4 | |
| UnitFrame_party5 | Party-Fenster 5 | |
| BugMessageFrame | Fehlermeldungs-Fenster |
Die Breite eines Fensters ändern
/script <frame>:SetWidth(<breite>);
Die Skalierung (= Größe) eines Fensters ändern
/script <frame>:SetScale(<Größe relativ zu 1>);
...also: 1 ist die normale Größe, 0.5 die halbe usw.
Ein Fenster verschieben
/script <frame>:ClearAllAnchors(); <frame>:SetAnchor("TOPLEFT", "TOPLEFT", WorldFrame, <x>, <y>); <frame>:Show();
Wenn die Position am unteren Bildschirmrand ausgerichtet sein soll:
... SetAnchor("BOTTOMRIGHT", "BOTTOMRIGHT", WorldFrame, -<x>, -<y>)
Beachte: In diesem Fall müssen x und y negativ angegeben werden!
Ein Fenster verstecken
(z.B. das nervige Scrolltext-Fenster)
/script <frame>:Hide();
... und wieder zum Vorschein bringen:
/script <frame>:Show();
Bank oder Haus-Kiste anzeigen
Die Bank[1]:
/script ShowUIPanel(BankFrame);
1 Vorsicht: Wenn man nicht auf "legalem" Weg in die Bank gekommen ist, ist das Bank-Fenster nur zum Anschauen! Früher gab es beim Versuch, aus der Ferne in die Bank zu greifen einen Disconnect.
Die Kiste:
/script HouseStorageManagerFrame.StorageFrameTable[1]:Show()
Beispiel: Bank, Tasche und Spielerfenster gleichzeitig nebeneinander öffnen
/script ShowUIPanel(BagFrame); ShowUIPanel(BankFrame); ShowUIPanel(CharacterFrame);
Chat-Funktionen
Info-Message nur an sich selbst im Chat-Fenster
Message nur an sich selbst:
/script DEFAULT_CHAT_FRAME:AddMessage("Testing 123");
Bunt und in Farbe:
/script DEFAULT_CHAT_FRAME:AddMessage("Testing 123", 1, 1, 1);
(die 1,1,1 sind Farbmischwerte für jeweils R, G, B. 1,1,1 ergibt weiß.)
Messages an diverse andere Ziele
| GUI- Befehl | Channel-Code | Channel / Erklärung |
|---|---|---|
| /s | SAY | Sprechen, in der näheren Umgebung |
| /z | ZONE | Zone |
| /g | GUILD | Gilde |
| /p | PARTY | Gruppe |
| /ra (?) | RAID | Raid |
| /t | WHISPER | Flüstern, aber s.u.! |
Bis auf eins funktioniert das mit allen Zielen so:
/script SendChatMessage( "<Text>", <Channel-Name> )
Zum Flüstern muss man ein Ziel angeben:
/script SendChatMessage( "<Text>", <Channel-Name>, 0, "<SpielerName>" )
Beim Namen ist Groß-/Kleinschreibung wichtig!
Klassen-Icons über den Köpfen unsichtbar machen
/script GC_SetTitleIconVisible(false);
Mobs und andere Targets
Dem ggw. Target folgen
/script FollowUnit("target");
Informationen über Mobs anzeigen
Nur das nackte Level:
/script DEFAULT_CHAT_FRAME:AddMessage( UnitLevel("target") );
In hübscherer Form mit mehr Informationen:
DEFAULT_CHAT_FRAME:AddMessage( UnitName("target") .. " [Level:" .. UnitLevel("target") .. "] [Health:" .. UnitChangeHealth("target") .. "]" );
Den nächstgelegenen Feind selektieren
/script TargetNearestEnemy();
Das eignet sich natürlich auch für ein Angriffs-Makro:
/script TargetNearestEnemy(); UseAction(1);
Dies setzt voraus, dass "mit Waffe angreifen" immer noch auf Hauptleiste 1 ist. Siehe auch unten, Spells von der Quickbar anwenden
Action
Spells anwenden
/script cast <Spell-name>
Spells von der QuickBar anwenden
| | Li | Re |
| Oben | ||
| Unten | ||
/script UseAction(<Positions-Nr.>);
Hierbei gelten:
Haupt-Bar: 1-20 • Obere Bar: 21-40 • Rechte Bar: 41-60; • Linke Bar: 61-80 .
Warten
(für die kleinen Botter unter uns)
/wait <Sekunden>
Bewegung
| Funktion | Bewegung | |
|---|---|---|
| Jump(); | Springen | |
| MoveForwardStart(); | Vorwärts laufen | start |
| MoveForwardStop(); | stop | |
| MoveBackwardStart(); | Rückwärts laufen | start |
| MoveBackwardStop); | stop | |
| TurnLeftStart(); | Links drehen | start |
| TurnLeftStop(); | stop | |
| TurnRightStart(); | Rechts drehen | start |
| TurnRightStop(); | stop | |
| StrafeLeftStart(); | Seitlich links laufen | start |
| StrafeLeftStop(); | stop | |
| StrafeRighttStart(); | Seitlich rechts laufen | start |
| StrafeRightStop(); | stop | |
| SitOrStand(); | Wechseln zwischen Sitzen und Stehen |
Tests und Bedingungen
Abfrage auf Umschalttasten
if (IsAltKeyDown()) then ... end if (IsCtrlKeyDown()) then ... end if (IsShiftKeyDown()) then ... end
...jeweils für die Alt-, Strg- und die (Groß/Klein-) Umschalttaste.
Lebenspunkte eines Lebewesens
UnitHealth(<ziel>)
Anzahl Gruppenmitglieder
GetNumPartyMembers()
...damit den kränkesten in der Gruppe selektieren:
/script TargetUnit("player"); for a=1,GetNumPartyMembers()-1 do p="party"..a; t="target"; if(UnitHealth(p)>1 and UnitHealth(p)/UnitMaxHealth(p) < UnitHealth(t)/UnitMaxHealth(t)) then TargetUnit(p) end end;
Kamera
Position erfragen
GetCameraPosition();
...und ausgeben:
/script local x,h,y = GetCameraPosition(); DEFAULT_CHAT_FRAME:AddMessage(x.." "..h.." "..y);
Sonstige Funktionen
Bisher größtenteils unerforscht (wenigstens auf dieser Seite):
AcceptDuel BadFriend BirthRevive CancelDuel CheckPasswordState ClickBootyItem CloseBooty CreateCraftItem CreateMacroMaintainFrame CursorHasItem Debug DebugGetNumber DebugGetString DebugMessageFrame DebutGetButton DebutGetFont DeleteCursorItem DropItemOnUnit EditMacro Friend GameTooltip GetBootyItemLink GetCameraMoveTime GetCameraUpVector GetCurrentGameTime GetFramerate GetInventoryItemCount GetInventoryItemDurable GetInventoryItemQuality GetInventorySlotInfo GetLastAccountState GetLocation GetLootMethod GetMacroInfo GetMaxCraftItem GetMinimapPingPosition GetMinimapShowOption GetMouseMoveOffset GetNumMacroIcons GetPing GetPlayerExp GetPlayerMoney GetPlayerPosition GetPlayerWorldMapPos GetPlayTimeQuota GetScreenHeight GetScreenWidth GetSelectedRealmState GetSkillDetail GetTargetHateList GetTime GetTipText GetUIScale GetZoneEnglishName GetZoneID GetZoneLocalName GetZoneMap HasMacro HasSelfRevive HateFriend InitializeMiniMap IsEnterWorld Jump Logout ManualInterface MoveBackwardStart MoveBackwardStop PasswordConfirm PickupMacroItem PingerName PlayerDuelState PlaySoundByPath ResetTutorialTrigger ResetUI RotateCamera SetCameraMoveTo SetCameraUpVector SetHyperinkCursor SetLastAccountState SetLootMethod SetMinimapPingPosition SetMinimapShowOption SetSelectedRealmState SetTargetCamera StartDuelUnit TakeScreenshot TargetNearestEnemy TargetNearestFriend ToggleAutoRun ToggleRun ToggleSheath TurnLeftStart TurnRightStop UnitBuff UnitBuffLeftTime UnitCanAttack UnitClassTargetIsTransmits UnitDistance UnitIsDeadOrGhost UnitManaType UnitMaster UnitSkillType UnitTitle UnitWorld UseSelfRevive UseSkill WorldMap_AddIcon WorldMap_ClearIcon
