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

Скрипт на тайминг...

тут можно задать вопрос по скриптингу
Post Reply
Jass
Posts: 7
Joined: 02.02.2010 1:06

Скрипт на тайминг...

Post by Jass »

program taming;
var

Char : Array[1..2] of string;
Zver : Array[1..4] of Cardinal;

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

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

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;
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;

procedure First();

var
b : TDateTime;
tmp,i : integer;
lol : String;

Begin
lol:=Char[2]+': all release';

while True do
begin
IsCurMessages;
Hungry(1);

i:=0;
while i < 5 do
begin
for tmp:=1 to 4 do
begin
WaitTargetObject(zver[tmp]);
UseSkill('Animal Taming');
B:=Now+0.0001157407407;
WaitJournalLine(Now, 'You successfully tame|You failed', 30000);
{WaitJournalLine(Now, lol, 15000);}
UOsay('all release');
UOsay(IntToStr(tmp));
i := i + 1;
end;
end;
End;
End;

procedure Second();
var

i,tmp : integer;
f : TDateTime;

begin
f:=Now;
while true do
begin

IsCurMessages;
Hungry(1);

i:=0;
while i < 5 do
begin
WaitJournalLine(f,Char[1]+': 1'+'|'+Char[1]+': 2'+'|'+Char[1]+': 3'+'|'+Char[1]+': 4',0);
if InJournalBetweenTimes(Char[1]+': 1',f,Now) >= 0 then tmp := 1;
if InJournalBetweenTimes(Char[1]+': 2',f,Now) >= 0 then tmp := 2;
if InJournalBetweenTimes(Char[1]+': 3',f,Now) >= 0 then tmp := 3;
if InJournalBetweenTimes(Char[1]+': 4',f,Now) >= 0 then tmp := 4;

f:=Now;
WaitTargetObject(Zver[tmp]);
UseSkill('Animal Taming');

WaitJournalLine(Now,'You successfully tame|You fail', 45000);

UOsay('all release');
i := i + 1;
end;
End;
End;

begin
SetARStatus(true);

Char[1]:='G''Unit'; {Ник первого игрока }
Char[2]:='Zaron Barosso'; {Ник второго игрока }
Zver[1]:=$01B8FE5A; {Айди животных }
Zver[2]:=$01BB2FEA; {Айди животных }
Zver[3]:=$01BA4C8D; {Айди животных }
Zver[4]:=$01BA4C8A; {Айди животных }

Case CharName Of
Char[1] : First('G''Unit');
Char[2] : Second('Zaron Barosso');
else AddToSystemJournal('Error');
End;
End.
выглядит так но не компелируется... проблема 152:27: Invalid number of parameters...
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

procedure First();

....

First('G''Unit');

в обьявлении функции параметров нет, а ты в вызове какого-то беса пихаешь ей строку.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Jass
Posts: 7
Joined: 02.02.2010 1:06

Post by Jass »

это вариант когда прописанно:
procedure First ('G''Unit'); - выдает ошибку 8:17: Identifier expected...
это вариант второй procedure First (); - выдает ошибку 96:30: Invalid number of parameters
скрипт такого типа...
program taming;
var
Char : Array[1..2] of string;
Zver : Array[1..4] of Cardinal;

{$Include 'all.inc'}

procedure First();
var
b : TDateTime;
tmp,i : integer;
lol : String;

Begin
lol:=Char[2]+': all release';

while True do
begin
CheckTargetError(2,2);
Hungry(1,ground);

i:=0;
while i < 5 do
begin
for tmp:=1 to 4 do
begin
WaitTargetObject(zver[tmp]);
UseSkill('Animal Taming');
B:=Now+0.0001157407407;
WaitJournalLine(B, 'You successfully tame|You failed', 30000);
WaitJournalLine(B, lol, 15000);
UOsay('all release');
UOsay(IntToStr(tmp));
i := i + 1;
end;
end;
End;
End;






procedure Second();
var
i,tmp : integer;
f : TDateTime;


begin
f:=Now;
while true do
begin

CheckTargetError(2,2);
Hungry(1,ground);

i:=0;
while i < 5 do
begin
WaitJournalLine(f,Char[1]+': 1'+'|'+Char[1]+': 2'+'|'+Char[1]+': 3'+'|'+Char[1]+': 4',0);
if InJournalBetweenTimes(Char[1]+': 1',f,Now) >= 0 then tmp := 1;
if InJournalBetweenTimes(Char[1]+': 2',f,Now) >= 0 then tmp := 2;
if InJournalBetweenTimes(Char[1]+': 3',f,Now) >= 0 then tmp := 3;
if InJournalBetweenTimes(Char[1]+': 4',f,Now) >= 0 then tmp := 4;

