Page 1 of 1
Мой скрипт на спаринг. Нужна помощь экспертов !!!
Posted: 13.11.2005 20:04
by Brutus
program fighter;
var i:Integer;
{$Include 'all.inc'}
Const
naparnik = $012EB700;
dager = $0F51;
binti = $0E21;
ghost = $0193;
procedure fight(object:Cardinal);
begin
If (GetHp(self)>((0.5)*GetMaxHp(self))) and (GetHp(object)>((0.5)*GetMaxHp(object))) then begin attack(object); end
else SetWarMode(false);
end;
procedure heal(object:Cardinal);
begin
if GetHp(object)<GetMaxHP(object) then begin
Useobject(FindType(binti,ground));
waittargetobject(object);
CheckTargetError(2,2);
WaitJournalLine(now,'you have healed', 14000);
end
end;
procedure reshim(object:Cardinal);
begin
If IsDead(object) then begin
FindType(ghost,ground); AddToSystemJournal('RESHIM');
heal(finditem);
end
end;
procedure resself;
begin
if dead then begin
UOSay('.forgivethee');
SetWarMode(true);
waitgump('1');
AddToSystemJournal('RESSELF');
while dead do
begin
wait(1000)
end;
end
end;
Begin
SetARStatus(true); finddistance:=2;
while connected do begin
for i:=1 to 7 do begin
while not dead do begin
checksave; wait(100);
//checkeq;
wait(100);
fight(naparnik); wait(200);
heal(naparnik); wait(200);
reshim(naparnik); wait(200);
end;
resself;
end;
Hungry(1,ground)
end;
End.
Posted: 14.11.2005 8:53
by Miralex
Телепатов нету. И в чем нужна помощь?
Несколько замечаний по скрипту:
1. По поводу Include:
Сначала Type, Var, Const а потом Include!
2. GetHp(object)
Чтобы получить GetHp(object) - необходимо "вытянуть" полоску со ХП чара. Стелс клиент покачто это делать не умеет.
Posted: 14.11.2005 15:30
by Brutus
15:32:45: Compiling
15:32:45: Compiled succesfully
15:32:46: Exception: Type Mismatch at 28.131
15:32:46: Script fighter1.txt stoped successfuly
что-то я не могу понять, где там ошибка...???
Posted: 14.11.2005 15:48
by Miralex
Тоже не могу понять.
Компилятор вон тебе сказал, что ошибка в 28-й строке. А что это за строка - не знаю.
Posted: 18.11.2005 18:15
by Brutus
видимо это баг стелса.....
и никто мне не может помочь.....
Posted: 18.11.2005 19:07
by Miralex
Нет, это нежелание пользователя выдать информацию о проблеме.
Posted: 19.11.2005 9:42
by Brutus
компилятор ругается на 28 строчке:
procedure reshim(object:Cardinal);
begin //28 строчка
If IsDead(object) then begin
FindType(ghost,ground); AddToSystemJournal('RESHIM');
heal(finditem);
end
end;
Posted: 19.11.2005 10:15
by Alex
не хватает точки с запятой в предпоследнем end`е
Posted: 19.11.2005 11:41
by Brutus
поставил точку с запятой - та же ошибка, там не в точке с запятой дело...
Posted: 19.11.2005 14:03
by Miralex
Очень большое подозрение, что у тебя не 0.95-я версия Stealth клиента.
У меня на 0.95-й откомпилировалось без проблем.
Posted: 19.11.2005 18:57
by Brutus
именно 0.95, на дриме ниже запрещено
Posted: 19.11.2005 19:19
by Miralex
В процессе компиляции проблем нету.
Проблема есть и она возникает именно в процессе работы.
Code: Select all
If (GetHp(self)>((0.5)*GetMaxHp(self))) and (GetHp(object)>((0.5)*GetMaxHp(object))) then
Суть в том, что Pascal Script не может сравнивать переменные различных типов. У тебя GetHp(self) имеет целочисленный тип, а (0.5)*GetMaxHp(self)) имеет вещественный тип. Тебе надо и то и другое привести к одному типу. Точнее необходимо просто целое число умножить на (1.0) и оно станет вещественным.
В результате будет:
Code: Select all
If ((1.0)*GetHp(self)>((0.5)*GetMaxHp(self))) and ((1.0)*GetHp(object)>((0.5)*GetMaxHp(object))) then
Posted: 19.11.2005 23:23
by ParadoX
не легче просто разделить на 2 а не умножать на 0,5....
Posted: 06.01.2006 1:02
by Dex
ParadoX wrote:не легче просто разделить на 2 а не умножать на 0,5....
Есть такой раздел в программировании - "Оптимизация". Так вот операция деления отнимает больше времени, чем умножения.
И как раз замена "деления на 2" "умножением на 0.5" является классическим примером.

Posted: 06.01.2006 23:07
by ParadoX
хех.. да асм это моя слабость... уже два раза неугадывал что быстрее
вопрос - проще заного присвоить переменной значение или сделать проверку на схожесть ?

ваще щас занимаюсь таким занимательным делом... рисую график с хДС чтобы еще и маштаб можно было менять

полиномы лагранжа рулят...