Yoko

All sides of Injection
It is currently 2024-03-19 10:57:09

All times are UTC+02:00




Post new topic  Reply to topic  [ 86 posts ]  Go to page Previous 1 2 3 4 5
Author Message
 Post subject:
PostPosted: 2008-03-01 02:08:22 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
расширенными ивентами не пользовался - не было необходимости. Обычных вполне достаточно для практически всех нужд.

_________________
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...


Top
   
 Post subject:
PostPosted: 2008-09-17 20:23:59 
Offline

Joined: 2006-11-25 17:44:44
Posts: 258
вопросы к специалистам:
1. как мне распознать ТИП атакующего меня объекта?
2. как написать аналог чеклага ?


Top
   
 Post subject:
PostPosted: 2009-05-02 13:02:53 
Offline

Joined: 2008-01-07 23:56:04
Posts: 24
Edred wrote:
Ходилка уже написана. И будет мной выложена сразу после релиза.


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


Top
   
 Post subject:
PostPosted: 2009-05-11 17:29:17 
Offline
User avatar

Joined: 2008-10-29 17:27:20
Posts: 75
подскажите ктонить, как научить изю в мсг выводить русские буквы?... допустим я по хот кею пишу в али бить мою сатаченную цель (msg | бьём #strres $), слово "бьём" пашет токо до первого перезахода в изи, он начинает писать иероглифами... эту проблему реально решить или это уже враждённая проблема с кодировкой?


Top
   
 Post subject:
PostPosted: 2009-06-06 16:52:18 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
Rocker wrote:
Edred wrote:
Ходилка уже написана. И будет мной выложена сразу после релиза.


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


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

_________________
Ни один скрипт не работает? Пора обновить Инжект...

Все работает, но хочется большего? Пора переходить на стелс...


Top
   
 Post subject: Mining, OSCOM opay
PostPosted: 2009-07-11 09:18:08 
Offline

Joined: 2006-11-25 17:44:44
Posts: 258
Часть кода содрана у Эдреда.
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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 86 posts ]  Go to page Previous 1 2 3 4 5

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 5 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited