Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Blank Scrolls for DW

Only working scripts
Post Reply
ParadoX
Apprentice
Apprentice
Posts: 256
Joined: 17.03.2005 16:06

Blank Scrolls for DW

Post by ParadoX »

скрипт делает бланк скролы по 10 штук..(это сами выставляйте)

Code: Select all

var i : integer;
stime : 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 
findtype($097B,0);
FoodID := FindItem; {You must SET FoodID!} 
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? No connect? Something else?'); 
   Exit; 
   end; 
difference := CurrentLevel - NeededLevel; 
if difference > 0 then for i := 1 to difference do 
   begin 
   UseObject(FoodID); 
   wait(2000); 
   end; 
end;






BEGIN
while true do
begin




stime := Now; 

waittargetobject(findtype($1BDD,ground)); 
useobject(findtype($1EB9,backpack)); 
waitgump('1025'); 

repeat 
InJournalBetweenTimes('You create the item|You make an exceptional item', stime, Now); 
wait(500); 
until (LineCount >= 10) or (Now > stime + (3.0/1440));
hungry(1);
end;
END.
Last edited by ParadoX on 25.05.2005 18:06, edited 1 time in total.
Miralex
Developer
Developer
Posts: 656
Joined: 11.03.2005 19:12
Contact:

Post by Miralex »

ну э... так как я видел 2 раза гампы те самые.. на тинк.. то сделал простенький скриптик... красивым мне показалось моя система вейта...
"Система вейта" будет давать сильные сбои на лагах и тд.

Уже обьяснял как правильно использовать WaitJournalLine и как неверно.

Правильно: (обрати внимание на переменую stime)

Code: Select all

stime := Now;
//Далее деляем чтото, что приведет к появлению строки в журнале
//Например:
waittargetobject(findtype($1BDD,ground)); 
useobject(findtype($1EB9,backpack)); 
waitgump('1025'); 
//Далее ждем нужного сообщения
WaitJournalLine(stime,'You create the item|You make an exceptional item',10000);
Неправильно:

Code: Select all

waittargetobject(findtype($1BDD,ground)); 
useobject(findtype($1EB9,backpack)); 
waitgump('1025'); 
//Далее ждем нужного сообщения
WaitJournalLine(now,'You create the item|You make an exceptional item',10000);
Твоя "система вейта" построена по второму (не верному) варианту.
Скрипт не собъется, но часто будешь терять время прокачки зря.

Или делай бланки по одной штучке с правильным использованием WaitJournalLine. Или, если хочешь делать по 10 штук, используй InJournalBetweenTimes, при этом кол-во фраз проверяй параметром LineCount.

В случае InJournalBetweenTimes блок должен выглядеть примерно так:

Code: Select all

stime := Now;

waittargetobject(findtype($1BDD,ground)); 
useobject(findtype($1EB9,backpack)); 
waitgump('1025'); 

repeat
InJournalBetweenTimes('You create the item|You make an exceptional item', stime, Now);
wait(500);
until (LineCount >= 10) or (Now > stime + (3.0/1440));
(Now > stime + (3.0/1440)) необходимо для того, чтобы скрипт случайно не зациклился по разным причинам. Т.е ожидание будет максимум 3 минуты, после этого ты выйдешь из цикла не дождавшись 10-ти нужных фраз.
Last edited by Miralex on 26.05.2005 6:33, edited 1 time in total.
ParadoX
Apprentice
Apprentice
Posts: 256
Joined: 17.03.2005 16:06

Post by ParadoX »

как ни странно скрип работает харашо.. будет лучше если будет просто опережение -2/60/1440

ну вобщем здеаю по твоему.. твой вариант более экономичен..

кстаи шинг почти закончен.. как насчет записи.. мне понравилась функция тотуса на запись кординат )
Gorn
Neophyte
Neophyte
Posts: 19
Joined: 19.05.2005 9:18

Post by Gorn »

нехватает проверки одной фразы в этом скрипте...
Нюбокрафты будут частенько по 3 минуты простаивать ...
Miralex
Developer
Developer
Posts: 656
Joined: 11.03.2005 19:12
Contact:

Post by Miralex »

Gorn wrote:нехватает проверки одной фразы в этом скрипте...
Нюбокрафты будут частенько по 3 минуты простаивать ...
Насчет "You fail ....." ты правильно подметил :-)

P.S. фразы на разных шардах могут звучать по разному - поэтому желательно всех их сначала проверить.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

nDW - create|make|destroy

P.S. Нет такого слова untill с двумя LL
исправьте
Last edited by Vizit0r on 25.05.2005 19:07, edited 1 time in total.
Sydiva
Neophyte
Neophyte
Posts: 15
Joined: 10.05.2005 13:39

Post by Sydiva »

"Система вейта" будет давать сильные сбои на лагах и тд.

Уже обьяснял как правильно использовать WaitJournalLine и как неверно.

Правильно: (обрати внимание на переменую stime)

Code: Select all


Неправильно:

Code: Select all


Твоя "система вейта" построена по второму (не верному) варианту.
Скрипт не собъется, но часто будешь терять время прокачки зря.



ПАНИКА я запуталси :shock:

пожалуста дай сылку где ты про это обьяснал :oops: бо в куке явно задержка неконает бо ждет все 50000
Termit
Neophyte
Neophyte
Posts: 13
Joined: 24.05.2005 21:33

Post by Termit »

Я етот скрипт включаю и он через секнду выключаеться :(
Уже работает .. У тебя была ашибка ''UNTILL''
И еще он нехавает ...мучалься мучалься нечего понять немогу
Опять седня в пролете буд на инже ставить на бланнки
ParadoX
Apprentice
Apprentice
Posts: 256
Joined: 17.03.2005 16:06

Post by ParadoX »

насчет унтил это было содрано прям с миралекса.. кука нормально работат.. чары кушают.. жизнь прекрасна ) про дестрой не знал.. бо красфтом играл за всю жизнь на ДВ гдето минут 10 :D и ваще жизнь прекрасна.. у меня сессия
Miralex
Developer
Developer
Posts: 656
Joined: 11.03.2005 19:12
Contact:

Post by Miralex »

Еще нехватает:
1. проверок на строки типа I'm already .... и Perform....

2. Проверки на save

Code: Select all

procedure save(); 
var Time : TDateTime; 
begin 
Time:= Now - (0.5 / 1440); 
if InJournalBetweenTimes('Saving World State',Time,Now) >= 0 then Wait(30000) 
end; 

3. Проверки IsCurMessages

Code: Select all

procedure IsCurMessages;
var D : TDateTime; 
begin 
{5 minutes in DateTime = 5 / 1440 = 0.00347} 
D := Now - (0.00347);
InJournalBetweenTimes(CharName + ': I am already performing another action.|I am already doing something else.',D,Now); 

if LineCount > 5 then 
   begin 
   AddToSystemJournal('Error with target. Disconnected'); 
   Disconnect; 
   end; 

end;                                   
Также ты слишком часто пытаешься кушать ....


В результате тот блок будет выглядеть примерно так:

Code: Select all

BEGIN
SetARStatus(true);

while true do 
begin
hungry(1);
 
for i := 1 to 10 do
   begin
   save; {Check Save}
   stime := Now;
   waittargetobject(findtype($1BDD,ground));
   useobject(findtype($1EB9,backpack));
   waitgump('1025');

   repeat
   c := InJournalBetweenTimes('performing|doing', stime, Now);
   InJournalBetweenTimes(create|make|destroy', stime, Now); 
   wait(500); 
   until (LineCount >= 10) or (Now > stime + (3.0/1440)) or (c >= 0);
   wait(500); {Удалить если ненадо}
   end; {End for i := 1 to 10}

IsCurMessages;   
end; {End while true do}

END.
Вроде бы так. Чара у меня нету, чтобы проверить - так что если чтото заметите - говорите.
Miralex
Developer
Developer
Posts: 656
Joined: 11.03.2005 19:12
Contact:

Post by Miralex »

Sydiva wrote:
ПАНИКА я запуталси :shock:

пожалуста дай сылку где ты про это обьяснал :oops: бо в куке явно задержка неконает бо ждет все 50000
Суть заключатеся в том, что пока скрипт переключится на WaitJournalLine - ты можешь уже успеть получить нужную тебе фразу. При этом получится что время прихода фразы не попадет в диапазон WaitJournalLine. Для этого, перед действием, необходимо запомнить время и в WaitJournalLine сканировать именно с момента "до использования чего либо".
Посмотри внимательно на эти 2 куска кода и ты поймешь.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

Миралекс, WaitJournalLine глючит - раз на сотню попыток она не отслеживает появления в журнале сообщения нужного. Просто никакой реакции.
Приеду с выходных - скину тебе скрипт
Miralex
Developer
Developer
Posts: 656
Joined: 11.03.2005 19:12
Contact:

Post by Miralex »

Vizit0r wrote:Миралекс, WaitJournalLine глючит - раз на сотню попыток она не отслеживает появления в журнале сообщения нужного. Просто никакой реакции.
Приеду с выходных - скину тебе скрипт
Такое как раз происходит, если использовать его неверно. Хотя покажешь скрипт и посмотрим ....
Post Reply