YokoInjection

Z EreborWiki
Verze z 11. 2. 2018, 05:16, kterou vytvořil Marwww (diskuse | příspěvky)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Přejít na: navigace, hledání

Úvod

YokoInjection je nástroj k usnadnění hraní Ultimy. Používá se zejména na skripty, které vykonávají za hráče určitou funkci. Má široké možnosti nastavení, proto je pro začátečníky obtížné nastavit Yoko tak, aby správně fungoval. Skriptování je podobné Basicu, takže ti co se orijentují trochu v oblasti programování, mají vyhráno a můžou si teoreticky napsat skript, který za ně udělá skoro cokoliv. Největší problém je s dokumentací Yoka, protože oficiální web je rusky, takže to je menší zádrhel.

Instalace

  • Stáhněte YokoInjection zde.
  • Rozbalte stažený .zip archív a spusťte YokoInjection70211.exe
  • Dokončete instalaci následujícím postupem:
  • Next
Pokračujte dále
  • Zvolte instalaci do složky, kde se nachází Ultima (ve výchozím stavu Yoko automaticky detekuje, kde je nainstalovaná UO)
Cesta, kam se Inject nainstaluje
  • Odškrtněte "Launch Injection" a klikněte na "Finish"
Odškrtněte Launch a klikněte na Finish
  • Překopírujte z instalační složky tyto 2 soubory: DualCore_Launcher.exe a ignition.cfg do složky, kde jste nainstalovali Yoko - ve výchozím stavu do C:\Program Files (x86)\Erebor\YokoInjection. Pokud budete vyzváni, přepište původní ignition.cfg novým.
Přepište původní ignition.cfg a nakopírujte také DualCore_Launcher.exe
Výsledné překopírované soubory

Konfigurace

  • Klikněte pravým tlačítkem myši na DualCore_Launcher.exe a zvolte Vlastnosti (Properties)
    • Přepněte se na záložku Kompatibilita (Compatibility) a zaškrtněte následující volby dle obrázku, poté klikněte na OK:
Vzor jak nastavit správně kompatibilitu
  • Nyní spusťte DualCore_Launcher.exe
  • U položy Client Dir klikněte na Change a zvolte složku, ve které je nainstalován Erebor (ve výchozím C:\Program Files (x86)\Erebor\YokoInjection)
  • U položky Server klikněte na Edit List, poté klikněte na Local a přepište Name na Erebor a Address na server.uoerebor.cz,2593. Poté klikněte na tlačítko Save a následně na OK.
Vzor jak nastavit správně Server
  • U položky Client klikněte na Edit List, poté klikněte na Default a přepište Name na 3.0.6m, následně klikněte na tlačítko Choose a vyberte Client.exe (nachází se v C:\Program Files (x86)\Erebor\) a klikněte na tlačítko Open. Poté klikněte na tlačítko Save a následně na OK.
Vzor jak nastavit správně cestu ke Clientovi
Vzor jak nastavit správně Client
  • U položky Ignition.cfg klikněte na Change, poté otevřete složku YokoInjection, zvolte ignition.cfg a následně na tlačítko Open.
Vzor jak nastavit správně ignition.cfg
  • Nyní klikněte na Close a znovu spusťte DualCore_Launcher.exe
  • Klikněte na tlačítko Launch
Výsledek správného nastavení Injectu
  • Nastavte Injection dle obrázku (nezapomeňte hlavně nastavit Encryption na 3.0.6.j a také Undead!) a poté klikněte na tlačítko SAVE!:
Výsledek správného nastavení pro funkční hraní, nezapomeňte kliknout na Save
  • Ukončete klienta a znovu spusťte DualCore_Launcher.exe a můžete hrát!

Ostatní

Popis funkcí

  • Flush Log - Po spuštění Yoka vyprázdní soubor injection_log.txt.
  • Verbose Logging - Podrobně zapisuje do souboru injection_log.txt informace o dění ve hře. !!!Pozor, soubor injection_log.txt obsahuje po krátké době hraní velké množství dat => velký soubor. Spolu s touto funkcí doporučuji používat Flush Log.!!!
  • Light - "Věčné" světlo. Je to lighthack, na DP zakázané.
  • Tracker - Pokud zemřete, objeví se k vašemu tělu šipka, ale na většině serverech nefunguje
  • Corpses autoopen - Pokud ve vaší blízkosti někdo/něco zemře, tak se vám automaticky objeví obsah mrtvoly.
  • Destroy server menus - Automaticky zavírá většinu menu.
  • Filter sound - Filtruje zvuky ve hře.
  • Filterspeech - Neukazuje zprávy, které začínají řetězcem který si nastavíte ve hře příkazem ",filterspeech add text".
  • Verbose menu - Po zaškrtnutí vypisuje například hlášky o úspěšném vybrání menu pomocí scriptu atd.
  • Undead - Když zemřete, nemáte černobíloý obraz a nezavřou se vám bágly. POZOR! Tuto funkci doporučuji mít stále zapnuto, protože na většině serverech mě to odpojilo a nemohl jsem se lognout do hry přes injection, u Ereboru to tak dělá/dělalo.
  • Autostart - Když lognete, spustí se skript který se jmenuje "autostart"
  • Target XYZ fix - pokud je volba aktivní, tak targety (cíle), které zasílá Injection jsou naprosto shodné se standatním klientem. Doporučuji však toto nastavení ponechat vypnuté.
  • Unset before set
  • Stealth counter - V případě, že jste v hidu a chodíte, tak vám ukazuje, kolik jste udělali kroků.
  • Smooth-walk - Nástroj, pomocí kterého můžete lépe chodit v lagách, protože nečeká na odezvu serveru. Je zakázán v PvP. Celkem laguje. A nedoporučuji používat.
  • TUS bb-fix - Na starších serverech opravuje chybu při přihlašování. Na dnešních serverech není za potřebí.
  • Relay - Není za potřebí na českých shardech požívat
  • Font color - Nastaví barvu písma. Pomocí tohoto můžete nastavit větší rozsah barev (zapsáním do políčka nebo vybráním z dye), ale není zaručena sabilita klienta.
  • AntiCrash - Odstraňuje několik příčin pádu klienta po příchodu nesmyslných dat ze strany serveru (barvy, grafiky... mimo rozsah). Doporučuji mít vypnuté.
  • AoP map patch
  • Client > 400c Fix - Potřebné ke hraní s Yokem a clientem 4.0.x a 5.0.x
  • No client hung message - Zajistí, aby se vám nezobrazovaly otravné messageboxy, které sem tam klient vyhodí. Doporučuji nechat vyplé.
  • Permit vars loopback
  • Status bar fix - Když někdo zmizí z obrazovky (uteče, odportne, odlogne ...) tak se místo něj objeví zombík aby vám nespadla vytažená záložka. - Pokud chcete používat tuto funkci, nejlépe se hodí v pvp, když se někdo hidne, musíte mít zaplou funkci Track world items.
  • Poison: bottle then obj - Určuje pořadí targetů při použití skillu poisoning. Doporučuji nechat vyplé.
  • Track world items - Udržuje v paměti i objekty, které již nevidíte na obrazovce.
  • IngnoreSocket (400x) - Potřebné ke hraní s Yokem a clientem 4.0.x a 5.0.x. Doporučuji nechat vyplé, pokud hrajete na Ereboru, DP, ...
  • Version - Není potřeba vyplňovat
  • Battle Filter - Neukazuje dynamické itemy. Doporučuji nechat vyplé.

Jak spustit script

Nejprve musíme mít daný script, např. mining.sc. V injectu tedy vybereme záložku Script, poté klikneme na tlačítko Load a vybereme soubor mining.sc. Dole vedle Run function: se nám zobrazí název spustitelného scriptu, takže si vybereme např. Kopej a klikneme na Run function. A skript by měl běžet. Pokud ho budeme chtít vypnout, stačí běžící script vybrat z horního okna, označíme ho a klikneme na tlačítko Terminate selected.

YokoInjection-Zalozka-Script.png

Popis funkcí, co se dá na záložce script dělat:

  • List of running functions - Zde je seznam běžících scriptů.
  • Terminate selected - Ukončí script, který vyberete v List of running functions.
  • Edit current script - Po kliknutí na toto tlačítko se vám otevře nové okno, ve kterém můžete psát, nebo upravovat scripty.
  • Load - Otevře soubor se scriptama.
  • Save - Uloží soubor, který jste upravovali pomocí Edit current script.
  • Run function- Spustí script, který vybere v rozbalovacím seznamu vedle tlačítka.
  • TIP: Pokud se vám nechce při každém spuštění Yoka nahrávat soubor se scriptama přes tlačítko Load, tak pojmenujte soubor, který obsahuje vámi používané scripty, na Autoload.sc

Skripty

  • Balík základních skriptů - léčení obvazy včetně vrácení zbraně do ruky, loot, vypisování životů nad vaší postavou, sběr šípů.


sub banda()
  var zbran
  UO.SetArm("zbran")
  UO.WaitTargetObject("self")
  UO.UseType('0x0E21')
  wait(300)
  UO.Arm("zbran")
end sub

sub hp()
  var HP_priebezne_self
  while 1==1
    HP_priebezne_self = uo.gethp("self")
    wait(100)
    if uo.gethp("self") < HP_priebezne_self and not uo.dead() then
      uo.charprint(0x0028,"-" + str(HP_priebezne_self - uo.gethp("self")) + " (" + str(uo.gethp("self")) + ")")
    end if
    if uo.gethp("self") > HP_priebezne_self + 5 and not uo.dead() then
      uo.charprint(0x010F,"+" + str(uo.gethp("self") - HP_priebezne_self) + " (" + str(uo.gethp("self")) + ")")
    end if
  wend
end sub

sub loot() 
  VAR WaitTime=10
  VAR Exit=0, i 
  DIM Loot[38]

  Loot[0]=0x0E76 ;Bag
  Loot[1]=0x0eed ;gold
  Loot[2]=0x0F8D ;spider silk
  Loot[3]=0x0F86 ;mandrake root
  Loot[4]=0x0E21 ;bandage
  Loot[5]=0x0F7B ;Blood Moss
  Loot[6]=0x0F84 ;garlic
  Loot[7]=0x0F7A ;blackpearls
  Loot[8]=0x0F8C ;sulforous ash
  Loot[9]=0x0F87 ;eon vocka
  Loot[10]=0x1BD1 ;perie
  Loot[11]=0x0F80 ;Daemon bones
  Loot[12]=0x0F8B ;Pumice
  Loot[13]=0x0F89 ;Obsidian
  Loot[14]=0x0f88 ;Nightshade
  Loot[15]=0x0f85 ;Ginseng
  Loot[16]=0x0F83 ;an Execution's Cap
  Loot[17]=0x0F8E ;a Serpent's Scale
  Loot[18]=0x0F91 ;Wyrm's Heart
  Loot[19]=0x0F8A ;PigIron
  Loot[20]=0x0E76 ;Batohy
  Loot[21]=0x0F78 ;Batwings
  Loot[22]=0x1BEF ;Ingots
  Loot[23]=0x0F26 ;Diamanty
  Loot[24]=0x1F03 ;Róby
  Loot[25]=0x14EB ;Treassure Map
  Loot[26]=0x1420 ;Cobbweb
  Loot[27]=0x108A ;reflex ring
  Loot[28]=0x1848 ;elixir
  Loot[29]=0x09D0 ;God's Apple
  Loot[30]=0x1BFB ;Crosbow Bolt
  Loot[31]=0x0F82 ;Dragon's Blood
  Loot[32]=0x1078 ;kuze
  Loot[33]=0x0F81 ;Fertir Dirt
  Loot[34]=0x0F8F ;grave dust
  Loot[35]=0x0F7D ;Vials of Blood
  Loot[36]=0x0F7E ;Bones
  Loot[37]=0x0F78 ;Batwingy

  UO.UseObject('lastcorpse')
  UO.SetArm('temp')
  UO.WaitTargetObject('lastcorpse')
  UO.UseType('0x0F51'); <-- SEM PATRI ID DYKY
  UO.SetReceivingContainer('sacek')
  wait(500)
  UO.Arm('temp')
  wait(500)

  For i=0 to 37
    UO.FindType(Loot[i],-1,'ground')
    if UO.GetQuantity('finditem') then
      UO.Grab(STR(0),'finditem')
      wait(WaitTime)
    endif

    if UO.GetQuantity('lastcorpse') then
      UO.FindType(Loot[i],-1,'lastcorpse')
      if UO.GetQuantity('finditem') then
        UO.Grab(STR(0),'finditem')
      endif
      wait(WaitTime)
    endif
  next
end sub

sub sipy()
  var e
  dim sber[2]
  sber[0] = "0x1BFB"
  sber[1] = "0x0F3F"
  sber[2] = "0x38D8"

  for e = 0 to 2
    repeat
      uo.set("finddistance","4")
      uo.findtype(sber[e],"-1","ground")
      if uo.findcount() > 0 then
        UO.moveitem("finditem","-1","sacek")
        wait(1000)
      end if
    until uo.findcount() < 2
  next
  uo.print("Hotovo")
end sub


  • Skripty od hráče Marw


sub kudla()
    uo.deletejournal()
    UO.Say('.throw')
    wait(200)
    if uo.injournal("Nemas zadny cil") or uo.injournal("Pokusila jsi se hodit") then 
    uo.Print("---Nejde hazet---")
    uo.Print("---Zkus to bliz---")
    else
    uo.Print("---Hazim---")
    wait(5000)
    uo.Print("---No tak hazej---")

    END IF

end sub

sub leap()
    UO.Say('.leap')
    uo.Print("---LEAPUJU!!---")
    wait(4000)
    uo.Print("---MUZEM LEAPOVAT---")
end sub 

sub GH()
    UO.say('.potionheal')
    Uo.Print('----PIJU HEAL----')
    wait(30000)
    UO.Print('---MUZEME DALSI HEAL---')
end sub

sub mob()
    UO.say('.potionmobility')
    Uo.Print('----PIJU MOBILITU----')
    wait(30000)
    UO.Print('---POZOR MUZES BYT PARLY,RADSI PIJ---')
end sub

sub energypvm()
    Repeat
    uo.deletejournal()
    Uo.Cast("Energy Bolt")
    uo.waittargetlast("")
    Wait(3200)
    Until Uo.InJournal("Body of")
end sub

sub HP()
    var HP_priebezne_self
    while not uo.dead()
    HP_priebezne_self = uo.gethp("self")
    wait(100)
    if uo.gethp("self") < HP_priebezne_self and not uo.dead() then
    uo.charprint(0x0026,"-" + str(HP_priebezne_self - uo.gethp("self")) + " (" + str(uo.gethp("self")) + ")")
    end if
    if uo.gethp("self") > HP_priebezne_self + 5 and not uo.dead() then
    uo.charprint(0x01FA,"+" + str(uo.gethp("self") - HP_priebezne_self) + " (" + str(uo.gethp("self")) + ")")
    end if
    wend
end sub

sub Hiding()
    UO.WarMode ('0')
    UO.UseSkill ('Hiding')
end sub

sub banda()
    UO.UseType(0x0E21,0x0000)
    UO.WaitTargetSelf()
end sub

sub pvmloot()
uo.findtype("0x0E76","-1","my")
if uo.findcount()==1 then
 uo.addobject("lootbagl","finditem")
 wait(100)
