Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Смена цели с игрока на моба AutоIt

-

Общение разработчиков

- Программирование для Perfect World, общение и обсуждене разработок

Ответ
 
Опции темы
Старый 19.11.2011, 18:47   #1
 Пехотинец
Аватар для Sword12
 
Sword12 скоро будет известенSword12 скоро будет известенSword12 скоро будет известенSword12 скоро будет известен
Регистрация: 09.10.2010
Сообщений: 50
Популярность: 394
Сказал(а) спасибо: 4
Поблагодарили 10 раз(а) в 4 сообщениях
 
По умолчанию Смена цели с игрока на моба AutоIt

Написал код для смены цели с игрока на моба если бот был атакован ПК (выделено оранжевым)
Все работает. Как только ПК игрок попадает в цель сразу же идет смены цели обратно на ближнего моба. Но как только дру начинает атаковать скилами моба, смена цели происходит и для моба, хотя по теории должна только происходить для тех, кого нету в $CFG_MOBLIST_MONSTER_KEYID
Подскажите где ошибка, уже 2 дня мучаюсь
Код:
Func KillTarget()
  if $CHARSTATE = 32 Then
    ;_SendMessage($HANDLE, 256, KEYCODE(IniRead($SOFTWARE_CONFIG, $CFG_HEAL_ROOT_KEY, $CFG_HEAL_AUTOREST_KEY, "")))
    stopMeditating()
    sleep(2000)
  endif
  Local $active_skill = 0
  Local $lastspirit = $SPIRIT
  Local $ts = TimerInit()
  Local $key, $timer, $w8, $loot, $loottimes, $temphomex, $temphomey, $temphomez
  If $TARGET <> 0 And $TAR = $TARGET  Then
    AddHistory("Убить моба #" & $KILLS_COUNT + 1 & " ID:[" & $TAR & "]")
    GUICtrlSetData($LABEL_GENERAL_STATUS, "Действие: Убить моба #" & $KILLS_COUNT + 1)
    If IniRead($SOFTWARE_CONFIG, $CFG_PETHEAL_ROOT_KEY, $CFG_PETATTACK_CHECK_KEY, "0") = 1 Then
      If $TARDIS > 17 And $TARHP = $TARMAXHP Then
        $MOVEING = 1
        $HIGHT = $LASTTARZ[2] / 10
        SetPetAttack($TARGET)
        If $TARDIS > 30 Then
          ;If IniRead($SOFTWARE_CONFIG, $CFG_SKILLS_ROOT_KEY, $CFG_SKILLS_FLAG_DIST, "0") = 1 Then
            ;-------------------------------------------------------------
            Local $PosX, $PosY, $PosZ, $Dist
          ;  $SKILLS_DIST = IniRead($SOFTWARE_CONFIG, $CFG_SKILLS_ROOT_KEY, $CFG_SKILLS_DIST, "1")
          ;  If $SKILLS_DIST = 0 Then
          ;    $SKILLS_DIST = 1
          ;  EndIf
            $SKILLS_DIST = 30
            $Dist = $TARDIS - $SKILLS_DIST
            $Otn = $Dist/$SKILLS_DIST
            $PosX = ($CHARX+$Otn*$LASTTARX[2])/(1+$Otn)
            $PosY = ($CHARY+$Otn*$LASTTARY[2])/(1+$Otn)
            $PosZ = ($CHARZ+$Otn*$LASTTARZ[2])/(1+$Otn)
          ;  ;-------------------------------------------------------------
            DashToXYZ($PosX, $PosY, $PosZ, $HIGHT)
          ;Else
          ;  DashToXYZ($LASTTARX[2], $LASTTARY[2], $LASTTARZ[2], $HIGHT)
          ;EndIf
        EndIf

        Do
          SetPetAttack($TARGET)
          sleep(250)    ;500
          SituationalAwareness()
          $TIMER = TimerDiff($TS)
        Until $TARHP < $TARMAXHP Or $TAR = "" or $TIMER > 10000	or $HP = 0
      EndIf
    EndIf
    Do
      sleep(250)     ;500
      SituationalAwareness()
      If $HP > 0 then
        FlyEscapeCheck()
        FLYMODE()
        HPMPAutoPotCheck()
        GetPetState()
        PetSupport()
      EndIf
      if $CHARSTATE = 32 Then
        ;_SendMessage($HANDLE, 256, KEYCODE(IniRead($SOFTWARE_CONFIG, $CFG_HEAL_ROOT_KEY, $CFG_HEAL_AUTOREST_KEY, "")))
        stopMeditating()
        sleep(2000)   ;2000
      endif
      If IniRead($SOFTWARE_CONFIG, $CFG_SKILLS_ROOT_KEY, $CFG_SKILLS_FLAG_KEY, "0") = 1 Then
        ;Check The Last Time Used The Active Skill (Delay Configured to Each Skill)
        $w8 = IniRead($SOFTWARE_CONFIG, $CFG_SKILLS_ROOT_KEY, $CFG_SKILL_DELAY_KEY & $ACTIVE_SKILL, "1")
        ;Check to see if Pet should Attack First
        If TimerDiff($SKILL_DELAY_CHECK[$ACTIVE_SKILL]) > ($w8 * 1000) And $CASTING = 0 Then
          ;Set the Active Skill
          $ACTIVE_SKILL = $ACTIVE_SKILL + 1
          If $ACTIVE_SKILL > $SKCOUNTCFG Then
            $ACTIVE_SKILL = 1
          EndIf
          ;Update the Timer to Active Skill
          $SKILL_DELAY_CHECK[$ACTIVE_SKILL] = TimerInit()
          ;Send the Skill Command to Game
          $key = IniRead($SOFTWARE_CONFIG, $CFG_SKILLS_ROOT_KEY, $CFG_SKILL_COMBO_KEY & $ACTIVE_SKILL, "0")
          ;_SendMessage($HANDLE, 256, KEYCODE(IniRead($SOFTWARE_CONFIG, $CFG_SKILLS_ROOT_KEY, $CFG_SKILL_COMBO_KEY & $ACTIVE_SKILL, "{F1}")))
          If $key = "RegAtt" Then
            ;regularAttack(0)
            CheckAction()
            useSkillAction($TARGET, 0)
            CheckAction(500)
          Else
            $Pos = _ArraySearch($ListSkill, $key,0,0,0,0,0,0)
            ;MsgBox(0, "", $ListSkill[$Pos][0]&" - "&$ListSkill[$Pos][1]&" - "&$ListSkill[$Pos][2])
            ;useSkill($key, $TARGET)
            CheckAction()
            useSkillAction($TARGET, 3, $ListSkill[$Pos][2])
            CheckAction(1000)
          EndIf
        EndIf
	EndIf
      If $TARHP = $TARMAXHP Then
        $TIMER = TimerDiff($TS)
        If $TIMER > 30000 Then
          Sleep(10)
          DeselectTarget()
        EndIf
	EndIf
	If $TAR <> IniRead($SOFTWARE_CONFIG, $CFG_MOBLIST_ROOT_KEY, $CFG_MOBLIST_MONSTER_KEYID, "") or $TAR <> IniRead($SOFTWARE_CONFIG, $CFG_MOBLIST_ROOT_KEY, $CFG_MOBLIST_MONSTERNAME_KEY, "") Then
		do 
			sleep(1000)
		AddHistory("Переключение на моба")
		  DeselectTarget()
		  SelectTarget()
		  Until $TAR = IniRead($SOFTWARE_CONFIG, $CFG_MOBLIST_ROOT_KEY, $CFG_MOBLIST_MONSTER_KEYID, "") or $TAR = IniRead($SOFTWARE_CONFIG, $CFG_MOBLIST_ROOT_KEY, $CFG_MOBLIST_MONSTERNAME_KEY, "")
	  
	  EndIf
      $TIMER = TimerDiff($TS)
  Until $TAR = 0 or $TIMER > 180000 or $HP = 0
	If $HP = 0 Then
    EndIf
    $temphomex = $HOME_X
    $temphomey = $HOME_Y
    $temphomez = $HOME_Z
    $HOME_X = $LASTTARX[2]
    $HOME_Y = $LASTTARY[2]
    $HOME_Z = $LASTTARZ[2]
    $LAST_KILLEDTIME = TimerInit()
    $SPIRIT = _MemoryRead($CHAR_DATA_BASE + $OFFSET_SPIRIT, $PROCESS_INFORMATION)

    $KILLS_COUNT = $KILLS_COUNT + 1

    If  IniRead($SOFTWARE_CONFIG, $CFG_LOOT_ROOT_KEY, $CFG_LOOT_FLAG_KEY, "0") = 1 Then
      ;sleep(1000)
      BuildItemArray()
    EndIf
    Local $tempitemarray, $tempitemarraysize, $counter, $tempitem, $tempitemdis
    $tempitemarray = $ITEMARRAY
    $tempitemarraysize = Ubound($tempitemarray)
    If GUICtrlRead($LABEL_GENERAL_STATUS) <> "Действие: Искать лут" Then
      GUICtrlSetData($LABEL_GENERAL_STATUS, "Действие: Искать лут")
    EndIf
    Global $ListLoot[$tempitemarraysize][6]
    For $n = 0 To $tempitemarraysize -1
      If $tempitemarray[$n][7] < 7 And $tempitemarray[$n][7] > 0 Then
        $counter = $counter + 1
        $ListLoot[$counter-1][0] = $tempitemarray[$n][0]  ;ID
        $ListLoot[$counter-1][1] = $tempitemarray[$n][1]  ;WID
        $ListLoot[$counter-1][3] = $tempitemarray[$n][3]  ;X
        $ListLoot[$counter-1][4] = $tempitemarray[$n][4]  ;Y
        $ListLoot[$counter-1][5] = $tempitemarray[$n][5]  ;Z
        $HIGHT =  $tempitemarray[$n][5] / 10
        ;$HIGHT =  0
      EndIf
    Next
    If $counter > "" Then
      $loot = 1
      ;$loottimes = $counter * 8
      $loottimes = $counter
    EndIf
    If $TARDIS > 6 And $LOOT = 1 Then
      GUICtrlSetData($LABEL_GENERAL_STATUS, "Действие: Подойти к уб.мобу")
      Do
        sleep(500)
        SituationalAwareness()
      Until $ACTIONFLAG = 0 or $HP = 0
      If IniRead($SOFTWARE_CONFIG, $CFG_HEAL_ROOT_KEY, $CFG_HEAL_MOVE_TO_CORPSE_KEY, "0") = 1 And IniRead($SOFTWARE_CONFIG, $CFG_LOOT_ROOT_KEY, $CFG_LOOT_FLAG_KEY, "0") = 1 Then
        $MOVEING = 1
        $MTLT = TimerInit()
        Do
          sleep(50)   ;500
          SituationalAwareness()
          $Timer = TimerDiff($MTLT)
        Until $CASTING = 0 Or $Timer > 500 or $HP = 0   ;1500
        sleep(10)
        MoveToXYZ($LASTTARX[2], $LASTTARY[2], $LASTTARZ[2], $HIGHT)
      EndIf
      $MOVEING = 0
      $LASTGATHERED = 0
    EndIf
			
    If $LOOT = 1 And IniRead($SOFTWARE_CONFIG, $CFG_LOOT_ROOT_KEY, $CFG_LOOT_FLAG_KEY, "0") = 1 Then
      ;If $loottimes = 1 Then
      ;  AddHistory("Поднят 1 предмет")

      ;Else
        ;AddHistory("Поднято " & $loottimes / 8 & " предмет(-а,-ов)")
        ;CheckAction()
        PickLoot($loottimes)
        AddHistory("Поднято " & $loottimes & " предмет(-а,-ов)")
      ;EndIf
    EndIf
    if $HP > 0 then
      HPMPRestoreCheck()
    endif
    $HOME_X = $temphomex
    $HOME_Y = $temphomey
    $HOME_Z = $temphomez
  EndIf
  $ATHOME = 0
EndFunc		;==>
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Подсказка] Опыт, дроп, урон в зависимости от уровня игрока и моба. alex02005 Статьи, квесты и описания по Perfect World 12 30.09.2011 11:08
[Продам] Продам игрока в Free Style online Игрока эрика den1777 Другие игры 0 09.09.2011 18:53

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 21:58.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net