Kallish 0 Жалоба Опубликовано 16 июля, 2012 Поделитесь скриптами под нее, прога круче инжекта раз в 20. потенциал дикий... правда написана на паскале который я ваще не знаю) Для тех кто в танке: http://stealth.od.ua - клиент программы Stealth функции := 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 (без примеров (их очень мало)) ссылки любезно предоставил nepret. MeSSiR Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
nepret 0 Жалоба Опубликовано 17 июля, 2012 учи... в паскале нет ничего сложного Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kallish 0 Жалоба Опубликовано 18 июля, 2012 Да не когда мне изучать ещё и компьютерные языки =) Вот что я сварганить смог Program Healing; begin while not dead do begin uosay('.bandage self'); wait(5000); uosay('.v'); wait(5000); uosay('.ab 1'); WaitTargetSelf; wait(5000); end; End. Суть простая - запускаем прогу, паладина или другого какого либо чара танка( убираем ab 1). - все чар для битья готов, его не не дисконектнет вообще) при этом нада автологин включить в самой программе. Program stealth; begin while not dead do begin if Hidden then useskill('Stealth') else useskill('Hiding'); wait(5000); end; End. Прокачка стелса. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kallish 0 Жалоба Опубликовано 25 июля, 2012 Program hiding_and_stealth; var i:integer; d:Cardinal; TimeSay : TDateTime; procedure Hungry(NeededLevel : Integer); {проверка голода от Миралекса!!!} var HArray : array [0..10] of String; CurrentLevel : Integer; HasError : Boolean; TimeSayHungry : TDateTime; FoodID : Cardinal; i,c,difference : Integer; begin if (NeededLevel < 0) or (NeededLevel > 10) then Exit; HArray[0] := 'You are absolutely stuffed!'; HArray[1] := 'You are stuffed'; HArray[2] := 'hungry at all'; HArray[3] := 'You are a little hungry'; HArray[4] := 'You are somewhat hungry'; HArray[5] := 'You are REALLY hungry'; HArray[6] := 'Your stomash hurts'; HArray[7] := 'Your stomash hurts and you feel dizzy'; HArray[8] := 'You are starving'; HArray[9] := 'You are almost dying of hunger'; HArray[10] := 'You are DYING of hunger...'; HasError := true; TimeSayHungry := Now; UOSay('.hungry'); wait(100); i:=0; while i < 100 do begin for c := 0 to 10 do if InJournalBetweenTimes(HArray[c],TimeSayHungry,Now) >= 0 then begin CurrentLevel := c; HasError := false; i := 100; end; wait(100); i := i + 1; end; if HasError then begin AddToSystemJournal('Error with Hungry: Lag? Conection error? Something else?'); Exit; end; difference := CurrentLevel - NeededLevel; if difference > 0 then for i := 1 to difference do begin wait(5000) FoodID := FindType($097B,backpack); if FoodID <> $00 then UseObject(FoodID) else AddToSystemJournal('No Food'); wait(200); end; end; begin i:=0; while i<1000 do begin TimeSay := Now; while InJournalBetweenTimes('You have hidden yourself well',TimeSay,Now)<0 do begin useskill('Hiding'); wait(2000); end; TimeSay := Now; while (InJournalBetweenTimes('You have revealed yourself!',TimeSay,Now)<0) and (InJournalBetweenTimes('You must be hidden to use stealth',TimeSay,Now) <0) do begin if InJournalBetweenTimes('You have revealed yourself!',TimeSay,Now)<0 then i:=500; if InJournalBetweenTimes('You must be hidden to use stealth',TimeSay,Now)<0 then i:=500; useskill('Stealth'); wait(2000); end; Hungry(1); end; end. Может кто на примере этого скрипта, сделать скрипт, качающий все остальные скилы) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
nepret 0 Жалоба Опубликовано 25 июля, 2012 наврядли... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kallish 0 Жалоба Опубликовано 25 июля, 2012 да помоему чувак который писал эту прогу сам с мидлы =( найти бы его) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
nepret 0 Жалоба Опубликовано 26 июля, 2012 а эти то зачем? на инжекте же уже есть норм скрипт на спаринг... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kallish 0 Жалоба Опубликовано 26 июля, 2012 У инжекта нет функции реконнекта в игру! А у этой программы есть, у меня например инет может падать на 1-3 мин пару раз в сутки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kallish 0 Жалоба Опубликовано 16 августа, 2012 Program Guards; var t: TDateTime; begin while not Dead do begin t:=now; Wait(3000); if InJournalBetweenTimes('is attacking you', t, now) > 0 then UOSay('.guards'); end; end. Зов гвардов, очень полезно будет для ньюбов! Program Guards; var t: TDateTime; begin while not Dead do begin t:=now; WaitJournalLine(t, 'is attacking you', 200000); if InJournalBetweenTimes('is attacking you', t, now) > 0 then UOSay('.guards'); end; end. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kallish 0 Жалоба Опубликовано 16 августа, 2012 Код Program Evaluate; var t:integer; {$Include 'all.inc'} Begin SetARStatus(true); //Включаем автореконектор Hungry(1,backpack); while not dead do // Зацикливаем begin for t:=0 to 30 do begin CheckSave; CheckTargetError(2,2); //Проверяем нет ли левого таргета UseSkill('Evaluate Intelligence'); WaitTargetObject(self); Wait(10500); end; Hungry(1,backpack); //Проверяем голод end; End. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
nepret 0 Жалоба Опубликовано 17 августа, 2012 Все таки, я не забросил разбираться в программе стелс, получайте и пользуйтесь обалденным скриптом на обкаст. Все что нужно - это скинуть в папку Stealth\Scripts\Include все инклюды которые только есть для стелса. 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('Bless!', ctime, Now) <> -1 then begin WaitTargetObject(LineID); cast('Bless'); wait(3000); 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. Ни каких айди прописывать не нужно, просто включайте скрипт и пользуйтесь. 1. Хангри инклюд не работает под наш шард. 2. Ид сумки с регами кто будет указывать? 3. Нет команды на перекастовку блеса. 4. Скрипт просит лишние реги. В общем, скрипт ещё править и править под наш шард... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
nepret 0 Жалоба Опубликовано 17 августа, 2012 Код Program Evaluate; var t:integer; {$Include 'all.inc'} Begin SetARStatus(true); //Включаем автореконектор Hungry(1,backpack); while not dead do // Зацикливаем begin for t:=0 to 30 do begin CheckSave; CheckTargetError(2,2); //Проверяем нет ли левого таргета UseSkill('Evaluate Intelligence'); WaitTargetObject(self); Wait(10500); end; Hungry(1,backpack); //Проверяем голод end; End. сам что-ли писал? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kallish 0 Жалоба Опубликовано 17 августа, 2012 2nepret скрипт работает, на нашем шарде! Вот, кое что я исправил теперь он идиально работает, инклюд исправляется под наш шард - меняется одна строчка и все. 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'); wait(3000) UseSkill('Spirit Speak'); exit; end; if InJournalBetweenTimes('Ress!', ctime, Now) <> -1 then begin WaitTargetObject(LineID); cast('Resurrection'); wait(3000); 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'); wait(1000); UseSkill('Spirit Speak'); exit; end; if InJournalBetweenTimes('Prot!', ctime, Now) <> -1 then begin WaitTargetObject(LineID); cast('Protection'); wait(1000); UseSkill('Spirit Speak'); 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('Cast!|Bless!|Prot!|Ress!', 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. Для того что бы реснуть госта - нужно написать в гильд чат help, потом просто в чат Ress! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
nepret 0 Жалоба Опубликовано 18 августа, 2012 инклюд исправляется под наш шард - меняется одна строчка и все. вырезаеться как минимум пол скрипта... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kallish 0 Жалоба Опубликовано 18 августа, 2012 вырезаеться как минимум пол скрипта... Мне было достаточно исправить одной строчки, что бы скрипты запускались и чар жрал - больше мне не че не нужно) я не мега скриптер и ваще скриптовать не умею) Выкладываю рабочие скрипты - хотите пользуйтесь, хотите нет ) Если не забью на уо, займусь написанием скрипта на подобии как у мессира, только для стелса) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
nepret 0 Жалоба Опубликовано 20 августа, 2012 достаточно исправить одной строчки, что бы скрипты запускались и чар жрал - больше мне не че не нужно) исправленная МНОЙ версия: procedure Hungry; var FoodID : Cardinal; begin if Not Connected then Exit; FindType($097B,Backpack); if FindCount > 0 then begin FoodID := FindType($097B,Backpack); if FoodID <> $00 then UseObject(FoodID); wait(200); end; if FindType($097B,Backpack) = 0 then AddToSystemJournal('Нет еды!'); end; исходная: procedure Hungry(NeededLevel : Integer; Container : Cardinal); var HArray : array [0..10] of String; CurrentLevel : Integer; HasError : Boolean; TimeSayHungry : TDateTime; FoodID : Cardinal; i,c,difference : Integer; begin if Not Connected then Exit; if (NeededLevel < 0) or (NeededLevel > 10) then Exit; HArray[0] := 'You are absolutely stuffed!'; HArray[1] := 'You are stuffed'; HArray[2] := 'hungry at all'; HArray[3] := 'You are a little hungry'; HArray[4] := 'You are somewhat hungry'; HArray[5] := 'You are REALLY hungry'; HArray[6] := 'Your stomash hurts'; HArray[7] := 'Your stomash hurts and you feel dizzy'; HArray[8] := 'You are starving'; HArray[9] := 'You are almost dying of hunger'; HArray[10] := 'You are DYING of hunger...'; HasError := true; TimeSayHungry := Now; UOSay('.hungry'); wait(100); i:=0; while i < 100 do begin for c := 0 to 10 do if InJournalBetweenTimes(HArray[c],TimeSayHungry,Now) >= 0 then begin CurrentLevel := c; HasError := false; i := 100; end; wait(100); i := i + 1; end; if HasError then begin AddToSystemJournal('Error with Hungry: Lag? Conection error? Something else?'); Exit; end; difference := CurrentLevel - NeededLevel; FindType($097B,Container); if (difference > 0) and (FindCount > 0) then for i := 1 to difference do begin FoodID := FindType($097B,Container); if FoodID <> $00 then UseObject(FoodID); wait(200); end; if FindType($097B,Container) = 0 then AddToSystemJournal('No Food'); end; редактировать "UOSay('.hungry');" совсем не вариант... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kallish 0 Жалоба Опубликовано 21 августа, 2012 UseObject(FindType ($097B,Container)); Я просто вставил это туда, теперь он у меня жрет только когда выходит системное сообщение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kallish 0 Жалоба Опубликовано 1 сентября, 2012 немогу осилить на стелсе миниг, есть ли удалец на шарде способный заставить копать хотя бы в один тайл?) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
nepret 0 Жалоба Опубликовано 1 сентября, 2012 есть... могу дать сырую версию для минок-шахты Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kallish 0 Жалоба Опубликовано 2 сентября, 2012 Скинь, если не затруднит, меня сам алгоритм кликанья киркой интересует. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
nepret 0 Жалоба Опубликовано 3 сентября, 2012 program MiningInMinoc; const MineStartX = 2568; //Центер пещеры по оси X MineStartY = 483; //Центер пещеры по оси Y Pickaxe = $143C; //Type кирки (сейчас Hammer Pick) RuneBookInDom = $475AF894; //Указать ID рунбуки с руной в дом GumpDom = '601'; //Руна в рунбуке по которой летим домой (1 руна на левой странице №601) RuneBookInMine = $475AF894; //Указать ID рунбуки с руной возле пещеры GumpMine = '605'; //Руна в рунбуке по которой летим к пещере (1 руна на левой странице №601) ResCount = $472DDA3A; //Контейнер с припасами (еда, Recall scroll'ы, кирки) Food = $097B; //Тип еды. Сейчас Фиш-стейки SumFood = 50; //Колличество еды которой берём с собой MaxVes = 10000; //Максимальный вес при котором лететь домой на разгрузку var a : TFoundTilesArray; i, b, Error : integer; StartX, StartY : Word; TyleType : array [0..24] of cardinal; ctime, mdtime, gtime : TDateTime; {$Include 'all.inc'} procedure DropRes; var i, IngGround : integer; IngosColor : array [0..10] of cardinal; begin IngosColor[0] := $0602; IngosColor[1] := $0000; IngosColor[2] := $0386; IngosColor[3] := $01BF; IngosColor[4] := $03E9; IngosColor[5] := $0590; IngosColor[6] := $0162; IngosColor[7] := $0160; IngosColor[8] := $0455; IngosColor[9] := $0253; IngosColor[10] := $0482; FindTypeEx($19B9, $FFFF, Backpack, False); if FindCount > 0 then begin FindTypeEx($0FB1, $FFFF, Ground, False); if FindCount > 0 then begin NewMoveXY(GetX(finditem),GetY(finditem),True,1,True); repeat FindTypeEx($19B9, $FFFF, Backpack, False); if FindCount > 0 then begin UseType($19B9, $FFFF); wait(500); end; until FindCount < 1; end; end; for i := 0 to 10 do begin FindTypeEx($1BF2, IngosColor[i], Ground, False); if (FindCount > 0) and (FindCount <= 55000) then begin NewMoveXY(GetX(finditem),GetY(finditem),True,2,True); IngGround := finditem; FindTypeEx($1BF2, IngosColor[i], Backpack, False); if FindCount > 0 then begin checksave; MoveItem(finditem, FindQuantity, IngGround, 0,0,0); wait(500); end; end else begin checksave; MoveItem(finditem, FindQuantity, Ground, 0,0,0); wait(500); end; end; end; procedure GetRes; var CheckSum : integer; dcx, dcy : integer; begin if not IsContainer(ResCount) then begin Error := 1; AddToSystemJournal('>>> Нет контейнера с ресурсами! Скрипт дальше работать НЕ БУДЕТ!'); exit; end; dcx := GetX(ResCount); dcy := GetY(ResCount); NewMoveXY(dcx,dcy,True,2,True); checksave; UseObject(ResCount); wait(1000); FindtypeEx($1F4C, $FFFF, ResCount, False); if FindQuantity < 1 then begin Error := 1; AddToSystemJournal('>>> В указанном контейнере нету Recall scroll-ов! Скрипт дальше работать НЕ БУДЕТ!'); exit; end else begin if not RuneBookInDom = RuneBookInMine then begin checksave; UseObject(RuneBookInMine); WaitGump('800'); WaitTargetObject(finditem); wait(4000); checksave; UseObject(RuneBookInDom); WaitGump('800'); WaitTargetObject(finditem); wait(4000); end else begin checksave; UseObject(RuneBookInDom); WaitGump('800'); WaitTargetObject(finditem); wait(4000); end; end; FindtypeEx(Food, $FFFF, backpack, False); if SumFood > FindQuantity then begin CheckSum := SumFood - FindQuantity; FindtypeEx(Food, $FFFF, ResCount, False); if FindQuantity < 1 then begin Error := 1; AddToSystemJournal('>>> В указанном контейнере нету еды! Скрипт дальше работать НЕ БУДЕТ!'); exit; end else begin checksave; MoveItem(finditem, CheckSum, backpack,0,0,0) wait(1000); end; end; FindtypeEx(Pickaxe, $FFFF, backpack, False); if FindCount < 1 then begin FindtypeEx(Pickaxe, $FFFF, ResCount, False); if FindCount < 1 then begin Error := 1; AddToSystemJournal('>>> В указанном контейнере нету Pickaxe! Скрипт дальше работать НЕ БУДЕТ!'); exit; end else begin checksave; MoveItem(finditem, 1, backpack,0,0,0) wait(1000); end; end; end; procedure CheckDisarm; begin if (ObjAtLayer(RhandLayer) <> 0) or (ObjAtLayer(LhandLayer) <> 0) then begin disarm; repeat until (ObjAtLayer(RhandLayer) = 0) or (ObjAtLayer(LhandLayer) = 0) or dead; end; end; procedure TPDom; var xs, ys : Integer; begin CheckDisarm; xs := GetX(self); ys := GetY(self); UseObject(RuneBookInDom); WaitGump(GumpDom); repeat wait(100) until (xs <> GetX(self)) or (ys <> GetY(self)); wait(1000) end; procedure TPMine; var xs, ys : Integer; begin if Error = 1 then exit; CheckDisarm; xs := GetX(self); ys := GetY(self); UseObject(RuneBookInMine); WaitGump(GumpMine); repeat wait(100) until (xs <> GetX(self)) or (ys <> GetY(self)); wait(1000) end; procedure MobDetected; var Mob : array [0..1] of cardinal; 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 := 1; for i := 0 to 1 do begin FindTypeEx(Mob[i], $FFFF, Ground, False); if FindCount > 0 then begin if gtime = Now then begin UOSay('.guards'); gtime := gtime + 0.25/(24*60*3); end; end; end; FindDistance := 100; FindVertical := 1; end; end; procedure CheckPickaxe; var x, y : integer; begin if not dead then begin if ObjAtLayer(RhandLayer) < 1 then begin FindType(Pickaxe, Backpack); if FindCount > 0 then begin Equip(RhandLayer, FindItem); end else begin x := GetX(self); y := GetY(self); TPDom; DropRes; GetRes; TPMine; NewMoveXY(x, y, True, 2, True); end; end; while ObjAtLayer(RhandLayer) < 1 do begin wait(100); end; end; end; procedure CheckDead; var i, x, y : integer; Go : array [0..13] of cardinal; begin if dead then begin x := GetX(self); y := GetY(self); if IsGump then begin GumpAutoCheckBox(10,211); NumGumpButton(GetGumpsCount-1,0); end; if IsGump then begin CloseSimpleGump(GetGumpsCount-1); end; NewMoveXY(2550,622,True,0,True); NewMoveXY(2578,622,True,0,True); repeat CheckSave; Step(0, true); if GetGumpsCount > 0 then begin NumGumpButton(GetGumpsCount-1,1); repeat wait(1000); until not dead; TPDom; DropRes; GetRes; TPMine; NewMoveXY(x, y, True, 0, True); exit; end; until (GetX(self) = 2578) and (GetY(self) = 601); if PredictedDirection <> 0 then Step(0, true); repeat CheckSave; Step(6, true); if GetGumpsCount > 0 then begin NumGumpButton(GetGumpsCount-1,1); repeat wait(1000); until not dead; TPDom; DropRes; GetRes; TPMine; NewMoveXY(x, y, True, 0, True); exit; end; until (GetX(self) = 2575) and (GetY(self) = 601); repeat CheckSave; Step(0, true); if GetGumpsCount > 0 then begin NumGumpButton(GetGumpsCount-1,1); repeat wait(1000); until not dead; TPDom; DropRes; GetRes; TPMine; NewMoveXY(x, y, True, 0, True); exit; end; until (GetX(self) = 2575) and (GetY(self) = 593); Go[0] := 0; Go[1] := 0; Go[2] := 0; Go[3] := 0; Go[4] := 0; Go[5] := 6; Go[6] := 6; Go[7] := 4; Go[8] := 4; Go[9] := 4; Go[10] := 4; Go[11] := 4; Go[12] := 2; Go[13] := 2; while dead do begin for i := 0 to 13 do begin if GetGumpsCount > 0 then begin NumGumpButton(GetGumpsCount-1,1); repeat wait(1000); until not dead; TPDom; DropRes; GetRes; TPMine; NewMoveXY(x, y, True, 0, True); exit; end; if (PredictedDirection <> 0) and (i = 0) then Step(Go[i], true); if (PredictedDirection <> 6) and (i = 5) then Step(Go[i], true); if (PredictedDirection <> 4) and (i = 7) then Step(Go[i], true); if (PredictedDirection <> 2) and (i = 12) then Step(Go[i], true); CheckSave; Step(Go[i], true); wait(1000); end; end; end; end; procedure CheckWeight; var rx, ry : integer; begin if Weight >= MaxVes then begin rx := GetX(self); ry := GetY(self); TPDom; DropRes; GetRes; TPMine; NewMoveXY(rx, ry, True, 0, True); end; end; procedure StartMining; var i, t : integer; begin for i := 0 to b do begin if a[i].Z = GetZ(Self) then begin CheckDead; checksave; hungry; CheckWeight; NewMoveXY(a[i].X, a[i].Y, True, 2, False); repeat CheckDead; CheckPickaxe; UseObject(ObjAtLayer(RhandLayer)); t := 0; repeat wait(50); checksave; t := t + 1; until TargetPresent or dead or (t >= 100); ctime := Now; TargetToTile(a[i].Tile, a[i].X, a[i].Y, a[i].Z); CheckSave; WaitJournalLine(ctime, 'Points|There is no ore here to mine|Cancelled|That is too far away', 5000); if (InJournalBetweenTimes('There is no ore here to mine|Cancelled|That is too far away', ctime, Now) <> -1) or dead then begin CheckDead; break; end; if InJournalBetweenTimes('Points|Ouch!', ctime, Now) <> -1 then begin repeat wait(100) MobDetected; CheckSave; until (InJournalBetweenTimes('There is no ore here to mine|Cancelled|That is too far away|You cannot|That is too far away', ctime, Now) <> -1) or dead; end; CheckDead; until false; end; end; end; begin SetARStatus(true); //автореконектер SetPauseScriptOnDisconnectStatus(true); //при дисконнекте, все запущенные скрипты встанут на паузу FindDistance := 100; FindVertical := 1; Error := 0; mdtime := Now; gtime := Now; TyleType[0] := 1339; //Тайлы шахты TyleType[1] := 1340; TyleType[2] := 1341; TyleType[3] := 1342; TyleType[4] := 1343; TyleType[5] := 1344; TyleType[6] := 1345; TyleType[7] := 1346; TyleType[8] := 1347; TyleType[9] := 1348; TyleType[10] := 1349; TyleType[11] := 1350; TyleType[12] := 1351; TyleType[13] := 1352; TyleType[14] := 1353; TyleType[15] := 1354; TyleType[16] := 1355; TyleType[17] := 1356; TyleType[18] := 1357; TyleType[19] := 1358; TyleType[20] := 1359; TyleType[21] := 1386; TyleType[22] := 1361; TyleType[23] := 1362; TyleType[24] := 1363; repeat DropRes; GetRes; TPMine; if Error = 1 then begin SetARStatus(false); SetPauseScriptOnDisconnectStatus(false); exit; end; NewMoveXY(MineStartX,MineStartY,True,0,True); StartX := GetX(Self); StartY := GetY(Self); for i := 0 to 24 do begin b:= GetStaticTilesArray(StartX-30,StartY-30,StartX+30,StartY+30, 0, TyleType[i], a); if b > 1 then begin if Error = 1 then begin SetARStatus(false); SetPauseScriptOnDisconnectStatus(false); exit; end; StartMining; end; end; TPDom; 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; hungry.inc procedure Hungry; var FoodID : Cardinal; begin if Not Connected then Exit; FindType(Food,Backpack); if FindCount > 0 then begin FoodID := FindType(Food,Backpack); if FoodID <> $00 then UseObject(FoodID); wait(200); end; if FindType(Food,Backpack) = 0 then AddToSystemJournal('Нет еды!'); end; all.inc [{$Include 'checksave.inc'} {$Include 'hungry.inc'} {$Include 'WaitConnection.inc'} Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kallish 0 Жалоба Опубликовано 4 сентября, 2012 2 nepret Ну ты и голова! Я бы не догадался так заставить кликать чара. Вобщем рекомендую ньби кирку сделать чару, тогда не нужно будет заморачиваться с проверкой кирки! Я конечно не стремлюсь к абсолютному автономному скрипту, но я вырезал половину - рекол домой, чек дед, дресс, дроп. Оставил алгаритм копания, точней взял его за основу. Хочу сделать все-таки аутотайловый мининг под любую шахту). Если сделаю, поделюсь обязательно хотя с моими мозгами я думаю это будет где-то через год))))))) По твоему скрипту - не хватает подхила чара(фраза Ouch!), режим вармода - всегда. почему то не хочет чар реколиться к шахте после речарджа буки(если она полная). Смысл плавить руду сразу? пусть в виде руды чар складирует. а потом уже самостоятельно решать - стоит плавить всю или кому-то стоит прокачать мининг. procedure DropRes; var i, Color2 : integer; Color : array [0..24] of cardinal; begin Color[0] := $0602; // нижка Color[1] := $0000; // Color[2] := $0386; // Color[3] := $01BF; // Color[4] := $03E9; // Color[5] := $0590; // Color[6] := $0162; // Color[7] := $0160; // Color[8] := $0455; // Color[9] := $0253; // Color[10] := $0482; // Color[11] := $0488; // purtit Color[12] := $0698; // deep Color[13] := $05D2; // aqua Color[14] := $0482; // silver Color[15] := $0253; // valorit Color[16] := $0949; // druidsilver Color[17] := $0577; // air Color[18] := $051E; // celestit Color[19] := $0457; // ereirit Color[20] := $08EA; //ppk Color[21] := $052D; //mythril Color[22] := $0944; //sun Color[23] := $0942; //wyrm Color[24] := $0481; //adamant for i:=0 to 24 do begin //Addtosystemjournal('Разгружаюсь'); FindTypeEx($19B9,Color[i],backpack,False); if (FindCount>0) then begin MoveItem(FindItem,0,ground,0,0,0); wait(200); checksave; end; end; end; Как сделать так что б складывал в стак - я хз. Хоть у тебя в скрипте есть пример - я не понял. Вобщем, что ещё нужно добавить - детект перед использованием кирки, бинт, если фэйлед - .c "help". команду для принудительного выгона из шахты на журнал (qomou) или любая другая (disarm, .Recall). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
nepret 0 Жалоба Опубликовано 5 сентября, 2012 Не надо забывать, что этот скрипт изначально делался под одну, определённую шахту. По твоему скрипту - не хватает подхила чара(фраза Ouch!) Удар киркой по ноге достаточно редок, по этому и нет подхила. Это не критично. режим вармода - всегда Зачем? Есть же гвардс. почему то не хочет чар реколиться к шахте после речарджа буки(если она полная). Я не стал разбираться с резкой подстрок. Не особо понял как и что там, по этому запилил задержку в 4 секунды. Смысл плавить руду сразу? пусть в виде руды чар складирует. а потом уже самостоятельно решать - стоит плавить всю или кому-то стоит прокачать мининг. Если мининга выше 100, то прокачка на плавке руды не даёт поинтов к скилу. Уже проверял... Как сделать так что б складывал в стак - я хз. Хоть у тебя в скрипте есть пример - я не понял. Color2 это зачем тут? Поставь дистанцию на поиск: FindDistance, FindVertical и возьми в привычку делать отступы в скрипте, это помогает легче его читать и разбираться в нём Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kallish 0 Жалоба Опубликовано 5 сентября, 2012 Если мининга выше 100, то прокачка на плавке руды не даёт поинтов к скилу. Уже проверял... целестит, еретрит, мифрил, адамант очень хорошо растет до 105. Color2 это зачем тут? да хз без него у меня чет не запускался. Зачем? Есть же гвардс. неактуально когда выходишь из минока, хотя в твоем варианте для минок шахты - да. Поставь дистанцию на поиск: FindDistance, FindVertical попробую разобраться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
MeSSiR 0 Жалоба Опубликовано 5 сентября, 2012 Задержку на гвардс поставь минимум 2 секунды. А то твои боты одновременно начинают флудить гвардс, что вызывает немалое кол-во гвардов, за счет чего нагрузка серва увеличивается. Буду сквелчить в след раз. Про прокачку руды: на мифриле качается до 120... так же остальная выха тоже качает. Бери каждого вида руды по 1 штуке и пробуй плавить.. если очки идут - плавь на ней) с киркой дело говорит... создай нуба.. выбери ему в первичных скиллах мининг.. у него будет нуби кирка, которая не ломается... ей из сумки и копай... так же у тебя в скрипте, когда чар дохнет... он запоминает место, где сдох.. и после реса возвращается к нему... в чем проблема включить лутание своего трупа? зачастую воры оставляют армор и кирку в трупе.. Вообще стелс с очень хорошей ходилкой.. но для меня это далеко... я к сожалению не выношу паскаль.. сам не знаю почему.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты