Page 1 of 4

Обкастер.

Posted: 03.12.2010 7:45
by plotney
У когонибудь есть скрипт для обкаста?
пример: ставим дома мага, когда нужен обкаст гвоорим ему Cast! он на чара кидает блесс и протекшен. а для защиты от всяких нежелательных типов, проверка по ид персонажа. у меня есть такой скрипт на инжу, по по непонятным причинам постоянно канлостит\крашит.
заранее спасибо

Posted: 03.12.2010 8:42
by Fenix
Должно быть что-то вроде этого:

Code: Select all

var
  Casting: Boolean;
  Friends: array of Cardinal;

procedure DoCast(Character: Cardinal);
begin
  //пример каста заклинаний на игрока.
  CheckLag(15000);
  if TargetPresent then CancelTarget;
  Cast('Protection');
  CheckLag(15000);
  WaitForTarget(5000);
  TargetToObject(Character);
  CheckLag(15000);
  Wait(3000);
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;
        Break;
      end;
    end;
  end;
end;

begin
  Friends = [$00000001, $00000002]; //Пример наполнения массива игроков, указать правильные значения
  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.
За возможные ошибки не бить - писал в блокнотике на память, не компилил. Команды "обкастеру" чувствительны к регистру.

Posted: 03.12.2010 19:25
by plotney
как домой вернусь обязательно попробую! спасибо!

Posted: 03.12.2010 21:27
by MuDaCk
Спасибо за скрипт.

Posted: 04.12.2010 7:13
by neverflash
прошу прощения...

а для чего это надо?

Posted: 04.12.2010 16:02
by plotney
ставишь дома прокаченного мага в дорогом магическом обвесе который дает довольно большой бонус для бафа, и когда надо боевыми чарами прилетаешь домой говоришь Каст! он тебя кастует и ты дальше летишь биться.

Posted: 04.12.2010 16:18
by grundick
Помню на зулу бегал, дык там обкаст ох сколько добавлял!
Без обкаста вообще не интересно было бегать :)

Posted: 04.12.2010 16:23
by plotney
ну нормально прокаченный маг дает в райноне 33, 35, а если со всей бижей магери там вообще за 40 наверно...


скрипт пишет "File not Exist:"

Posted: 04.12.2010 20:51
by plotney
ктонить может помочь? а то я в стелс скриптинге нифига не понимаю x(

Posted: 05.12.2010 14:20
by Fenix
Это при запуске скрипта пишет? Попробуй сохранить скрипт в какой-нить файл.

Posted: 05.12.2010 20:32
by plotney
пишет

18:29:58:843 [puremage]: Compiling
18:29:58:875 [puremage]: Compiler: [Error] (caster.sc at 35:24): Type mismatch
18:29:58:921 [puremage]: Compiling failed
18:29:58:921 [puremage]: Script caster.sc stopped successfuly

Code: Select all

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

procedure DoCast(Character: Cardinal);
begin
  //пример каста заклинаний на игрока.
  CheckLag(15000);
  if TargetPresent then CancelTarget;
  Cast('Protection');
  CheckLag(15000);
  WaitForTarget(5000);
  TargetToObject(Character);
  CheckLag(15000);
  Wait(3000);
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;
        Break;
      end;
    end;
  end;
end;

begin
  Friends = [$0179686D, $018EF866]; //Пример наполнения массива игроков, указать правильные значения
  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.

Posted: 06.12.2010 8:31
by Fenix
Забыл в присваивании двоеточие поставить:

Code: Select all

Friends := [$0179686D, $018EF866]; //Пример наполнения массива игроков, указать правильные значения

Posted: 06.12.2010 9:03
by plotney
уррра! заработало ;) спасибо огромное)
а можно какнибудь вписать что-бы он каждые пол часа ел например? я дописал чтобы после каста кушал, а чтобы через какоето время, не могу ерализовать :(

Posted: 06.12.2010 10:11
by Fenix
Довольно тривиальные изменения:

Code: Select all

const
  EatDelay = 0.02; //один час = 1/24, полчаса соотв. 1/48 


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


procedure Eat;
begin
  //... тут алгоритм для "кормления" чара
end;


procedure DoCast(Character: Cardinal); 
begin 
  //пример каста заклинаний на игрока. 
  CheckLag(15000); 
  if TargetPresent then CancelTarget; 
  Cast('Protection'); 
  CheckLag(15000); 
  WaitForTarget(5000); 
  TargetToObject(Character); 
  CheckLag(15000); 
  Wait(3000); 
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; 
        Break; 
      end; 
    end; 
  end; 
end; 


begin
  LastEat := Now; //инициализируем переменную. Считаем, что чар сыт
  Friends = [$0179686D, $018EF866]; //Пример наполнения массива игроков, указать правильные значения 
  SetEventProc(evUnicodeSpeech, 'OnSpeech'); 
  SetEventProc(evSpeech, 'OnSpeech'); 
  while not Dead do 
  begin 
    if not Connected then 
    begin 
      Connect; 
      Wait(5000); 
      Continue; 
    end;
    if LastEat + EatDelta < Now then begin
      Eat;
      LastEat := Now;
    end;
    Wait(10000); 
  end; 
  SetEventProc(evUnicodeSpeech, ''); 
  SetEventProc(evSpeech, ''); 
end.

Posted: 06.12.2010 11:44
by plotney
а LastEat прописывать в варах не надо?