nepret 0 Жалоба Опубликовано 18 сентября, 2012 Буду выкладывать сюда свои инклюды которые делались под наш шард. Что такое Include зачем оно нам надо... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
nepret 0 Жалоба Опубликовано 18 сентября, 2012 include Hungy(Plase : cardinal) : Boolean; Plase - Указать где искать еду ID контейнера (требуется открыть хотя бы 1 раз)Ground (ищет на земле в радиусе 2 тайлов, редактируется параметром FindDistance)Backpack сумка персонажа (требуется открыть хотя бы 1 раз) В самом инклюде, указать тип еды которую будет есть. (По умолчанию фиш стейки) пример использования: Hungry(ground); UP 19.09.2012 Добавил поддержку фраз на энглише (.lang для смены языка в клиенте) const Food = $097B; // Тип еды, которую будем кушать в процессе. // $097B - жаренная рыба // $09F2 - жаренное мясо // $171F - бананы var HungryJournalTime : TDateTime; function Hungry(Plase : cardinal) : Boolean; var VarFood : string; begin if not Connected then exit; if dead then exit; if Food = $097B then VarFood := 'жареной рыбы'; if Food = $09F2 then VarFood := 'жареного мяса'; if Food = $171F then VarFood := 'бананов'; if not (Food = $097B) or (Food = $09F2) or (Food = $171F) then VarFood := 'еды'; FindTypeEx(Food, $FFFF, Plase, True); if FindCount < 1 then begin AddToSystemJournal('>>> Нет '+ VarFood +'!'); result := false; exit; end; result := true; if HungryJournalTime = 0 then begin HungryJournalTime := Now; repeat FindTypeEx(Food, $FFFF, Plase, False); if FindCount > 0 then begin UseObject(finditem); wait(1000); end; until InJournalBetweenTimes('Я объелс|You are full', HungryJournalTime, Now) <> -1; end else begin if Now < HungryJournalTime + (1.0/1440) then exit; end; if (InJournalBetweenTimes('голодны|Вы почти умираете от голода|Ваш желудок болит|Вы чувствуете слабость|You are absolutely stuffed|You are stuffed|hungry at all|You are a little hungry|You are somewhat hungry|You are REALLY hungry|Your stomash hurts|Your stomash hurts and you feel dizzy|You are starving|You are almost dying of hunger|You are DYING of hunger', HungryJournalTime, Now) <> -1) and (LineName = 'System') and (LineTextColor = 443) then begin FindTypeEx(Food, $FFFF, Plase, False); if FindCount > 0 then UseObject(finditem); end; HungryJournalTime := Now; end; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
nepret 0 Жалоба Опубликовано 19 сентября, 2012 include Debug Инклюд предназначен для циклов типа repeat-until\while. Я в своих скриптах частенько выважу циклы на различные проверки, на появление таргета, на появлении определённой фразы при крафте или прокачке скиллов. И бывает так что они где-то зацикливаются без возможности выйти из цикла... Как правила циклов много и чтобы определить в каком именно косяк, я ставил AddToSystemJournal(название_цикла). Но эта порнуха заспамлевает весь системный журнал постоянным флудом циклов. Я прикинул х$@ к носу и решил что это как то не айс, надо найти другой способ. Потратил час своего времени и на свет появилось то что лежит ниже. Суть проста, вставляем сколько ждать до реагирования на зацикливание и сколько стоит задержка в цикле. После прохода контрольной точки времени, скрипт выдаёт в системный чат то, что вы напишете... Пример есть ниже. Хочу заметить, что проверки на сейв тут нет, по этому запускать инклюд стоит только вместе с checksave; include Debug(OperationTimeSec : integer; DelayInCycleMs : integer) : Boolean; OperationTimeSec - Сколько должно пройти времени чтобы дебагер среагировал Указывать в секундах DelayInCycleMs - Указать задержку которая стоит в цикле Указывать в миллисекундах Перед или после цикла обязательно объявить переменную "td := 0;" ! В скрипте, в константах прописать переменную "DebugMode = 0\1;" 0-Отключить 1-Включить! пример использования: repeat Debug(10, 0); until t > 10; td := 0; в скриптах: Program test; const DebugMode = 1; var t : integer; {$Include 'all.inc'} begin t := 0; td := 0; repeat if Debug(10, 0) then AddToSystemJournal('прошло 10 секунд 1-го цикла'); wait(1); t := t + 1; until t >= 10001; t := 0; td := 0; repeat if Debug(10, 100) then AddToSystemJournal('прошло 10 секунд 2-го цикла'); wait(100); t := t + 1; until t >= 101; end. debug.inc var CheckDebug, td : integer; function Debug(OperationTimeSec : integer; DelayInCycleMs : integer) : Boolean; begin if DebugMode = 1 then begin if td = 0 then CheckDebug := 1; if CheckDebug = 1 then begin if DelayInCycleMs = 0 then begin AddToSystemJournal('>>> Debug <<< Минимально-допустимая задержка в цикле := 1ms. Debug инклюд завершился с ошибкой!'); CheckDebug := 0; td := 1; exit; end; OperationTimeSec := OperationTimeSec * 1000; td := td + DelayInCycleMs; if td >= OperationTimeSec then begin result := true; CheckDebug := 0; end; end; end; end; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
nepret 0 Жалоба Опубликовано 21 сентября, 2012 Мой CheckSave.inc procedure CheckSave; var Time : TDateTime; begin Time:= Now - (0.5 / 1440); if InJournalBetweenTimes('Saving World State',Time,Now) >= 0 then repeat wait(1000); if not Connected then exit; until InJournalBetweenTimes('Saving World State complete',Time,Now) >= 0; end; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
nepret 0 Жалоба Опубликовано 21 октября, 2012 Перезаливаем инклюд Hungry Добавил выход из блока при отсутствии коннекта (при дисконекте). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
nepret 0 Жалоба Опубликовано 9 ноября, 2013 procedure OpenBackpack; begin if (LastContainer <> Backpack) and (dead = false) then begin repeat if not Connected then exit; Checksave; UseObject(Backpack); wait(1000); until LastContainer = Backpack; end; end; procedure WaitConnection(WaitTime : Integer); begin if Connected then Exit; while not Connected do Wait(1000); {WaitTime - Waiting After Connected} wait(WaitTime); end; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Sprite 0 Жалоба Опубликовано 10 апреля, 2014 а слабо скинуть папку с инклюдами Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
flap 0 Жалоба Опубликовано 3 мая, 2014 киньте пожалуйста инклюиды или чектаргет хотя бы Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
_ka 0 Жалоба Опубликовано 9 мая, 2014 Checktarget.inc function CheckTarget(SecTime : integer) : Boolean; var t : integer; begin SecTime := SecTime * 10; td := 0; t := 0; repeat if not Connected then exit; checksave; if Debug(SecTime/10,100) then AddToSystemJournal('>>> Debug <<< Блок инклюда CheckTarget '); wait(100); t := t + 1; until TargetPresent or (t >= SecTime); if t >= SecTime then result := false; if not Connected then exit; if TargetPresent then result := true; end; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Dvigan 0 Жалоба Опубликовано 11 июля, 2014 include Hungy(Plase : cardinal) : Boolean; Plase - Указать где искать еду ID контейнера (требуется открыть хотя бы 1 раз)Ground (ищет на земле в радиусе 2 тайлов, редактируется параметром FindDistance)Backpack сумка персонажа (требуется открыть хотя бы 1 раз) В самом инклюде, указать тип еды которую будет есть. (По умолчанию фиш стейки) пример использования: Hungry(ground); UP 19.09.2012 Добавил поддержку фраз на энглише (.lang для смены языка в клиенте) const Food = $097B; // Тип еды, которую будем кушать в процессе. // $097B - жаренная рыба // $09F2 - жаренное мясо // $171F - бананы var HungryJournalTime : TDateTime; function Hungry(Plase : cardinal) : Boolean; var VarFood : string; begin if not Connected then exit; if dead then exit; if Food = $097B then VarFood := 'жареной рыбы'; if Food = $09F2 then VarFood := 'жареного мяса'; if Food = $171F then VarFood := 'бананов'; if not (Food = $097B) or (Food = $09F2) or (Food = $171F) then VarFood := 'еды'; FindTypeEx(Food, $FFFF, Plase, True); if FindCount < 1 then begin AddToSystemJournal('>>> Нет '+ VarFood +'!'); result := false; exit; end; result := true; if HungryJournalTime = 0 then begin HungryJournalTime := Now; repeat FindTypeEx(Food, $FFFF, Plase, False); if FindCount > 0 then begin UseObject(finditem); wait(1000); end; until InJournalBetweenTimes('Я объелс|You are full', HungryJournalTime, Now) <> -1; end else begin if Now < HungryJournalTime + (1.0/1440) then exit; end; if (InJournalBetweenTimes('голодны|Вы почти умираете от голода|Ваш желудок болит|Вы чувствуете слабость|You are absolutely stuffed|You are stuffed|hungry at all|You are a little hungry|You are somewhat hungry|You are REALLY hungry|Your stomash hurts|Your stomash hurts and you feel dizzy|You are starving|You are almost dying of hunger|You are DYING of hunger', HungryJournalTime, Now) <> -1) and (LineName = 'System') and (LineTextColor = 443) then begin FindTypeEx(Food, $FFFF, Plase, False); if FindCount > 0 then UseObject(finditem); end; HungryJournalTime := Now; end; Что делать с поддержкой фраз на инглише и командой .lang? У меня версия игры с сайта мидлы, но рыбные стейки называются Fish Steaks, а не жаренная рыба. Может у меня из-за этого не запускается скрипт с ошибкой: 22:44:09:664 [black Pearl Hunter]: Compiling 22:44:09:689 [black Pearl Hunter]: Compiler: [Error] (C:\Games\Ultima Online\Stealth\Scripts\Black Pearl.sc at 10:307): 'BEGIN' expected 22:44:09:694 [black Pearl Hunter]: Compiling failed 22:44:09:698 [black Pearl Hunter]: Script Black Pearl.sc stopped successfuly И еще не понятно: function Hungry(Plase : cardinal) : Boolean; эту строчку надо заменить на function Hungry(Backpack); и больше ничего не надо менять в коде? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Danke 0 Жалоба Опубликовано 11 июля, 2014 Black Pearl.sc покажи чтоль... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Dvigan 0 Жалоба Опубликовано 13 июля, 2014 Black Pearl.sc покажи чтоль... Брал его из этой темы http://middle-earth.ru/forum/index.php?sho...amp;#entry83265 Там же мое последнее сообщение с вопросом по нему Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Danke 0 Жалоба Опубликовано 13 июля, 2014 Брал его из этой темы http://middle-earth.ru/forum/index.php?sho...amp;#entry83265 Там же мое последнее сообщение с вопросом по нему Это {$Include 'CheckSave.inc'}; {$Include 'Hungry.inc'}; {$Include 'waitconnection.inc'}; поменяй на это {$Include 'CheckSave.inc'} {$Include 'Hungry.inc'} {$Include 'waitconnection.inc'} Этого И еще не понятно: function Hungry(Plase : cardinal) : Boolean; эту строчку надо заменить на function Hungry(Backpack); делать не нужно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Dvigan 0 Жалоба Опубликовано 14 июля, 2014 Спасибо! Попробую теперь) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
nepret 0 Жалоба Опубликовано 15 июля, 2014 Спасибо! Попробую теперь) Читайте комментарии в скрипте, там всё описано, что и как надо менять и за что отвечает та или иная настройка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты