Yoko
http://forum.yoko.com.ua/

EasyUO. Микросправочник
http://forum.yoko.com.ua/viewtopic.php?f=12&t=8936
Page 5 of 5

Author:  Edred [ 2008-03-01 02:08:22 ]
Post subject: 

расширенными ивентами не пользовался - не было необходимости. Обычных вполне достаточно для практически всех нужд.

Author:  grundick [ 2008-09-17 20:23:59 ]
Post subject: 

вопросы к специалистам:
1. как мне распознать ТИП атакующего меня объекта?
2. как написать аналог чеклага ?

Author:  Rocker [ 2009-05-02 13:02:53 ]
Post subject: 

Edred wrote:
Ходилка уже написана. И будет мной выложена сразу после релиза.


Понимаю что тема нереально стара, но хотелось бы увидеть ету ходилку)

Author:  volting [ 2009-05-11 17:29:17 ]
Post subject: 

подскажите ктонить, как научить изю в мсг выводить русские буквы?... допустим я по хот кею пишу в али бить мою сатаченную цель (msg | бьём #strres $), слово "бьём" пашет токо до первого перезахода в изи, он начинает писать иероглифами... эту проблему реально решить или это уже враждённая проблема с кодировкой?

Author:  Edred [ 2009-06-06 16:52:18 ]
Post subject: 

Rocker wrote:
Edred wrote:
Ходилка уже написана. И будет мной выложена сразу после релиза.


Понимаю что тема нереально стара, но хотелось бы увидеть ету ходилку)


Если бы еще вспомнить какую про какую ходилку я это говорил и где...

Author:  grundick [ 2009-07-11 09:18:08 ]
Post subject:  Mining, OSCOM opay

Часть кода содрана у Эдреда.
Code:
; Мининг в Миноке(mtKendalt), Oscom Opay.Чар - гном с мифриловой киркой. В паке ничего кроме кирки не носим.
; Вкачать stealth, hide, anatomy, healing. Иметь побольше магии.
; Копает руду, бегает к банку, из банка реколится домой.
; Запускаем либо в шахте, либо дома.
; У входа в пещеру маркаем штук 8-20 рун.
; Дома ставим два сундука(сумки), один для руды, во второй кладём замарченные
; руны, обязательно стейки(голодный чар быстро вылетает из хайда), реагенты на
; реколл. Маркаем несколько рун возле сундука, эти руны пойдут в банк.
; Опустошаем банк чара. закладываем  туда 6-12 рун домой, около 600-800 бинтов,
; около 600 регов на реколл.
; Чтобы получить %BankID, подходим к банку, кричим
; bank, ждем когда он откроется и копируем переменную #CONTID из закладки
; Container Info в палени информации самой EasyUO.
; Чтобы узнать ИД сундука, открываем сундук (дабл клик на него), и смотрим
; либо #CONTID , либо из Last Action #LOBJECTID. Они должны совпадать.
;
; this must be modyfied
; нижележащие данные подстраиваются под каждого персонально
;=====================================================================
;=====================================================================
set %OreBag TVUFMMD                   ;ИД сундука, куда скидываем руду
set %regBag CTZNNMD                   ;Ид сумки с регами и рунками
set %BankID XLQCPMD                   ;ИД банковского контейнера
set %xHome  1703                      ;координата Х возле сундука дома
set %yHome   2002                      ;координата Y возле сундука дома
;=====================================================================
;=====================================================================
set #LPC 10000

initevents
event macro 8 2                        ; открыть статус если закрыт
event macro 8 7                        ; открыть бекпак если закрыт
ignoreItem reset 1

set %oreType . 1 DWJ
set %oreType . 2 EWJ
set %oreType . 3 GWJ
set %oreType . 4 TVJ

set %MythColor 1936

set %nothing _@C4K                           ; тут не осталось руды
set %far _>BAN40                             ; это слишком далеко отсюда
set %try dig here
set %cannot _4>1K20BL_@C4C                    ; попробуйте добывать руду из валунов или В ШАХТЕ! _2_HOEB5!
set %noline Wow!                                   ;You_have_no_line
set %cannot2 _=5_4>BO=CBLAO                    ; вам до туда не дотянуться
set %attacking is_attacking_you
set %decide dig_here
set %put in_your_pack.
set %loosen _:0<=59                            ; Раздолбив несколько камней
set %fignya _:0<=59                            ; "вы не смогли выкопать ничего стоющего"
set %battle _=5_4>_MB>3>                       ;You_are_preoccupied_with_thoughts
set %VyNeMojete K_=5_<>65B5_                   ; Вы не можете медитировать\хайдиться в режиме войны
;
set %MaxTime4Mes 20                   ; Максимум сколько ждать сообщений в секундах
set %MaxPointIteration 10              ; сколько раз получать сообщение "ничего стоющего"
;
set %RunOn Always_Run_is_now_on.
set %RunOff Always_Run_is_now_off.
;
set %mSpirit GI                       ;AngryMountainSPirit type

set %line _

set %OreType1 DWJ_EWJ_GWJ_TVJ
;set %cntghost 0
set %RuneType QWL

set %miningPointRail . 1 2558_496      ;точки в ещере, где чар окапывается
set %miningPointRail . 2 2562_489
set %miningPointRail . 3 2567_482
set %miningPointRail . 4 2570_484
set %miningPointRail . 5 2576_481
set %miningPointRail . 6 2571_478
set %miningPointRail . 7 2576_476

; Головная процедура:

event SysMessage Script started...
set %PointNumber 1

set %SayGuard 0
;если чар стартует дома
If #charposX >= ( %xHome - 3 ) && #charposX <= ( %xHome + 3 ) && #charposY >= ( %yHome - 3 ) && #charposY <= ( %yHome + 3 )
   goto AlreadyHome

; чар стартует в пещёре
main:
set %SpiritHere #false
If %PointNumber > 7
   set %PointNumber 1
event SysMessage pointnumber= %PointNumber %miningPointRail . %PointNumber
;gosub ChangeRun 1

gosub FindSpirit
If %SpiritHere = #true
   goto GoHome
gosub Hide
gosub _pathFind 2559 496 0 0       ; в пещере у входа

gosub FindSpirit
If %SpiritHere = #true 2
   goto GoHome

gosub Hide
gosub _pathFind 2566 485 0 0       ; идем в центр пещеры
gosub FindSpirit
If %SpiritHere = #true 2
   goto GoHome

gosub Hide
gosub ChangeRun 0
nextPoint:
gosub GotoRail %miningPointRail . %PointNumber 1 0     ; из центра идем в точку номер pointNumber
gosub MineAround
set %PointNumber %PointNumber + 1
;gosub FindSpirit
;If %SpiritHere = #true 2
;   goto GoHome


if #result = 0                                        ; чара писдят
   {
   event SysMessage Сдох или почти умер! Бежим к банку!
   gosub DetermAttackingType    ; если нас атаковал человек, кричим гвард по пути к банку.
   }
if #result = 1
   {
   event SysMessage Обкопались в этой точке.
   If  #weight < 250                                                 ; перевес или выкопал все нахуй
      {
      event SysMessage  Идем к следующей    ; перевес или выкопал все нахуй
      GoTo  nextPoint
      If %PointNumber > 7
         set %PointNumber 6
      set %PointNumber %PointNumber + 1
      }
    event SysMessage Идем к банку
   }

If #result = 3
   {
    event SysMessage Нашли миф! Бежим выкладывать в банк!
   }


GoHome:
gosub ChangeRun 1
if %Spirithere = #true
   gosub _pathFind 2552 502 0 %SayGuard
else
   gosub _pathFind 2559 496 0 %SayGuard
gosub GoToBank %SayGuard
set %SayGuard 0
gosub HealNearBank
If #weight < 250 && #charGhost = NO && %PointNumber < 8 && %SpiritHere = #false
   {
    For %oreN 1 4
      {
      repeat
         finditem %oreType . %oreN C_ , #backpackID
         if #findCol = %MythColor
            {
            exevent drag #findid
            exevent dropc %bankID
            wait 10
            }
         else
            ignoreItem #findID 2
       until #findCnt < 1
      }
   ignoreItem reset 2
   set %PointNumber %PointNumber - 1
   gosub FromBankToCave
   goto main
    }
Ghost:
if #charghost = YES
   {
      event SysMessage We are dead ... Go to healer...
      gosub GotoHealer
      event SysMessage Пытается реснуться
      gosub ResChar
      event SysMessage Идем к банку лечиться
      gosub GotoFromHealerToBank
      event SysMessage Лечимся у банка
      gosub HealNearBank
      If %SpiritHere = #true
         goto RecallHome
      If %PointNumber > 7
         goto RecallHome
      event SysMessage Go to Cave...
      gosub FromBankToCave
      Goto Main
   }
RecallHome:
gosub RecallFrombank
if #CHARGHOST = YES
   goto Ghost
gosub OreUnload
if %SpiritHere = #true  2
   event sysmessage Awaiting while somebody kill the SPIRIT.
   wait 1800s

if %PointNumber > 7
     {
      wait 1800s
      set %pointNumber 1
      }
AlreadyHome:
gosub RecallToCave
goto main

;####################            END OF MAIN PROCEDURE               ############################

sub GotoBank
set %SayGFlag %1
gosub _pathFind 2538 501 30 %SayGFlag    ; средина моста
gosub _pathFind 2529 518 0 %SayGFlag     ; угол здания
gosub _pathFind 2530 535 0 %SayGFlag      ; не доходя банка
gosub _pathFind 2515 544 0 %SayGFlag      ; не доходя банка
gosub _pathFind 2513 551 0 %SayGFlag      ; банк
   return

sub GotoHealer
gosub _pathFind 2530 564 0 0
gosub _pathFind 2546 575 0 0
gosub _pathFind 2555 586 0 0
gosub _pathFind 2565 595 0 0
gosub _pathFind 2576 597 0 0
   return

sub GotoFromHealerToBank
gosub _pathFind 2565 595 0 0
gosub _pathFind 2555 586 0 0
gosub _pathFind 2546 575 0 0
gosub _pathFind 2530 564 0 0
gosub _pathFind 2513 551 0 0
   return
   
sub FromBankToCave
gosub _pathFind 2515 544 0 0
gosub _pathFind 2530 535 0 0
gosub _pathFind 2529 518 0 0
gosub _pathFind 2542 501 30 0
;gosub _pathFind 2559 496 0 0      ; в пещере у входа
   return

;###############################################################################################
;######################              FIND THE SPIRIT               #############################
;###############################################################################################
sub FindSpirit
finditem GI G_
If #findCnt > 0
   {
   event Sysmessage SPIRIT IS OUT HERE!
   set %SpiritHere #true
   }
   return

;###############################################################################################
;######################              RECALL TO CAVE                #############################
;###############################################################################################
sub RecallToCave
gosub Peace
while #mana < #maxmana
   {
    set %jrnl #jindex
    event macro 13 46
   ; for %i %jrnl #jindex
  ;         {
  ;          scanjournal %i
   ;         if %VyNeMojete in #journal
   ;             {
   ;             deletejournal
   ;             event macro 6 0
   ;             wait 4
   ;             break
   ;             }
   ;        }
    wait 2s
    }

set #LObjectID %RegBag
event Macro 17
wait 1s
gosub Eating
Gosub RecallFromCont %RegBag
   return

;###############################################################################################
;######################                   EATING                   #############################
;###############################################################################################
; кушаем пока не нажремся
sub Eating
set %steak HND
gosub moveitems %regBag #backpackID %steak 30
repeat
   finditem %steak C_ , #backpackID
   set #LObjectID #findid
   event Macro 17
   set %MessageFlag 0
   set %jrnl #jindex
   wait 12
   for %i %jrnl #jindex
       {
        scanjournal %i
        if are_stuffed! in #journal || are_simply_too_full in #journal
           {
            set %MessageFlag 1
            break
            }
        }
