Чат аннонс

Раздел посвященный скриптам для бота
Ответить
KLEYDOX
Сообщения: 7
Зарегистрирован: Пн авг 15, 2016 3:57 pm
Откуда: Харьков

Вс сен 01, 2019 8:42 pm

Подскажите, как ловить чат анонса?

Код: Выделить всё

uses
  SysUtils, classes;

const
  findWords = 'Raid Boss : Dragon Beast spawned!';

var
messageString : string = '';
onChecked : boolean = false;

procedure OnPacket(ID1, ID2: Cardinal; Data: PChar; Size: Word);
var i : integer;
begin
if (ID1 = 74) then begin
  if (Pword(Data+4)^ = 10) then begin
    messageString := Data+36;
    if (Pos(findWords, messageString) > 0) then
       onChecked := true;
   end;
  end;
end;

procedure OnCheck();
begin
  while (true) do begin
  delay(10);
          if (onChecked)
            then begin
              //print('stop');
              //Engine.GameClose;
              //script.Stop;
              engine.say('Дракон спавн', 2,'kley');
            end;
    end;
end;


begin
    script.newthread(@OnCheck);
    delay(-1);
end.
пробовал так, не пашет

Код: Выделить всё

uses sysutils,classes;
begin
   while Engine.Status = lsOnline do begin
   	

      if (ChatMessage.ChatType = mtSystem) and ChatMessage.Unread then //непрочитанное сообщение тип чата mtPrivate=ПМ mtParty  mtAll=белый
      begin
      if pos('Raid Boss : Dragon Beast spawned!',ChatMessage.Text)>0 then
      begin
      //engine.SetTarget(ChatMessage.Sender); 
     // engine.useskill(1355); // ID скилла
      engine.say('Dragon',2,'kley');
      end;
      end;
    delay(500);
   end;
end.
и так не пашет
neowhite
Куда я попал
Сообщения: 26
Зарегистрирован: Ср фев 10, 2016 9:10 pm

Пт сен 06, 2019 9:28 am

KLEYDOX писал(а):
Вс сен 01, 2019 8:42 pm
Подскажите, как ловить чат анонса?

Код: Выделить всё

uses
  SysUtils, classes;

const
  findWords = 'Raid Boss : Dragon Beast spawned!';

var
messageString : string = '';
onChecked : boolean = false;

procedure OnPacket(ID1, ID2: Cardinal; Data: PChar; Size: Word);
var i : integer;
begin
if (ID1 = 74) then begin
  if (Pword(Data+4)^ = 10) then begin
    messageString := Data+36;
    if (Pos(findWords, messageString) > 0) then
       onChecked := true;
   end;
  end;
end;

procedure OnCheck();
begin
  while (true) do begin
  delay(10);
          if (onChecked)
            then begin
              //print('stop');
              //Engine.GameClose;
              //script.Stop;
              engine.say('Дракон спавн', 2,'kley');
            end;
    end;
end;


begin
    script.newthread(@OnCheck);
    delay(-1);
end.
пробовал так, не пашет

Код: Выделить всё

uses sysutils,classes;
begin
   while Engine.Status = lsOnline do begin
   	

      if (ChatMessage.ChatType = mtSystem) and ChatMessage.Unread then //непрочитанное сообщение тип чата mtPrivate=ПМ mtParty  mtAll=белый
      begin
      if pos('Raid Boss : Dragon Beast spawned!',ChatMessage.Text)>0 then
      begin
      //engine.SetTarget(ChatMessage.Sender); 
     // engine.useskill(1355); // ID скилла
      engine.say('Dragon',2,'kley');
      end;
      end;
    delay(500);
   end;
end.
и так не пашет
Какие хроники ?
Ответить