end if
var i,n  
var k
Dim A[80]
;uo.charprint(0x0481,"PvM loot ON")
repeat
repeat
wait(100)
until Uo.hex2int(uo.getgraphic("lastcontainer"))==0x2006 and Uo.getserial("lastcontainer")<>k
k=Uo.getserial("lastcontainer")
uo.deletejournal()
Uo.set('quiet','1')
A[1] = 0x0E76 ; Item baglik
A[2] = 0x0EED ; penize
A[3] = 0x0F8D ; spider silk
A[4] = 0x0F7B ; blood moss
A[5] = 0x0F86 ; mandrake roots
A[6] = 0x0F8C ; sulfurous ash
A[7] = 0x0F88 ; nightshade
A[8] = 0x0F7A ; black perla
A[9] = 0x0F89 ; obsidian
A[10] = 0x0F84 ; garlick
A[11] = 0x0F87 ; eyes of newt 
A[12] = 0x0F83 ; executioners cup
A[13] = 0x0F91 ; wyrms hearts
A[14] = 0x0F8F ; grave dust
A[15] = 0x0F8E ; nox crystal
A[16] = 0x0F80 ; dragon bone
A[17] = 0x0F8B ; pumice
A[18] = 0x0F78 ; batwings
A[19] = 0x0F7D ; daemon blood
A[20] = 0x0F82 ; dragon blood
A[21] = 0x0F8A ; pig iron
A[22] = 0x0F81 ; fertile dirt
A[23] = 0x0F85 ; ginseng
A[24] = 0x0F7E ; bones
A[25] = 0x14EB ; tajemna mapa (FLIP)
A[26] = 0x14EC ; tajemna mapa (FLIP)
A[27] = 0x0F26 ; Diamant
A[28] = 0x19B7 ; ore
A[29] = 0x0F11 ; saphires
A[30] = 0x0F16 ; amethyst
A[31] = 0x0F0F ; star saphires
A[32] = 0x0F13 ; asi citrin
A[33] = 0x0F18 ; neco podobneho
A[34] = 0x1712 ; boty
A[35] = 0x0F10 ; ddrahokam
A[36] = 0x0F15 ; ddrahokam2
A[37] = 0x1078 ; kůže
A[38] = 0x0C79 ; jídlo
A[39] = 0x0C5C ; jídlo
A[40] = 0x103B ; jídlo
A[41] = 0x09E9 ; jídlo
A[42] = 0x0C6A ; jídlo
A[43] = 0x09D1 ; jídlo
A[44] = 0x1040 ; jídlo
A[45] = 0x098C ; jídlo
A[46] = 0x1728 ; jídlo
A[47] = 0x09EC ; jídlo
A[48] = 0x172A ; jídlo
A[49] = 0x0C74 ; jídlo
A[50] = 0x1041 ; jídlo
A[51] = 0x0C6D ; jídlo
A[52] = 0x0C7F ; jídlo
A[53] = 0x0C66 ; jídlo
A[54] = 0x0C7B ; jídlo
A[55] = 0x0994 ; jídlo
A[56] = 0x09D2 ; jídlo
A[57] = 0x1726 ; jídlo
A[58] = 0x1727 ; jídlo
A[59] = 0x171F ; jídlo
A[60] = 0x0F0E ; alchemy
A[61] = 0x0D39 ; jídlo
A[62] = 0x0C70 ; jídlo
A[63] = 0x09C9 ; jídlo
A[64] = 0x0C77 ; jídlo
A[65] = 0x0C64 ; jídlo
A[66] = 0x097E ; jídlo
A[67] = 0x186F ; Vanocni banka


n=1
FOR n=1 TO 67
uo.findtype(A[n],"-1","lastcontainer")
if uo.findcount() > 0 then 
uo.moveitem("finditem","2000","my")
Wait(50)
end if
Next 
Uo.set('quiet','0')
until uo.dead()
end sub

sub dispelbomba() 
   uo.findtype("0x0F0E","0x0993","-1","self") 
   if uo.findcount() > 0 then 
      UO.moveitem("finditem","1","ground") 
      wait(400) 
   EndIf
end sub

sub zvedni()
   UO.FindType ("0x0EED", -1, 1) 
   if UO.FindCount('finditem') > 0 then 
      UO.grab("5000",'finditem') 
   end if
end sub


  • Předvytvořená sekce na další skript

Obsah budoucího skriptu