Slider 0 Жалоба Опубликовано 5 сентября, 2012 Silver, Valorite - до 97 Celestite, Eyrithrite - до 107 Mythril - до 117 Adamntine, Aqua ( + любая др выха) - до 120. При наличии руды и повер скроллов, с 50 до 120 качается часа за 4 примерно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
nepret 0 Жалоба Опубликовано 5 сентября, 2012 Задержку на гвардс поставь минимум 2 секунды. А то твои боты одновременно начинают флудить гвардс, что вызывает немалое кол-во гвардов, за счет чего нагрузка серва увеличивается. Буду сквелчить в след раз. в скрипте выше гвардс ДОЛЖЕН повторяться не чаще чем 5 секунд при появлении моба, но к сожалению всё в точности наоборот =( если увидишь что мои часто орут, ставь сквеч, я хоть буду знать что что-то не так... вчера переделал гвардс, за сутки вроде сбоев небыло procedure MobDetected; var Mob : array [0..1] of cardinal; t, i : integer; begin if not dead then begin if InJournalBetweenTimes('attacking you', mdtime, Now) <> -1 then begin mdtime := Now; UOSay('.guards'); end; Mob[0] := $0033; Mob[1] := $000E; FindDistance := 5; FindVertical := 100; for i := 0 to 1 do begin FindTypeEx(Mob[i], $FFFF, Ground, False); if FindCount > 0 then begin repeat repeat UOSay('.guards'); wait(2000); FindTypeEx(Mob[i], $FFFF, Ground, False); until (FindCount < 1) or (t >= 6000); break; until false end; end; FindDistance := 100; FindVertical := 1; end; end; Про прокачку руды: на мифриле качается до 120... так же остальная выха тоже качает. Бери каждого вида руды по 1 штуке и пробуй плавить.. если очки идут - плавь на ней) пробовал... идёт так медленно что проще в минок шахте до 120 докачать с киркой дело говорит... создай нуба.. выбери ему в первичных скиллах мининг.. у него будет нуби кирка, которая не ломается... ей из сумки и копай... уже так раз 10 сделал)) осталось допилить скрипт на спарринг и будет красота так же у тебя в скрипте, когда чар дохнет... он запоминает место, где сдох.. и после реса возвращается к нему... в чем проблема включить лутание своего трупа? зачастую воры оставляют армор и кирку в трупе.. самое ценное что было в трупе, это руда! а она 99% тю-тю Вообще стелс с очень хорошей ходилкой.. но для меня это далеко... я к сожалению не выношу паскаль.. сам не знаю почему.. большие скрипты на инжекте у меня не выходят( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
MeSSiR 0 Жалоба Опубликовано 5 сентября, 2012 Не... по гвардсу у тебя смотри что получается... появляется моб... твой орет гвардс.. ждет 2 секунды и смотрит опять его наличие... так как после команды пока вылезет гвард и убьет моба проходит больше времени... соответственно он орет второй раз.. и так далее пока не исчезнет моб.. По прокачке мининга... слайдер.. мифрил до 120 пилит... аква не тащит до 120... и останавливается толи на 110 толи на 115... качал мининг 6-и чарам с 33-х до 120 стабильно 4,5 часа) В трупе руда может и остаться... например тебя убил моб, не относящийся к элементу... Да.. у тебя еще мало проверок на смерть... при каждом перелете проверяйся на дохлость... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
nepret 0 Жалоба Опубликовано 5 сентября, 2012 Не... по гвардсу у тебя смотри что получается... появляется моб... твой орет гвардс.. ждет 2 секунды и смотрит опять его наличие... так как после команды пока вылезет гвард и убьет моба проходит больше времени... соответственно он орет второй раз.. и так далее пока не исчезнет моб.. предложи на пальцах более цивилизованный способ через игнор не вышло... бывает глючит и чар дохнет от моба Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kallish 0 Жалоба Опубликовано 5 сентября, 2012 бывает глючит и чар дохнет от моба поэтому я и говорю что нужно добавлять хилинг и страховку на клик киркой добавлять фразу гвардс) CheckDead; CheckPickaxe; SetWarMode(true); uosay('.bandage self'); uosay('.guards); UseObject(ObjAtLayer(RhandLayer)); t := 0; repeat wait(50); checksave; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
nepret 0 Жалоба Опубликовано 5 сентября, 2012 это костыли, причём очень кривые Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kallish 0 Жалоба Опубликовано 5 сентября, 2012 Ну, у меня мозгов на что хватает, то и делаю =))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
nepret 0 Жалоба Опубликовано 6 сентября, 2012 Навоял скрипт на спарринг. Настраиваем переменные. Ставим "куклу" так, чтобы перед ней на расстоянии 1 тайла не было чаров. Ставим атакующего так, чтобы он смотрел на того, кого атаковать. Кидаем под ноги (в радиусе 2 тайлов) бинты и еду. Запускаем скрипт на обоих чарах. ЗЫ: Скрипт писал ночью, вроде рабочий... Если есть желание, по тестируйте и отпишитесь о работоспособности. Program Sparring; const VarHeal = 1; // 0-Счёт по кол-ву хп; 1-По Процентному соотношению MinHP = 50; // Если "VarHeal = 0", то ставим количество хп при котором надо лечиться, // если "VarHeal = 1", то ставим количество процентов при котором начинаем лечиться. Food = $097B; //Тип еды. Сейчас Фиш-стейки. DebugMode = 0; //Выдавать информацию в системный журнал (Включать при отслеживании ошибок в скрипте). var CharX, CharY, IDDoll, Role, CheckVarHeal, Error, dbt: integer; htime, ftime : TDateTime; {$Include 'checksave.inc'} function CheckDead : Boolean; begin if Role = 1 then begin if GetHP(IDDoll) < 1 then begin Error := 1; result := true; SetGlobal('stealth',IntToStr(self),'0') AddToSystemJournal('>>> Кукла мертва! Скрипт завершает работу!'); end; end; if Role = 0 then begin if Dead then begin Error := 1; result := true; SetGlobal('stealth',IntToStr(self),'0') AddToSystemJournal('>>> Я мёртв! Скрипт завершает работу!'); end; end; end; procedure Hungry; var FoodID : Cardinal; begin if DebugMode = 1 then begin AddToSystemJournal('>>> Debug <<< Hungry блок'); end; if Not Connected then Exit; if ftime <= Now then begin FindType(Food,Ground); if FindCount > 0 then begin ftime := ftime + 15.0/(24*60*3); FoodID := FindType(Food,Ground); if FoodID <> $00 then UseObject(FoodID); wait(200); end; end; end; procedure CheckRes; begin if DebugMode = 1 then begin AddToSystemJournal('>>> Debug <<< CheckRes блок'); end; FindTypeEx($0E21, $FFFF, Ground, False); if FindCount < 1 then begin Error := 1; AddToSystemJournal('>>> На полу нет бинтов! Скрипт дальше работать НЕ БУДЕТ!'); end; FindTypeEx(Food, $FFFF, Ground, False); if FindCount < 1 then begin Error := 1; AddToSystemJournal('>>> На полу нет еды! Скрипт дальше работать НЕ БУДЕТ!'); end; if Error = 1 then begin if WarMode then SetWarMode(False); SetGlobal('stealth',IntToStr(IDDoll),'0'); exit; end; Hungry; end; procedure Heal; var t : integer; begin if DebugMode = 1 then begin AddToSystemJournal('>>> Debug <<< Heal блок'); end; dbt := 1; while HP < MaxHP do begin if (DebugMode = 1) and (dbt = 1) then begin AddToSystemJournal('>>> Debug <<< Heal блок > первичный цикл...'); dbt := 0; end; FindTypeEx($0E21, $FFFF, Ground, False); if FindCount > 0 then begin if targetpresent then canceltarget; htime := Now; UseObject(finditem); t := 0; dbt := 1; repeat if (DebugMode = 1) and (dbt = 1) then begin AddToSystemJournal('>>> Debug <<< Heal блок > цикл проверки таргета...'); dbt := 0; end; wait(100); CheckSave; t := t + 1; until TargetPresent or (t >= 50); t := 0; WaittargetSelf; end; dbt := 1; repeat if (DebugMode = 1) and (dbt = 1) then begin AddToSystemJournal('>>> Debug <<< Heal блок > цикл ожидания фразы...'); dbt := 0; end; wait(100); CheckSave; t := t + 1; until (InJournalBetweenTimes('You were|You have healed|The patient|You must', htime, Now) <> -1) or (t >= 300) or dead; t := 0; htime := Now; end; end; procedure CheckRole; var i : integer; TypeDoll : array [0..1] of cardinal; begin if PredictedDirection = 0 then begin CharX := GetX(self); CharY := GetY(self) - 1; end; if PredictedDirection = 4 then begin CharX := GetX(self); CharY := GetY(self) + 1; end; if PredictedDirection = 2 then begin CharX := GetX(self) + 1; CharY := GetY(self); end; if PredictedDirection = 6 then begin CharX := GetX(self) - 1; CharY := GetY(self); end; if PredictedDirection = 1 then begin CharX := GetX(self) + 1; CharY := GetY(self) - 1; end; if PredictedDirection = 5 then begin CharX := GetX(self) - 1; CharY := GetY(self) + 1; end; if PredictedDirection = 3 then begin CharX := GetX(self) + 1; CharY := GetY(self) + 1; end; if PredictedDirection = 7 then begin CharX := GetX(self) - 1; CharY := GetY(self) - 1; end; if WarMode then SetWarMode(False); TypeDoll[0] := $0190; TypeDoll[1] := $0191; Ignore(self); for i := 0 to 1 do begin repeat FindTypeEx(TypeDoll[i], $FFFF, Ground, False) if FindCount > 0 then begin if (GetX(finditem) = CharX) and (GetY(finditem) = CharY) and (GetHP(finditem) > 0) then begin IDDoll := finditem; SetGlobal('stealth',IntToStr(IDDoll),'0'); Role := 1; AddToSystemJournal('Выбрана роль атакующего...'); exit; end else begin Ignore(finditem); end; end; until FindCount < 1; end; SetGlobal('stealth',IntToStr(self),'0'); Role := 0; AddToSystemJournal('Выбрана роль куклы...'); Heal; end; procedure PlayRole; begin if Role = 1 then begin if CheckDead then exit; CheckRes; if Error = 1 then exit; if GetGlobal('stealth',IntToStr(IDDoll)) = IntToStr(1) then begin if (WarTargetID <> IDDoll) then attack(IDDoll); end else begin if WarMode then SetWarMode(False); end; end; if Role = 0 then begin if CheckDead then exit; CheckRes; if Error = 1 then exit; if HP <= CheckVarHeal then begin dbt := 1; repeat if (DebugMode = 1) and (dbt = 1) then begin AddToSystemJournal('>>> Debug <<< PlayRole блок > цикл куклы...'); dbt := 0; end; SetGlobal('stealth',IntToStr(self),'0'); Heal; CheckRes; if (Error = 1) or CheckDead then exit; until HP = MaxHP; end; SetGlobal('stealth',IntToStr(self),'1'); end; end; begin Error := 0; htime := Now; ftime := Now; SetARStatus(true); SetPauseScriptOnDisconnectStatus(true); if VarHeal = 1 then begin CheckVarHeal := GetMaxHP(Self)*MinHP/100; end else begin CheckVarHeal := MinHP; end; CheckRole; dbt := 1; repeat if (DebugMode = 1) and (dbt = 1) then begin AddToSystemJournal('>>> Debug <<< Главный блок > Главный цикл...'); dbt := 0; end; if Error = 1 then begin SetARStatus(false); SetPauseScriptOnDisconnectStatus(false); Disconnect; exit; end; PlayRole; wait(100); until false; end. 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); until InJournalBetweenTimes('Saving World State complete',Time,Now) >= 0; end; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kallish 0 Жалоба Опубликовано 11 сентября, 2012 Создал двух файтеров, тесчу) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
nepret 0 Жалоба Опубликовано 11 сентября, 2012 лично у меня он работает без безотказно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kallish 0 Жалоба Опубликовано 11 сентября, 2012 Program My_Fishing_3; {$Include 'all.inc'} type WaterRecord = Record t,x,y,z,a: integer; end; var WaterTile: array[0..50] of integer; WaterPlace: array[0..500] of WaterRecord; WaterCount: integer; x,y,c,a,i: integer; s: boolean; const mainbag = $58E2D123; //сумка с добычей fishpole = $0DBF; //удочка(или сети) dagger = $0F51; //дагер Trash = $5A399B81; //Мусорка cut = 0; //1-Резать рыбу(даггер в руки), 0-не резать procedure CheckGold; var bag : Cardinal; Begin repeat Ignore(mainbag); findtype($0e75,ground); if (FindCount >= 1) and (GetDistance(finditem) <=2) and (GetDistance(finditem) >=0) and connected and (not dead) then begin bag := finditem; useobject(bag); wait(100); MoveItem(findtype($0EED,bag), 0, mainbag, 0, 0, 0); wait(100); MoveItem(bag, 0, Trash, 0, 0, 0); end; until (FindCount < 1) or dead; End; procedure MoveSos; begin repeat FindType($099F, backpack); if (FindCount >= 1) and (GetDistance(finditem) <=2) and (GetDistance(finditem) >=0) and connected and (not dead) then begin wait(100); MoveItem(finditem, 0, Trash, 0, 0, 0); wait(100); end; until (FindCount < 1) or dead; end; procedure MoveMap; begin repeat FindType($14ED, ground); if (FindCount >= 1) and (GetDistance(finditem) <=2) and (GetDistance(finditem) >=0) and connected and (not dead) then begin wait(100); MoveItem(finditem, 0, Trash, 0, 0, 0); wait(100); end; until (FindCount < 1) or dead; end; procedure seaweed; begin repeat FindType($0DBA, ground); if (FindCount >= 1) and (GetDistance(finditem) <=2) and (GetDistance(finditem) >=0) and connected and (not dead) then begin wait(100); MoveItem(finditem, 0, Trash, 0, 0, 0); wait(100); end; until (FindCount < 1) or dead; end; procedure fishgrab; begin if FindType($09CC, ground) > 0 then MoveItem(finditem, 0, mainbag, 0, 0, 0); if FindType($09CD, ground) > 0 then MoveItem(finditem, 0, mainbag, 0, 0, 0); if FindType($09CE, ground) > 0 then MoveItem(finditem, 0, mainbag, 0, 0, 0); if FindType($09CF, ground) > 0 then MoveItem(finditem, 0, mainbag, 0, 0, 0); if FindType($14EB, ground) > 0 then MoveItem(finditem, 0, mainbag, 0, 0, 0); if FindType($0DD6, ground) > 0 then MoveItem(finditem, 0, mainbag, 0, 0, 0); if FindType($0DD7, ground) > 0 then MoveItem(finditem, 0, mainbag, 0, 0, 0); if FindType($0DD8, ground) > 0 then MoveItem(finditem, 0, mainbag, 0, 0, 0); end; procedure CheckDagger; begin if (cut = 1) and (RHandLayer<>dagger) then begin Equipt(RHandLayer, dagger); end; if cut = 0 then begin unequip(RHandLayer); end; end; procedure CheckWaterTile; var t: integer; LCount: integer; TTile: TStaticCell; begin TTile:=ReadStaticsXY(x, y, WorldNum); LCount:=GetLayerCount(x, y, WorldNum); i:=0; while i < LCount do begin for t:=0 to 6 do begin if TTile.Statics[0].Tile=WaterTile[t] then begin WaterPlace[c].t:=TTile.Statics[0].Tile; WaterPlace[c].x:=x; WaterPlace[c].y:=y; WaterPlace[c].z:=TTile.Statics[0].z; WaterPlace[c].a:=1; c:=c+1; end; end; i:=i+1; end; end; procedure FindWaterTile; begin for x:=GetX(self)-7 to GetX(self)+7 do for y:=GetY(self)-7 to GetY(self)+7 do begin CheckWaterTile; end; WaterCount:=c-1; end; procedure Fishing; begin for a:=0 to WaterCount do begin if WaterPlace[a].a = 1 then begin WaitTargetTile(WaterPlace[a].t, WaterPlace[a].x, WaterPlace[a].y, WaterPlace[a].z); wait(3000); if Length(LastJournalMessage)=34 then begin WaterPlace[a].a:=0; AddToSystemJournal('Заброкован таил'); ClearJournal; end; UseType(fishpole, 0); if cut = 0 then begin fishgrab; end; CheckGold; MoveSos; MoveMap; seaweed; end; end; end; begin s:=true; WaterTile[0]:=6040; WaterTile[1]:=6039; WaterTile[2]:=6041; WaterTile[3]:=6043; WaterTile[4]:=6044; WaterTile[5]:=6042; WaterTile[6]:=6044; FindWaterTile; AddToSystemJournal('Найдено тайлов для рыбалки: '+IntToStr(WaterCount)); while not Dead and s do begin if cut = 1 then begin CheckDagger; end; Fishing; end; end. Фишинг с берега работает у нас) Честно-стыреный с одного из форумов скрипт) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kallish 0 Жалоба Опубликовано 11 сентября, 2012 nepret, у меня сдох один чар я не понял как ) да на инжекте уже по-привычней в спаринге качать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
nepret 0 Жалоба Опубликовано 12 сентября, 2012 nepret, у меня сдох один чар я не понял как ) да на инжекте уже по-привычней в спаринге качать. хеал настроен? добавил проверку на оружие новые стволы берёт из бекпака тустим... немного переделал скрипт, пробуйте: Program Sparring; const VarHeal = 1; // 0-Счёт по кол-ву хп; 1-По Процентному соотношению MinHP = 30; // Если "VarHeal = 0", то ставим количество хп при котором надо лечиться, // если "VarHeal = 1", то ставим количество процентов при котором начинаем лечиться. Food = $097B; //Тип еды. Сейчас Фиш-стейки. DebugMode = 0; //Выдавать информацию в системный журнал (Включать при отслеживании ошибок в скрипте). var CharX, CharY, IDDoll, Role, CheckVarHeal, Error, dbt, RLayer, LLayer: integer; NameRWeapon, NameLWeapon : String; htime, ftime : TDateTime; {$Include 'checksave.inc'} procedure CheckConnect; var dbt : integer; begin if DebugMode = 1 then begin AddToSystemJournal('>>> Debug <<< CheckConnect блок'); end; if not Connected then begin dbt := 0; repeat dbt := dbt + 1; if (DebugMode = 1) and (dbt = 30) then begin AddToSystemJournal('>>> Debug <<< CheckConnect блок > цикл ожидания...'); end; wait(1000); until Connected; dbt := 0; wait(60000); end; end; function CheckDead : Boolean; begin CheckConnect; if Role = 1 then begin if GetHP(IDDoll) < 1 then begin Error := 1; result := true; SetGlobal('stealth',IntToStr(self),'0') AddToSystemJournal('>>> Кукла мертва! Скрипт завершает работу!'); end; end; if Role = 0 then begin if Dead then begin Error := 1; result := true; SetGlobal('stealth',IntToStr(self),'0') AddToSystemJournal('>>> Я мёртв! Скрипт завершает работу!'); end; end; end; procedure Hungry; var FoodID : Cardinal; begin if DebugMode = 1 then begin AddToSystemJournal('>>> Debug <<< Hungry блок'); end; CheckConnect; if CheckDead then exit; if ftime <= Now then begin FindType(Food,Ground); if FindCount > 0 then begin ftime := ftime + 15.0/(24*60*3); FoodID := FindType(Food,Ground); if FoodID <> $00 then UseObject(FoodID); wait(200); end; end; end; procedure CheckArm; var t : integer; begin if DebugMode = 1 then begin AddToSystemJournal('>>> Debug <<< CheckArm блок'); end; CheckConnect; if CheckDead then exit; if RLayer <> 0 then begin if ObjAtLayer(RhandLayer) = 0 then begin FindTypeEx(RLayer, $FFFF, Backpack, False); if FindCount > 0 then begin Equip(RhandLayer,finditem); dbt := 0; repeat dbt := dbt + 1; if (DebugMode = 1) and (dbt = 150) then begin AddToSystemJournal('>>> Debug <<< CheckArm блок > цикл ожидания надевания вещи в слой RhandLayer...'); end; wait(100); CheckConnect; CheckSave; if CheckDead then exit; t := t + 1 until (ObjAtLayer(RhandLayer) > 0) or (t >= 50) or dead; end else begin Error := 1; AddToSystemJournal('>>> В бекпаке больше нет '+ NameRWeapon +'! Скрипт дальше работать НЕ БУДЕТ!'); exit; end; end; end; if LLayer <> 0 then begin if ObjAtLayer(LhandLayer) = 0 then begin FindTypeEx(LLayer, $FFFF, Backpack, False); if FindCount > 0 then begin Equip(LhandLayer,finditem); dbt := 0; repeat dbt := dbt + 1; if (DebugMode = 1) and (dbt = 150) then begin AddToSystemJournal('>>> Debug <<< CheckArm блок > цикл ожидания надевания вещи в слой LhandLayer...'); end; wait(100); CheckConnect; CheckSave; if CheckDead then exit; t := t + 1 until (ObjAtLayer(LhandLayer) > 0) or (t >= 50) or dead; end else begin Error := 1; AddToSystemJournal('>>> В бекпаке больше нет '+ NameLWeapon +'! Скрипт дальше работать НЕ БУДЕТ!'); exit; end; end; end; end; procedure SaveArm; begin if (ObjAtLayer(RhandLayer) <> 0) or (ObjAtLayer(LhandLayer) <> 0) then begin AddToSystemJournal('Будем качаться с оружием в руках.'); if ObjAtLayer(RhandLayer) <> 0 then begin RLayer := GetType(ObjAtLayer(RhandLayer)); ClickOnObject(ObjAtLayer(RhandLayer)); CheckSave; wait(2000); NameRWeapon := GetName(ObjAtLayer(RhandLayer)); FindTypeEx(RLayer, $FFFF, Backpack, False); if FindCount >= 0 then AddToSystemJournal('В бекпаке найдено: '+ IntToStr(FindCount) + ' "'+ NameRWeapon + '".'); end; if ObjAtLayer(LhandLayer) <> 0 then begin LLayer := GetType(ObjAtLayer(LhandLayer)); ClickOnObject(ObjAtLayer(LhandLayer)); CheckSave; wait(2000); NameLWeapon := GetName(ObjAtLayer(LhandLayer)); FindTypeEx(LLayer, $FFFF, Backpack, False); if FindCount >= 0 then AddToSystemJournal('В бекпаке найдено: '+ IntToStr(FindCount) + ' "'+ NameLWeapon + '".'); end; end else begin AddToSystemJournal('Будем качаться без оружия в руках.'); end; end; procedure CheckRes; begin if DebugMode = 1 then begin AddToSystemJournal('>>> Debug <<< CheckRes блок'); end; CheckConnect; FindTypeEx($0E21, $FFFF, Ground, False); if FindCount < 1 then begin Error := 1; AddToSystemJournal('>>> На полу нет бинтов! Скрипт дальше работать НЕ БУДЕТ!'); end; CheckConnect; FindTypeEx(Food, $FFFF, Ground, False); if FindCount < 1 then begin Error := 1; AddToSystemJournal('>>> На полу нет еды! Скрипт дальше работать НЕ БУДЕТ!'); end; if CheckDead then Error := 1; if Error = 1 then begin CheckConnect; if WarMode then SetWarMode(False); SetGlobal('stealth',IntToStr(IDDoll),'0'); exit; end; Hungry; end; procedure Heal; var t : integer; begin if DebugMode = 1 then begin AddToSystemJournal('>>> Debug <<< Heal блок'); end; CheckConnect; dbt := 1; while HP < MaxHP do begin if CheckDead then exit; if (DebugMode = 1) and (dbt = 1) then begin AddToSystemJournal('>>> Debug <<< Heal блок > первичный цикл...'); dbt := 0; end; CheckConnect; FindTypeEx($0E21, $FFFF, Ground, False); if FindCount > 0 then begin if targetpresent then canceltarget; htime := Now; CheckConnect; UseObject(finditem); t := 0; dbt := 0; repeat dbt := dbt + 1; if (DebugMode = 1) and (dbt = 150) then begin AddToSystemJournal('>>> Debug <<< Heal блок > цикл проверки таргета...'); end; wait(100); CheckConnect; CheckSave; if CheckDead then exit; t := t + 1; until TargetPresent or (t >= 50); t := 0; CheckConnect; WaittargetSelf; end; dbt := 0; repeat dbt := dbt + 1; if (DebugMode = 1) and (dbt = 150) then begin AddToSystemJournal('>>> Debug <<< Heal блок > цикл ожидания фразы...'); end; wait(100); CheckConnect; CheckSave; t := t + 1; until (InJournalBetweenTimes('You were|You have healed|The patient|You must', htime, Now) <> -1) or (t >= 300) or dead; t := 0; htime := Now; end; end; procedure CheckRole; var i : integer; TypeDoll : array [0..1] of cardinal; begin if PredictedDirection = 0 then begin CharX := GetX(self); CharY := GetY(self) - 1; end; if PredictedDirection = 4 then begin CharX := GetX(self); CharY := GetY(self) + 1; end; if PredictedDirection = 2 then begin CharX := GetX(self) + 1; CharY := GetY(self); end; if PredictedDirection = 6 then begin CharX := GetX(self) - 1; CharY := GetY(self); end; if PredictedDirection = 1 then begin CharX := GetX(self) + 1; CharY := GetY(self) - 1; end; if PredictedDirection = 5 then begin CharX := GetX(self) - 1; CharY := GetY(self) + 1; end; if PredictedDirection = 3 then begin CharX := GetX(self) + 1; CharY := GetY(self) + 1; end; if PredictedDirection = 7 then begin CharX := GetX(self) - 1; CharY := GetY(self) - 1; end; if WarMode then SetWarMode(False); TypeDoll[0] := $0190; TypeDoll[1] := $0191; Ignore(self); for i := 0 to 1 do begin repeat CheckConnect; FindTypeEx(TypeDoll[i], $FFFF, Ground, False) if FindCount > 0 then begin if (GetX(finditem) = CharX) and (GetY(finditem) = CharY) and (GetHP(finditem) > 0) then begin IDDoll := finditem; SetGlobal('stealth',IntToStr(IDDoll),'0'); Role := 1; SaveArm; AddToSystemJournal('Выбрана роль атакующего...'); exit; end else begin Ignore(finditem); end; end; until FindCount < 1; end; SetGlobal('stealth',IntToStr(self),'0'); Role := 0; AddToSystemJournal('Выбрана роль куклы...'); Heal; end; procedure PlayRole; begin if Role = 1 then begin if CheckDead then exit; CheckRes; CheckArm; if Error = 1 then exit; if GetGlobal('stealth',IntToStr(IDDoll)) = IntToStr(1) then begin CheckConnect; if (WarTargetID <> IDDoll) then attack(IDDoll); end else begin CheckConnect; if WarMode then SetWarMode(False); end; end; if Role = 0 then begin if CheckDead then exit; CheckRes; if Error = 1 then exit; CheckConnect; if HP <= CheckVarHeal then begin dbt := 1; repeat if (DebugMode = 1) and (dbt = 1) then begin AddToSystemJournal('>>> Debug <<< PlayRole блок > цикл куклы...'); dbt := 0; end; SetGlobal('stealth',IntToStr(self),'0'); Heal; CheckRes; if (Error = 1) or CheckDead then exit; CheckConnect; until HP = MaxHP; dbt := 1; end; SetGlobal('stealth',IntToStr(self),'1'); end; end; begin dbt := 0; Error := 0; htime := Now; ftime := Now; SetARStatus(true); SetPauseScriptOnDisconnectStatus(false); if VarHeal = 1 then begin CheckVarHeal := GetMaxHP(Self)*MinHP/100; end else begin CheckVarHeal := MinHP; end; CheckRole; dbt := 1; repeat if (DebugMode = 1) and (dbt = 1) then begin AddToSystemJournal('>>> Debug <<< Главный блок > Главный цикл...'); dbt := 0; end; if Error = 1 then begin SetARStatus(false); Disconnect; exit; end; CheckConnect; PlayRole; wait(100); until false; end. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
MeSSiR 0 Жалоба Опубликовано 12 сентября, 2012 У у написавшего скрипт спаррингующиеся тоже дохли))) П.С. лучше напишите макрос на кастера))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
nepret 0 Жалоба Опубликовано 12 сентября, 2012 ну а чего вы хотели при 100 STR'е и всего 30% от оставшегося хп для команды stop->wait me full HP это кстати первый раз за более 2 суток тестирования! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
MeSSiR 0 Жалоба Опубликовано 12 сентября, 2012 ну а чего вы хотели при 100 STR'е и всего 30% от оставшегося хп для команды stop->wait me full HP это кстати первый раз за более 2 суток тестирования! Да я когда переименовывал они дохли как мухи)) Я как в игре с автоматами.. стоял ресал) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kallish 0 Жалоба Опубликовано 12 сентября, 2012 П.С. лучше напишите макрос на кастера))) program cast; const sunduk = $4499C893; var r,i : integer; s : string; MissingReg : cardinal; Reags : array[1..8] of cardinal; ctime : TDateTime; {$Include 'all.inc'} function timer(var acttimer:integer;actafter:integer):boolean; begin result:=false; acttimer:=acttimer+1; if acttimer>=actafter then begin acttimer:=0; result:=true; end; end; procedure CheckJournal; begin if InJournalBetweenTimes('Cast!', ctime, Now) <> -1 then begin WaitTargetObject(LineID); cast('Bless'); wait(3000); WaitTargetObject(LineID); cast('Protection'); exit; end; if InJournalBetweenTimes('Ress!', ctime, Now) <> -1 then begin WaitTargetObject(LineID); cast('Resurrection'); wait(1000); exit; end; if InJournalBetweenTimes('help', ctime, Now) <> -1 then begin uosay('Скажи мне "cast!"- c большой буквы'); wait(100); uosay('Скажи мне "ress!"- c большой буквы'); wait(100); uosay('Скажи мне "bless!"- c большой буквы'); wait(100); uosay('Скажи мне "prot!"- c большой буквы'); wait(100); UseSkill('Spirit Speak'); exit; end; if InJournalBetweenTimes('Bless!', ctime, Now) <> -1 then begin WaitTargetObject(LineID); cast('Bless'); exit; end; if InJournalBetweenTimes('Prot!', ctime, Now) <> -1 then begin WaitTargetObject(LineID); cast('Protection'); exit; end; end; function CheckReags : boolean; begin Result := True; Reags[1] := $0F7B // BloodMosss Reags[2] := $0F7A // BlackPearls Reags[3] := $0F84 // Garlick Reags[4] := $0F85 // Ginseng Reags[5] := $0F86 // Madrake Roots Reags[6] := $0F88 // NightShades Reags[7] := $0F8C // Sulphuruos Ashs Reags[8] := $0F8D // Spider Silks for r := 1 to 8 do begin findtype(Reags[r],BackPack); if findcount = 0 then begin MissingReg := Reags[r]; Result := False; end; end; end; procedure Waiting; begin if MissingReg = $0F7B then s := 'BloodMosss'; if MissingReg = $0F7A then s := 'BlackPearls'; if MissingReg = $0F84 then s := 'Garlick'; if MissingReg = $0F85 then s := 'Ginseng'; if MissingReg = $0F86 then s := 'Madrake Roots'; if MissingReg = $0F88 then s := 'NightShades'; if MissingReg = $0F8C then s := 'Sulphuruos Ashs'; if MissingReg = $0F8D then s := 'Spider Silks'; AddToSystemJournal('KoH4uJIucb ' + s); while (not CheckReags) do begin ctime := now; wait(10000); if InJournalBetweenTimes('dispel!|hunt!|macro!', ctime, Now) <> -1 then uosay('KoH4uJIucb ' + s ); uosay(' '); findtype(MissingReg,sunduk); if findcount > 0 then MoveItems(sunduk, MissingReg, $FFFF, backpack, 0, 0, 0, 500); end; end; BEGIN MissingReg := 0; while (not dead) do begin if (not CheckReags) then Waiting; ctime:=now; wait(1000); if timer(i,100) then begin Hungry(1,backpack); uosay(' '); end; if TargetPresent then CancelTarget; CheckJournal; if mana < 35 then begin wait(1000); useskill('Meditation'); WaitJournalLine(now,'stop medit',30000); end; end; END. Можно использовать без настройки переменных. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
nepret 0 Жалоба Опубликовано 13 сентября, 2012 а у меня длиннее получился Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
MeSSiR 0 Жалоба Опубликовано 17 сентября, 2012 я так понимаю сундук - это ИД секура ставить надо, который рядом с персонажем? И не понял зачем ресать персов? Особенно проверка журнала.. госты в вар моде если что-то пишут, то мы видим "ОоОо ооооОо" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
nepret 0 Жалоба Опубликовано 17 сентября, 2012 ресать надо для нескольких причин... самая важная это когда в доме начинается замес потом на случай "несчастного случая" ну и если убили при телепорте домой если я доделаю хунгри иклюд, то выкину свой скрипт Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
MeSSiR 0 Жалоба Опубликовано 17 сентября, 2012 скажи мне.. что произойдет с кастером, если я скажу в .f чате Cast! или же скажу команду за стеной, то есть он не сможет на меня повесить таргет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
nepret 0 Жалоба Опубликовано 17 сентября, 2012 скорей всего ид не высветиться и он будет кастовать в молоко так же в молоко у меня он проверяет 3 переменный: x, y, z z должна быть такая же как и у кастера х и у должны быть не дальше 5 тайлов от кастера если к примеру ты скажешь в системный чат (баф, каст и тд) мой скрипт проигнорирует это +ненадо никаких контейнеров... реги под ноги кастеру (будет ждать пока ему не дадут нужный рег) информативность... есть функция оповещения при заканчивающемся реагенте(настраеваеться) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
MeSSiR 0 Жалоба Опубликовано 17 сентября, 2012 надо потестить))))) где взять стелс-клиент?)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
nepret 0 Жалоба Опубликовано 17 сентября, 2012 http://stealth.od.ua функции := http://stealth.od.ua/Doc:RU/Api (с примерами) "все" функции := http://stealth.od.ua/wiki/doku.php?id=functions (c примерами) ОБСАЛЮТНО все функции := http://stealth.od.ua/forum/viewtopic.php?t=1220 (без примеров (их очень мало)) зы: пост выше писался про мой скрипт который я доделать не могу (влом =) ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
lolkin 0 Жалоба Опубликовано 15 октября, 2012 Нужная весчь ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты