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

Речевой скрипт (ищу)

тут можно задать вопрос по скриптингу
Post Reply
sheep
Posts: 2
Joined: 23.03.2016 23:17

Речевой скрипт (ищу)

Post by sheep »

Здравствуйте, возможно у вас уже есть готовый - или можете набросать легкий речевой скрипт.

Суть скрипта как в пилоте.

Code: Select all

Say blablabla
wait 500
say blablabla
wait 500
say blablabla
wait 12000
Так он выглядит на пилоте, хотелось бы в Stealth.

Спасибо за внимание, и заранее за помощь.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Речевой скрипт (ищу)

Post by Vizit0r »

вот ты не поверишь

UOSay('lalala');
wait(500);
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
drabadan
Expert
Expert
Posts: 730
Joined: 13.12.2012 17:35
Contact:

Re: Речевой скрипт (ищу)

Post by drabadan »

Code: Select all

Program RECHEVOJSCRIPT;

begin
UOSay('blablabla');
//Say blablabla
wait(500);
UOSay('blablabla');
//say blablabla
wait(500);
UOSay('blablabla');
//say blablabla
wait(12000);
end.
sheep
Posts: 2
Joined: 23.03.2016 23:17

Re: Речевой скрипт (ищу)

Post by sheep »

drabadan wrote:

Code: Select all

Program RECHEVOJSCRIPT;

begin
UOSay('blablabla');
//Say blablabla
wait(500);
UOSay('blablabla');
//say blablabla
wait(500);
UOSay('blablabla');
//say blablabla
wait(12000);
end.
Спасибо, а возможность повтора как реализовать?
Чтобы по истечению допустим 12 секунд, он начинал с заново.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Речевой скрипт (ищу)

Post by Vizit0r »

while not dead do
begin
//тут все, что надо повторить
end;

почитай-ка ты прикрепленные темы в этом же разделе, про азы паскаля - сильно поможет.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
tatauozhr
Posts: 1
Joined: 04.04.2018 13:19

Re: Речевой скрипт (ищу)

Post by tatauozhr »

Добрые люди, Здравствуйте, не могу ни как сообразить, как добавить процедуру говорилки в скрипт?

Program Cast;

{$Include 'hungry.inc'}

var
t: TDateTime;
i: integer;


function CheckReags: boolean;
var
Reags: array[0..10] of integer;

begin
Reags[1]:=BM;
Reags[2]:=BP;
Reags[3]:=GA;
Reags[4]:=GS;
Reags[5]:=MR;
Reags[6]:=NS;
Reags[7]:=SA;
Reags[8]:=SS;

for i:=1 to 8 do
begin
FindTypeEx(Reags, $FFFF, backpack, true);
if FindFullQuantity < 10 then
begin
UOSay('Нет регов');
result:=false;
AddToSystemJournal(IntToStr(i));
break;
end
else
begin
result:=true;
end;
end;
end;


procedure OpenPack;
begin
if FindType($0E75, $FFFF) > 0 then
for i:=1 to FindCount do
begin
FindType($0E75, $FFFF);
UseObject(FindItem);
repeat
Wait(50);
until LastContainer=FindItem;
Ignore(FindItem);
end;

if FindType($0E76, $FFFF) > 0 then
for i:=1 to FindCount do
begin
FindType($0E76, $FFFF);
UseObject(FindItem);
repeat
Wait(50);
until LastContainer=FindItem;
Ignore(FindItem);
end;
end;


procedure CheckCon;
begin
if Connected=False then
begin;
repeat
Wait(1000);
until Connected=True;
Wait(5000);
OpenPack;
end;
end;


procedure CheckMana;
begin
if Mana < 70 then
begin
Hungry(2, ground);
t:=now;
UseSkill('Meditation');
if WaitJournalLine(t, 'enter|again|focus', 5000) then
begin
if FoundedParamID <> 0 then
begin
Wait(10000);
CheckMana;
end;
end
else
begin
UOSay('Медитация неудачна');
exit;
end;
repeat
Wait(2000);
UOSay('Мана: '+IntToStr(Mana)+'\'+IntToStr(MaxMana));
until InJournalBetweenTimes('lost|stop', t, now) > 0;
end;
end;


procedure CastSpell(Spell: string; Target: integer);
begin
if TargetPresent then CancelTarget;
Cast(Spell);
WaitForTarget(3000);
if TargetPresent then
TargetToObject(Target)
else
begin
UOSay(Spell+': ошибка');
exit;
end;
end;


procedure CheckHeal;
var
i,c,tg: integer;
List: TStringList;
HType: array [0..10] of integer;

begin
HType[0]:=$0190;
HType[1]:=$0191;

for c:=0 to 1 do
begin
FindDistance:=4;
FindType(HType[c], ground);
List:=TStringList.Create();
GetFindedList(List);

for i:=0 to List.Count-1 do
begin
tg:=StrToInt('$'+List.Strings);
if IsPoisoned(tg) then
begin
UOSay('Compassion heals all!');
CastSpell('Cure', tg);
Wait(2000);
end;

if GetHP(tg) < GetMaxHP(tg)/1.99 then
begin
UOSay('Мазью помазать?');
CastSpell('Greater Heal', tg);
Wait(2000);
end;
end;
List.Free;
end;
end;


procedure Blessing(Target: integer);
begin
UOSay('.g опа-на!');
Wait(200);
Hungry(2, ground);
CastSpell('Bless', Target);
Wait(200);
CastSpell('Strength', Target);
CastSpell('Cunning', Target);
CastSpell('Agility', Target);
CastSpell('Greater Heal', Target);
CastSpell('Arch Protection', Target);
Wait(2000);
end;


procedure WaitForRequest;
begin
CheckCon;
t:=now;
CheckMana;
CheckHeal;
if WaitJournalLine(t, 'cast|dispel', 1000) then
if CheckReags then
begin
CastSpell('Magic Arrow', LineID);
case FoundedParamID of
0: Blessing(LineID);
1: CastSpell('Dispel', LineID);
end;
end;
end;
begin
CheckCon;
OpenPack;
while not Dead do
WaitForRequest;
end.

нужна процедура просто чтобы говорил по заданному времени, а не когда совершает действие
Post Reply