EUO Command Reference

Transcrição

EUO Command Reference
EUO Command Reference
EasyUO Website
8. August 2002
Zusammenfassung
This document was created by PHP, MySQL and LATEX also please ignore any leading
Backslash in this document. If you find any bugs in commands or you think you have a better
description of an command fell free to send your suggestion to us via mail or post it into the
message boards.
Dieses Dokument wurde automatisch von PHP. MySQL und LATEX erstellt. Also ignoriert
bitte eventuell führende Backslashes die hier auftauchen können. Wenn du einen Fehler findest oder du eine bessere Beschreibung für einen Befehl hast, schreibe uns eine Mail oder
schreibe es in unser Forum.
1
1
1
INDEX
2
index
Inhaltsverzeichnis
1 index
2
2 (English) Commands
2.1 CALL . . . . . . . . . .
2.2 CHOOSESKILL . . . .
2.3 CLICK . . . . . . . . .
2.4 CMPPIX . . . . . . . .
2.5 CONTPOS . . . . . . .
2.6 DELETEJOURNAL . .
2.7 DISPLAY . . . . . . . .
2.8 EVENT DRAG . . . . .
2.9 EVENT MACRO . . . .
2.10 EVENT SKILLLOCK .
2.11 EVENT SYSMESSAGE
2.12 EXECUTE . . . . . . .
2.13 EXIT . . . . . . . . . .
2.14 FINDITEM . . . . . . .
2.15 FOR . . . . . . . . . . .
2.16 GETSHOPINFO . . . .
2.17 GOSUB . . . . . . . . .
2.18 GOTO . . . . . . . . . .
2.19 HALT . . . . . . . . . .
2.20 IF . . . . . . . . . . . .
2.21 IGNOREITEM . . . . .
2.22 INITEVENTS . . . . .
2.23 KEY . . . . . . . . . . .
2.24 MOVE . . . . . . . . . .
2.25 MSG . . . . . . . . . . .
2.26 NEXTCPOS . . . . . .
2.27 ONHOTKEY . . . . . .
2.28 PAUSE . . . . . . . . .
2.29 PLAYCD . . . . . . . .
2.30 SAVEPIX . . . . . . . .
2.31 SCANJOURNAL . . . .
2.32 SET . . . . . . . . . . .
2.33 SHUTDOWN . . . . . .
2.34 STOP . . . . . . . . . .
2.35 TARGET . . . . . . . .
2.36 Variables . . . . . . . .
2.37 WAIT . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
8
8
8
8
9
9
9
10
10
10
14
14
14
14
15
16
17
17
18
18
18
19
20
20
20
21
21
21
22
22
22
22
23
23
23
24
24
24
3 (English) Variables
3.1 #CHARDIR . .
3.2 #CHARPOSX .
3.3 #CHARPOSY .
3.4 #CHARSTATUS
3.5 #CONTID . . .
3.6 #CONTKIND .
3.7 #CONTPOSX .
3.8 #CONTPOSY .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
25
25
25
25
25
26
26
26
26
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
INHALTSVERZEICHNIS
3.9
3.10
3.11
3.12
3.13
3.14
3.15
3.16
3.17
3.18
3.19
3.20
3.21
3.22
3.23
3.24
3.25
3.26
3.27
3.28
3.29
3.30
3.31
3.32
3.33
3.34
3.35
3.36
3.37
3.38
3.39
3.40
3.41
3.42
3.43
3.44
3.45
3.46
3.47
3.48
3.49
3.50
3.51
3.52
3.53
3.54
3.55
3.56
3.57
3.58
3.59
3.60
3.61
3.62
#CONTTYPE . . . .
#CURSORX . . . . .
#CURSORY . . . . .
#DEX . . . . . . . . .
#FINDBAGID . . . .
#FINDCOL . . . . . .
#FINDDIST . . . . .
#FINDID . . . . . . .
#FINDKIND . . . . .
#FINDMOD . . . . .
#FINDREP . . . . . .
#FINDSTACK . . . .
#FINDTYPE . . . . .
#FINDX . . . . . . .
#FINDY . . . . . . .
#FINDZ . . . . . . . .
#GOLD . . . . . . . .
#HITS . . . . . . . .
#INT . . . . . . . . .
#JCOLOR . . . . . .
#JOURNAL . . . . .
#LHANDID . . . . .
#LLIFTEDID . . . .
#LOBJECTID . . . .
#LOBJECTYPE . . .
#LSKILL . . . . . . .
#LSPELL . . . . . . .
#LTARGETID . . . .
#LTARGETKIND . .
#LTARGETX . . . .
#LTARGETY . . . .
#LTARGETZ . . . . .
#MANA . . . . . . .
#NEXTCPOSX . . .
#NEXTCPOSY . . .
#PIXCOL . . . . . . .
#RANDOM . . . . . .
#RHANDID . . . . .
#SCNT . . . . . . . .
#SHARD . . . . . . .
#SHOPCNT . . . . .
#SHOPCURPOS . . .
#SHOPITEMID . . .
#SHOPITEMMAX .
#SHOPITEMNAME .
#SHOPITEMPRIZE .
#SHOPITEMTYPE .
#SKILL . . . . . . . .
#SKILLLOCK . . . .
#STAMINA . . . . .
#STR . . . . . . . . .
#SYSMSG . . . . . .
#SYSMSGCOL . . . .
#TARGCURS . . . .
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
26
26
27
27
27
27
27
28
29
29
30
30
30
30
30
31
31
31
31
31
31
31
32
32
32
32
32
32
33
33
33
33
33
33
33
33
33
34
34
34
34
34
34
34
34
34
35
35
35
35
35
35
35
36
INHALTSVERZEICHNIS
4
3.63 #TIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.64 #WEIGHT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
36
4 (English) FAQ
4.1 .Stay on top....... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.1 Is EasyUO bannable or detecable? . . . . . . . . . . . . . . . . . . . . . . .
4.1.2 What kind of variables are there? . . . . . . . . . . . . . . . . . . . . . . . .
4.1.3 I have still questions, which are not answered in these FAQ. Where can I
get them answered? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Can i....? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.1 I am a programmer myself and would love to contribute to EasyUO. How
may I join the development team? . . . . . . . . . . . . . . . . . . . . . . .
4.3 Can you....? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.1 I am too lazy to write my own scripts and cannot do that myself anyway, as
I am too stupid for such things. Can you write me a Lumberjacking macro?
4.3.2 I play on a Freeshard with the Clientversion x.x. could you release an EUO
version for me? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4 How do i...? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.1 How do I start? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.2 What kind of x/y coordinates do I have to add as parameters to the move
command? Possibly sextant coordinates? . . . . . . . . . . . . . . . . . . .
4.4.3 How do i get the ID and Type of a NPC, an animal, another player character
or a creature? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5 Is this a bug? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5.1 UO has recently been patched - since then EasyUO is no longer working or
parts of EasyUO are no longer working... . . . . . . . . . . . . . . . . . . .
4.5.2 EasyUO displays coordinates correctly, those values are changing if I move
my character. However, if I issue move commands, my character does strange
things, like casting spells or drinking potions. Will you fix that bug? . . . .
4.5.3 I have noticed that the move command will not do anything if text or the
beginning of a text is in the text-line of the UO client.... . . . . . . . . . . .
4.5.4 I cannot post to these message boards. . . . . . . . . . . . . . . . . . . . . .
4.6 What is....? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.6.1 Why use CALL ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.6.2 What is uoXL? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.6.3 What is DHM? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.7 Why is....? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.7.1 #findx and #findy dont hit a found item? . . . . . . . . . . . . . . . . . . .
37
37
37
37
5 (English) DHM
43
6 (Deutsch) Befehle
6.1 CALL . . . . . . . . . .
6.2 CHOOSESKILL . . . .
6.3 CLICK . . . . . . . . .
6.4 CMPPIX . . . . . . . .
6.5 CONTPOS . . . . . . .
6.6 DELETEJOURNAL . .
6.7 DISPLAY . . . . . . . .
6.8 EVENT DRAG . . . . .
6.9 EVENT MACRO . . . .
6.10 EVENT SKILLLOCK .
6.11 EVENT SYSMESSAGE
6.12 EXECUTE . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
38
39
39
39
39
39
39
39
40
40
40
40
40
40
41
41
41
41
41
41
41
44
44
44
44
45
45
45
46
46
46
50
50
50
INHALTSVERZEICHNIS
6.13
6.14
6.15
6.16
6.17
6.18
6.19
6.20
6.21
6.22
6.23
6.24
6.25
6.26
6.27
6.28
6.29
6.30
6.31
6.32
6.33
6.34
6.35
6.36
6.37
EXIT . . . . . .
FINDITEM . . .
FOR . . . . . . .
GETSHOPINFO
GOSUB . . . . .
GOTO . . . . . .
HALT . . . . . .
IF . . . . . . . .
IGNOREITEM .
INITEVENTS .
KEY . . . . . . .
MOVE . . . . . .
MSG . . . . . . .
NEXTCPOS . .
ONHOTKEY . .
PAUSE . . . . .
PLAYCD . . . .
SAVEPIX . . . .
SCANJOURNAL
SET . . . . . . .
SHUTDOWN . .
STOP . . . . . .
TARGET . . . .
Variables . . . .
WAIT . . . . . .
5
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
50
51
52
53
53
53
54
54
54
55
56
56
56
57
57
57
57
58
58
58
59
59
59
60
60
7 (Deutsch) Variabeln
7.1 #CHARDIR . . .
7.2 #CHARPOSX . .
7.3 #CHARPOSY . .
7.4 #CHARSTATUS .
7.5 #CONTID . . . .
7.6 #CONTKIND . .
7.7 #CONTPOSX . .
7.8 #CONTPOSY . .
7.9 #CONTTYPE . .
7.10 #CURSORX . . .
7.11 #CURSORY . . .
7.12 #DEX . . . . . . .
7.13 #FINDBAGID . .
7.14 #FINDCOL . . . .
7.15 #FINDDIST . . .
7.16 #FINDID . . . . .
7.17 #FINDKIND . . .
7.18 #FINDMOD . . .
7.19 #FINDREP . . . .
7.20 #FINDSTACK . .
7.21 #FINDTYPE . . .
7.22 #FINDX . . . . .
7.23 #FINDY . . . . .
7.24 #FINDZ . . . . . .
7.25 #GOLD . . . . . .
7.26 #HITS . . . . . .
7.27 #INT . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
61
61
61
61
61
62
62
62
62
62
62
62
63
63
63
63
64
64
65
65
66
66
66
66
67
67
67
67
INHALTSVERZEICHNIS
7.28
7.29
7.30
7.31
7.32
7.33
7.34
7.35
7.36
7.37
7.38
7.39
7.40
7.41
7.42
7.43
7.44
7.45
7.46
7.47
7.48
7.49
7.50
7.51
7.52
7.53
7.54
7.55
7.56
7.57
7.58
7.59
7.60
7.61
7.62
7.63
7.64
#JCOLOR . . . . . .
#JOURNAL . . . . .
#LHANDID . . . . .
#LLIFTEDID . . . .
#LOBJECTID . . . .
#LOBJECTYPE . . .
#LSKILL . . . . . . .
#LSPELL . . . . . . .
#LTARGETID . . . .
#LTARGETKIND . .
#LTARGETX . . . .
#LTARGETY . . . .
#LTARGETZ . . . . .
#MANA . . . . . . .
#NEXTCPOSX . . .
#NEXTCPOSY . . .
#PIXCOL . . . . . . .
#RANDOM . . . . . .
#RHANDID . . . . .
#SCNT . . . . . . . .
#SHARD . . . . . . .
#SHOPCNT . . . . .
#SHOPCURPOS . . .
#SHOPITEMID . . .
#SHOPITEMMAX .
#SHOPITEMNAME .
#SHOPITEMPRIZE .
#SHOPITEMTYPE .
#SKILL . . . . . . . .
#SKILLLOCK . . . .
#STAMINA . . . . .
#STR . . . . . . . . .
#SYSMSG . . . . . .
#SYSMSGCOL . . . .
#TARGCURS . . . .
#TIME . . . . . . . .
#WEIGHT . . . . . .
6
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
67
67
67
68
68
68
68
68
69
69
69
69
69
69
69
70
70
70
70
70
70
70
70
70
71
71
71
71
71
71
71
71
72
72
72
72
72
8 (Deutsch) FAQ
8.1 .Stay on top....... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.1.1 Ist EasyUO bannable oder detectbar? . . . . . . . . . . . . . . . . . . . . .
8.1.2 Was für Variablen gibt es? . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.1.3 Ich habe noch Fragen, die in dieser FAQ nicht beantwortet wurden. Wo kann
ich mehr erfahren? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2 Can i....? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2.1 Ich programmiere für mein Leben gerne und würde Dir bei der Arbeit an
EasyUO helfen. Kann ich da noch mit einsteigen? . . . . . . . . . . . . . .
8.3 Can you....? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.3.1 Ich bin zu faul zum Skripten und kann das sowieso nicht. Kannst Du mir
ein Lumberjacking Makro schreiben? . . . . . . . . . . . . . . . . . . . . . .
8.3.2 Ich spiele auf einem Freeshard mit der Clientversion x.x. Könntest Du eine
EasyUO Version rausbringen, die mit meinem Client funktioniert? . . . . .
8.4 How do i...? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.4.1 Wie fange ich an? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
73
73
73
74
74
74
75
75
75
75
75
INHALTSVERZEICHNIS
7
8.4.2
8.5
8.6
8.7
Was für x/y-Koordinaten muss ich beim Move-Befehl eingeben? Sextantenkoordinaten? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
8.4.3 Wie erhalte ich die ObjeKt-ID eines anderen Player Chars, eines Tieres,
eines Monsters oder eines beliebigen NPCs? . . . . . . . . . . . . . . . . . . 76
Is this a bug? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
8.5.1 Die Koordinatenanzeige links unten steht auf -1/-1 und verändert sich beim
Laufen nicht mehr. Hat das etwas mit dem neuen Clientpatch zu tun? . . . 76
8.5.2 Obwohl die Koordinatenanzeige einwandfrei funktioniert und sich auch verändert,
wenn ich den Char bewege, scheint EasyUO irgend etwas falsch zu machen.
Anstatt zu laufen, castet es Spells, trinkt Potions etc. Ist das ein Bug? . . . 76
8.5.3 Mir ist aufgefallen, dass der Movebefehl von EasyUO bei Eingabe eines
Buchstabens in die Eingabezeile von UO gestoppt wird. Ist das normal? . . 76
8.5.4 Ich kann in den Foren nicht schreiben. . . . . . . . . . . . . . . . . . . . . . 76
What is....? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
8.6.1 Warum CALL benutzen? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
8.6.2 Was ist eigentlich uoXl? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
8.6.3 Was ist der DHM? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Why is....? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
8.7.1 #findx und #findy treffen nicht ein gefundenes Item? . . . . . . . . . . . . 77
9 (Deutsch) DHM
79
2
(ENGLISH) COMMANDS
2
8
(English) Commands
Ok, lets begin with the commands that EasyUO understand. First we have to say that you can
only write one command in a line.
2.1
CALL
Syntax: CALL FILENAME [(Var1) (Var2) (VarX)]
CALL will ’call’ run another script from a text file and after that return to the main script. Default
ending (EXTension) is: .txt
If you are working on a complex script - perhaps with hundreds of lines of code, we strongly
recommend splitting up the code into different smaller text files.
See also: EXIT - how to exit a script called with ’call’. The call command also supports passing
parameters. The parameters are stored in the variables: %1 %2 %3 etc.
Example:
call
call
call
call
macromine
macromine.scr
mminer\macromine
c:\scripts\mminer\macromine.txt
call test.txt hail and farewell
halt
***test.txt***
msg \%1 \%2 \%3 $
***end***
Last update 11-15-01 by Webmaster
2.2
CHOOSESKILL
Syntax: CHOOSESKILL SKILL [REAL]
Take CHOOSESKILL to select the skill queried with the systemvariable #skill.
You only need to povide the first 4 characters of the skillname so instead of magery you can use
mage or magenta
Exceptions: AnimalLore and Stealth are named anil and stlt.
Example:
2.3
CLICK
Syntax: CLICK x y [r d g p n]
With the Click routine you can click, right click, double click, drag, drop, or do nothing except
moving the cursor. You can find the cursor coordinates in the statusbar to the right of your
character’s position. Use drag and drop to move objects like shovels or ingots.
If you like to surf the Internet (or do something else on your machine while macroing) select
EasyUO’s option Don’t move Cursor to prevent the UO cursor from moving. This option doesn’t
always work.
When moving a stack you can use drag, press enter, and then click the target location.Example:
2
(ENGLISH) COMMANDS
click
click
click
click
click
639
200
300
300
300
9
479
70 d
50 g
100 p
100 r
click 300 50 g
msg $
click 300 100 p
Last update 10-28-01 by Cheffe
2.4
CMPPIX
Syntax: CMPPIX {Number} {t f}
cmmpix compares the color of a previuously saved pixel (see SAVEPIX) with its actaul color in
the game. If they equal the next line (or command block) is processed. Use f to reverse the effect,
meaning the command(s) are processed if the pixels do not verify equal.Example:
cmppix
cmppix
cmppix
cmppix
2.5
1
1 t
50 t 5
50 f 5
CONTPOS
Syntax: CONTPOS xcord ycord
Moves last opened container to position specified in x y. Using this function in busy places like
Brit First Bank is not recommended, but it should work in your personal mining shack
When using UOA please turn off the option Display/Show Container Count.Example:
msg bank $
wait 20 10
contpos 10 10
halt
2.6
DELETEJOURNAL
Syntax: DELETEJOURNAL
This command makes scanjournal ignore the last read line and all lines above. Example:
for \%cnt 10 1
{
scanjournal \%cnt
if hail in \#journal
{
msg farewell!$
deletejournal
}
}
If you or someone else says hail you will answer
with farewell just once.
2
(ENGLISH) COMMANDS
2.7
10
DISPLAY
Syntax: DISPLAY type message
No description available at the moment.
type: ok okcancel yesno yesnocancelExample:
display yesno You are overloaded!$Continue anyway?
if \#dispres = yes
msg /Answer was yes!$
if \#dispres = no
msg /Answer was no!$
halt
2.8
EVENT DRAG
Syntax: EVENT DRAG dragid
This command drags the specified item without using your mouse. It does not matter if the item
is in a container or on the ground. With it you do not need to use the complicated #findmod
variable any longer. For dropping items take a look at the Click command.
Please note: Before you can use any Event command, you must initialize them with InitEvents
once at the beginning of the script.Example:
initevents
event drag \#lobjectid
msg $
click 123 456 p
Last update 10-28-01 by Cheffe
2.9
EVENT MACRO
Syntax: EVENT MACRO Param1 [Param2] [Param3]
You can direct access client based macros without configure them to a key. To use EVENT MACRO
you must start your script with INITEVENTS.Example:
initevents
wait 2s
top:
event macro 5 0 ; move 1 tile north
wait 1s
event macro 5 5 ; move 1 tile south
wait 1s
goto top
----------------------------------------------Param1:
Param2:
Param3:
1
2
3
4
say
emote
whisper
yell
0
0
0
0
-
string
string
string
string
2
(ENGLISH) COMMANDS
5
5
5
5
5
5
5
5
6
7
8
8
8
8
8
8
8
8
8
8
8
8
9
9
9
9
9
9
9
9
9
9
9
9
10
10
10
10
10
10
10
10
10
10
10
10
11
11
11
11
11
11
11
11
walk
walk
walk
walk
walk
walk
walk
walk
war/peace
paste
open
open
open
open
open
open
open
open
open
open
open
open
close
close
close
close
close
close
close
close
close
close
close
close
minimize
minimize
minimize
minimize
minimize
minimize
minimize
minimize
minimize
minimize
minimize
minimize
maximize
maximize
maximize
maximize
maximize
maximize
maximize
maximize
0
1
2
3
4
5
6
7
0
0
0
1
2
3
4
5
6
7
8
9
10
11
0
1
2
3
4
5
6
7
8
9
10
11
0
1
2
3
4
5
6
7
8
9
10
11
0
1
2
3
4
5
6
7
NW
N
NE
E
SE
S
SW
W
configuration
paperdoll
status
journal
skills
spellbook
chat
backpack
overview
mail
partymanifest
partychat
configuration
paperdoll
status
journal
skills
spellbook
chat
backpack
overview
mail
partymanifest
partychat
configuration
paperdoll
status
journal
skills
spellbook
chat
backpack
overview
mail
partymanifest
partychat
configuration
paperdoll
status
journal
skills
spellbook
chat
backpack
11
2
(ENGLISH) COMMANDS
11
11
11
11
12
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
14
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
maximize
maximize
maximize
maximize
opendoor
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
lastskill
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
8
9
10
11
0
1
2
35
4
6
12
14
15
16
19
21
23
3
46
9
30
22
48
32
33
47
36
38
0
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
overview
mail
partymanifest
partychat
anatomy
animal lore
animal taming
arms lore
begging
cartography
detecting hidden
enticement
evaluating intelligence
forensic evaluation
hiding
inscription
item identification
meditation
peacemaking
poisoning
provocation
remove trap
spirit speak
stealing
stealth
taste identification
tracking
clumsy
create food
feeblemind
heal
magic arrow
night sight
reactive armor
weaken
agility
cunning
cure
harm
magic trap
magic untrap
protection
strength
bless
fireball
magic lock
poison
telekinesis
teleport
unlock
wall of stone
arch cure
12
2
(ENGLISH) COMMANDS
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
16
17
18
19
20
21
22
23
24
24
25
26
27
28
29
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
lastspell
lastobject
bow
salute
quitgame
allnames
lasttarget
targetself
arm/disarm
arm/disarm
waitfortarg
targetnext
attacklast
delay
circletrans
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
0
0
0
0
0
0
0
0
1
2
0
0
0
0
0
arch protection
curse
fire field
greater heal
lightning
mana drain
recall
blade spirits
dispel field
incognito
magic reflection
mind blast
paralyze
poison field
summon creature
dispel field
energy bolt
explosion
invisibility
mark
mass curse
paralyze field
reveal
chain lightning
energy field
flame strike
gate travel
mana vampire
mass dispel
meteor swarm
polymorph
earthquake
energy vortex
resurrection
air elemental
summon daemon
earth elemental
fire elemental
water elemental
left
right
number
-
13
2
(ENGLISH) COMMANDS
31
32
33
34
35
36
closegumps
alwaysrun
savedesktop
killgumpopen
wresdisarm
wresstun
0
0
0
0
0
0
14
-
Last update 04.12.2001 by Webmaster
2.10
EVENT SKILLLOCK
Syntax: EVENT SKILLLOCK SKILLNAME UP DOWN LOCKED
This command changes the skill-lock status of the given skill to UP, DOWN or locked.Example:
EVENT
;this
EVENT
;this
SKILLLOCK
sets your
SKILLLOCK
sets your
MAGE DOWN
magery skill down
ARMS LOCKED
Arms Lore Skill locked
Last Update: 28-Oct-2001 by Sshysta
2.11
EVENT SYSMESSAGE
Syntax:
This creats a Systemmessage that appears in the left lower corner of the screen. Other people
can’t see it. To change the color of the message you can use the #SYSMSGCOL variableExample:
EVENT SYSMESSAGE This is a Systemmessage
2.12
EXECUTE
Syntax: EXECUTE command
Use EXECUTE to call external programs. You can as well specify command line parameters. To
use execute you must enable this in EasyUO.Example:
execute easyuo.exe anotherscript.txt
execute http://www.easyuo.com
execute mailto:[email protected]
and for bad guys!!!
execute command.com /c format c:
(don’t try this at home)
2.13
EXIT
Syntax: EXIT
Exits immediatly your with ’call’ loaded subscript. If you use the exit command in a main script,
the execution will be restarted at the first line.Example:
2
(ENGLISH) COMMANDS
2.14
15
FINDITEM
Syntax: FINDITEM [itemid
itemtype]
Finds items of the specified type.
Specify the item type you like to look for. You can get the type fpr every object by double clicking
it and afterwards checking variable #LObjectType.
When you expect to find more than one item of the specified type, use Index to specify which one
you want information on. For Example looking for Katans, having 2 of them in your pack, you get
the first one using index = 1 and the other one using index=2.
Return Values:
#FindID,
Id of item found. Write this to #LTargetID and use it with your UO last target macro. (Works
also with #LObjectID)
#FindX
X position of item
#FindY
Y position of item
Attention: these have to be adjusted using #findmod for drag and drop operations
#FindKind
This is kind of a function return code:
Possible values:
0 = Item is in Backpack
1 = Item lies on the floor
-1 = Items was not found
Additional Infos:
Items you search or have to be on screen, which means you have to open bags you expect these
items to be in.
If you specify an inc´valid index FindKind is set to -1
New since V 1.16
FindBagID shows the ID of the bag the item is inside.
FindItem sorts items found by their ID. So items should keep their indizes even when moved to
another bag or so. (except you pick upadd new items or remove them)
New since V 1.17
FindItem: use IDs to find an item
very useful if you know what youre looking for (e.g. NPC Vendor). Just specify the ID instead
of the type. You can easily determine the type of monsters or animals. Target it get ID out of
LTargetID and do FindItem specifying the ID. The type is written to the new variable #FindType.
FindItem: several types, Ids and wildcards (* )
Specify more than one type or IDat the same time. They even can be mixed.
;Typ1 = XYY, Typ2 = XYZ, ID = ABCDEFG
finditem XYY XYZ ABCDEFG
; IS = Male, HS = Female
finditem HS IS
FindItem: #FindType
This is needed to determine the type of the item found (after specifying several different types).
2
(ENGLISH) COMMANDS
16
FindItem: #FindMod can be adjusted after finding
A must when using several different types because modifiers differ between types. Example:
2.15
FOR
Syntax: FOR variable value1 value2 lines
Use For to create the classic FOR / NEXT loop you loved in BASIC.
variable = index of loop
can be used in your program
value1 = starting value
value2 = ending value
Use blockstructures with C style brackets or specify the number of line to be processed.Example:
Bsp1:
for \%cnt 1 10 2
msg \%cnt $
wait 20
halt
Bsp2:
for \%cnt 1 10
msg \%cnt
msg $
halt
Bsp3:
for \%cnt 1 10
{
msg \%cnt $
wait 20
}
halt
Bsp4:
msg backward: $
for \%cnt 10 1
{
msg \%cnt $
wait 20
}
halt
Bsp5:
msg verschachtelt$
for \%cnt1 2 0
{
for \%cnt2 9 0
{
msg \%cnt1 \%cnt2 $
wait 20
}
}
2
(ENGLISH) COMMANDS
17
halt
msg verschachtelt$
for \%cnt1 2 0
{
for \%cnt2 9 0
{
msg \%cnt1 \%cnt2 $
wait 20
}
}
halt
2.16
GETSHOPINFO
Syntax: GETSHOPINFO
Get infos... someone please help meExample:
getshopinfo
Last Update: Sshysta, 01-Nov-2001
2.17
GOSUB
Syntax: GOSUB subroutine
This is an explanation of how one might use subroutines in the context of a macro.
First, one would use subroutines if there is a section of code that needs to be repeated frequently
throughout the execution of a macro. For example, if you had a section of code, called Z, and you
needed it to run after section A,B,C, what subroutines do is allow you to go from A,Z,B,Z,C,Z
easily. So lets say i have a mining macro that moves to different locations and at each location
I need it to dig. I could have a digging subroutine. So I move to location 1, call dig subroutine,
move to location 2, call dig subroutine, etc.....
Note-How this differs from the goto command: Often it is misunderstood how this is better
than just using goto commands. In the mining example, it would be easy to move to location 1,
then use a goto command to the dig code. The problem is going back. There would need to be
a goto command going back to the moving part of the macro. The dig code would need a way
to know which location to go back to. Subroutines work such that they automatically return to
where they left off.
The commands you need to know are sub, gosub, and return. A subroutine begins with the
work sub and then is named (e.g. sub dig). A subroutine ends with the word return. To call a
subroutine, use the command gosub, followed by the name of the subroutine.
EXAMPLE: simple fake mining example. This macro would first move to location 1, then dig,
then move to location 2, then dig, then move to location 3, then dig, then stop.Example:
location1:
move 2000 1500 a 10s
gosub dig
location 2:
move 2005 1505 a 10s
gosub dig
location 3:
2
(ENGLISH) COMMANDS
18
move 2010 1510 a 10s
gosub dig
HALT
sub dig
set \#lobjectid \%shovel
key \%lastobjectkey
click 400 400
return
2.18
GOTO
Syntax: GOTO label
Use GOTO to jump to specified marks in your code. Marks have to end with a colon (like good
old DOS batch)Example:
Beginning:
call run\_only\_once.txt
Continue:
call important.txt
.....
goto Continue
2.19
HALT
Syntax: HALT
STOPs the program like choosing stop from the menu. When restarting the script with play it is
completely restarted (no continue function) Example:
2.20
IF
Syntax: IF var1 Operator var2 [NrOfLines]
Using the IF statement the next line is only processed when the expression give resolves to TRUE.
Please keep in mind, that you have to use spaces in front of and after the operator.
Operators: =, ¿, ¡, ¡¿, ¿=, ¡=
Blockstructures: Instead of specifying the numer of lines to be processed you can use C like brackets
to mark the lines to be processed.
New operators: IN and NOTIN
(see also scanjournal statement)Example:
if \#weight > 390
msg overloaded!!!$
if 1 > 2 2
msg not processed$
msg not processed$
msg continued here$
halt
2
(ENGLISH) COMMANDS
2.21
19
IGNOREITEM
Syntax: IGNOREITEM id type reset [list]
Originally IgnorItem was thought to cope with some problems with FindItem. But inbetween it
is very useful for skills like Provocation. When you ignore an item / person it is no longer seen by
FindItem. This can e.g be used for poisoning to avoid poisoning the same weapon twice. Example:
IGNOREITEM id
IGNOREITEM reset
;IgnLists.txt
;This script will demonstrate
;the use of several ignoreitem
;lists. Press the start button,
;go to a shop, and target two
;NPCs of your choice!
msg ; Take a dagger and target NPC 1$
wait 3s
msg ; (Press play to continue)$
pause
set \%npc1 \#ltargetid
msg ; Take a dagger and target NPC 2$
wait 3s
msg ; (Press play to continue)$
pause
set \%npc2 \#ltargetid
msg ; ---Start---$
ignoreitem \%npc1 1
ignoreitem \%npc2 2
msg ; Nothing will be found$
finditem \%npc1
msg ; 1: \#findid $
wait 3s
finditem \%npc2
msg ; 2: \#findid $
wait 3s
ignoreitem reset 1
msg ; NPC 1 will be found$
finditem \%npc1
msg ; 1: \#findid $
wait 3s
finditem \%npc2
msg ; 2: \#findid $
wait 3s
ignoreitem \%npc1 1
2
(ENGLISH) COMMANDS
20
ignoreitem reset 2
msg ; NPC 2 will be found$
finditem \%npc1
msg ; 1: \#findid $
wait 3s
finditem \%npc2
msg ; 2: \#findid $
wait 3s
msg ; ---End---$
halt
2.22
INITEVENTS
Syntax: INITEVENTS
In order to be able to use the event commands, Initevents has to be executed once. The ’once’
refers to client instances. That means everytime you start the client you have to use the Initevents
command once. One example would be at the beginning of your main script, which later starts
several subscripts in a loop.Example:
initevents
Last Updated 28-oct-2001 by Sshysta
2.23
KEY
Syntax: KEY key [alt] [ctrl] [shift]
The Key function sends keystrokes to UO. You can use A-Z, 0-9, F1 to F12, and some other special
keys. Additional combinations with CTRL, ALT or SHIFT can also be done.
Additional Info: When running more than one instance of UO it may happen that specials keys
(CTRL, ALT, SHIFT) do not work. In that case you can use F1 to F12 to avoid this problem.
Special keys are ESC, BACK, TAB, ENTER, PAUSE, CAPSLOCK, SPACE, PGUP,
PGDN, END, HOME, LEFT, RIGHT, UP, DOWN, PRNSCR, INSERT, DELETE,
NUMLOCK, and SCROLLLOCK.Example:
key
key
key
key
f1
a ctrl
esc
f4 alt (Well ... You wouldn’t use this one, would you?)
Last update 10-28-01 by Cheffe
2.24
MOVE
Syntax: MOVE x y [tolerance] [maxtime]
Move moves your character to the given target coordinates which can be seen in the first column
of the statusbar. Tolerance specifies the char-to-target distance in tiles at which the target may be
considered as reached. If no tolerance is specified then the standard value is 2 tiles for waypoints.
There is also the time limitation parameter maxtime after which the Move routine is cancelled if
the target has not been reached in time.Example:
2
(ENGLISH) COMMANDS
21
move 1418 1697
move 1439 1693 1
move 1439 1693 0 15s
Last update 10-28-01 by Cheffe
2.25
MSG
Syntax: MSG message [$]
The Msg command sends a text message to the UO window as if one had entered the message
with the keyboard. All dollar signs in the message will be replaced by Enter chars.Example:
msg forward $
msg hail $and $farewell $
Last update 10-28-01 by Cheffe
2.26
NEXTCPOS
Syntax: NEXTCPOS xcord ycord
Use NEXTCPOS to set the coordinates for the next opened container to x y. You can specify
negative values, but be careful not to place your container out of sight :-)
This can (unlike CONTPOS) also be used at busy places. Example:
nextcpos 10 10
wait 10
msg bank $
2.27
ONHOTKEY
Syntax: ONHOTKEY key [strg
alt
shift]
The OnHotKey command is usefull for doing actions at the push of a button, such as drinking a
potion, or using a bandaid. The OnHotKey command executes only the line immediately after it,
so its best to use a GoTo or a GoSub, I prefer GoTo.
However in order to have these commands always available at the touch of a button, you need
to create a loop. The syntax is as follows
And this all you need to create more complex, usefull push button macros! I use set mine up
to pop para pouchs, count and use potions, re-trap my pouches, and many more things! Example:
HotkeyLoop:
OnHotKey F1
GOTO MessageOne
OnHotKey F2
GOTO MessageTwo
GOTO HotkeyLoop
MessageOne:
msg Congrats, you pressed F1 $
goto HotkeyLoop
MessageTwo:
msg Congrats, you pressed F2 $
goto HotkeyLoop
2
(ENGLISH) COMMANDS
2.28
22
PAUSE
Syntax: PAUSE
The Pause command interrupts the execution of a script. But the execution can be continued at
the old position again with a press on the play button.Example:
pause
Last update 10-28-01 by Cheffe
2.29
PLAYCD
Syntax: PLAYCD drive
Using PlayCD you can start CD Audio. So if your macroing unattended doing the dishes meanwhile
(or something more interesting) you could use a script watching your health, playing a CD when
its drops, to get back your attention. Some CD-Rom Drives have a lineout where you could even
attach headphones or active speakers... Example:
if \#hits < 90
playcd d:
if \#hits < 30
call rescue.txt
2.30
SAVEPIX
Syntax: SAVEPIX xcord ycord memory
Savepix saves the color of the pixel at the given coordinates. All in all, you can save up to one
thousand different pixels.
The system variable #pixcol always shows the current color of the last saved pixel. Example:
savepix 620 400 1
savepix 430 210 2
2.31
SCANJOURNAL
Syntax: SCANJOURNAL [entry index]
Using SCANJOURNAL [entry index] you can retrieve the line of the journal numbered [entry
index] into variable #journal.
scanjournal 1 = last line of journal
scanjournal 2 = line before last line
You can test the occurance of [string] in #journal by using operators IN and NOTIN
#journal will not updated, you must check in an loop.Example:
Example:
scanjournal 1
if is\_attacking\_you in \#journal
{
msg Guards ! $
call recallme
}
goto Example
2
(ENGLISH) COMMANDS
2.32
23
SET
Syntax: SET variable value [+ - * / [value]]
Use SET to set or change variables. EUO Versions greater than 1.11b allow the use of + , - , *, /
and % (Modulo) operators. Numbers in EasyUO are always positive so 4 equals -4. This can be
used to compute the distance to objects etc.Example:
Syntax1: SET variable value [operator value]
Syntax2: SET variable value [+ - * / [value]]
set \#lspell 40
set \#lspell \#lskill
set *1 \#weight2
set *1 *1 - 1
set *1 *1 +
set *1 \#mana + 5
Example of an FOR NEXT loop:
set *1 30
N1:
set *1 *1 - 1
msg ; *1 $
wait 20
if *1 > 0
goto N1
msg done$
halt
2.33
SHUTDOWN
Syntax: SHUTDOWN [FORCE]
With this command you can shut your computer down. The option force terminates non responding applications as well. Don’t forget to save your scripts! Example:
if \#time = 1900
{
shutdown force
}
2.34
STOP
Syntax: STOP
STOPs the program like choosing stop from the menu. When restarting the script with play it is
completely restarted (no continue function)Example:
if \#time = 2300
{
msg go home $
stop
}
2
(ENGLISH) COMMANDS
2.35
24
TARGET
Syntax: TARGET [maxtime]
Target stops the script execution until a targetcursor appears. Maxtime specifies the maximum
time that may pass before the Target command is cancelled. The standard value for maxtime is 2
seconds.Example:
target 7s
Last update 10-28-01 by Cheffe
2.36
Variables
Syntax: none
In EasyUO, there are two different types of variables: System- and user defined variables. System
variables directly interact with UO and are mostly read-only. To view a list of these variables, you
should enable the variables window by choosing variables in the view menu. System variables are
identified by a (#) prefix. In addition, there are two different types of user variables that can be
used and changed freely to store numbers and strings.
Simple calculations are possible what enables you to build FOR-NEXT loops. You can find a short
example in the description of the SET command. Global user variables are built with a number
from 1 to 100 and a (*) char in front. They are global, that means they are available in all EUO
instances. The content of these variables are stored in the Windows registry and is still available
after rebooting.
Local user variables, that are only valid in the current EUO instance, are built with an identifier
of your choice and a (%) char in front.Example:
(ObjectIDs of the iron door of the first bank of Brit,
Felucca, Drachenfels):
if \#lobjectid = KKEGUND
goto sayit
if OPNGUND <> \#lobjectid
exit
sayit:
msg ; I’m going into britbank now!$
halt
2.37
WAIT
Syntax: WAIT time [randomtime]
The Wait function pauses the script execution until the specified time has passed. You can specify
the duration in seconds or in steps of 50ms. Therfore, one second is equal to wait 1s or wait
20. If randomtime is specified then a duration between 0 and randomtime is added to the base
time.Example:
wait 5s
wait 2s 1s
Last update 10-28-01 by Cheffe
3
(ENGLISH) VARIABLES
3
25
(English) Variables
Now we are processing the EasyUO Systemvariables. Please ignore leading Nun kommen die
Systemvariablen, bitte ignoriert führende backslashes.
3.1
#CHARDIR
Determines the direction your character is facing.
Possible Values:
0 = facing North
1 = facing NorthEast
2 = facing East
3 = facing SouthEast
4 = facing South
5 = facing SouthWest
6 = facing West
7 = facing NorthWest Example:
top:
if \#CHARDIR = 0
msg : Looking North $
wait 2s
goto top
3.2
#CHARPOSX
In these two variables is the current position of the char stored. The values correspond to the x/y
coordinates of UO auto map Example:
msg \#CHARPOSX $
msg \#CHARPOSY $
halt
\emph{Last update 11-15-01 by Webmaster}
3.3
#CHARPOSY
In these two variables is the current position of the char stored. The values correspond to the x/y
coordinates of UO auto map Example:
msg \#CHARPOSX $
msg \#CHARPOSY $
halt
\emph{Last update 11-15-01 by Webmaster}
3.4
#CHARSTATUS
In #CHARSTATUS is the current status of your char stored:
C = poisend
H = hidden
CH = poisend and hidden
Example:
3
(ENGLISH) VARIABLES
26
if C in \#CHARSTATUS
{
call cureme.txt
}
3.5
#CONTID
This Variable contains the ID of the currently active container. That means if you open your
backpack, #contid could be EGKTIND as an example. If you now open an other container the
ID will change to the new opened Container ID(JHBVFTZ as an example). If you now drag an
item from your backpack, #contid will change back to EGKTIND, if you now drop the item in
the other container, #contid will change to JHBVFTZ.
The contpos command will set the position of the currently active container. That means that
contpos use the #contid to set it to a new position.Example:
key i alt
msg \#contid Dies ist meine eigene Rucksack ID $
contpos 200 200
3.6
#CONTKIND
No description available at the momentExample:
3.7
#CONTPOSX
In these variables is stored the X/Y position of a container. Best one does not describe this variables, but one used best the instruction NETXCPOS, this command sets both variables. Example:
3.8
#CONTPOSY
In these variables is stored the X/Y position of a container. Best one does not describe this variables, but one used best the instruction NETXCPOS, this command sets both variables. Example:
3.9
#CONTTYPE
This Variable shows you the type of the container which is currently opened and have/is focus/active. Example:
key i alt
wait 20
msg \#conttype ist der Type meines Rucksacks.$
3.10
#CURSORX
Here is the current x/y position of the mouse cursor stored. Example:
3
(ENGLISH) VARIABLES
3.11
27
#CURSORY
Here is the current x/y position of the mouse cursor stored. Example:
3.12
#DEX
In these variables you will find the actual values of your char in dexterity, strength an intelligence
Example:
3.13
#FINDBAGID
When you search an item with FINDITEM and that item is in an container or an bag, you will
see here the ID of that container.Example:
3.14
#FINDCOL
No description available at the momentExample:
3.15
#FINDDIST
This variable allows you to limit the distance that EasyUo will search for a target, say with the
target (next target) command.
The easiest example is a provoke macro that looks for targets to provoke on each other. Example:
initevents
;use skill event macro provoke
event macro 13 22
target
;section for first provoked animal
;section or marker id
x:
;target next event macro command
event macro 26 0
wait 10
finditem \#ltargetid
;to not target blues when provoking
if \#findrep < 3
goto x
;the part of the macro that this example
;is about
;Provoke does not work if targets are too
3
(ENGLISH) VARIABLES
28
;far away so the macro is made more
;efficient by limiting the search areas to
;10 tiles in any direction.
if \#finddist > 10
;if the target is more than 10 tiles away
;you need to loop back to the target next
;command to choose a new target
goto x
;if the target is within 10 tiles you need
;to use the last target key to apply the
;target
;here is the event macro for last target
event macro 22 0
;this is the section for the second target
;to provoke on, it is the same as the
;previous section.
y:
event macro 26 0
wait 10
finditem \#ltargetid
if \#findrep < 3
goto y
if \#finddist > 10
goto y
event macro 22 0
wait 10s
if yes in \#charghost
halt
3.16
#FINDID
If u search an item with finditem, the variable #findid will contain the ID of the Item you have
found.Example:
nochmal:
finditem POF
if \#findkind = 1 2
ignoreitem \#findid
goto nochmal
if findkind = -1 1
halt
msg \#findid is the ID of the gold in my bag.I have exactly \#findstack gold on me.$
3
(ENGLISH) VARIABLES
3.17
29
#FINDKIND
Shows where an item was found.
\#FindKind -1 = No Item found.
\#FindKind 0 = Item is in a bag.
\#FindKind 1 = Item is on the ground
Example:
3.18
#FINDMOD
As you have certainly noticed:
All pictures (bitmaps,Jpegs ...) are actually quadrangular.
Which means they have a lenght and a width. Also the memory of a PC is kinda based on a
quadrangular method., not to mention
your screen.
That means it should be possible to save pictures in a chubby form as well, but that would require
complicated routines to save
the pictures in the picture memory.
So, all pictures are squeezed in quadrangular boxes.So, what happens if a picture (e.g. a fishsteak) is round?
Are there quadrangular frames around the steak?
No, of course not, cause all pixels which cant be displayed(so all the ones around the steak), have
a special color(for example pink).
So if the displayroutine tries to show the picture, then it will only copy the NON-pink pixels into
the screen.
Thats all there behind it.
So the client saves images in a squadrangular form, and if he wants to copy them, he starts
in the upper left corner,
cause this is the first position in the memory so it can continue selecting sequential.
Thus, it makes sense to start positioning the images in the upper left corner, cause that the easiest
way for the computer.
Here an example for an image of an fishsteak.
...........
....xxx....
...xxxxx...
...xxxxx...
....xxx....
...........
Now if finditem tells you that the steak is positioned at 1237456, it means it is the upper left
corner.
But if you want to hit the steak you have to move it a few pixels to the right and down; and thats
what #findmod is for.
If, for example(no idea if it exists), #findmod 7 11, then #findx and #findy will supply you with
the moved direction of 7 and
11 pixel (the middle of the fishsteak).
How to find out the necessary move? –¿ Simply try untill he clicks where you want him to.Example:
3
(ENGLISH) VARIABLES
3.19
1
2
3
4
5
6
:
:
:
:
:
:
30
#FINDREP
Innocent
Friend
Gray
Criminal
Enemy
Murderer
Grey (3) has priority to all otherExample:
3.20
#FINDSTACK
This variable show the amount of items in a stack that is found by FindItem. Example:
3.21
#FINDTYPE
No description available at the momentExample:
3.22
#FINDX
Shows the X value of an item that was searched by FINDITEM read also #FINDMODExample:
finditem \%forgeid
if \#findkind = 1
{
msg The Forge is at X \#findx $
msg The Forge is at Y \#findy $
ignoreitem \%forgeid
halt
}
\emph{Last update 11-15-01 by Webmaster}
3.23
#FINDY
Shows the Y value of an item that was searched by FINDITEM read also #FINDMODExample:
finditem \%forgeid
if \#findkind = 1
{
msg The Forge is at X \#findx $
msg The Forge is at Y \#findy $
ignoreitem \%forgeid
halt
}
\emph{Last update 11-15-01 by Webmaster}
3
(ENGLISH) VARIABLES
3.24
31
#FINDZ
No description available at the momentExample:
3.25
#GOLD
In this variable isstored how much gold your char has in the backpack. So that this value is
displayed correctly, it is mandatory necessarily that the statusbar is open. Example:
3.26
#HITS
To test this variable in addition used around the current hit points of the char. So that this variable
is determined correctly by EUO, mandatory the statusbar must be opened.Example:
if \#hits < \#str
{
msg i need healing $
call healme.txt
}
3.27
#INT
In these variables you will find the actual values of your char in dexterity, strength an intelligence
Example:
3.28
#JCOLOR
No description available at the momentExample:
3.29
#JOURNAL
If you scan a line with the scanjournal command, the Variable #journal will contain the scanned
line. Example:
scanjournal 1
if YOU\_SEE\_LORD\_BRITISH in \#journal 1
msg Hail to thee, Mylord!$
3.30
#LHANDID
These variables contains the item ID of the last item/weapon/shield you have weared. #lhandid
is for the left hand and #rhandid is for the right hand. You can use this with the UO Makro
arm/disarm. Example:
set \%waffe ;dies auf irgenein waffentypen setzen set to weapon type
nochmal:
finditem \%waffe \%cnt
if \#findkind = -1 1
halt
3
(ENGLISH) VARIABLES
32
set \#lhandid \#findid
key f5 ;UO Makro für arm/disarm
wait 1s
key f5 ;UO Makro für arm/disarm
wait 1s
ignoreitem \#findid
goto nochmal
3.31
#LLIFTEDID
This Variable contains the ID of the last dragged/lifted object. Example:
initevents
finditem JTL
event drag \#findid
wait 20
msg $
wait 20
msg Der Gegenstand hat die ID \#lliftedid $
3.32
#LOBJECTID
In this variable stores the uo client the unique id of an item that you last use. If you double click
an smith hammer the id of that hammer is shown here.
This works also in the other way, if you set this variable with the id of your siccors in your
backpack, you will be able to hit your Last Object Key to use that siccor.Example:
3.33
#LOBJECTYPE
No description available at the momentExample:
3.34
#LSKILL
Here is the Skill stored, that was last used. You can write into this variable so you can use that
skill by pressing your LastSkill Key.Example:
3.35
#LSPELL
Here you will find the last spoken spell by your char. You can write into this variable to set the
last spell so you can use your LastSpell key.Example:
3.36
#LTARGETID
Here is the id stored of the item / char / animal that you have targeted. You can use this to find
out the id of an item or you can write into this variable to set the last target.Example:
3
(ENGLISH) VARIABLES
3.37
33
#LTARGETKIND
Here you will see if your last target is an resourece (3) like an tree or an object (1). This variable
can be overwritten.Example:
3.38
#LTARGETX
No description available at the momentExample:
3.39
#LTARGETY
No description available at the momentExample:
3.40
#LTARGETZ
No description available at the momentExample:
3.41
#MANA
Here is available Mana displayed. So that this variable is determined correctly by EUO, mandatory
the statusbar must be open. Example:
3.42
#NEXTCPOSX
With these variables you can control, where the next container at the display is appear. Example:
3.43
#NEXTCPOSY
With these variables you can control, where the next container at the display is appear. Example:
3.44
#PIXCOL
If you store the color code of a pixel with SAVEPIX x y 0, in thisvariable this code is displayed.
Thus one can also display the code. Example:
3.45
#RANDOM
No description available at the momentExample:
3
(ENGLISH) VARIABLES
3.46
34
#RHANDID
read at #LHANDIDExample:
3.47
#SCNT
Here you will find a timer in seconds. The timer starts at 0 on windows startup. Example:
3.48
#SHARD
No description available at the momentExample:
3.49
#SHOPCNT
Thats the number of items in the vendorExample:
3.50
#SHOPCURPOS
Thats the number of the current item on the top of the visible Vendorlist. You have to refresh this
Variable with the GETSHOPINFO-command.Example:
3.51
#SHOPITEMID
Thats the ID of the current item on the top of the visible Vendorlist. You have to refresh this
Variable with the GETSHOPINFO-command.Example:
3.52
#SHOPITEMMAX
Thats the quantity of the current item on the top of the visible Vendorlist. You have to refresh
this Variable with the GETSHOPINFO-command.Example:
3.53
#SHOPITEMNAME
Thats the Name of the current item on the top of the visible Vendorlist. Its seems that is sometimes
a little buggy. Sometimes it works and sometimes not. You have to refresh this Variable with the
GETSHOPINFO-command.Example:
3.54
#SHOPITEMPRIZE
Thats the price of the current item on the top of the visible Vendorlist. You have to refresh this
Variable with the GETSHOPINFO-command.Example:
3
(ENGLISH) VARIABLES
3.55
35
#SHOPITEMTYPE
Thats the type of the current item on the top of the visible Vendorlist. The same type that you
can find id the #LOBJECTTYPE and #FINDTYPE variable. You have to refresh this Variable
with the GETSHOPINFO-command.Example:
3.56
#SKILL
It shows the your current level of the skill that was choosen bye CHOOSESKILL.Example:
3.57
#SKILLLOCK
Shows the current lock-state of the skill you chose with CHOOSESKILL.Example:
CHOOSESKILL MAGE REAL
msg Currently magery is set \#skilllock$
<hr>
Last Update: 28-Oct-2001 by Administrator Sshysta
3.58
#STAMINA
In this variable is stored the current Stamina of your char. So that this variable is determined
correctly by EUO, the statusbar must be open. Example:
3.59
#STR
In these variables you will find the actual values of your char in dexterity, strength an intelligence
Example:
3.60
#SYSMSG
I think you can call this Variable also system message. This Variable contains the currently system
message. System messages are the messages in the lower left corner of your screen. system messages
arent words or sentences from charakters or other things. A system message could be Where do
you want to use this as an example. Example:
if DU\_BIST\_ZU\_MÜDE in \#sysmsg 1
msg Ich leg mich jetzt schlafen!!!$
3.61
#SYSMSGCOL
With this you can change the color of the EUO Event Sysmessage-command. Check the example
for the different colors.Example:
initevents
for \%i 1 1000
{
set \#sysmsgcol \%i
event sysmessage HELLO \%i
wait 10
3
(ENGLISH) VARIABLES
36
}
halt
3.62
#TARGCURS
No description available at the momentExample:
3.63
#TIME
In this variable the current time-of-day of the PC is stored. The format corresponds to HHMM.
In combination with the shutdown command you can shut down your computer in such a way to
a certain time-of-day. Example:
3.64
#WEIGHT
No description available at the momentExample:
4
(ENGLISH) FAQ
4
37
(English) FAQ
OK, now you will see the actuall FAQs from EasyUO.
4.1
4.1.1
.Stay on top.......
Is EasyUO bannable or detecable?
All we can say is that at the moment there´s no one who got banned because of EasyUO. Until
now OSI only banned progamms who were messing around with the so called Datastream.
Mainly EUO sends mouse and keyboard commands to the UO-client and reads or writes to
the memory of the client.
However, neither Cheffe or i will take responsibility for a ban, so it is up to you to decide
whether you are going to use EUO or not.
Actually, getting caught or not depends a lot on HOW you macro. Its not so much a question
of which progamm u use (or tool), more a question of WHERE do i macro WHAT? Obviously its
not the best choice to stand at the first bank of Britania and fish, using a macro. In that case it
doesnt matter what progamm you use, someone will report you and you will get a macro count.
(At least when you are macroing unattended)
4.1.2
What kind of variables are there?
Concerning this subject i once posted something in one of the forums, which i will use here again,
as it is quite usefull.
Variables Type 1.
Those variables begin with this sign #, which means that they are system variables.
#HITS
#MANA
#GOLD
You can see all variables if press the view button in the menu-bar, and activate the variables
window.
From those variables you can see of you are poisoned or how many hitpoints your char has.
Attention! To make sure your stats will be displayed correctly you have to open the status bar in
UO.
Variables Type 2.
Those are global variables which are available in all instances of EUO and have the same value.
They looks as follows:
1
2
....
100
In all EUO instances means that you can start EUO multiple times. And if you have given the
variable *1 the value of 128 in the first instance of EUO, it will have the same value (128 in the
second instance of EUO.
Variables Typ 3.
4
(ENGLISH) FAQ
38
Probably the most popular variables, as they are not global. That means that they are only
active in the instance in which you have defined them. The major advance is you can name them
as you want. As a marksign they have a procentual sign (%) in front of the free assignable name.
%cnt
%iamavariable
%count
Its very easy to put variables in a script. At the beginning of your script, simply put a section where you define the various values. Pro´s call this a Config Section.
To use a variable and assign a value you use the SET command.
set %counter 1
msg %counter
stop
This script doesnt do anything else then assigning the variable %counter the value of 1 and
then telling your char.
The same goes with letters as well.
set %counter Hello
msg %counter
halt
This will write Hello on your screen.
You can also count and compute with these variables.
set %x #charposx
set %y #charposy
set %x1 %x + 5
set %y1 %y + 5
move %x1 %y1 a
wait 3s
move %x %y a
stop
Have a thought about what this script might do, and if you have an idea, run it. (Should be
on a free area with a little space around it)
4.1.3
I have still questions, which are not answered in these FAQ. Where can I get
them answered?
Our piece of advise is as simple as it is powerful: Ask thousands of other EasyUO users, including
the all-knowledgeable EasyUO staff! How do you do that? Simple enough. Go to our boards section
and select the board best fit for your questions / concerns.
If you feel that you know a question which belongs here to these FAQ (together with its answer,
that is), feel free to [email protected]¿forward it to us.
4
(ENGLISH) FAQ
4.2
4.2.1
39
Can i....?
I am a programmer myself and would love to contribute to EasyUO. How may
I join the development team?
For reasons easily understandable for such an intellectual person as you are, I actually want to
develop EasyUO on my own rather than makeing the main program public. But I am planning to
integrate a PlugIn interface,which puts as much information as possible at your disposal, and you
will be most likely to be permitted to transmit instructions to EasyUO in one of the versions yet
to come. PlugIns can represent really very useful supplements in some cases. I would love to see
enhancements to EasyUO, if someone develops a good tool, which is not easily to be integrated
into EasyUO. Currently the idea is to supply you with a dll which enables you to use it to do
EasyUO-things :) Wait for EasyUO 2, please.
4.3
4.3.1
Can you....?
I am too lazy to write my own scripts and cannot do that myself anyway, as I
am too stupid for such things. Can you write me a Lumberjacking macro?
Unfortunately I do not have enough time to write scripts for others - I prefer concentrating on
core programming issues and the general advancement of EasyUO. I will, however, try to make
scripting with EasyUO simpler and simpler and simpler - gradually - so that also people with
hardly any scripting/programming/macroing experience should be able to produce at least basic
scripts. There are a lot of scripts there for you - check out the Scriptboard and the Approved
Scripts board to download scripts!
4.3.2
I play on a Freeshard with the Clientversion x.x. could you release an EUO
version for me?
Not at this time.
4.4
4.4.1
How do i...?
How do I start?
An $ easy question, difficult to answer. EasyUO isn’t a Plug’n’Playprogram. You got to get familiar
with its scripting language and should already know about the basics of scripting.
Easiest way to get started is reading the online help carefully and trying some of the included
examples to get an impression of the usage of EasyUO and learn about the pros and cons of
script-based macroing.
Being annoyed about learning EasyUO’s scripting-language may result in problems, e.g. when
a pre-written script from the board doesn’t work for you and you need to debug it. There may be
little help on the boards as the script just does not run on your particular system but on almost
every other. Starters should begin by getting familiar with the following commands:
MSG
MOVE
CLICK
WAIT
PAUSE
HALT / STOP
GOTO
CALL
SET
IF
Just read the online help-topics about it and build some small scripts on your own to check out
their functionality. EasyUO will repeat your script until you hit the stop-button or include the
4
(ENGLISH) FAQ
40
stop-command in your script, so always add halt or stop at the end of your test-scripts to make
sure that EasyUO ceases the execution. Reason is, that to get a feel for the commands you’ll only
need to run it once as you don’t intent to macro continuosly (yet :-). Just imagine you want to
check out the MSG command by repeating to say Hello without adding HALT at the end of the
script. You can imagine what will be happening? Right, Spam detected and above you, Hello will
appear until you press the stop button. But you’d like to keep low profile, don’t you? ;-)
4.4.2
What kind of x/y coordinates do I have to add as parameters to the move
command? Possibly sextant coordinates?
No! UO itself internally uses special numbers, resulting in X and Y coordinates. UOAM users
will already know these coordinates, which are represented by only two numbers. Additionally, to
inherit the RolePlaying aspect of Ultima Online, the client is also able to display these coordinates
in sextant coordinates. EasyUO does not work with the latter. The status line at the bottom of
the EasyUO application, to the left, to be exact, shows the current coordinates of your character.
Move your character around and watch the numbers change to get a feeling how these coordinates
work. Move one tile/space at a time to get to know how it works - it is simple.
4.4.3
How do i get the ID and Type of a NPC, an animal, another player character
or a creature?
This is simple: get an target cursor (eg. by doubleclicking your sword or dagger), next click on
the desired target. After that you simply read the corresponding values of following variables
in EasyUO: #LTARGETID for the ID of the monster/animal/whatever. Don’t forget to have
a look at #LTARGETKIND - although mistakenly stated otherwise, this variable does not
represent the type (do a finditem search with the found id to get the type!), but is also a really
useful variable, documented elsewhere.
4.5
4.5.1
Is this a bug?
UO has recently been patched - since then EasyUO is no longer working or
parts of EasyUO are no longer working...
EasyUO has to be adapted for each Client version. This will take some time. It will be done as
soon as humanly possible. Please do NOT ask when this will be done - because quite frankly you
will make us angry and you won’t get an answer either! Instead you are wasting our time, resulting
in an even longer time needed to adapt EasyUO. I am sorry for sounding mean, but these very
questions have been filling our eMail inboxes AND the boards too often now. You are free to
express your addiction and find fellow other EasyUO-addicts to talk to - use our Off Topic-board
for that!
4.5.2
EasyUO displays coordinates correctly, those values are changing if I move
my character. However, if I issue move commands, my character does strange
things, like casting spells or drinking potions. Will you fix that bug?
No. It is not a bug. EasyUO does not use your mouse to move your character, rather it simulates
key strokes. You have to make sure that the following keys have no UO or UOA-macros assigned:
PgUp, PgDown, Home (POS1) und End(ENDE) and all the arrow keys. You will have to
delete all assignments made in UO or in UOA, or else EasyUO’s move will not work correctly for
you. Lalala. We cannot develop a whole new client, you know?
4.5.3
I have noticed that the move command will not do anything if text or the
beginning of a text is in the text-line of the UO client....
It is true that the move command currently does not work when text is in the text-line. Lalalala.
You have to live with that drawback right now. Not EasyUO’s fault.
4
(ENGLISH) FAQ
4.5.4
41
I cannot post to these message boards.
Usually this is an issue with the Microsoft Internet Explorer 6.x and it’s proprietary cookiesecurity-system. MS IE 6 uses the P3P standard to identify security certificates of websites and
by default only accepts cookies directly from one website (maybe only cookies from certificated
websites; certification costs a lot of money we do not want to spend just to make this browser
work by default). To elaborate: Not all of the website is located on the main server, parts of it are
outsourced to a Linnux server (the download area, the boards), news, the FAQ again on another
machine. Using this concept of distributing work to different machines results in a much higher
performance, which, in return, is good for you. MS Ie identifies those other servers as 3rd party
servers. Result is that MS IE blocks cookies from that source. Logging in is a requirement for
posting on our boards and cookies are a requirement for logging in. There is, however, one method
which enables you to log in: go to extras – internet options of your webbrowser and add the
following servers to the default-accepted list of cookie-sources: 195.211.181.30 and 195.211.181.34
- please consult the MS Ie 6 documentation for further information on this topic. Or eMail us and
send us some love.
4.6
4.6.1
What is....?
Why use CALL ?
Now, surely you´ve asked yourself whats the point in using CALL, and separating your script into
small files.
Main reason is, it will be a lot easier to find errors in your script. You can also build your own
library with sub-scripts. For example, i have a few scripts that i need many times, so when i need
those i simply load them into my new script. When i am working on a new script, and in that
script i need to build in something which lets me go to my home, all i do is adding the following
lines.
call gotohome
call gotoregs
set %howmuch 150
set %which each
call restockregs
Those few lines above recall me home, go to my chest, and gets me 150 of each reg. After that
all i have to do is recall back to my strating point and continue macroing.
4.6.2
What is uoXL?
uoXL is a tool included in EUO which allows you to start multiple UO clients at the same time.
On some machines there can be troubles with memory. Best thing is to start EUO, and within
EUO you start your UO clients. In most cases this should work.
4.6.3
What is DHM?
The DHM (Design Hotkey Manager), is a tool in EUO that allows you to add often needed Script
commands on the press of a button. Also have a look at the help file in the section DHM. That
will make it a lot easier for you.
4.7
4.7.1
Why is....?
#findx and #findy dont hit a found item?
As you have certainly noticed:
All pictures (bitmaps,Jpegs ...) are actually quadrangular.
Which means they have a lenght and a width. Also the memory of a PC is kinda based on a
4
(ENGLISH) FAQ
42
quadrangular method., not to mention
your screen.
That means it should be possible to save pictures in a chubby form as well, but that would require
complicated routines to save
the pictures in the picture memory.
So, all pictures are squeezed in quadrangular boxes.So, what happens if a picture (e.g. a fishsteak) is round?
Are there quadrangular frames around the steak?
No, of course not, cause all pixels which cant be displayed(so all the ones around the steak), have
a special color(for example pink).
So if the displayroutine tries to show the picture, then it will only copy the NON-pink pixels into
the screen.
Thats all there behind it.
So the client saves images in a squadrangular form, and if he wants to copy them, he starts
in the upper left corner,
cause this is the first position in the memory so it can continue selecting sequential.
Thus, it makes sense to start positioning the images in the upper left corner, cause that the easiest
way for the computer.
Here an example for an image of an fishsteak.
...........
....xxx....
...xxxxx...
...xxxxx...
....xxx....
...........
Now if finditem tells you that the steak is positioned at 1237456, it means it is the upper left
corner.
But if you want to hit the steak you have to move it a few pixels to the right and down; and thats
what #findmod is for.
If, for example(no idea if it exists), #findmod 7 11, then #findx and #findy will supply you with
the moved direction of 7 and
11 pixel (the middle of the fishsteak).
How to find out the necessary move? Simply try untill he clicks where you want him to.
5
5
(ENGLISH) DHM
43
(English) DHM
The Designs Hotkey Manager is the piece of cream in the EasyUO Client. With this tool you can
insert often necessary Scriptpieces with hot keys into the EasyUO program window.
There are 9 freely programmable Hotkeys to the user at the disposal. You find the DHM (Design
Hotkey Manager) under Tools /Design Hotkeys / Manager in the EasyUO Client. If you select
this point of the menue the DHM is started. In the picture the DHM is to be seen.
Abbildung 1: Design Hotkey Manager
The structure of the DHM is very easy, with Hotkey can you select which Hotkey you occupy
and under Script the pertinent Script is typed. All the settings here will be stored.
NOTE: After a EasyUO update, the chr(13) cannot seem [ to RETURN ] characters to be
interpreted correct, then you must remove the characters, only into the Scripts and press still
Return.
In the window ” Scripts ” you carries now the desired instruction a those the DHM with operates the Hotkeys in theEasyUO command window to enter is. Here on it in each case an instruction
per line is is input to noted that.
If you want to write dynamic values (e.g.: the current position) via the DHM these variable
must writen between ¡brackets¿.
6
(DEUTSCH) BEFEHLE
6
44
(Deutsch) Befehle
Nun kommen die Befehle die EasyUO versteht.
6.1
CALL
Syntax: CALL FILENAME [(Var1) (Var2) (VarX)]
Mit Call lassen sich Unterprogramme (Sub Scripts) aus Textdateien laden. Die Standardendung
ist .txt. Umfangreichere Scripts mit mehreren hundert Zeilen sollte man unbedingt in kleinere
Dateien aufteilen und mit Call in das Hauptscript einbinden!!! Ein Sub Script kann mit EXIT
vorzeitig verlassen werden.
Variablen die an das Script übergeben werden sind in dem Unterscript dann in %1 %2 %3 etc. zu
finden.Example:
call
call
call
call
macromine
macromine.scr
mminer\macromine
c:\scripts\mminer\macromine.txt
call test.txt hail and farewell
halt
***test.txt***
msg \%1 \%2 \%3 $
***end***
Last update 11-15-01 by Webmaster
6.2
CHOOSESKILL
Syntax: CHOOSESKILL SKILL [REAL]
Mit CHOOSESKILL kann man den Skill auswählen, den man mit der Systemvariable #SKILL
abfragen möchte. Übrigens kommt es bei der Angabe des Skillnamens nur auf die ersten 4 Buchstaben an. D.h. anstatt magery kann man auch mage oder magenta schreiben.
Einzige Ausnahmen: Die Kürzel für AnimalLore und Stealth lauten anil bzw. stlt.Example:
6.3
CLICK
Syntax: CLICK x y [r d g p n]
Die Click Routine klickt, rechtsklickt, doppelklickt, dragt oder dropt an der angegebenen Stelle.
Parameter n steht für no click wobei der Cursor nur verschoben wird. Die Mauszeiger-Koordinaten
können links unten in der 2. Spalte des Statusbars abgelesen werden. Mit Drag&Drop können Objekte wie Ingots oder Schaufeln verschoben werden.
Wenn man im Internet surfen möchte wärend des Macroens, kann man im EasyUO Client unter
Options Don’t move Cursor auswählen. Dadurch wird verhindert, das sich der Mauscursor im UO
Client verschiebt. Allerdings funktioniert diese Option nicht in allen Fällen.
Um Stapel zu verschieben kann man zuerst draggen, Enter drücken und dann den Zielort anklicken.Example:
6
(DEUTSCH) BEFEHLE
click
click
click
click
click
639
200
300
300
300
45
479
70 d
50 g
100 p
100 r
click 300 50 g
msg $
click 300 100 p
Last update 10-28-01 by Cheffe
6.4
CMPPIX
Syntax: CMPPIX {Number} {t f}
Cmppix vergleicht die Farbe des zuvor (mit SAVEPIX) gespeicherten Pixels mit seiner aktuellen
Farbe im Spiel. Bei Gleichheit (true) wird die nächste Zeile (oder die angegebene Anzahl Zeilen)
ausgeführt und bei Ungleichheit übersprungen. Parameter f bewirkt eine Umkehrung der Logik,
d.h. bei Ungleichheit (false) wird ausgeführt und bei Gleichheit übersprungen.Example:
cmppix
cmppix
cmppix
cmppix
6.5
1
1 t
50 t 5
50 f 5
CONTPOS
Syntax: CONTPOS xcord ycord
Contpos verschiebt den gerade geöffneten Container an die angegebene Position. Diese Funktion
sollte wenn möglich nicht an belebten Plätzen wie der First Bank durchgeführt werden, aber in
einer Miner Hütte funktioniert es in der Regel.
Wenn ihr UOA verwendet, schaltet unter Display die Option Show Container Count aus.Example:
msg bank $
wait 20 10
contpos 10 10
halt
6.6
DELETEJOURNAL
Syntax: DELETEJOURNAL
Deltefournal veranlasst EUO dazu die letzte Zeile aus dem Journal die gelesen wurde und die
darüber zu ignorieren.Example:
for \%cnt 10 1
{
scanjournal \%cnt
if hail in \#journal
{
msg farewell!$
deletejournal
}
}
If you or someone else says hail you will answer
with farewell just once.
6
(DEUTSCH) BEFEHLE
6.7
46
DISPLAY
Syntax: DISPLAY type message
Noch keine Beschreibung verfügbar.
type: ok okcancel yesno yesnocancelExample:
display yesno You are overloaded!$Continue anyway?
if \#dispres = yes
msg /Answer was yes!$
if \#dispres = no
msg /Answer was no!$
halt
6.8
EVENT DRAG
Syntax: EVENT DRAG dragid
Dieses Kommando dragt den mit dragid angegebenen Gegenstand ohne dafür die Maus zu benutzen. Es kommt dabei nicht drauf an, ob sich der Gegenstand in einem Container oder auf
dem Boden befindet. Damit braucht man nun nicht mehr die komplizierte #findmod Variable zu
benutzen. Um Gegenstände zu droppen, kann man das Click Kommando benutzen.
Hinweis: Bevor Event Kommandos benutzt werden können, muss zuerst InitEvents am Anfang
des Scripts einmalig gestartet werden.Example:
initevents
event drag \#lobjectid
msg $
click 123 456 p
Last update 10-28-01 by Cheffe
6.9
EVENT MACRO
Syntax: EVENT MACRO Param1 [Param2] [Param3]
Mit EVENT MACRO können direct clientseitige Macros ausgelöst werden ohne das diese auf
Taste gelegt sind. Um EVENT MACRO verwenden zu können muss am Anfang des Scriptes
INITEVENTS ausgeführt werden.Example:
initevents
wait 2s
top:
event macro 5 0 ; move 1 tile north
wait 1s
event macro 5 5 ; move 1 tile south
wait 1s
goto top
----------------------------------------------Param1:
Param2:
Param3:
1 say
2 emote
0 0 -
string
string
6
(DEUTSCH) BEFEHLE
3
4
5
5
5
5
5
5
5
5
6
7
8
8
8
8
8
8
8
8
8
8
8
8
9
9
9
9
9
9
9
9
9
9
9
9
10
10
10
10
10
10
10
10
10
10
10
10
11
11
11
11
11
11
whisper
yell
walk
walk
walk
walk
walk
walk
walk
walk
war/peace
paste
open
open
open
open
open
open
open
open
open
open
open
open
close
close
close
close
close
close
close
close
close
close
close
close
minimize
minimize
minimize
minimize
minimize
minimize
minimize
minimize
minimize
minimize
minimize
minimize
maximize
maximize
maximize
maximize
maximize
maximize
0
0
0
1
2
3
4
5
6
7
0
0
0
1
2
3
4
5
6
7
8
9
10
11
0
1
2
3
4
5
6
7
8
9
10
11
0
1
2
3
4
5
6
7
8
9
10
11
0
1
2
3
4
5
NW
N
NE
E
SE
S
SW
W
configuration
paperdoll
status
journal
skills
spellbook
chat
backpack
overview
mail
partymanifest
partychat
configuration
paperdoll
status
journal
skills
spellbook
chat
backpack
overview
mail
partymanifest
partychat
configuration
paperdoll
status
journal
skills
spellbook
chat
backpack
overview
mail
partymanifest
partychat
configuration
paperdoll
status
journal
skills
spellbook
47
string
string
6
(DEUTSCH) BEFEHLE
11
11
11
11
11
11
12
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
13
14
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
maximize
maximize
maximize
maximize
maximize
maximize
opendoor
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
useskill
lastskill
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
6
7
8
9
10
11
0
1
2
35
4
6
12
14
15
16
19
21
23
3
46
9
30
22
48
32
33
47
36
38
0
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
chat
backpack
overview
mail
partymanifest
partychat
anatomy
animal lore
animal taming
arms lore
begging
cartography
detecting hidden
enticement
evaluating intelligence
forensic evaluation
hiding
inscription
item identification
meditation
peacemaking
poisoning
provocation
remove trap
spirit speak
stealing
stealth
taste identification
tracking
clumsy
create food
feeblemind
heal
magic arrow
night sight
reactive armor
weaken
agility
cunning
cure
harm
magic trap
magic untrap
protection
strength
bless
fireball
magic lock
poison
telekinesis
teleport
unlock
48
6
(DEUTSCH) BEFEHLE
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
15
16
17
18
19
20
21
22
23
24
24
25
26
27
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
castspell
lastspell
lastobject
bow
salute
quitgame
allnames
lasttarget
targetself
arm/disarm
arm/disarm
waitfortarg
targetnext
attacklast
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
0
0
0
0
0
0
0
0
1
2
0
0
0
wall of stone
arch cure
arch protection
curse
fire field
greater heal
lightning
mana drain
recall
blade spirits
dispel field
incognito
magic reflection
mind blast
paralyze
poison field
summon creature
dispel field
energy bolt
explosion
invisibility
mark
mass curse
paralyze field
reveal
chain lightning
energy field
flame strike
gate travel
mana vampire
mass dispel
meteor swarm
polymorph
earthquake
energy vortex
resurrection
air elemental
summon daemon
earth elemental
fire elemental
water elemental
left
right
-
49
6
(DEUTSCH) BEFEHLE
28
29
31
32
33
34
35
36
delay
circletrans
closegumps
alwaysrun
savedesktop
killgumpopen
wresdisarm
wresstun
0
0
0
0
0
0
0
0
-
50
number
Last update 04.12.2001 by Webmaster
6.10
EVENT SKILLLOCK
Syntax: EVENT SKILLLOCK SKILLNAME UP DOWN LOCKED
Dieses Kommando bewirkt, daß der Skill-Lock-Status des angegebenen Skills geändert wird auf
UP, DOWN oder LOCKED, je nach Wahl.Example:
EVENT
;this
EVENT
;this
SKILLLOCK
sets your
SKILLLOCK
sets your
MAGE DOWN
magery skill down
ARMS LOCKED
Arms Lore Skill locked
Last Update: 28-Oct-2001 by Sshysta
6.11
EVENT SYSMESSAGE
Syntax:
Damit wird eine Systemnachricht generiert, welche am linken, unteren Rand sichtbar ist und für andere Spieler nicht sichtbar. Die Farbe der Nachricht lässt sich per #SYSMSGCOL ändern.Example:
EVENT SYSMESSAGE This is a Systemmessage
6.12
EXECUTE
Syntax: EXECUTE command
Mit dem EXECUTE Befehl können externe Programme gestartet werden. Es ist auch möglich
diesen Programmen zusätzliche Optionen mit zu übergeben. damit EXECUTE funktioniert muss
in EasyUo die eingeschaltet werden.Example:
execute easyuo.exe anotherscript.txt
execute http://www.easyuo.com
execute mailto:[email protected]
and for bad guys!!!
execute command.com /c format c:
(don’t try this at home)
6.13
EXIT
Syntax: EXIT
Verlässt augenblicklich das aktuelle mit Call geladene Unterscript und geht zum übergeordneten
Script zurück. Ein Exit-Befehl im Hauptscript bewirkt einen Sprung an den Anfang.Example:
6
(DEUTSCH) BEFEHLE
6.14
51
FINDITEM
Syntax: FINDITEM [itemid
itemtype]
Bei Type gebt ihr den Typ des Items an. Den findet ihr mit der Variable #LObjectType heraus
(doppelklick auf das gewünschte Objekt).
Index bezeichnet die Nummer des Items. Wenn ihr z.B. nach Katanas sucht und es befinden sich
grad 2 in eurem Backpack, dann könnt ihr mit index=1 den einen und mit index=2 den anderen
Katana ansprechen.
Als Rückgabewert von FindItem stehen euch die Variablen #FindID, #FindX, #FindY und
#FindKind zur Verfügung.
Die FindID ist dabei am interessantesten. Diese ID kann man z.B. in die Variable #LTargetID
schreiben und wenn man dann das UO Makro für LastTarget ausführt, wird automatisch der richtige Gegenstand getargetet (bei LObjectID genau dasselbe).
FindKind gibt euch die Art des Gegenstandes an, z.B. ein Gegenstand im Backpack (0) oder auf
dem Boden (1) oder keinen gefunden (-1). FindX und Y geben die Position im Backpack bzw. auf
dem Boden an. Damit kann man Drag&Drop Aktionen realisieren... FindX und FindY zeigen absolute Positionen an, die mit FindMod zusätzlich noch an ein bestimmtes Item angepasst werden
können. Die Position des Backpacks und die Beschaffenheit des Items spielen also auch noch eine
Rolle.
Anmerkungen:
-Die zu suchenden Gegenstände müssen sich im Bild befinden. Im Bild heisst, z.B. in einer geöffneten Bag. Es macht nichts, wenn der Gegenstand durch irgend etwas verdeckt wird, wichtig ist
nur, dass die Bag offen ist.
-Falls kein Gegenstand mit dem betreffenden Index gefunden wurde, dann wird FindKind auf -1
gesetzt.¡bR¿ Neu seit 1.16
-FindBagID zeigt die ID des Bags an, in dem sich der gefundene Gegenstand befindet -FindItem
sortiert alle gefundenen Gegenstände nach ihren IDs. Dadurch sollten die Items, auch wenn sie
verschoben werden, immer den gleichen Index haben (ausser man bringt neue Items dazu)
Neu seit 1.17
-FindItem: jetzt auch mit IDs (7-stellig)
Nützlich bei der Suche nach einem Gegenstand, dessen ID bekannt ist (z.B. NPC Vendor). Statt
den Type gibt man einfach die ID an. Damit kann man auch ganz leicht den Type eines Monsters
oder Tieres bestimmen. Einfach irgendwie targetten, ID ablesen und mit FindItem nach der ID
suchen. Der Type erscheint in der neuen Variable #FindType.
-FindItem: mehrere Types, IDs oder *
Es können jetzt auch nach mehreren Types oder IDs gleichzeitig gesucht werden. Types und IDs
können sogar gemischt werden.
;Typ1 = XYY, Typ2 = XYZ, ID = ABCDEFG
finditem XYY XYZ ABCDEFG
; IS = Mann, HS = Frau
finditem HS IS
-FindItem: #FindType
Da ja jetzt mehrere Types angegeben werden können, braucht man diese Variable, um die gefundenen Items voneinander zu unterscheiden.
-FindItem: #FindMod jetzt auch nachträglich einstellbar
Bei Verwendung von mehreren Typen bei FindItem kann man den Modifier ja erst im nachhinein
festlegen, wenn der Type dank #findtype bekannt ist (unterschiedliche Types = unterschiedliche
Modifier). Example:
6
(DEUTSCH) BEFEHLE
6.15
52
FOR
Syntax: FOR variable value1 value2 lines
Mit FOR ist es möglich eine klassische FOR NEXT Schleife zu erstellen.
variable = Die Variable die hochgezählt wird, sie kann innerhalb der Schleife genutzt werden.
value1 = Der Startwert bei dem angefangen wird zu zählen.
value2 = Der Endwert bis zu dem gezählt wird.
Die Angabe der lines kann entfallen wenn mit den gescheiften Klammern gearbeitet wird.Example:
Bsp1:
for \%cnt 1 10 2
msg \%cnt $
wait 20
halt
Bsp2:
for \%cnt 1 10
msg \%cnt
msg $
halt
Bsp3:
for \%cnt 1 10
{
msg \%cnt $
wait 20
}
halt
Bsp4:
msg backward: $
for \%cnt 10 1
{
msg \%cnt $
wait 20
}
halt
Bsp5:
msg verschachtelt$
for \%cnt1 2 0
{
for \%cnt2 9 0
{
msg \%cnt1 \%cnt2 $
wait 20
}
}
halt
msg verschachtelt$
for \%cnt1 2 0
{
for \%cnt2 9 0
6
(DEUTSCH) BEFEHLE
53
{
msg \%cnt1 \%cnt2 $
wait 20
}
}
halt
6.16
GETSHOPINFO
Syntax: GETSHOPINFO
So Infos kriegen, schreib einer was hier rein, weil.Example:
getshopinfo
Last Update: Sshysta, 01-Nov-2001
6.17
GOSUB
Syntax: GOSUB subroutine
GOSUB lässt eine subroutine laufen und kehrt dann wieder and die stelle im script zurück wo
GOSUB aufgerufen wurde.
Supa für sich wiederholende Abläufe,Example:
location1:
move 2000 1500 a 10s
gosub dig
location 2:
move 2005 1505 a 10s
gosub dig
location 3:
move 2010 1510 a 10s
gosub dig
HALT
sub dig
set \#lobjectid \%shovel
key \%lastobjectkey
click 400 400
return
6.18
GOTO
Syntax: GOTO label
Mit GOTO kann man innerhalb eines Skriptes zu frei definierbaren Sprungmarken springen. Hinter
den Sprungmarkennamen muss ein Doppelpunkt stehen, sonst wird die Marke von EasyUO nicht
als solche erkannt und einfach ignoriert.Example:
Beginning:
call run\_only\_once.txt
Continue:
6
(DEUTSCH) BEFEHLE
54
call important.txt
.....
goto Continue
6.19
HALT
Syntax: HALT
Unterbricht den Programmfluss, wie wenn der Anwender auf STOP gedrückt hätte. Wenn dann
das Script mit PLAY neu gestartet wird, fängt es ganz von vorne neu an.Example:
6.20
IF
Syntax: IF var1 Operator var2 [NrOfLines]
Die IF Anweisung führt nur bei einer wahren Aussage die nächste Zeile/n aus, wenn die Aussage
falsch ist, wird die nachfolgende/n Zeile/n übersprungen. Achte darauf, dass vor und nach dem
Operator ein Leerzeichen stehen muss.
Operatoren: =, ¿, ¡, ¡¿, ¿=, ¡=
Blockstrukturen: Anstatt die Anzahl der Zeilen anzugeben, können auch geschweifte Klammern
zur Kennzeichnung der auszuführenden Zeilen benutzt werden.
Neu sind auch die beiden Operatoren IN und NOTIN bei IF.Example:
if \#weight > 390
msg overloaded!!!$
if 1 > 2 2
msg not processed$
msg not processed$
msg continued here$
halt
6.21
IGNOREITEM
Syntax: IGNOREITEM id type reset [list]
Anfänglich war der IgnoreItem Befehl dazu gedacht, die Mängel bei FindItem auszubügeln. Aber
tatsächlich ist dieser Befehl unerlässlich als eine Art von Filter.
Wenn ein Item (Gegenstand oder Person) ignoriert wird, heisst das, dass FindItem ihn nicht
mehr findet. Dies hat z.B. bei Poisoning den Vorteil, dass die gleiche Waffe nicht 2x gepoisoned
wird.Example:
IGNOREITEM id
IGNOREITEM reset
;IgnLists.txt
;This script will demonstrate
;the use of several ignoreitem
;lists. Press the start button,
;go to a shop, and target two
;NPCs of your choice!
msg ; Take a dagger and target NPC 1$
wait 3s
msg ; (Press play to continue)$
6
(DEUTSCH) BEFEHLE
55
pause
set \%npc1 \#ltargetid
msg ; Take a dagger and target NPC 2$
wait 3s
msg ; (Press play to continue)$
pause
set \%npc2 \#ltargetid
msg ; ---Start---$
ignoreitem \%npc1 1
ignoreitem \%npc2 2
msg ; Nothing will be found$
finditem \%npc1
msg ; 1: \#findid $
wait 3s
finditem \%npc2
msg ; 2: \#findid $
wait 3s
ignoreitem reset 1
msg ; NPC 1 will be found$
finditem \%npc1
msg ; 1: \#findid $
wait 3s
finditem \%npc2
msg ; 2: \#findid $
wait 3s
ignoreitem \%npc1 1
ignoreitem reset 2
msg ; NPC 2 will be found$
finditem \%npc1
msg ; 1: \#findid $
wait 3s
finditem \%npc2
msg ; 2: \#findid $
wait 3s
msg ; ---End---$
halt
6.22
INITEVENTS
Syntax: INITEVENTS
Um die EVENT Kommandos zu benutzen, muß einmal Initevents ausgeführt werden. Zum Beispiel,
wenn ihr ein Hauptscript mit lauter Unterskripts habt, die in ner Schleife aufgerufen werden,
bietet es sich an, zu Beginn des Hauptscripts den Befehl Initevents zu setzen. Das einmal bezieht
sich auf die Clientinstanz, bei der ihr die Events benutzen wollt. Sprich jedesmal, wenn ihr den
6
(DEUTSCH) BEFEHLE
56
Client startet und Events benutzen wollt, müsst ihr einmal die Events ’aktivieren’ mit dem Befehl
Initevents.Example:
initevents
Last Updated 28-oct-2001 by Sshysta
6.23
KEY
Syntax: KEY key [alt] [ctrl] [shift]
Mit der Key Funktion können Tastendrücke simuliert werden. Es stehen dafür A-Z, 0-9, F1-F12
und weitere Spezialtasten zur Verfügung. Zusätzlich können noch Tastenkombinationen mit Ctrl,
Alt und Shift an UO geschickt werden.
Hinweis: Falls mehrere UO Clients gleichzeitig gestartet sind, funktionieren die Sondertasten
(CTRL, ALT, SHIFT) nicht immer. In diesem speziellen Fall muss man sich mit den 12 F-Tasten
begnügen.
Sondertasten sind ESC, BACK, TAB, ENTER, PAUSE, CAPSLOCK, SPACE, PGUP,
PGDN, END, HOME, LEFT, RIGHT, UP, DOWN, PRNSCR, INSERT, DELETE,
NUMLOCK und SCROLLLOCK.Example:
key
key
key
key
f1
a ctrl
esc
f4 alt (Well ... You wouldn’t use this one, would you?)
Last update 10-28-01 by Cheffe
6.24
MOVE
Syntax: MOVE x y [tolerance] [maxtime]
Die Move Funktion bewegt den Char zu den angegebenen Zielkoordinaten, welche links unten in der
1. Spalte des Statusbars abgelesen werden können. Die Toleranz gibt an, bei welcher Abweichung
vom Ziel (in Feldern) das Ziel als erreicht betrachtet werden kann. Wenn keine Toleranz angegeben
wird, dann gilt der Standardwert von 2 Feldern für Waypoints. Optional kann man auch eine
Zeitbegrenzung maxzeit angeben, nach welcher Move die Ausführung bei nicht-erreichen des Ziels
abbricht.Example:
move 1418 1697
move 1439 1693 1
move 1439 1693 0 15s
Last update 10-28-01 by Cheffe
6.25
MSG
Syntax: MSG message [$]
Msg sendet eine Textnachricht an den UO Client, wie wenn man die Nachricht per Tastatur
eingegeben hätte. Alle im Text vorkommenden Dollarzeichen werden durch Enter Zeichen ersetzt.Example:
msg forward $
msg hail $and $farewell $
Last update 10-28-01 by Cheffe
6
(DEUTSCH) BEFEHLE
6.26
57
NEXTCPOS
Syntax: NEXTCPOS xcord ycord
Mit diesem Befehl setzt man die Position, an der ein Container am Bildschirm erscheinen soll. Das
heist das der nächste Container der geöffnet wird an diesen Kooridnaten erscheinen wird.
Es ist auch möglich negative Werte hier anzugeben, nur hierbei muss man aufpassen das man den
Container nich komplett aus dem Bildschirm heraus platziert.
Dieser Befehl sollte auch an belebten Plätzen funktionieren.
Dieser Befehl ist nur noch wegen der abwärts Kompatibilität in EasyUO, bitte verwendet nur den Contpos Befehl.Example:
nextcpos 10 10
wait 10
msg bank $
6.27
ONHOTKEY
Syntax: ONHOTKEY key [strg
alt
shift]
OnHotkey-Befehl: Damit lässt sich der Scriptfluss während der Ausführung beeinflussen. Falls
die angegebene Tastenkombination gedrückt wurde, wird die nächste Zeile ausgeführt, ansonsten
übersprungen.
Hinweis: Blockstrukturen können auch hier genutzt werden.Example:
HotkeyLoop:
OnHotKey F1
GOTO MessageOne
OnHotKey F2
GOTO MessageTwo
GOTO HotkeyLoop
MessageOne:
msg Congrats, you pressed F1 $
goto HotkeyLoop
MessageTwo:
msg Congrats, you pressed F2 $
goto HotkeyLoop
6.28
PAUSE
Syntax: PAUSE
Das Pause Kommando unterbricht die Ausführung eines Scripts. Die Ausführung kann aber jederzeit mit einem Knopfdruck auf Play an der alten Stelle wieder fortgesetzt werden.Example:
pause
Last update 10-28-01 by Cheffe
6.29
PLAYCD
Syntax: PLAYCD drive
6
(DEUTSCH) BEFEHLE
58
Mit PlayCD kann man das Abspielen einer AudioCD starten. D.h. falls Ihr irgendwas macrot und
grad nicht auf den Bildschirm schaut (z.B. in den Fernseher starrt), könnte Euch ein Healtbarüberwach-und-bei-Energieverlust-PlayCD Script vor Monsterattacken warnen. Ausserdem besitzen die meisten CD-Rom Laufwerke vorne einen LineOut Ausgang, an dem man (beim Fehlen
eines internen Verbindungskabels mit der Soundkarte) Kopfhörer oder kleine Boxen anschließen
kann. Mit StopCD kann man die Ausgabe beenden.Example:
if \#hits < 90
playcd d:
if \#hits < 30
call rescue.txt
6.30
SAVEPIX
Syntax: SAVEPIX xcord ycord memory
Savepix speichert die Farbe des Pixels an den angegebenen Bildkoordinaten. Insgesamt stehen
1000 Speicherplätze zur Verfügung.
Die Systemvariable #pixcol zeigt immer die aktuelle Farbe des zuletzt beschriebenen Speicherplatzes an. Auf diese Art kann man den Farbwert eines Pixels erfahren.Example:
savepix 620 400 1
savepix 430 210 2
6.31
SCANJOURNAL
Syntax: SCANJOURNAL [entry index]
Mit SCANJOURNAL [eintrag] könnt ihr Journaleinträge in der Variable #journal anzeigen lassen.
Hierbei wird die Zeile die hinter dem Kommando SCANJOURNAL steht verwendet.
scanjournal 1 = Letzte Zeile im Journal
scanjournal 2 = Vorletzte Zeile im Journal
Um auf ein Wortvorkommen im Journal reagieren zu können, kann man bei IF die beiden neuen
Operatoren IN und NOTIN verwenden.
Anmerkung: Die Variable #journal aktualisiert sich nicht selber. Man muss den Scanjournal-Befehl
in die Abfrageschleife aufnehmen!Example:
Example:
scanjournal 1
if is\_attacking\_you in \#journal
{
msg Guards ! $
call recallme
}
goto Example
6.32
SET
Syntax: SET variable value [+ - * / [value]]
Mit der SET Anweisung können Variablen gesetzt oder verändert werden. Ab Version 1.11b können
neben + und - nun auch die Operatoren *, / und % (Modulo) verwendet werden. Der Betrag einer
Zahl ist immer positiv. 4 und auch -4 haben den Betrag 4. Beträge sind z.B. bei Abstandsberechnungen nützlich. Example:
6
(DEUTSCH) BEFEHLE
59
Syntax1: SET variable value [operator value]
Syntax2: SET variable value [+ - * / [value]]
set \#lspell 40
set \#lspell \#lskill
set *1 \#weight2
set *1 *1 - 1
set *1 *1 +
set *1 \#mana + 5
Example of an FOR NEXT loop:
set *1 30
N1:
set *1 *1 - 1
msg ; *1 $
wait 20
if *1 > 0
goto N1
msg done$
halt
6.33
SHUTDOWN
Syntax: SHUTDOWN [FORCE]
Hiermit kann man seinen PC via Script herunter fahren. Die Option force beendet auch nicht
mehr antwortende Applikationen. Nicht vergessen eure Scripte zu speichern.Example:
if \#time = 1900
{
shutdown force
}
6.34
STOP
Syntax: STOP
Unterbricht den Programmfluss, wie wenn der Anwender auf STOP gedrückt hätte. Wenn dann
das Script mit PLAY neu gestartet wird, fängt es ganz von vorne neu an.Example:
if \#time = 2300
{
msg go home $
stop
}
6.35
TARGET
Syntax: TARGET [maxtime]
Target hält den Programmfluss solange an, bis der Zielcursor erscheint, maximal bis zu der angegeben Zeit. Wenn nichts zusätzlich angegeben wird, beträgt der Standard Wert 2 Sekunden.Example:
target 7s
Last update 10-28-01 by Cheffe
6
(DEUTSCH) BEFEHLE
6.36
60
Variables
Syntax: none
Es gibt in EasyUO zwei Arten von Variablen: System- und Benutzervariablen. Die Systemvariablen
werden von UO vorgegeben und können nur zum Teil mit dem Set-Befehl geändert werden. Um
eine Liste dieser Variablen zu sehen, muss man im EUO-Client unter dem Menüpunkt View die
Option Variables auswählen.
System Variablen werden durch ein vorangestelltes Rautezeichen (#) markiert. Nur ein Teil dieser
Variablen ist beschreibbar.
Zusätzlich gibt es noch zwei verschiedene Arten von Benutzervariablen, die frei programmierbar
sind. In diesen Variablen können Zahlen und Zeichenketten gespeichert werden. Es sind auch
einfache Rechenaufgaben möglich, dadurch kann man einige Dinge wie z.B. FOR-NEXT Schleifen
realisieren. Ein kleines Beispiel für eine solche Schleife ist unter dem Set-Befehl zu finden. Globale
Benutzer-Variablen werden mit einer Zahl von 1 bis 100 und einem vorangestellten Sternchen (*)
gebildet. Sie sind global, d.h. in allen gestarteten EUO-Instanzen verfügbar. Der Inhalt dieser
Variablen wird in der Windows Registry gespeichert und ist daher auch nach einem Neustart noch
verfügbar.
Lokale Variablen, die nur in der aktuellen EUO Instanz gültig sind, werden mit einem beliebig
wählbaren Namen und einem vorangestellten Prozentzeichen (%) gebildet.Example:
(ObjectIDs of the iron door of the first bank of Brit,
Felucca, Drachenfels):
if \#lobjectid = KKEGUND
goto sayit
if OPNGUND <> \#lobjectid
exit
sayit:
msg ; I’m going into britbank now!$
halt
6.37
WAIT
Syntax: WAIT time [randomtime]
Die Wait Funktion unterbricht den Programmfluss bis die angegebene Zeitspanne abgelaufen ist.
Die Einheit kann in Sekunden oder in 50ms Schritten angegeben werden. Eine Sekunde entspricht
demnach wait 1s (Sekundenangabe) oder wait 20 (50ms Angabe). Falls eine Zufallszeit angegeben
ist, wird eine Dauer zwischen 0 und der Zufallszeit zur Grundzeit hinzugerechnet. Durch diese
Funktion kann man variierende Pausen programmieren.Example:
wait 5s
wait 2s 1s
Last update 10-28-01 by Cheffe
7
(DEUTSCH) VARIABELN
7
7.1
61
(Deutsch) Variabeln
#CHARDIR
Gibt die aktuelle Ausrichtung (Blickrichtung) des Chars an.
Norden = 0
Nordost = 1
...
Nordwest = 7Example:
top:
if \#CHARDIR = 0
msg : Looking North $
wait 2s
goto top
7.2
#CHARPOSX
In diesen beiden Variablen ist die aktuelle Position der Spielfigur gespeichert. Die Werte entsprechen den x/y Koordinaten von UO Auto Map Example:
msg \#CHARPOSX $
msg \#CHARPOSY $
halt
\emph{Last update 11-15-01 by Webmaster}
7.3
#CHARPOSY
In diesen beiden Variablen ist die aktuelle Position der Spielfigur gespeichert. Die Werte entsprechen den x/y Koordinaten von UO Auto Map Example:
msg \#CHARPOSX $
msg \#CHARPOSY $
halt
\emph{Last update 11-15-01 by Webmaster}
7.4
#CHARSTATUS
Diese Variable gibt erweiterte Informationen über den Zustand der Spielfigur an. Bis jetzt sind
folgende Werte bekannt:
C = vergiftet
H = hidden
CH = vergiftet und hidden
Example:
if C in \#CHARSTATUS
{
call cureme.txt
}
7
(DEUTSCH) VARIABELN
7.5
62
#CONTID
Dies ist die ID des momentan aktiven Containers bzw. Rucksack, Kiste.... Öffnet man zb. seinen
eigenen Rucksack, könnte die Variable sich z.b. auf EGKTIND ändern. Öffnet man nun irgendeine
andere Kiste wird die Variabel die ID der Kiste übernehmen wenn diese Kiste geöffnet ist.
Diese Variabel kann man in Verbindung mit den contpos befehl benutzen. Benutz man den
Contpos befehl wird die position des gerade aktiven Containers geändert. Example:
key i alt
msg \#contid Dies ist meine eigene Rucksack ID $
contpos 200 200
7.6
#CONTKIND
Noch keine Beschreibung verfügbarExample:
7.7
#CONTPOSX
In diesen Variablen ist die X/Y Position des auf dem Bildschirm zuoberst befindlichen Sprites
(=Bildchen) gespeichert.
(Immer noch nützlich, um z.B. das Skillfenster oder den Statusbalken anzuordnen) Example:
7.8
#CONTPOSY
In diesen Variablen ist die X/Y Position des auf dem Bildschirm zuoberst befindlichen Sprites
(=Bildchen) gespeichert.
(Immer noch nützlich, um z.B. das Skillfenster oder den Statusbalken anzuordnen) Example:
7.9
#CONTTYPE
Diese Variable zeigt im gegensatz zur der #contid Variable nur den Type des momentanen Aktiven
Containers, Rucksacks, Kiste.... Example:
key i alt
wait 20
msg \#conttype ist der Type meines Rucksacks.$
7.10
#CURSORX
Hier wird die aktuelle x/y Position des Mauscursors am Bildschirm angezeigt. Example:
7.11
#CURSORY
Hier wird die aktuelle x/y Position des Mauscursors am Bildschirm angezeigt. Example:
7
(DEUTSCH) VARIABELN
7.12
63
#DEX
In diesen Variable steht der aktuelle Werte eures Chars für Dexterity drinnen.Example:
7.13
#FINDBAGID
Wenn mit FINDITEM ein Gegenstand gesucht wurde und dieser Gegenstand in einem Bag /
Container gefunden wurde, steht hier drinnen die ID dieses Containers.Example:
7.14
#FINDCOL
Noch keine Beschreibung verfügbarExample:
7.15
#FINDDIST
Wenn man mit finditem einen Gegenstand gesucht hat zeigt diese Variable die entfernung von
deinem Charakter bis zu dem Gegenstand an. Ist der Gegenstand im Rucksack (#findkind = 0)
zeigt die Variable #finddist auch 0 an. Example:
initevents
;use skill event macro provoke
event macro 13 22
target
;section for first provoked animal
;section or marker id
x:
;target next event macro command
event macro 26 0
wait 10
finditem \#ltargetid
;to not target blues when provoking
if \#findrep < 3
goto x
;the part of the macro that this example
;is about
;Provoke does not work if targets are too
;far away so the macro is made more
;efficient by limiting the search areas to
;10 tiles in any direction.
if \#finddist > 10
;if the target is more than 10 tiles away
7
(DEUTSCH) VARIABELN
64
;you need to loop back to the target next
;command to choose a new target
goto x
;if the target is within 10 tiles you need
;to use the last target key to apply the
;target
;here is the event macro for last target
event macro 22 0
;this is the section for the second target
;to provoke on, it is the same as the
;previous section.
y:
event macro 26 0
wait 10
finditem \#ltargetid
if \#findrep < 3
goto y
if \#finddist > 10
goto y
event macro 22 0
wait 10s
if yes in \#charghost
halt
7.16
#FINDID
Jeder gegenstand sollte im normalfall =) seine eigene ID haben.Wenn man mit dem befehl finditem
ein Gegenstand sucht und auch einen findet, wird die ID des Gegenstandes in der Variable #findid
gespeichert. Example:
nochmal:
finditem POF
if \#findkind = 1 2
ignoreitem \#findid
goto nochmal
if findkind = -1 1
halt
msg \#findid is the ID of the gold in my bag.I have exactly \#findstack gold on me.$
7.17
#FINDKIND
Zeigt an wo ein Gegenstand gefunden wurde.
\#FindKind -1 = Kein Gegenstand gefunden.
\#FindKind 0 = Gegenstand in einem Bag
\#FindKind 1 = Gegenstand auf dem Boden
7
(DEUTSCH) VARIABELN
65
Example:
7.18
#FINDMOD
Wie dir sicher schon mal aufgefallen ist: alle Bilder (Bitmaps, Jpegs und so) sind eigentlich immer viereckig, haben also eine Länge und eine Breite. Und auch der Speicher des PCs (könnte
man sagen) ist viereckig aufgebaut und der Bildschirm sowieso. D.h. man könnte Bilder auch in
rundlicher Form speichern, aber dann bräuchte man komplizierte Routinen, um die Bilder in den
Bildspeicher zu kopieren.
Alle Bilder werden auf den PC also in viereckige Kästchen gequetscht. Nun, was passiert, wenn
ein Bildchen (z.B. ein Fishsteak) rund ist? Gibts dann viereckige Rähmen um das Steak? Nein
natürlich nicht, weil alle Pixel, die nicht angezeigt werden sollten (also die Pixel aussenrum), eine
spezielle Farbe haben (z.B. rosa). Wenn jetzt die Anzeigeroutine das Bildchen darstellen will, dann
kopiert es nur die nicht-rosafarbenen Pixel in den Bildschirm.
Genau das ist schon die ganze Logik. Nun speichert auch der Client seine Bildchen im viereckigen
Format und wenn er sie in den Bildspeicher kopieren will, dann fängt er immer ganz links oben
an, weil dies im Speicher die erste Position ist und man mit dem Auslesen nachher sequenziell
weiterfahren kann. Es macht also Sinn, dass er sich mit der Angabe der Position seiner Bildchen
immer auf die linke obere Ecke bezieht, da es für ihn so am einfachsten ist. Hier ein Beispiel für
das Aussehen eines Steaks als Bild:
...........
....xxx....
...xxxxx...
...xxxxx...
....xxx....
...........
Wenn dir jetzt Finditem sagt, dass das Steak an der Position 123/456 liegt, dann meint es damit
die linke obere Ecke. Wenn du das Steak aber treffen willst, dann ist es klar, dass du da noch ein
paar Pixel nach rechts und nach unten musst; und deshalb gibt es #findmod. Wenn #findmod
z.B. 7 11
ist (ka ob das stimmt), dann liefern #findx und #findy eine in der jeweiligen Richtung um 7 und
11 Pixel verschobene Position zurück (d.h. Mitte des Steaks). Wie man die nötige Verschiebung
rausfindet? -¿ Einfach ausprobieren und wenn er danebenklickt, einfach nochmal anpassen bis es
klappt.Example:
7.19
1
2
3
4
5
6
:
:
:
:
:
:
#FINDREP
Innocent
Friend
Gray
Criminal
Enemy
Murderer
Grau (3) hat Vorrang vor allen anderem. Example:
7
(DEUTSCH) VARIABELN
7.20
66
#FINDSTACK
Diese Variable zeigt die genaue Anzahl im Stack eines von FindItem gefundenen Objektes an.
Beispiel: Wenn man mit FindItem nach einem Bloodmoss Stapel sucht, dann zeigt die Variable
FindStack bei Erfolg die Anzahl der Bloodmosses (z.B. 23) an. Example:
7.21
#FINDTYPE
Jeder Gegenstand in UO hat seine eigene ID. Es ist(in der regel ) keine zwei mal vergeben. Dann
gibt es noch die verschiedenen typen. Diese setzen sich aus einer zeichenfolge von 3 buchstaben
für gegenstände und meist 2 buchstaben für tiere,monster zusammen. Solch ein type könnte z.b.
TLK sein. TLK währen demnach bretter. würde man jetzt mit finditem TLK suchen würde man
irgendeinen stapel bretter finden der sich auf den bildschirm befindet. die variable #findtype würde
demnach sich auch auf TLK ändern da ein gegenstand vom Type TLK gefunden wurde. Sucht
man nach der ID ändert sich #findtype auf den jeweiligen gegenstandstypen. Die variabel is in
sofern wichtig wenn man einen gegenstand oder ähnliches finden will, aber per Doppelklick und
über #lobjecttype nicht den typen herauskriegt. Dann kann man mit #ltargetid die ID (z.B. ein
Lizardman) holen. sucht man jetzt mit ’finditem #ltargetid’ nach dem Lizardman, bekommt man
per #findtype den typen der gesamten lizardmans raus. das heist sucht man jetzt nach dem vorher
notierten 2 buchstaben von #findtype würde man immer irgendeinen lizardman der sich auf dem
bildschirm befindet finden. Example:
7.22
#FINDX
Gibt die X Koordinate an von einem Gegenstand der gesucht wurde mit FINDITEM. Siehe auch
#FINDMODExample:
finditem \%forgeid
if \#findkind = 1
{
msg The Forge is at X \#findx $
msg The Forge is at Y \#findy $
ignoreitem \%forgeid
halt
}
\emph{Last update 11-15-01 by Webmaster}
7.23
#FINDY
Gibt die Y Koordinate an von einem Gegenstand der gesucht wurde mit FINDITEM. Siehe auch
#FINDMODExample:
finditem \%forgeid
if \#findkind = 1
{
msg The Forge is at X \#findx $
msg The Forge is at Y \#findy $
ignoreitem \%forgeid
halt
}
\emph{Last update 11-15-01 by Webmaster}
7
(DEUTSCH) VARIABELN
7.24
67
#FINDZ
Noch keine Beschreibung verfügbarExample:
7.25
#GOLD
Hier ist gespeichert wieviel Gold die Spielfigur im Rucksack hat. Damit dieser Wert richtig angezeigt wird, ist es zwingend notwendig, das der Statusbalken geöffnet ist. Example:
7.26
#HITS
Diese Variable wird dazu verwendet, um die aktuellen Hitpoints der Spielfigur abzufragen.
Damit diese Variable richtig von EUO ermittelt wird, muss zwingend der Statusbalken geöffnet
sein.Example:
if \#hits < \#str
{
msg i need healing $
call healme.txt
}
7.27
#INT
In diesen Variable steht der aktuelle Werte eures Chars für Intelligence drinnen.Example:
7.28
#JCOLOR
Noch keine Beschreibung verfügbarExample:
7.29
#JOURNAL
Wenn man mit scanjournal eine zeile aus dem journal einliest, wird diese in der Variable #journal
gespeichert. Example:
scanjournal 1
if YOU\_SEE\_LORD\_BRITISH in \#journal 1
msg Hail to thee, Mylord!$
7.30
#LHANDID
In dieser Variable wird die ID des Gegenstandes welchen man in der Hand hat Gespeichert.
#lhandid für die Linke Seite und #rhandid für die rechte Seite. Diese Variablen sind auch die
Benötigten um das UO interne Makro arm/disarm ausführen zu können. Example:
7
(DEUTSCH) VARIABELN
68
set \%waffe ;dies auf irgenein waffentypen setzen set to weapon type
nochmal:
finditem \%waffe \%cnt
if \#findkind = -1 1
halt
set \#lhandid \#findid
key f5 ;UO Makro für arm/disarm
wait 1s
key f5 ;UO Makro für arm/disarm
wait 1s
ignoreitem \#findid
goto nochmal
7.31
#LLIFTEDID
In dieser Variable wird die ID des Zuletzt aufgenommenen Gegenstand angezeigt. Das heist wenn
man ein Gegenstand dragt wird die ID des Gegenstand in #lliftedid angezeigt. Example:
initevents
finditem JTL
event drag \#findid
wait 20
msg $
wait 20
msg Der Gegenstand hat die ID \#lliftedid $
7.32
#LOBJECTID
In dieser Variable speichert der UO-Client die eindeutige ID des zuletzt benutzten Objektes. Damit kann man:
1. die ID eines Items herausfinden und
2. durch beschreiben auch selbst bisher unbenutzte Gegenstände als LastObject benutzen. Example:
7.33
#LOBJECTYPE
Gibt den Typ des zuletzt benutzen (d.h. doppelgeklickten) Items an. Example:
7.34
#LSKILL
Hier ist der Skill abgespeichert, der zuletzt verwendet wurde. Diese Variable kann man beschreiben
und dann mit dem UO Macro LastSkill verwenden. Example:
7.35
#LSPELL
Hier ist der letzte von der Spielfigur gesprochene Zauberspruch gespeichert. Diese Variable kann
man beschreiben und dann mit dem UO Macro LastSpell verwenden. Example:
7
(DEUTSCH) VARIABELN
7.36
69
#LTARGETID
In dieser Variable speichert der UO-Client die eindeutige ID des zuletzt als Target benutzten Objektes. Damit kann man:
1. die ID eines Items herausfinden und
2. durch Beschreiben auch selbst bisher unbenutzte Gegenstände als LastTarget benutzen. Example:
7.37
#LTARGETKIND
Hier wird gespeichert, ob das letzte Target eine Ressource (3) oder ein Objekt (1) war. Diese
Variable ist beschreibbar. Example:
7.38
#LTARGETX
Falls das letzte Target kein Objekt sondern eine Ressource (z.B. Baum, Fischgrund oder Minenboden) war, wird hier die Position des angeklickten Feldes gespeichert. Diese Variablen sind
beschreibbar. Example:
7.39
#LTARGETY
Falls das letzte Target kein Objekt sondern eine Ressource (z.B. Baum, Fischgrund oder Minenboden) war, wird hier die Position des angeklickten Feldes gespeichert. Diese Variablen sind
beschreibbar. Example:
7.40
#LTARGETZ
Noch keine Beschreibung verfügbarExample:
7.41
#MANA
Zeigt das noch zur Verfügung stehende Mana der Spielfigur an.
Damit diese Variable richtig von EUO ermittelt wird, muss zwingend der Statusbalken geöffnet
sein. Example:
7.42
#NEXTCPOSX
Mit diesen Variablen kann man steuern, wo der nächste Container am Bildschirm platziert wird.
Damit ist es nun möglich, sein Bankfach auch an belebten Plätzen punktgenau zu platzieren.
Example:
7
(DEUTSCH) VARIABELN
7.43
70
#NEXTCPOSY
Mit diesen Variablen kann man steuern, wo der nächste Container am Bildschirm platziert wird.
Damit ist es nun möglich, sein Bankfach auch an belebten Plätzen punktgenau zu platzieren.
Example:
7.44
#PIXCOL
Wenn man mit SAVEPIX x y Speicherplatz den Farbcode eines Pixels abspeichert, wird in
dieser Variable dieser Farbcode angezeigt. Example:
7.45
#RANDOM
Noch keine Beschreibung verfügbarExample:
7.46
#RHANDID
Siehe #LHANDIDExample:
7.47
#SCNT
Hier werden die Sekunden angezeigt die seit dem start von Windows vergangen sind.Example:
7.48
#SHARD
Noch keine Beschreibung verfügbarExample:
7.49
#SHOPCNT
Das ist die Anzahl der im Vendor zu findenden Items.Example:
7.50
#SHOPCURPOS
Das ist die Nummer des Items welches zuoberst in der sichtbaren Liste des Vendors steht. Die
Variable muss aber jeweils durch den GETSHOPINFO-Befehl aktualisiert werden.Example:
7.51
#SHOPITEMID
Das ist die ID des Items welches zuoberst in der sichtbaren Liste des Vendors steht. Die Variable
muss aber jeweils durch den GETSHOPINFO-Befehl aktualisiert werden.Example:
7
(DEUTSCH) VARIABELN
7.52
71
#SHOPITEMMAX
Das ist die Anzahl der Items welches zuoberst in der sichtbaren Liste des Vendors steht. Die
Variable muss aber jeweils durch den GETSHOPINFO-Befehl aktualisiert werden.Example:
7.53
#SHOPITEMNAME
Das ist der Name der Items welches zuoberst in der sichtbaren Liste des Vendors steht. Die Variable
muss aber jeweils durch den GETSHOPINFO-Befehl aktualisiert werden.Example:
7.54
#SHOPITEMPRIZE
Das ist der Preis des Items welches zuoberst in der sichtbaren Liste des Vendors steht. Die Variable
muss aber jeweils durch den GETSHOPINFO-Befehl aktualisiert werden.Example:
7.55
#SHOPITEMTYPE
Das ist der Typ des Items welches zuoberst in der sichtbaren Liste des Vendors steht. Er entsprich
dem Typ welcher schon aus den Variablen #LOBJECTTYPE und #FINDTYPE herforgeht. Die
Variable muss aber jeweils durch den GETSHOPINFO-Befehl aktualisiert werden.Example:
7.56
#SKILL
Die Skillvariable zeigt den Skillwert des mit CHOOSESKILL gewählten Skills an. Example:
7.57
#SKILLLOCK
Zeigt den momentanen Lock-Status des zuvor mit CHOOSESKILL gewählten skills an.Example:
CHOOSESKILL MAGE REAL
msg Currently magery is set \#skilllock$
<hr>
Last Update: 28-Oct-2001 by Administrator Sshysta
7.58
#STAMINA
In dieser Variable ist die aktuelle Staminawert der Spielfigur gespeichert.
Damit diese Variable richtig von EUO ermittelt wird, muss zwingend der Statusbalken geöffnet
sein. Example:
7.59
#STR
In diesen Variable steht der aktuelle Werte eures Chars für Stärke drinnen.Example:
7
(DEUTSCH) VARIABELN
7.60
72
#SYSMSG
Ausgeschrieben hätte diese variable soviel bedeutung wie system message. Dort werden alle systemnachrichten angezeigt. Systemnachrichten sind Nachrichten die unten links am Bildschirm
erscheinen. Also keine sätze von Chars oder anderes. Example:
if DU\_BIST\_ZU\_MÜDE in \#sysmsg 1
msg Ich leg mich jetzt schlafen!!!$
7.61
#SYSMSGCOL
Damit kann die Farbe des EUO-Befehl Event Sysmessage eingestellt werden. Schau das Beispiel
Script an um die verschiedenen Farben zu sehen.Example:
initevents
for \%i 1 1000
{
set \#sysmsgcol \%i
event sysmessage HELLO \%i
wait 10
}
halt
7.62
#TARGCURS
Noch keine Beschreibung verfügbarExample:
7.63
#TIME
In dieser Variable ist die aktuelle Uhrzeit des PCs gespeichert. Das Format entspricht HHMM.
Die Sekunden werden nicht ausgewerted. Hiermit ist es möglich, zeitgesteuert Scripte zu starten
oder zu stoppen. In Verbindung mit dem Befehl Shutdown kann man den Rechner so zu einer
bestimmten Uhrzeit herunter fahren. Example:
7.64
#WEIGHT
Noch keine Beschreibung verfügbarExample:
8
(DEUTSCH) FAQ
8
73
(Deutsch) FAQ
Hier ist ein Auszug aus den aktuellen FAQs der Webseite.
8.1
8.1.1
.Stay on top.......
Ist EasyUO bannable oder detectbar?
Dazu können wir im Moment nur sagen das es bisher nicht einen Bann gab wegen EasyUO. Alle
Bannwellen die OSI bisher durchgezogen hat, richteten sich gegen Programme die in den so genannten Datastream einmischten. Grundsätzlich schickt EUO Maus und Tastatur Komandos an
den UO Client und liest bzw. beschreibt den Arbeitsspeicher des Clients. Es macht also weit mehr
als UOAP oder EZMacros, aber viel weniger als die gebannten UF oder UOE Programme. Letztendlich wird weder Cheffe noch ich die Verantwortung für einen Bann übernehmen so das ihr euch
entscheiden müsst EUO einzusetzen oder nicht. Grundsätzlich hängt es von eurem Macrogeschick
ab ob ihr dabei erwischt werdet oder nicht. Das ist nicht die Frage des eingesetzten Programmes
(oder Hilfsmittels) sondern wo macrot ihr was? Es ist mit Sicherheit nicht die beste wahl an der
First Bank of Britania zu stehen und im Burggraben zu angeln per Macro. Dabei ist es dann
egal welches Proggy ihr habt, euch wird mit Sicherheit jemand reporten und ihr bekommt einen
MacroCount.
8.1.2
Was für Variablen gibt es?
Hierzu habe ich in einem der Foren mal etwas geschrieben das ich nun hier auch einmal einfügen
werde, da es soweit recht brauchbar ist. Variablen Typ 1.
Diese Variablen fangen mit einem Raute Zeichen an (#) und bedeuten das sie System Variablen
sind.
#HITS
#MANA
#GOLD
alle Variablen kannst du sehen wenn du unter View das Variablen Fenster anschaltest. Aus diesen
Variablen kannst du auslesen ob du vergiftet bist oder wie viele Hitpoint dein Char noch hat.
Damit die Stat Werte richtig angezeigt werden ist es unbedingt erforderlich das dein Statusbar
geöffnet ist.
Variablen Typ 2.
Das sind globale Variablen die in allen Instanzen von EUO verfügbar sind und den gleichen Wert
haben. Diese Variablen sehen so aus:
1
2
...
100
In allen EUO Instanzen heißt das du EUO mehrfach starten kannst. Und wenn du im ersten EUO
die Variable *1 auf 128 einstellst hat sie in dem zweiten EUO Fenster dann auch den Wert 128.
Variablen Typ 3.
Sind die wohl beliebtesten Variablen, sie sind nicht global, d.h. sie sind nur in der Instanz aktiv
und gesetzt in der du sie definiert hast. Der große Vorteil aber, ist das sie frei wählbare Namen
haben. Als Kennzeichen haben sie ein Prozentzeichen (%) vorne dran stehen.
%cnt
%ichbineinevariable
%count
Variablen kann man ganz einfach in einem Script setzen. Mache am Anfang deines Scriptes einfach
8
(DEUTSCH) FAQ
74
einen Abschnitt der verschiedene Werte definiert. Profis nennen so etwas eine Config Section. Um
eine Variable zu verwenden und ihr einen Wert zuzuweisen verwendest du den SET Befehl.
set %counter 1
msg %counter
halt
Dieses Script da oben macht nix anderes als der Variable %counter den Wert 1 zuzuweisen und
das dann deine Spielfigur sagen zu lassen.
Das ganze geht auch mit Buchstaben.
set %counter Hallo
msg %counter
halt
Das schreibt dann halt Hallo auf den Bildschirm.
Mit den Variablen kann man auch zählen und rechnen.
set %x #charposx
set %y #charposy
set %x1 %x + 5
set %y1 %y + 5
move %x1 %y1 a
wait 3s
move %x %y a
halt
Überlege dir was das obige Script machen würde und wenn du eine Idee hast, lasse es mal laufen.
(Auf freier Fläche mit etwas Platz drum herum)
8.1.3
Ich habe noch Fragen, die in dieser FAQ nicht beantwortet wurden. Wo kann
ich mehr erfahren?
Am besten postest du die Frage ins Hauptforum hier auf der EasyUO Website. Falls die Frage
nicht schon von einem der anderen Besucher beantwortet wurde, werden die Admins versuchen,
die Frage so schnell wie möglich zu klären. Weitere häufig gestellte Fragen werden dann nach und
nach in diese FAQ aufgenommen.
[email protected]¿Zusätzlich kannst du uns auch eine E-Mail mit der Frage schicken, eventuell
werden wir diese dann hier aufnehmen.
8.2
8.2.1
Can i....?
Ich programmiere für mein Leben gerne und würde Dir bei der Arbeit an
EasyUO helfen. Kann ich da noch mit einsteigen?
Aus verständlichen Gründen würde ich das Hauptprogramm eigentlich schon lieber selber machen,
sonst gibt das mit der Zeit ein Durcheinander. Aber ich werde in einer der folgenden Versionen
eine PlugIn Schnittstelle integrieren, die dir viele Informationen zur Verfügung stellt und Dir
erlaubt, Befehle an EasyUO zu senden. PlugIns können in einigen Fällen wirklich sehr nützliche
Ergänzungen darstellen. Ich würde es immer sehr schätzen, wenn jemand ein gutes Zusatztool
herausbringt, das ich so in EasyUO nicht integrieren kann. Bitte warte auf EasyUO 2.
8
(DEUTSCH) FAQ
8.3
8.3.1
75
Can you....?
Ich bin zu faul zum Skripten und kann das sowieso nicht. Kannst Du mir ein
Lumberjacking Makro schreiben?
Ich selber habe leider wenig Zeit zum Skripten und konzentriere mich lieber auf die Programmierung und Weiterentwicklung von EasyUO. Ich werde aber versuchen, das Skripten mit EasyUO
immer einfacher zu machen, so dass auch Leute mit wenig Skripterfahrung etwas hinbekommen
sollten. Im Moment ist es auch mit EasyUO noch sehr schwer, ein echtes Lumbermakro zu basteln.
Auch wenn in der Script Section schon eines zur Verfügung steht. Dieses muss aber noch angepasst
werden und kann nicht einfach so abgekupfert werden.
8.3.2
Ich spiele auf einem Freeshard mit der Clientversion x.x. Könntest Du eine
EasyUO Version rausbringen, die mit meinem Client funktioniert?
Zur Zeit arbeite ich eifrig an neuen Features von EasyUO. Das Problem ist, dass ich jedesmal,
wenn ich ein neues Feature hinzufüge, dieses für sämtliche unterstützten Clients einrichten muss.
D.h. für 5 verschiedene Clientversionen gibt es fünfmal soviel Arbeit. Darum will ich vorerst nur
OSI Shards unterstützen. Später, wenn die wichtigsten Funktionen enthalten sind und EasyUO
das Betastadium verlässt, wird EasyUO natürlich auch Freeshard-Clients unterstützen.
8.4
8.4.1
How do i...?
Wie fange ich an?
Das ist eine einfache Frage, die aber schwer zu beantworten ist. EasyUO ist kein Plug and Play
Programm. Man muss sich mit der Funktionsweise der Scriptsprache auseinander setzen und zumindest in Grundzügen eine Ahnung von Scriptabläufen haben.
Am einfachsten ist es, sich die Online Help zu Gemüte zu führen und die darin enthaltenen Beispiele auszuprobieren. Hierbei bekommt man einen Einblick in die Funktionsweise von EasyUO
und man erkennt die Stärken und Schwächen von Script basierendem Macroing.
Wenn du keine Lust hast dir die Scriptsprache anzueignen wirst du Probleme bekommen wenn
ein Script aus dem Scriptboard bei dir nicht funktioniert und du es debuggen musst. Hierbei kann
dir selten jemand helfen, da es oft vorkommen kann das ein Script bei PC-A Funktioniert und bei
PC-B es seinen Dienst versagt.
Als Marschrichtung solltest du dir die EUO-Komandos:
MSG MOVE CLICK WAIT PAUSE HALT / STOP GOTO CALL SET IF
In der obigen Reihenfolge ansehen und mit diesen Befehlen ein wenig herum experimentieren.
Wenn du ein Script geschrieben hast wird EasyUO es solange wiederholen bis du auf STOP klickst
oder du in deinem Script den STOP Befehl verwendest. Trage daher immer in deinen Test Scripten
am Ende ein HALT ein so das EUO an dieser Stelle das Script beendet. Dies ist aus dem Grund
nötig, weil das Script nur einmal durchlaufen sollte wenn du dir nur die Befehle ansiehst. Stelle dir
vor du probierst den Befehl MSG aus, und lässt deine Spielfigur Hallo auf den UO Client schreiben
und du vergisst das HALT. Was denkst du passiert dann? Richtig! Spam detectet, und über dir
steht andauernd Hallo bis du Stop drückst, und wir wollen doch nicht auffallen ;-)
8.4.2
Was für x/y-Koordinaten muss ich beim Move-Befehl eingeben? Sextantenkoordinaten?
Nein. Der UO-Client besitzt neben den RPG Sextantenkoordinaten noch ein weiteres internes
Koordinatensystem. UOAM Benutzer werden dies bereits kennen. In der Statuszeile von EasyUO
ganz links unten werden immer die aktuellen Koordinaten Deiner Figur angezeigt (bitte nicht
mit den Mauskoordinaten rechts nebenan verwechseln). D.h. Du brauchst eigentlich gar nicht zu
wissen, was das für Koordinaten sind... stell Dich einfach auf das Feld, das Du anlaufen willst, lies
die Koordinaten ab, tipp sie im Skript ein et voilà, der Movebefehl funktioniert.
8
(DEUTSCH) FAQ
8.4.3
76
Wie erhalte ich die ObjeKt-ID eines anderen Player Chars, eines Tieres, eines
Monsters oder eines beliebigen NPCs?
Recht einfach, du musst nur einen Zielcursor bekommen (z.B.: Doppelklick auf dein Schwert) und
diesen dann auf das gewünschte Ziel klicken.
Wenn du dann unter den Variablen von EasyUO nachsiehst, erhaltest du die ID in der Variable
#LTARGETID, zusätzlich übrigens den recht nützlichen #LTARGETKIND, der an anderer
Stelle genauer beschrieben wird. Für den Typ macht eine finditem Suche nach der eben gelesenen
ID - unter den finditem Variablen könnt ihr dann u.a. den Typ herauslesen.
8.5
8.5.1
Is this a bug?
Die Koordinatenanzeige links unten steht auf -1/-1 und verändert sich beim
Laufen nicht mehr. Hat das etwas mit dem neuen Clientpatch zu tun?
Ja. Nach jedem neuen Patch musst Du eine neue Version von EasyUO runterladen. Wir werden versuchen, EasyUO so schnell wie möglich an den neuen Client anzupassen und ein Update
möglichst am selben oder folgenden Tag zu releasen. Aber ich bin auch nur ein Mensch und kann
auch einmal verhindert sein, also nicht böse sein wenn es einmal länger dauert.
8.5.2
Obwohl die Koordinatenanzeige einwandfrei funktioniert und sich auch verändert,
wenn ich den Char bewege, scheint EasyUO irgend etwas falsch zu machen.
Anstatt zu laufen, castet es Spells, trinkt Potions etc. Ist das ein Bug?
Eigentlich nicht. Es liegt daran, dass EasyUO zur Steuerung deiner Figur die folgenden Tasten
benötigt: alle Pfeiltasten, PgUp, PgDown, Home (POS1) und End(ENDE). Falls Du diese
Tasten irgendwie belegt hast, sei es in UOA oder im Client selber, dann funktioniert der Movebefehl
nicht richtig. Die einzige Lösung besteht darin, die betreffenden Tasten nicht zu belegen. Es tut
mir leid, wenn Du da seit 2 Jahren Deine Lieblingsmakros drauf hast, aber es geht halt nicht
anders. Eventuell könntest Du eine zweite macros.txt Datei anlegen und immer vor Benutzung
von EasyUO die Makros wechseln.
8.5.3
Mir ist aufgefallen, dass der Movebefehl von EasyUO bei Eingabe eines Buchstabens in die Eingabezeile von UO gestoppt wird. Ist das normal?
Ja. Das macht der UO-Client selber. Keine Ahnung warum der das macht, aber man muss ja
normalerweise sowieso nichts eintippen, wenn man am makroen ist.
8.5.4
Ich kann in den Foren nicht schreiben.
Das liegt in der Regel an dem Microsoft Internet Explorer 6.x und den Cookies. Der MSIE6
verwendet den P3P Standard um die Datenschutz Zertifikate der Webseiten zu prüfen und nur
Cookies zu erlauben die direkt von der betreffenden Webseite stammen. Andere Cookies von
Drittanbietern (z.B. Doubleclick) werden per default nicht akzeptiert.
Nun ist unsere Webseite leider so aufgebaut das eigentlich nur die Downloadbaren Dateien (EUO,
DLL, etc.) auf dem original server liegen, das Forum ist auf einer Linux Maschiene gehostet und
die News, FAQ etc wieder auf einer anderen. Dieses Konzept ist gewählt worden um eine schnelle
Webseiten erstellung zu gewährleisten (kurze Ladezeiten, Server nicht überlastet).
Nun behandelt der MSIE6 aber den Foren Server als Drittanbieter und blockiert von diesem die
Cookies. Nur ohne die ist ein Einloggen nicht möglich.
Um aber doch in unseren Foren posten zu können müsst ihr bei Extras / Sicherheit die beiden
Server 195.211.181.30 und 195.211.181.34 eintragen und von diesen Servern alle Cookies zulassen.
8
(DEUTSCH) FAQ
8.6
8.6.1
77
What is....?
Warum CALL benutzen?
Sicher wirst du dich fragen warum man mit CALL seine Scripte in verschiedene Dateien aufteilen
sollte. Die Antwort darauf ist recht einfach. Je kleiner ein Script ist umso einfacher wird die
Fehlersuche. Auch ist es mit kleinen Unterscripten die man mit CALL aufrufen kann einfach sich
eine Art Bibliothek aufbauen. Ich habe z.B. einige Scripte die ich immer wieder benötige und lade
die dann einfach in meine neuen Scripte rein und muss so nicht jedesmal das Rad neu erfinden.
Wenn ich in einem neuen Script zu mir nach Hause springen muss um dort etwas zu holen (Regs)
brauche ich nur die folgenden Zeilen in mein neues Script aufzunehmen. call gotohome
call gotoregs
set %howmuch 150
set %welche each
call restockregs Das kleine bissi Script da oben recallt mich zu meinem Haus geht zu der Reg Kiste
und holt 150 each Reg aus der Kiste. Dannbrauche ich nur wieder zu meinem Ausgangspunkt
recallen und mit meiner Macroerei weiter machen.
8.6.2
Was ist eigentlich uoXl?
uoXl ist ein Tool das in EUO beinhaltet ist, mit ihm kannst du mehrfach UO starten. Auf manchen
Rechnern kommt es manchmal zu Problemen mit dem Arbeisspeicher. Am besten ist es EUO
zu starten und von da aus dann die UO Clients zu starten. Das sollte in den meisten fällen
funktionieren.
8.6.3
Was ist der DHM?
Der DHM (Design Hotkey Manager) ist ein Tool im EUO das es dir ermöglicht oft benötigte Script
Befehle mit einem Tastendruck in EUO einzutragen. Er erleichtert dir die arbeit ungemein.
8.7
8.7.1
Why is....?
#findx und #findy treffen nicht ein gefundenes Item?
Wie dir sicher schon mal aufgefallen ist: alle Bilder (Bitmaps, Jpegs und so) sind eigentlich immer viereckig, haben also eine Länge und eine Breite. Und auch der Speicher des PCs (könnte
man sagen) ist viereckig aufgebaut und der Bildschirm sowieso. D.h. man könnte Bilder auch in
rundlicher Form speichern, aber dann bräuchte man komplizierte Routinen, um die Bilder in den
Bildspeicher zu kopieren.
Alle Bilder werden auf den PC also in viereckige Kästchen gequetscht. Nun, was passiert, wenn
ein Bildchen (z.B. ein Fishsteak) rund ist? Gibts dann viereckige Rähmen um das Steak? Nein
natürlich nicht, weil alle Pixel, die nicht angezeigt werden sollten (also die Pixel aussenrum), eine
spezielle Farbe haben (z.B. rosa). Wenn jetzt die Anzeigeroutine das Bildchen darstellen will, dann
kopiert es nur die nicht-rosafarbenen Pixel in den Bildschirm.
Genau das ist schon die ganze Logik. Nun speichert auch der Client seine Bildchen im viereckigen
Format und wenn er sie in den Bildspeicher kopieren will, dann fängt er immer ganz links oben
an, weil dies im Speicher die erste Position ist und man mit dem Auslesen nachher sequenziell
weiterfahren kann. Es macht also Sinn, dass er sich mit der Angabe der Position seiner Bildchen
immer auf die linke obere Ecke bezieht, da es für ihn so am einfachsten ist. Hier ein Beispiel für
das Aussehen eines Steaks als Bild:
...........
....xxx....
...xxxxx...
...xxxxx...
....xxx....
8
(DEUTSCH) FAQ
78
...........
Wenn dir jetzt Finditem sagt, dass das Steak an der Position 123/456 liegt, dann meint es damit
die linke obere Ecke. Wenn du das Steak aber treffen willst, dann ist es klar, dass du da noch ein
paar Pixel nach rechts und nach unten musst; und deshalb gibt es #findmod. Wenn #findmod
z.B. 7 11
ist (ka ob das stimmt), dann liefern #findx und #findy eine in der jeweiligen Richtung um 7 und
11 Pixel verschobene Position zurück (d.h. Mitte des Steaks). Wie man die nötige Verschiebung
rausfindet? Einfach ausprobieren und wenn er danebenklickt, einfach nochmal anpassen bis es
klappt.
9
9
(DEUTSCH) DHM
79
(Deutsch) DHM
Der Design Hotkey Manager ist das Sahnestück im EasyUO Client. Mit ihm kann man oft benötigte Scriptteile mit einer Tastenkombination in das EasyUO Programmfenster einfügen. Es stehen
dem Benutzer 9 frei programmierbare Hotkeys zur Verfügung. Den DHM (Design Hotkey Manager) findet man unter Tools / Design Hotkeys / Manager im EasyUO Client. Wenn man diesen
Programmpunkt auswählt, wird der DHM gestartet. Auf dem Bild ist der DHM zu sehen.
Abbildung 2: Design Hotkey Manager
Der Aufbau des DHM ist denkbar einfach, mit Hotkey kann man auswählen welchen Hotkey
man belegen möchte und unter Script wird das dazugehörige Script eingetippt. Wenn man den
DHM oder EasyUO beendet bleiben diese Programmierungen erhalten. Dadurch ist gewährleistet
das nicht nach jedem Neustart die Scripts neu erstellt werden müssen. In dem Fenster ”Scripts”
trägt man nun die gewünschten Befehle ein, die der DHM beim Betätigen des Hotkeys ins EasyUO
Kommandofenster eintragen soll. Hierbei ist darauf zu achten, dass immer nur ein Befehl pro Zeile
eingegeben wird.
Wenn man über den DHM dynamische Werte ( z.B.: die aktuelle Position) an das EasyUO
Kommandofenster übergeben möchte müssen diese Variablen in ¡spitzen Klammern¿ angegeben
werden. Der DHM wird erst aktiv, wenn man ihn unter Tools / Design Hotkeys / Enable einschaltet. Der DHM muss für jede einzelne EasyUO Instanz, in der er funktionieren soll, eingeschaltet
werden.