until %MessageFlag = 1
finditem %steak C_ , #backpackID
exevent drag #findid #findStack
exevent dropc %regBag
wait 1s
   return



;###############################################################################################
;######################                  HIDDING                   #############################
;###############################################################################################
sub GoHide
;event sysmessage HIDING...
if #CHARGHOST = yes
   return
gosub Peace
while H notIn #charstatus
   {
    set %H_jrnl #jindex
    ;event sysmessage event macro HIDING....
    event macro 13 21
    set %H_MesFlag 0
    set %StartTime #scnt + 5
    repeat
            {
               if #scnt > %StartTime
                  break
              ; set %H_jrnl #jindex
               While  #charname = N/A
                   wait 1s

               wait 6
               If #CharGhost = YES || #hits < #maxhits - 10
                   return

               for %H_i %H_jrnl #jindex
               {
                  scanjournal %H_i
                  if You_have_hidden in #journal
                     return
                  if _A:@KBLAO in #journal
                     {
                     set %H_MesFlag 1
                     break
                     }
                  if %VyNeMojete in #journal
                     {
                     event macro 6 0
                     event sysmessage  WARMODE OFF
                     wait 2
                     ;deletejournal
                     ; wait 10
                     set %H_MesFlag 1
                     break
                     }
               }
            }
    until %H_MesFlag = 1
   }
   return

;###############################################################################################
;######################                PATHFINDING                 #############################
;###############################################################################################
; _pathFind X Y Z sayGuards [0/1]
sub _pathFind
set %_gotoX %1
set %_gotoY %2
set %_gotoZ %3
set %SayGuardFlag %4
set %_gotoxMin  %1 - 2
set %_gotoxMax  %1 + 2
set %_gotoyMin  %2 - 2
set %_gotoyMax  %2 + 2
repeat
   {
   While  #charname = N/A
       wait 1s
   event PathFind %_gotoX %_gotoY %_gotoZ
   wait 1s
   If %SayGuardFlag = 1 && #charghost = NO
      msg Guard $
   }
until  #charposx <= %_gotoxMax  &&  #charposx >=  %_gotoxMin  &&   #charposy >= %_gotoyMin  &&  #charposy <= %_gotoyMax
   return
