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.