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

Констатнта

тут можно задать вопрос по скриптингу
Post Reply
Venom
Novice
Novice
Posts: 123
Joined: 25.08.2010 14:00

Констатнта

Post by Venom »

Подскажите плс, как перечислить констатну, если более чем одно значение ?
Например :

procedure ХХХ

Const
Friend = $04D3DE43 and $04D3DE42 and $04D3DE41

Спасибо.
CFA
Developer
Developer
Posts: 492
Joined: 20.04.2006 6:03
Contact:

Re: Констатнта

Post by CFA »

объявить несколько констант, иди массив. одну константу, чтоб она хранила несколько значений сделать нельзя
Venom
Novice
Novice
Posts: 123
Joined: 25.08.2010 14:00

Post 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.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

var vendor_types : array of word;

....

vendor_types:= [$0191, $0190, $0018, $0032, $0001, $0011, $0021, $0055, $002D, $0029];
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Venom
Novice
Novice
Posts: 123
Joined: 25.08.2010 14:00

Post 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" (
Venom
Novice
Novice
Posts: 123
Joined: 25.08.2010 14:00

Post by Venom »

Хелп плс...
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post 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
и т.д.

дальше не правил, но думаю таких приколов будет там еще.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Venom
Novice
Novice
Posts: 123
Joined: 25.08.2010 14:00

Post by Venom »

Подскажите, с чем может быть связанна проблема, - как отдельный скрипт - работает, как внутрення процедура - нет.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

с тем, что перечитывай хистори аси.

я тебе тогда рассказал в чем проблема - в дурной архитектуре, из-за котороый некоторые функции не вызываются порсто.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Post Reply