Yoko

All sides of Injection
It is currently 2025-12-17 01:19:45

All times are UTC+02:00




Post new topic  Reply to topic  [ 15 posts ] 
Author Message
PostPosted: 2007-04-28 18:18:24 
Offline
User avatar

Joined: 2005-07-17 15:30:52
Posts: 308
Location: www.drw.ru
Ниже часть большого скрипта на пвп, после пропущенной строки идет часть скрипта в которой заключается проблема, при ее присутствии скрипт не делает вообще ничего ни при каких уловиях, если ее вырезать, работает нормально, она отвечает за использование бутылок, подскажите что в ней не так?

Code:
sub StartPvP()
var replay, x, y, dx, dy, hp, str, dex, int, mana, id, name, serial = '0x00000000'
str = uo.str
dex = uo.dex
int = uo.int
uo.deletejournal()
while not uo.dead()
  replay = 0
  name = uo.getname('lastattack')
  if serial <> uo.getserial('lastattack') then
    uo.concolor('0x0085')
    uo.print('New Aim Detected')
    uo.print('Spell: Clumsy >>> '+name)
    uo.concolor('0x0000')
    uo.deletejournal('Uus jux')
    uo.deletejournal('The spell fizzles.')
    mana = uo.mana
    uo.cast('Clumsy', 'lastattack')
    repeat
      wait(10)
    until uo.injournal('Uus Jux')
    uo.msg(' ')
    uo.msg(' ')
    uo.msg(' ')
    repeat
      wait(100)
    until uo.injournal('The spell fizzles.') or uo.mana < mana
    uo.attack('lastattack')
    serial = uo.getserial('lastattack')
  else
    serial = uo.getserial('lastattack')
  endif   
  if uo.injournal('You are frozen') then
    uo.setglobal('CancelSpell', '1')
    replay = 1
    x = uo.getx('self')
    y = uo.gety('self')
    hp = uo.life()
    uo.findtype('0x0F03', '0x09CF')
    if uo.findcount() > 0 then
      uo.concolor('0x0085')
      uo.print('Frozen Detected')
      uo.print('Spell: Magic Arrow >>> Antifreeze')
      uo.concolor('0x0000')
      repeat
        uo.deletejournal('The spell fizzles.')
        uo.deletejournal('In Por Ylem')
        uo.waittargetobject('finditem')
        uo.cast('Magic Arrow')
        repeat
          wait(10)
        until uo.injournal('In Por Ylem')
        uo.msg(' ')
        uo.msg(' ')
        uo.msg(' ')
        repeat
          wait(100) 
          dx = uo.getx('self')
          dy = uo.gety('self')
        until x <> dx or y <> dy or uo.injournal('The spell fizzles.') or uo.life < hp
      until not uo.injournal('The spell fizzles.')
    else
      uo.concolor('0x0085')
      uo.print('!!!Antifreeze not found!!!')
      uo.concolor('0x0000')
      repeat
        wait(100) 
        dx = uo.getx('self')
        dy = uo.gety('self')
      until x <> dx or y <> dy
    endif
    uo.deletejournal('You are frozen')
    uo.attack('lastattack')
    uo.setglobal('CancelSpell', '0')
  else
    if val(uo.getglobal('BottleTime')) == 0 then
      if replay == 0 then
        if uo.life < (str/3) then       
          replay = 1
          uo.usetype('0x0F0E', '0x09BB')
          uo.exec('exec BottleTimer')
        else
          if uo.mana < (int-50) then
            replay = 1
            uo.usetype('0x0F0E', '0x09BB')
            uo.exec('exec BottleTimer')
          else
            if uo.stamina < (dex/5) then
              replay = 1
              uo.usetype('0x0F0E', '0x0997')
              uo.exec('exec BottleTimer')
            else
              wait(10)
            endif
          endif
        endif
      else
        wait(10)
      endif
    else
      wait(100)
    endif
  endif
wend
end sub

sub BottleTimer()
uo.setglobal('BottleTime', '1')
wait(10000)
uo.setglobal('BottleTime', '0')
end sub


