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

Баг в адреналине, проблема скрипта

Рег
19 Фев 2016
Сообщения
71
Реакции
0
var item:TL2Item; info:boolean; num:cardinal;NpcAttacked:cardinal; step:cardinal;


Код:
function CheakForItems(itemId:Cardinal; itemCount:Cardinal):boolean;//Возвращает True если в инвентаре определенное кол-во итемов.
begin
  if Inventory.User.ById(itemId, item) then
  begin
    if item.Count >= itemCount then
    begin
      Result := true;
    end
    else
    begin
      Result := false;
    end;
  end;
end;




begin


      while true do begin
     
       //print('LOOP');
      
       if CheakForItems(10474,1) then begin
       print('ok'); 
       end;






      delay(500);
      end;


      
   


end.



Почему даже если у нас нет АЙТЕМА функция выводит в лог 'OK'? т.е как будто функция возвращает TRUE.

но если сверху расскомментировать строчку print('LOOP'); Функция уже не возвращает 'OK' как положенно, как такое может быть? Это баг?
 
i cant explain why your is wrong but like this looks like work
Код:
function CheakForItems(itemId:Cardinal; itemCount:Cardinal):boolean;//Возвращает True если в инвентаре определенное кол-во итемов.
var item:tl2item;
begin
  if Inventory.User.ById(itemId, item)and (item.Count >= itemCount) then
      Result := true
    else
      Result := false;
end;

begin
      while true do begin
     
       //print('LOOP');
      
       if CheakForItems(57,500000001) then begin
       print('ok'); 
       end;
      delay(500);
      end;
end.
 
Тут вопрос задан нормальным программерам, которые могу объяснить данный баг или что это, как может меняться значение ФУНКЦИИ при простом раскоментировании / закоментировании функции отрпавки в ЛОГ?

т.е если сверху эту функцию не ставить ЛОГИРОВАНИЯ, то функция почему то возвращает не верный результат.



adr.bot написал(а):
i cant explain why your is wrong but like this looks like work
If u test this code IN LOG u recieve OK even if dont HAVE ITEMS.

but if we uncomment upper LOG function //print('LOOP'); we dont SAW 'ok' in LOG and this RIGHT because we dont have ITEMS in inventory, this is BUG? Test it on Adrenaline 1.71
 
@Nomad, ну ладно слово "Check" грамотно написать не все умеют... Хоть скрипты в Notepad++ научитесь писать, который поможет найти ошибку.
Странно, что компилятор не выдал ошибку, ведь не все ветви функции возвращают значение.

Ты изобрел велосипед (а он тут не нужен) и вместо одного оператора IF с двумя условиями сразу, поставил два оператора IF, каждый со своим телом, обозначенным между begin и end. В итоге и получается, что если итем в паке не найден (первая проверка), то выполнение функции сразу завершится и она так и не примет никакого значения.

FYKDMK0.jpg
 
SARCAZM написал(а):
Nomad, ну ладно слово "Check" грамотно написать не все умеют... Хоть скрипты в Notepad++ научитесь писать, который поможет найти ошибку. Странно, что компилятор не выдал ошибку, ведь не все ветви функции возвращают значение. Ты изобрел велосипед (а он тут не нужен) и вместо одного оператора IF с двумя условиями сразу, поставил два оператора IF, каждый со своим телом, обозначенным между begin и end. В итоге и получается, что если итем в паке не найден (первая проверка), то выполнение функции сразу завершится и она так и не примет никакого значения.
А ты прав Кот, на счет того что если айтемов нет, то второго условия не дано вообще и проверять их надо в одном IF. На счет ЧЕКА. скрипт не мой, я его перерабатываю под свой полностью, понадеялся на рукастость прошлого программера, т.к как код хорошо оформлен был и структура хорошая, но вот тут ошибка закралась в саму функцию.

На счет НОТПАДА он никогда такие ошибки и не покажет, компилятор и то только в каком нибудь строгом режиме, а так по теме спасибо, избавил от головной боли)
 
Спасибо, помогло, тему можно офф.
 
Назад
Сверху