Page 1 of 1

Corpses autoopen

Posted: 2004-08-11 03:45:52
by CANNABIS
Люди подскажи как сделать так,что на клопку можно было пробиндить вклучение этой функции и выключение,если какой нить скрипт,что можно было сделать так ?
заранее спасибо

Posted: 2004-08-11 16:36:30
by Lord Ruslan Nightmare
Включение - ,exec имяфункции
Выключение - ,terminate имяфункции

Можно сделать в функии много проверок на голбальную переменную. Тогда можно делать не exec и terminate, а 1 раз сделать exec, а потом просто вызывать которкий скрипт, выставляющий эту самую глобальную переменную

Posted: 2004-08-12 16:48:31
by CANNABIS
Цикл с проверкой на появление новых вещей на земле по тапам?
Не дадите типы, какие надо искать или примерный скрипт?
Спасибо.

Posted: 2004-08-12 18:05:34
by Lord Ruslan Nightmare
Трупы бывают разные (ля-ля-ля-ля-ля) - черные, белые красные...

у каждого вида трупов свой тип.
Обнаружение трупов можно вести через журнал

Code: Select all

var corpse
while uo.injournal("Body of")
  corpse = uo.journalserial(uo.injournal("Body of")-1)
  # тут обработка трупа
  #...
  #перейти к следующему
  uo.setjournalline(uo.injournal("Body of")-1,"none")
wend

Posted: 2004-08-19 22:15:51
by CANNABIS
1.Ну хорошо, а как мне обнаружить объект. Какая переменная сожержит ссылку на объект.

2.Положим, у нас есть труп на земле, на него указывает corpse_ptr. Что дальше, как труп-то открыть - useobject'ом?

Спасибо.Пишите.

Posted: 2004-08-22 14:52:56
by Lord Ruslan Nightmare

Code: Select all

sub Looter()
  var i = 0,j = 0,k
  var corpse
  dim buf[7] #буфер для трупов
  for i = 0 to 6
    buf[i] = "0x00000000"
  next
  uo.deletejournal()
  while 1
    while uo.injournal("Body of")
      i = 0
      while i < 7
        if buf[i] == "0x00000000" then
          k = uo.injournal("Body of")-1
          buf[i] = uo.journalserial(k)
          i = 7
          uo.setjournalline(k,"deleted")
        endif
        i = i + 1
      wend
    wend
    for k = 0 to 6
      if buf[k] <> "0x00000000" and abs(uo.getx()-uo.getx(buf[k])) <= 3 and abs(uo.gety()-uo.gety(buf[k])) <= 3 then
        uo.useobject(buf[k])
        wait(100)
        corpse = buf[k]
        uo.useobject(corpse)
        buf[k] = "0x00000000"
      endif
    next
    wait(1000)
  wend
end sub


выжимки из моего скрипта.

P.S. Поскольку ты знаешь умное слово "ptr", то написать функцию abs() тебе труда не составит :)