Page 1 of 1
Констатнта
Posted: 17.09.2010 15:44
by Venom
Подскажите плс, как перечислить констатну, если более чем одно значение ?
Например :
procedure ХХХ
Const
Friend = $04D3DE43 and $04D3DE42 and $04D3DE41
Спасибо.
Re: Констатнта
Posted: 17.09.2010 17:26
by CFA
объявить несколько констант, иди массив. одну константу, чтоб она хранила несколько значений сделать нельзя
Posted: 17.09.2010 17:50
by Venom
Вот так ?
Только почему то выбивает ошибку на 9 строке :
Compiler: [Error] (333.txt at 9:2): 'BEGIN' expected
Почему, понять не могу ?
Code: Select all
procedure xxx;
var
ic : integer;
Friend: array [1..3] of Word;
tmp_bandages : cardinal;
procedure CheckFriend;
begin
if (FindType($0191,ground) <> 0) or (FindType($0190,ground) <> 0) then
begin
if (GetHP(Friend[ic]) < (GetMaxHP(Friend[ic]) / 3)) then
begin
WaitTargetObject(FindType(Friend[ic], Ground));
wait(100);
tmp_bandages := FindType($0E21,backpack);
useobject(tmp_bandages);
wait(100);
end;
end;
end;
BEGIN
Friend [1]: =$04D3DE43;
Friend [2]: =$04D3DE42;
Friend [3]: =$04D3DE41;
while true do
begin
If not(isDead(self)) then CheckFriend;
end;
end.
Posted: 17.09.2010 20:26
by Vizit0r
var vendor_types : array of word;
....
vendor_types:= [$0191, $0190, $0018, $0032, $0001, $0011, $0021, $0055, $002D, $0029];
Posted: 17.09.2010 20:39
by Venom
Спасибо.
Правильно ?:
Code: Select all
procedure xxx;
var
Friend: array of Word;
tmp_bandages : cardinal;
procedure CheckFriend;
begin
if (FindType($0191,ground) <> 0) or (FindType($0190,ground) <> 0) then
begin
if (GetHP(Friend) < (GetMaxHP(Friend) / 3)) then
begin
WaitTargetObject(FindType(Friend, Ground));
wait(100);
tmp_bandages := FindType($0E21,backpack);
useobject(tmp_bandages);
wait(100);
end;
end;
end;
BEGIN
Friend: =[$04D3DE43, $04D3DE42];
while true do
begin
If not(isDead(self)) then CheckFriend;
end;
end.
А вот с ошибкой... Подскажите, где я допустил оплошность ?
Все равно ее выбивает на первом "begin" (
Posted: 20.09.2010 11:25
by Venom
Хелп плс...
Posted: 20.09.2010 11:43
by Vizit0r
первая и основная ошибка - это то, что программа начинается с
program xxx
а не
procedure xxx
а дальше ошибки идут валом.
0) Friend: =[$04D3DE43, $04D3DE42];
должно быть
Friend := [$04D3DE43, $04D3DE42];
ибо оператор присвоения не разрывается
1) массив Word, а пихается в него CArdinal'ы
2) if GetHP(Friend) < GetMaxHP(Friend) div 3 then
должно, насколько я понимаю, перебираться в цикле и иметь вид типа
for i := 0 to Length(Friend) -1 do
if GetHP(Friend) < GetMaxHP(Friend) div 3 then
и т.д.
дальше не правил, но думаю таких приколов будет там еще.
Posted: 19.10.2010 15:51
by Venom
Подскажите, с чем может быть связанна проблема, - как отдельный скрипт - работает, как внутрення процедура - нет.
Posted: 19.10.2010 15:56
by Vizit0r
с тем, что перечитывай хистори аси.
я тебе тогда рассказал в чем проблема - в дурной архитектуре, из-за котороый некоторые функции не вызываются порсто.