Nützliche Scripts

Aus Romwiki

Wechseln zu: Navigation, Suche

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

NameBeschreibungKommentar
ChatFrame1Das Chat-Fenster
BagFrameDie Tasche
FramerateTextDas FPS-FensterStrg-X
CastingBarFrameDie Cast-Bar= Fortschrittsanzeige fürs Craften
EquipDameFrameDas Bild mit der beschädigten Rüstung
ScrollBannerFrameDer Scroll-Text mit den nervigen Nachrichten
BankFrameDie BankNur gucken!
BootyFrameDas Loot-Fenster
GroupLootFrame1Die Würfelfenster bei Gruppendrops
GroupLootFrame2
GroupLootFrame3
GroupLootFrame4
GroupLootFrame5
GroupLootFrame6
AuctionFrameAuktionshaus-FensterNur gucken, und damit fast nutzlos.
PlayerFrameDas Spieler-Portrait
TargetFrameDas Portrait des selektierten Ziels
UnitFrame_party1Party-Fenster 1
UnitFrame_party2Party-Fenster 2
UnitFrame_party3Party-Fenster 3
UnitFrame_party4Party-Fenster 4
UnitFrame_party5Party-Fenster 5
BugMessageFrameFehlermeldungs-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

Zielgruppen-Namen
GUI-
Befehl
Channel-CodeChannel / Erklärung
/s SAYSprechen, in der näheren Umgebung
/z ZONEZone
/g GUILDGilde
/p PARTYGruppe
/ra
(?)
RAIDRaid
/t WHISPERFlü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

Bewegungs-Funktionen
FunktionBewegung
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
Persönliche Werkzeuge