Перейти к содержимому

Фотография
- - - - -

проверка бафа через GetControl


Лучший Ответ Krickt, 06 Август 2016 - 15:19

var   EngineCustom: TL2Control;   UserCustom: TL2User;   Buff: TL2Buff; begin   EngineCustom:= GetControl('bla-bla');   if (EngineCustom <> nil) then   begin     UserCustom:= EngineCustom.GetUser;     if (not UserCustom.Buffs.ByID(111, Buff)) or (Buff.EndTime < 10*1000) then  ... Перейти к сообщению


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 9

#1
sasha282

sasha282
  • 233
    71
    Не выбрано
    • Lvl 40
    • Пользователь
    Skype
    Sanya628292
    Город
    Днепропетровск

Подскажите команду для проверки бафа на другом окне, через GetControl?


Сообщение отредактировал sasha282: 06 Август 2016 - 13:14

  • 0

Skype: Sanya628292 


#2
Krickt

Krickt
var
  EngineCustom: TL2Control;
  UserCustom: TL2User;
  Buff: TL2Buff;

begin
  EngineCustom:= GetControl('bla-bla');
  if (EngineCustom <> nil) then
  begin
    UserCustom:= EngineCustom.GetUser;
    if (not UserCustom.Buffs.ByID(111, Buff)) or (Buff.EndTime < 10*1000) then
    begin


    end;
  end;
end.

  • 2

#3
SARCAZM

SARCAZM

Вынесу в список скриптов, Krickt предложил отличный шаблон поверки бафа на другом боте)


  • 0

#4
sasha282

sasha282
  • 233
    71
    Не выбрано
    • Lvl 40
    • Пользователь
    Skype
    Sanya628292
    Город
    Днепропетровск
var   EngineCustom: TL2Control;   UserCustom: TL2User;   Buff: TL2Buff; begin   EngineCustom:= GetControl('bla-bla');   if (EngineCustom <> nil) then   begin     UserCustom:= EngineCustom.GetUser;     if (not UserCustom.Buffs.ByID(111, Buff)) or (Buff.EndTime < 10*1000) then     begin     end;   end; end.

Спасибо большое. Не могу только понять что дает эта строчка? Это условие ведь сработает в любом случае? Так зачем оно тогда?

 

 if (EngineCustom <> nil) then
  begin

 

Будет ли работать так: 

var  EngineCustom: TL2Control;
  UserCustom: TL2User;
  Buff: TL2Buff;


begin
  EngineCustom:= GetControl('bla-bla');
  UserCustom:= EngineCustom.GetUser;
if (not UserCustom.Buffs.ByID(111, Buff)) or (Buff.EndTime < 10*1000)  then delay (111) ;
 end.

Сообщение отредактировал sasha282: 06 Август 2016 - 17:06

  • 0

Skype: Sanya628292 


#5
Krickt

Krickt

А вдруг 2ое окно еще не запущено, а скрипт уже запущен? Тогда GetControl вернет nil, что мы и проверяем.

А если мы попробуем что-то сделать с EngineCustom, когда оно nil, то получим критическую ошибку, есть шанс крашнуть адреналин полностью.

 

Чем больше возможных критических ситуаций код предусматривает, тем он лучше. Не просто же я именно так написал. )


  • 1

#6
sasha282

sasha282
  • 233
    71
    Не выбрано
    • Lvl 40
    • Пользователь
    Skype
    Sanya628292
    Город
    Днепропетровск
А вдруг 2ое окно еще не запущено, а скрипт уже запущен? Тогда GetControl вернет nil, что мы и проверяем. А если мы попробуем что-то сделать с EngineCustom, когда оно nil, то получим критическую ошибку, есть шанс крашнуть адреналин полностью.   Чем больше возможных критических ситуаций код предусматривает, тем он лучше. Не просто же я именно так написал. )

Умно. Вот и я подумал что не просто так написана проверка, потому и решил уточнить для чего она. Теперь хоть буду знать.


Сообщение отредактировал sasha282: 06 Август 2016 - 21:43

  • 0

Skype: Sanya628292 


#7
rsd

rsd

А если мы попробуем что-то сделать с EngineCustom, когда оно nil, то получим критическую ошибку, есть шанс крашнуть адреналин полностью.

вызов мембер функции nil обьекта вполне законная операция, и ничего не положит(особенно, если внутри методов есть проверка self на nil).
нет возможности проверить, но вроде так и есть.
  • 0

#8
Krickt

Krickt

rsd,

 

Hn7v62I.png

bz0kG6a.png


  • 0

#9
rsd

rsd
значит с чем то другим попутал, сорян.
  • 0

#10
Ferz1989

Ferz1989
  • 3
    0
    Не выбрано
    • Lvl 1
    • Пользователь

эта проверка пригодиться для суммона ))) кто хочет реализовать суммон на фарм)


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Rawr.su - Сделано с для игроков.