Форум работает в тестовом режиме. Все данные были перенесены со старого сайта 2018 года. Некоторая информация может быть недоступна, например вложения или хайды. Просьба сообщать о данных случаях через функционал "Жалоба", прямо под постом, где отсуствуют данные из хайда или проблемы с вложением.
Могут быть проблемы в "выкидыванием" с форума (слетевшей авторизацией). Нужно собрать статистику таких случаев.
Есть Тема, куда можете сообщить о проблемах с сайтом либо просто передать привет.

написание условий

Рег
2 Мар 2016
Сообщения
234
Реакции
0
Пишу скрипт на ребаф. На персонаже висит фул баф, но проверка проходит условия и опять ребафает. Прошу проверить правильно ли составлены условия. Бафы разделены должны быть на 3 группы - комбо, замена комбо 52-70 (если лвл мал), остальные бафы. Ребафаться нужно если одна из групп бафов отсутствует.


Код:
...
if (user.mp>30) and ((user.classid = 52) or (user.classid = 116)) and (not user.dead) then
  if  not(((user.buffs.byid(1535,buffs)) or (buffs.EndTime<59000))
  and not ((user.buffs.byid(1517,buffs)) or (buffs.EndTime<59000))
  and not ((user.buffs.byid(1519,buffs)) or (buffs.EndTime<59000))
  and not ((user.buffs.byid(1518,buffs)) or (buffs.EndTime<59000))
  and (user.level > 70))
  or  not(((user.buffs.byid(1390,buffs)) or (buffs.EndTime<59000))
  and not ((user.buffs.byid(1309,buffs)) or (buffs.EndTime<59000))
  and not ((user.buffs.byid(1002,buffs)) or (buffs.EndTime<59000))
  and not ((user.buffs.byid(1006,buffs)) or (buffs.EndTime<59000))
  and not ((user.buffs.byid(1562,buffs)) or (buffs.EndTime<59000))
  and (user.level > 52))     
  or  not(((user.buffs.byid(1308,buffs)) or (buffs.EndTime<59000))
  and not ((user.buffs.byid(1310,buffs)) or (buffs.EndTime<59000))
  and not ((user.buffs.byid(1253,buffs)) or (buffs.EndTime<59000))
  and not ((user.buffs.byid(1253,buffs)) or (buffs.EndTime<59000))
  and not ((user.buffs.byid(1251,buffs)) or (buffs.EndTime<59000))
  and not ((user.buffs.byid(1251,buffs)) or (buffs.EndTime<59000))
  and ((user.level < 70) and (user.level > 52)))
    then begin
print ('Ребафаюсь!'); 
...
 
попробуй сделать функцию проверки времени бафа аля:


function BuffTime(ID: integer): cardinal;
var i: integer;
begin
result:= 0;
for i:= 0 to User.Buffs.Count-1 do begin
if (User.Buffs.Items(i).id = ID) then begin
result:= User.Buffs.Items(i).EndTime;
break;
end;
end;
end;

и еще одну, которая будет проверять сразу несколько бафов по заданному массиву IDшников, во 2ой использовать вышенаписанную в цикле. запись условия станет читабельней, мб так и найдешь в чем дело
 
Назад
Сверху