f:=Now;
WaitTargetObject(Zver[tmp]);
UseSkill('Animal Taming');

WaitJournalLine(Now,'You successfully tame|You fail', 45000);

UOsay('all release');
i := i + 1;
end;
End;
End;





begin
SetARStatus(true);
FindVertical:=30;

Char[1]:='G''Unit';
Char[2]:='Zaron Barosso';
Zver[1]:=$0118C75D;
Zver[2]:=$01190028;
Zver[1]:=$0118C75D;
Zver[2]:=$01190028;

Case CharName Of
Char[1] : First('G''Unit');
Char[2] : Second('Zaron Barosso');
else AddToSystemJournal('Error');
End;
End.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

Vizit0r wrote:procedure First();

....

First('G''Unit');

в обьявлении функции параметров нет, а ты в вызове какого-то беса пихаешь ей строку.
что изменилось в том, про что я писал?

правильный ответ - ничего.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Jass
Posts: 7
Joined: 02.02.2010 1:06

Post by Jass »

виз у тебя что мания величия? или ты тока язвить умеешь? прошу объяснить что да как в место этого получаю стеб... что изменилась? ответ - ...
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

Jass wrote:виз у тебя что мания величия? или ты тока язвить умеешь? прошу объяснить что да как в место этого получаю стеб... что изменилась? ответ - ...
это не ответ?
Vizit0r wrote:procedure First();

....

First('G''Unit');

в обьявлении функции параметров нет, а ты в вызове какого-то беса пихаешь ей строку.
если тебе непонятны слова типа "функция" и "параметр" - то я тут причем?

насколько я понял, помощь в твоем понимании - переделать скрипт так, чтоб он работал.
а мне как-то надоело такого рода помощь оказывать.

помогать тем, кто хочет что-то сделать сам - без проблем. а переделывать за других - не-а.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Jass
Posts: 7
Joined: 02.02.2010 1:06

Post by Jass »

есть разница в словах.... дайте мне рабочий скрипт? и объясните в чем ошибка? я просил 2 вариант... да есть моменты которые не понимаю... так это сразу подразумевает, что хочу, что б скрипт доработали за меня? просто есть разница в терменологи програмиста и человека интересующегося этим... к примеру: я механик могу объяснить по доступному как решить проблему... а могу чисто техническими терминами пригрузить... а потом сказать:" что я виноват что ты элементарных вещей не знаешь??"... разница в подходе... но где то я тебя понимаю...
Jass
Posts: 7
Joined: 02.02.2010 1:06

Post by Jass »

теперь то что не совсем правильно я объяснил в другом посте...
procedure First ('G''Unit');<<< объявление
Char[1] : First('G''Unit'); <<< вызов
и сама ошибка:
96:30: Invalid number of parameter
WladL
Apprentice
Apprentice
Posts: 240
Joined: 27.07.2009 17:21
Location: DRW
Contact:

Post by WladL »

в твоем случае правильно так

Code: Select all

procedure First(s,s1:String);

First('G','GGG');
а вообще вот

Code: Select all

program any;

procedure First; //объявляем процедуру без параметров
begin
AddToSystemJournal('Proc First alive.')
end;

procedure Second(s:String; i:integer); //объявляем процедуру с параметрами
begin
AddToSystemJournal('Proc Second alive....'+s+' / '+intToStr(i));
end;


основной скрипт
begin

//...тра-ля-ля...

//вызываем объявленные выше процедуры
First; 
Second('Вот',5);

//...тра-ля-ля...

end;
сюда загляни . понятнее многое станет.
http://stealth.od.ua/forum/viewtopic.php?t=1123
http://stealth.od.ua/forum/viewtopic.php?p=4279#4279
"Как хочешь ты трудись;
Но приобресть не льстись
Ни благодарности, ни славы,
Коль нет в твоих трудах ни пользы, ни забавы. (с) С.Крылов."
Jass
Posts: 7
Joined: 02.02.2010 1:06

Post by Jass »

благодарю за объяснения... дело стронулось, правда появились другие ошибки... но пока справляюсь...
Jass
Posts: 7
Joined: 02.02.2010 1:06

Post by Jass »

Справился)))
Post Reply