Page 2 of 4

Posted: 06.12.2010 11:55
by plotney
я создал еще одну процедуру DoBless,
как сюда докрутить чтобы он при команде Bless! кастовал только Bless?
procedure OnSpeech(Text, SenderName: String; SenderID: Cardinal);

Code: Select all

begin
  if (not Casting) and (Text = 'Cast!') then begin
    for i := 0 to Length(Friends) - 1 do begin
      if i >= Length(Friends) then Break;
      if SenderID = Friends[i] then begin
        Casting := True;
        DoCast(SenderID);
        Casting := False;
        Break;
      end;
    end;
  end;
end;
можно это сделать просто продублировав if следующим образом?

Code: Select all

begin
  if (not Casting) and (Text = 'Cast!') then begin
    for i := 0 to Length(Friends) - 1 do begin
      if i >= Length(Friends) then Break;
      if SenderID = Friends[i] then begin
        Casting := True;
        DoCast(SenderID);
        Casting := False;
        Break;
      end;
    end;
  end;
  if (not Casting) and (Text = 'Bless!') then begin
    for i := 0 to Length(Friends) - 1 do begin
      if i >= Length(Friends) then Break;
      if SenderID = Friends[i] then begin
        Casting := True;
        DoBless(SenderID);
        Casting := False;
        Break;
      end;
    end;
  end;
end;

Posted: 06.12.2010 12:15
by Fenix
1. LastEat нужно в варах прописать (забыл).
2. Можно.

Posted: 06.12.2010 12:48
by plotney
1. LastEat каким типом прописывать? стринг? или просто LastEat: Now; ?
2. работает :)

Posted: 06.12.2010 15:13
by Fenix
var
LastEat: TDateTime;

Posted: 06.12.2010 16:30
by plotney
писало:
14:13:07:000 [puremage]: Compiling
14:13:07:015 [puremage]: Compiler: [Error] (caster+food.sc at 88:18): Unknown identifier 'EatDelta'
14:13:07:015 [puremage]: Compiling failed
14:13:07:015 [puremage]: Script caster+food.sc stopped successfuly

потом поменят EatDelta на EatDelay и все заработало, это правильно, или был заложен другой смысл?

Posted: 06.12.2010 16:36
by Fenix
Да-да. Всё правильно сделал. Это моя невнимательность. Сплю и кодю.

Posted: 22.01.2011 11:15
by Vortal

Code: Select all

11:13:42:602 [Kalisto]: Compiler: [Error] (Cast.sc at 36:4):  Unknown identifier 'SetEventProc'
11:13:42:602 [Kalisto]: Compiling failed
11:13:42:602 [Kalisto]: Script Cast.sc stopped successfuly
Я так понимаю ошибка в инвентах, просьба расскажите мне про эти инвенты и как их исползовать, я на форуме так и не нашол, разжованного ответа.

Posted: 24.01.2011 10:54
by Fenix
Да нет, ошибка в старой версии стелса, если он метод SetEventProc не знает. А вот, собственно, инфа по SetEventProc, правда в несколько сыром виде.

Re: Обкастер.

Posted: 12.06.2011 14:28
by -=JoKeR=-
На версии 1 RC3 не хочет работать.

Code: Select all

Compiler: [Error] (Obcast.txt at 33:42):  Type mismatch

Code: Select all

Program Obcast;

var 
  i: Integer; 
  Casting: Boolean; 
  Friends: array of Cardinal; 

procedure DoCast(Character: Cardinal); 
begin 
  //пример каста заклинаний на игрока.
  SetWarMode(false);  
  if TargetPresent then CancelTarget; 
  Cast('Cunning');  
  WaitForTarget(5000); 
  TargetToObject(self);
  Cast('Bless');
  WaitForTarget(5000);
  TargetToObject(Character);
  Cast('Protection');
  WaitForTarget(5000);
  TargetToObject(Character);
  Cast('Magic Reflection');
  WaitForTarget(5000);
  TargetToObject(Character);
  Cast('Reactive Armor');
  WaitForTarget(5000);
  TargetToObject(Character);
end; 

procedure OnSpeech(Text, SenderName: String;  SenderID: Cardinal); 
begin 
  if (not Casting) and (Text = 'cast') then begin 
    for i := 0 to Length(Friends) - 1 do begin 
      if i >= Length(Friends) then Break; 
      if SenderID = Friends[i] then begin 
        Casting := True; 
        DoCast(SenderID); 
        Casting := False;
        UseSkill('Meditation');		
        Break; 
      end; 
    end; 
  end; 
end; 

begin 
  Friends := [$000094FE]; //Пример наполнения массива игроков, указать правильные значения 
  SetEventProc(evUnicodeSpeech, 'OnSpeech'); 
  SetEventProc(evSpeech, 'OnSpeech'); 
  while not Dead do 
  begin 
    if not Connected then 
    begin 
      Connect; 
      Wait(5000); 
      Continue; 
    end; 
    Wait(10000); 
  end; 
  SetEventProc(evUnicodeSpeech, ''); 
  SetEventProc(evSpeech, ''); 
end. 

Re: Обкастер.

Posted: 12.06.2011 14:53
by Alex
не пора бы обновить стелс? :)

Re: Обкастер.

Posted: 12.06.2011 17:20
by -=JoKeR=-
Нет не пора.
Пиши по сути вопроса.

Re: Обкастер.

Posted: 12.06.2011 17:29
by Alex
без понятия, ждем более опытных товарищей

Re: Обкастер.

Posted: 12.06.2011 17:55
by Scripts Writer

Code: Select all

for i := 0 to Length(Friends) - 1 do begin
to

Code: Select all

for i := 0 to getArrayLength(Friends) - 1 do begin 

Code: Select all

if i >= Length(Friends) then Break;
to

Code: Select all

if i >= getArrayLength(Friends) then Break;

Re: Обкастер.

Posted: 12.06.2011 18:26
by -=JoKeR=-
Спасибо, но я уже свой код с ноля написал.
Сейчас проверю этот.

Re: Обкастер.

Posted: 12.06.2011 18:28
by -=JoKeR=-
Unknown identifier 'SetEventProc'
Всё понятно.