Last edited by Sanch on 2007-05-02 10:38:55, edited 3 times in total.

Top
   
 Post subject:
PostPosted: 2007-04-28 18:47:08 
Offline

Joined: 2005-01-06 11:49:28
Posts: 205
А чё за функция val() ?


Top
   
 Post subject:
PostPosted: 2007-04-28 18:58:16 
Offline
User avatar

Joined: 2005-07-17 15:30:52
Posts: 308
Location: www.drw.ru
Точно не помню, она что-то во что-то преобразует, без нее работать не будет, проверь сам, мне обьясняли как то давно, но я уже забыл.

Code:
sub test()
var a, b
uo.setglobal('aim', '1')
a = uo.getglobal('aim')
b = val(uo.getglobal('aim'))
uo.print('aim '+str(a))
uo.print('aim '+str(b))
end sub


"а" вроде будет равно 0, а "b" как и задумано 1


Top
   
 Post subject:
PostPosted: 2007-04-28 20:58:10 
Offline
Expert!
User avatar

Joined: 2006-02-25 21:48:38
Posts: 1032
Rivory wrote:
А чё за функция val() ?

!RTFM!

_________________
DerMeister сейчас на нейрале!


Top
   
 Post subject:
PostPosted: 2007-04-30 10:40:23 
Offline
User avatar

Joined: 2005-07-17 15:30:52
Posts: 308
Location: www.drw.ru
А что нить кроме флуда сдесь появится?


Top
   
 Post subject:
PostPosted: 2007-04-30 14:02:47 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
После звёздочек идёт только пауза 10сек, а вот изменение глобалок - может влиять.

Только вот ты нужный фрагмент кода как раз обрезал..

Почитай код внимательнее.

_________________
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Skype: d119060


Top
   
 Post subject:
PostPosted: 2007-05-02 10:22:12 
Offline
User avatar

Joined: 2005-07-17 15:30:52
Posts: 308
Location: www.drw.ru
Звездочками я обозначил продолжение самого скрипта, endif от проблемного элемента там присутствует в нужном месте, весь скрипт не стал выкладывать тк там представлены нетривеальные решения проблем в пвп, в своих интересах не стал выкладывать фактически готовый продукт, на написание которого ушло не мало времени.

Отпостил полную, но значительно урезанную копию скрипта, см выше.


Top
   
 Post subject:
PostPosted: 2007-05-02 22:58:13 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Сам BattleTimer проблем вызывать не может - всего три банальных строки.

В скрипте я вижу такие строки:
Code:
    if val(uo.getglobal('BottleTime')) == 0 then 
      if replay == 0 then
        if uo.life < (str/3) then       
          replay = 1
          uo.usetype('0x0F0E', '0x09BB')
          uo.exec('exec BottleTimer')
        else
          if uo.mana < (int-50) then
            replay = 1
            uo.usetype('0x0F0E', '0x09BB')
            uo.exec('exec BottleTimer')
          else
            if uo.stamina < (dex/5) then
              replay = 1
              uo.usetype('0x0F0E', '0x0997')
              uo.exec('exec BottleTimer')
            else
              wait(10)
            endif
          endif
        endif
      else
        wait(10)
      endif
    else
      wait(100)
    endif


Которые непосредственно связаны со скриптом BottleTimer, но в них тоже не вижу ничего, что могло быть не так.

_________________
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Skype: d119060


Top
   
 Post subject:
PostPosted: 2007-05-02 22:59:47 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Sanch wrote:
Звездочками я обозначил продолжение самого скрипта, endif от проблемного элемента там присутствует в нужном месте, весь скрипт не стал выкладывать тк там представлены нетривеальные решения проблем в пвп, в своих интересах не стал выкладывать фактически готовый продукт, на написание которого ушло не мало времени.

Отпостил полную, но значительно урезанную копию скрипта, см выше.

Если ты действительно думаешь, что кто-то кто может читать код не может придумать решение такое же / лучше твоего - ты крупно ошибаешся.

_________________
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Skype: d119060


Top
   
 Post subject:
PostPosted: 2007-05-02 23:14:31 
Offline
Expert!
User avatar

Joined: 2005-09-14 15:31:58
Posts: 2152
Location: Latvia
DerMeister =) wrote:
Rivory wrote:
А чё за функция val() ?

!RTFM!


грубовато :lol:

_________________
Уроки языка Injection
Основные команды языка Injection
Yoko Injection Code Sweeper
Drw (2009) скрипты
2017 Начал играть на Uorpg.net


Top
   
 Post subject:
PostPosted: 2007-05-03 06:57:00 
Offline
User avatar

Joined: 2005-07-17 15:30:52
Posts: 308
Location: www.drw.ru
Quote:
Если ты действительно думаешь, что кто-то кто может читать код не может придумать решение такое же / лучше твоего - ты крупно ошибаешся.


Я так не думаю, просто не хочу чтобы у любого игрока с моего шарда была возможность скачать этот скрипт, вот и все. Все эксперты утверждали, что единый скриптовый массив на пвп делающий большенство действий за игрока - бред, я просто пытаюсь доказать обратное, пока не очень получается :) , хотя есть значительные успехи. Проблема скрипта в том что он всегда начинает запускать ботлтаймеры один за одним, при условии что банку он не съел, тк ее в паке не было, почему это происходит понять не могу :( .

Сделал его в скрипте отдельной процедурой, правда это не дало желаемого эффекта.

Code:
    if uo.life < str/3 or uo.mana < int-50 or uo.stamina < dex/5 then
      if val(uo.getglobal('BottleTime')) == 0 then
        if uo.life < str/3 then       
          uo.usetype('0x0F0E', '0x09BB')
          uo.exec('exec BottleTimer')
        else
          if uo.mana < int-50 then
            uo.usetype('0x0F0E', '0x09BB')
            uo.exec('exec BottleTimer')
          else
            if uo.stamina < dex/5 then
              uo.usetype('0x0F0E', '0x0997')
              uo.exec('exec BottleTimer')
            else
              wait(10)
            endif
          endif
        endif
      else
        wait(10)
      endif
    else
      wait(10)
    endif


Top
   
 Post subject:
PostPosted: 2007-05-03 08:31:14 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Хмм, один за одним - та запросто.

Вобщем проблему осознал :)

Перед попыткой выпить банку - добавь проверочку, есть ли вообще такая баночка.

Если нет - соответсвенно не вызывать боттлтаймер и использвовать альтернативные методы восстановления тех или иных характеристик.

_________________
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Skype: d119060


Top
   
 Post subject:
PostPosted: 2007-05-03 09:35:09 
Offline
User avatar

Joined: 2005-07-17 15:30:52
Posts: 308
Location: www.drw.ru
Сейчас попробую, но почему он игрорирует проверку глобальной переменной котороя меняется не зависемо от наличия бутылки остается загадкой.


Top
   
 Post subject:
PostPosted: 2007-05-03 10:10:07 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Sanch wrote:
Сейчас попробую, но почему он игрорирует проверку глобальной переменной котороя меняется не зависемо от наличия бутылки остается загадкой.

Из твоих слов он следует, что он-таки не игнорирует.

Задумайся над логикой скрипта и своих слов.

_________________
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Skype: d119060


Top
   
 Post subject:
PostPosted: 2007-05-03 14:58:00 
Offline
User avatar

Joined: 2005-07-17 15:30:52
Posts: 308
Location: www.drw.ru
Полностью изменил скрипт на использование бутылок, добавил их пересчет в начало скрипта, работает на ура. Что касается предыдущего, то при запуске ботлтаймера переменная менялась на единицу, при этом основной скрипт при проверке равна ли переменная нулю, делал одно и то же, да же если нулю она не ровнялась.

Пара вопросов: кто нить знает какой нить ярко красный цвет в уо (который можно использовать для сообщений инжекта типа uo.concolor('0х0085') ), и второе, то что ID сообщений сервера определяется как 0x00000000 - это нормально? Речь идет о сообщениях о том, что тебя травит ядом или ты парализован, тестил я правда это пока только на локальной сфере.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 15 posts ] 

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 12 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