Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7 
	Обкастер.
Обкастер.
У когонибудь есть скрипт для обкаста?
пример: ставим дома мага, когда нужен обкаст гвоорим ему Cast! он на чара кидает блесс и протекшен. а для защиты от всяких нежелательных типов, проверка по ид персонажа. у меня есть такой скрипт на инжу, по по непонятным причинам постоянно канлостит\крашит.
заранее спасибо
			
			
									
									
						пример: ставим дома мага, когда нужен обкаст гвоорим ему Cast! он на чара кидает блесс и протекшен. а для защиты от всяких нежелательных типов, проверка по ид персонажа. у меня есть такой скрипт на инжу, по по непонятным причинам постоянно канлостит\крашит.
заранее спасибо
Должно быть что-то вроде этого:За возможные ошибки не бить - писал в блокнотике на память, не компилил. Команды "обкастеру" чувствительны к регистру.
			
			
									
									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.Помните – ничто так не защищает ваши зубы 12 часов днем и 12 часов ночью как уважительное отношение к окружающим.
"Многие из вас знакомы с достоинствами программиста. Их всего три, и разумеется это: лень, нетерпеливость и гордыня"© Larry Wall
						"Многие из вас знакомы с достоинствами программиста. Их всего три, и разумеется это: лень, нетерпеливость и гордыня"© Larry Wall
- 
				neverflash
- Novice 
- Posts: 70
- Joined: 14.09.2010 16:04
- Location: BY, Minsk
Это при запуске скрипта пишет? Попробуй сохранить скрипт в какой-нить файл.
			
			
									
									Помните – ничто так не защищает ваши зубы 12 часов днем и 12 часов ночью как уважительное отношение к окружающим.
"Многие из вас знакомы с достоинствами программиста. Их всего три, и разумеется это: лень, нетерпеливость и гордыня"© Larry Wall
						"Многие из вас знакомы с достоинствами программиста. Их всего три, и разумеется это: лень, нетерпеливость и гордыня"© Larry Wall
пишет
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
			
			
									
									
						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.
Забыл в присваивании двоеточие поставить:
			
			
									
									Code: Select all
Friends := [$0179686D, $018EF866]; //Пример наполнения массива игроков, указать правильные значенияПомните – ничто так не защищает ваши зубы 12 часов днем и 12 часов ночью как уважительное отношение к окружающим.
"Многие из вас знакомы с достоинствами программиста. Их всего три, и разумеется это: лень, нетерпеливость и гордыня"© Larry Wall
						"Многие из вас знакомы с достоинствами программиста. Их всего три, и разумеется это: лень, нетерпеливость и гордыня"© Larry Wall
Довольно тривиальные изменения:
			
			
									
									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.Помните – ничто так не защищает ваши зубы 12 часов днем и 12 часов ночью как уважительное отношение к окружающим.
"Многие из вас знакомы с достоинствами программиста. Их всего три, и разумеется это: лень, нетерпеливость и гордыня"© Larry Wall
						"Многие из вас знакомы с достоинствами программиста. Их всего три, и разумеется это: лень, нетерпеливость и гордыня"© Larry Wall



 
 
 спасибо огромное)
 спасибо огромное)