sub CheckConnect
;   If ( #contSize = 203_121 ) && ( #contName = waiting_gump )
;   {
;      Call TheUnseenPowerRelog.txt
;      If ! #Result
;         Halt
;   }
   return

;###############################################################################################
;######################                RESSURECTION                #############################
;###############################################################################################
sub ResChar
   ; Ресаем чара с креста и восстанавливаем ему здоровье спирит спиком

   while #charghost = YES
   {
     While  #charname = N/A
        wait 1s

     event macro 6 0
      wait 1s
      msg Ress $
      wait 1s
   }
   set %cntghost %cntghost + 1
   event macro 8 1                        ; открыть папердолл если закрыт
   event macro 8 2                        ; открыть статус если закрыт
   event macro 8 7                        ; открыть бекпак если закрыт
   return

;###############################################################################################
;######################             RECALL FROM  BANK              #############################
;###############################################################################################

sub RecallFromBank
While  #charname = N/A
    wait 1s
if #CHARGHOST = yes
   return

if G in #charStatus
   {
   event macro 6 0
   wait 1s
    }

repeat
   msg Bank $
   wait 1s
until #CONTID = %BankID
For %oreN 1 4
      {
      repeat
         finditem %oreType . %oreN C_ , %bankID
         exevent drag #findid
         exevent dropc #backpackID
         wait 10
      until #findCnt < 1
      }

gosub RecallFromCont %BankID
return

;###############################################################################################
;######################                  HEALING                   #############################
;###############################################################################################
sub Healing
While  #charname = N/A
   wait 1s

while #charGhost = NO && #hits < #maxhits && #charName <> N/A
   {
    finditem ZLF C_ , #backpackID
    if #findCnt < 1 2
       event Sysmessage no bandages found
       return

    set #lObjectID #findID
    event Macro 17 0
    target 5S
    event Macro 23 0
    set %MessageFlag 0
    set %CurTime4Mes 0
    repeat
        set %jrnl #jindex
        wait 1s
        set %CurTime4Mes %CurTime4Mes + 1
        if %CurTime4Mes >= %MaxTime4Mes
             break
         for %i %jrnl #jindex
            {
                  scanjournal %i
                  if attacking_you in #journal
                      msg Guards $
                  if _see_the_target in #journal || _A>2A5<_=5_ in #journal || _<C<8N? in #journal || _bloody_bandages_2_backpack in #journal || _bloody_bandage_2_backpack in #journal
                  {
                     set %MessageFlag 1
                     break
                  }

              }
     until %MessageFlag = 1
    }
  return

;###############################################################################################
;######################              HEAL NEAR   BANK              #############################
;###############################################################################################
sub HealNearBank
repeat
   if #charGhost = YES
      return
   msg Bank $
   wait 1s
   event SysMessage #CONTID
until #CONTID = %BankID
If #hits < #maxhits 2
   gosub moveItems %bankID #backpackID ZLF 20
   gosub healing
finditem ZLF C_ , #backpackID
exevent drag #findid #findStack
exevent dropc %bankID
wait 1s
return

;###############################################################################################
;######################                 ORE UNLOAD                 #############################
;###############################################################################################
sub OreUnLoad
;ignoreItem reset 2
While #CharName = N/A
    wait 1s
OpenCont:
set #LObjectID %OreBag
event Macro 17
wait 1s

For %oreN 1 4
   {
    repeat
       finditem %oreType . %oreN C_ , #backpackID
       exevent drag #findid #findstack
       wait 5
       exevent dropc %OreBag
       repeat
          finditem #findID C_ , #backpackID
       until #findCnt < 1
       finditem %oreType . %oreN C_ , #backpackID
    until #findCnt < 1
    }
return

;###############################################################################################
;######################           RECALL FROM  CONTAINER           #############################
;###############################################################################################
; грузим по одному регу, контейнер должен быть открыт!
; проверяем рунку и летим по ней. просранные рунки игнорим
sub RecallFromCont
event macro 8 7                   ; открываем бекпак
set %_ContID %1
set %RuneType QWL
set %regType . 1 JUF
set %regType . 2 MZF
set %regType . 3 KUF
findNewRune:

finditem %RuneType C_ , %_ContID
if #findCnt = 0  2
   event SysMessage Can't find rune to home...
   halt
set %RuneToHome #findID
set %charposx #charposx
set %charposy #charposy
While #CharName = N/A
    wait 1s
recall:
gosub Peace
If #mana < 14
   {
   while #mana < 14
      {
       set %jrnl #jindex
       event macro 13 46
       for %i %jrnl #jindex
           {
            scanjournal %i
             if %VyNeMojete in #journal
                     {
                     event macro 6 0
                     event sysmessage  WARMODE OFF
                     deletejournal
                     ; wait 10
                     set %H_MesFlag 1
                     break
                     }
            }
       wait 2s
      }
   }
For %regN 1 3                  ;подгружаем по одному регу
   gosub moveItems  %_ContID #backpackID %regType . %regN 1
set %scnt #scnt + 4
set %scnt2 #scnt + 10
set #ltargetKind 1
event macro 15 31
target 5s
set #ltargetid %RuneToHome
event macro 22 0
set #result 0
repeat
   set %jStart #jIndex
   wait 6
   set %jEnd #jindex
   for %_jindex %jStart %jEnd
    {
    scanjournal %_jIndex
    if has_faded in #journal
       {
       ignoreItem %RuneToHome 1
       event sysmessage rune has faded
       set #result 1
       break
       }
    }
    if ( #charposx <> %charposx || #charposy <> %charposy ) && #scnt > %scnt
       set #result 3
    if ( #charposx = %charposx && #charposy = %charposy ) && #scnt > %scnt2 2
       event sysmessage recall failed. trying again.
       set #result 2
until  #result <> 0
if #result = 1
   goto  findNewRune
if #result = 2
   goto Recall
   return

; Usage: gosub moveItems sourceContainer targetContainer [itemTypes]
sub moveItems
set !items %3
if %0 < 3
    set !items *
set !from %1
set !to %2
set %_needCnt %4
if %4 = N/A
   %_needCnt = #findcnt
finditem !items C_ , #backpackID
If #findStack >= %_needCnt
    return
While #CharName = N/A
    wait 1s


TryAgain:
finditem !items C_ , !from
exevent drag #findid %_needCnt
exevent dropc !to
wait 1s
finditem !items C_ , !to
If #findStack < %_needCnt
    goto TryAgain
return

; возвращает один, если нас атаковал человек и ноль если не человек
sub DetermAttackingType
finditem #enemyID G
If #findtype = IS || #findtype = HS
   {
   event sysmessage Нас атакует человек...
   set %sayGuard 1
   }
   return

sub MineAround
; Обкопка вокруг чара
; Возвращает:
; 0 - чар под атакой
; 1 - все выкопано  или перевес
; 3 - выкопал миф
   if #charghost = YES || #hits < #maxhits
      return 0
   for %minex -4 4
   {
      for %miney -4 4
      {
         set %FinishFlag 1
         set %CountIteration 0
         repeat
         {
            While #CharName = N/A
                wait 1s
            if #charghost = YES || #hits < #maxhits
               return 0
            if #weight >= #MaxWeight - 40                          ; MAX WEIGHT
               return 1
            gosub GoHide

            if #charghost = YES || #hits < #maxhits
               return 0

            if G in #charStatus
            {
               event macro 6 0
               wait 1s
            }
            ;set %jrnl #jindex
            finditem NPF_WTH_QPF
            set #lobjectid #findid
           ; set %jrnl #jindex
            event macro 17 0
            if #charghost = YES || #hits < #maxhits
               return 0
            set #ltargetkind 3
            set #ltargetx #charposx + %minex
            set #ltargety #charposy + %miney
            target 2s
            event macro 22 0
            if #charghost = YES || #hits < #maxhits
               return 0
            ; сканируем журнал в поисках сообщений:
            set %MessageFlag 0
            set %CurTime4Mes 0
            repeat
            {
               set %jrnl #jindex
               wait 8
               set %CurTime4Mes %CurTime4Mes + 1
               if %CurTime4Mes >= %MaxTime4Mes
               {
                  set %FinishFlag 1
                  break
               }
               for %i %jrnl #jindex
               {
                  scanjournal %i
                  if %decide in #journal
                  {
                     wait 3s
                     set %MessageFlag 1
                     break
                  }

                  if  #hits < #maxhits - 10 || #charghost = YES   ;%attacking in #journal ||
                     return 0
                  if Mytheril_Ore in #journal
                  {
                     event sysmessage Mytheril Ore founded...
                     return 3
                  }
                  if %nothing in #journal || %far in #journal ||  %try in #journal || %cannot in #journal || %noline in #journal || %cannot2 in #journal
                  {
                     set %FinishFlag 0
                     set %MessageFlag 1
                     break
                   ; _have_been_revealed in #journal ||
                  }
                  if %put in #journal
                  {
                     if Mytheril_Ore in #journal
                     {
                        event sysmessage Mytheril Ore founded...
                        return 3
                     }
                     set %MessageFlag 1
                     break
                  }
                  if %loosen in #journal || %fignya in #journal
                  {
                     set %CountIteration %CountIteration + 1
                     if %CountIteration >= %MaxPointIteration
                        {
                        set %FinishFlag 0
                        wait 20s
                        }
                     else
                        set %FinishFlag 1
                     set %MessageFlag 1
                     break
                  }
               }
            }
            until %MessageFlag = 1
         }
         until %FinishFlag = 0
      }
   }
   return 1

sub ChangeRun
    ; Смена Always Run в зависимости от параметра.
    ; 0 - выключить Always Run
    ; 1 - включить Always Run
    set %RunFlag %1
    set %jrnl #jindex
    event macro 32 0
    wait 4
    for %i %jrnl #jindex
    {
       scanjournal %i
       if %RunOn in #journal && %RunFlag = 0
       {
          event macro 32 0
          break
       }
       if %RunOff in #journal && %RunFlag = 1
       {
          event macro 32 0
          break
       }
    }
    return

Sub GotoRail
    ; %1 - маршрут
    ; %2 - направление (1 - прямое, 0 - обратное)
    ; %3 - вызывать гвардов в узловых точках или нет (есл здоровья меньше максимума -10)
    set %rail %1
    set %direct %2
    set %guard %3
    set %tolerant 1
    set %timeout 60s
    set %line _

    if %direct = 0
    {
       ; вывернем "наизнанку" маршрут %rail
       set %railback
       set %nstep 1
       repeat
       {
          gosub GetWord %rail %nstep
          set %myx #result
          set %nstep %nstep + 1
          gosub GetWord %rail %nstep
          set %myy #result
          if %myx <> %line && %myy <> %line
          {
             str Len %railback
             if #strRes <> 0
                set %railback %myx , %line , %myy , %line , %railback
             else
                set %railback %myx , %line , %myy
          }
          set %nstep %nstep + 1
       }
       until %myx = %line || %myy = %line
       set %rail %railback
    }
    set %nstep 1
    repeat
    {
       gosub GetWord %rail %nstep
       set %myx #result
       set %nstep %nstep + 1
       gosub GetWord %rail %nstep
       set %myy #result
       event sysmessage %myx %myy
       if %myx <> %line && %myy <> %line
       {
          if %guard = 1 && #hits < #maxhits - 10 && #charghost = NO
          {
             msg guards $
             wait 2
          }
          move %myx %myy %tolerant %timeout
          set %nstep %nstep + 1
       }
       else
       {
          return
       }
    }
    until %myx = %line || %myy = %line
    return

Sub GetWord
   ; (c) Edred
   ; Возвращает слово из строки str (первый параметр) за номером
   ; num (второй параметр), слова должны быть разделены _
   ; если такого слова нет - возвращаем _
   ; Пример 1111_2222_3333_4444

   ; считаем параметры в переменные
   set %str %1
   set %num %2 - 1
   if %num > 0
   {
      ; установим возврат в _
      set %ret _
      ; запомним длину строки
      str Len %str
      set %len #strRes
      ; определим количество подчеркиваний
      str Count %str _
      set %cnt #strRes
      ; если их меньше чем заказано - вернуть пустую строку
      if %num > %cnt
         return %ret
      ; найдем нужное подчеркивание и следующая позиция - начало
      str Pos %str _ %num
      set %start #strRes + 1
   }
   else
   {
      set %start 1
   }
   ; увеличим счетчик подчеркиваний на 1
   set %num %num + 1
   ; если это больше макс числа - значит до конца строки
   if %num > %cnt
   {
      set %fin %len - %start + 1
      str Mid %str %start %fin
   }
   else
   {
      ; иначе считаем до предыдущей позиции
      str Pos %str _ %num
      set %num #strRes - 1
      set %fin %num - %start + 1
      str Mid %str %start %fin
   }
   set %ret #strRes
   return %ret

sub Hide
gosub Peace
if H notIn #charstatus
   {
    set %H_jrnl #jindex
    event macro 13 21
    for %H_i %H_jrnl #jindex
        {
        scanjournal %H_i
        if %VyNeMojete in #journal
             {
             event macro 6 0
             event sysmessage  WARMODE OFF
             event macro 13 21
             return
              }
         }
    }
return

sub Peace
if G in #charstatus
   event macro 6 0
  return

Page 5 of 5 All times are UTC+02:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/