Показать сообщение отдельно
Старый 16.10.2007, 04:06   #15
Новичок
 
Регистрация: 13.10.2007
Сообщений: 14
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
StKolya
По умолчанию

Гость, На счёт убрать,вроде бы,не выйдет,почти на всех серверах уже пофиксили изменение пакетов...да и плюс ХЗ чё то облако появляется,не на олимпе оно же не появляется.
но я могу ошибаться,так как пакет от клиента к серверу на выполнения какогото действия отослать можно,и действие будет выполняться,но вот на появление облака поподробнее надо взглянуть в пакетхаке...тока чёта я не могу понять какой пакет идёт от клиента к серверу при использование скила Ансумон...был бы я щас дома,проверил бы,а так пока может кто-то другой сможет помочь раньше чем я =)





Скрипт для управления спойлером который находится во втором окне:

Код:
 //BOT GNOM SPOILER by VORON
//ДЛЯ АДАПТАЦИИ: NICK- переправить в имя чара бота.
//PCK[24] заменить на PCK[xx] в зависимости от того сколько символов в нике персонажа
//который будет управлять ботом pck[24]- для имен состоящих из 6 символов.
//если ваш главный персонаж 5 символов в нике то будет pck[22], если 6 то pck[24]
//если 7 то pck[26], если 8 pck[28] и т.д.
//ДЛЯ РАБОТЫ СКРИПТА: БОТ- лидер пати, ГЛАВНЫЙ ПЕРС (командир) - на первом месте в пати после бота
//кнопки управления пишутся в ПАТИ ЧАТ
//ДЛЯ УПРАВЛЕНИЯ:
//цифра 1 в пати чат - означет бежать за командиром
//цифра 2 в пати чат - атакавать и спойлить врага по ассисту с коммандиром
//свип после смерти моба происходит- автоматически при условии что ТРУП- в таргете у командира
const
    //лучше в начало скрипта выносить все константы для облегчения настройки и модификации
    Name='HellSpoiler';
    //Управляет SpellPower
var
IDPartyMember, IDAssistTarget, IDMy: String; //ИД командира и ИД его таргета
MyCoordX, MyCoordY, MyCoordZ :String; //координаты бота

procedure bRun;
begin
  if (MyCoordX <> '') and (IDPartyMember <> '') then
  begin
     //выделяем командира, эмулируя щелчек мыши
     buf:=hstr('04') + IDPartyMember + MyCoordX + MyCoordY + MyCoordZ + hstr('00');
     SendToServerEX('Name');
     //бежим за командиром эмулируя повторный щелчек мыши по таргету
     buf:=hstr('04') + IDPartyMember + MyCoordX + MyCoordY + MyCoordZ + hstr('00');
     SendToServerEX('Name');
  end;
end;

procedure bSpoil;
begin
  if (MyCoordX <> '') and (IDPartyMember <> '') then
  //if (IDPartyMember <> '') then
  begin
    //берем в таргет вражину по ассисту
    buf:=hstr('04') + IDAssistTarget + MyCoordX + MyCoordY + MyCoordZ + hstr('00');
    SendToServerEX('Name');
    //юзаем спойл
    buf:=hstr('2F FE 00 00 00 00 00 00 00 00');
    SendToServerEX('Name');
  end;
end;

procedure bSweep;
begin
  begin
  //юзаем cвип (предполагая что в таргет брать ненужно, т.к. мы его спойлили и
  //труп остался в таргете у бота)
  buf:=hstr('2F 2A 00 00 00 00 00 00 00 00');
  SendToServerEX('Name');
  end;
end;
begin
//если от сервака принят пакет с ИД и Координатами членов пати то
if FromServer and (ConnectName='Name') and (pck[1]=#$a7) then
begin
//запоминаем ИД члена пати чье имя первое в списке пати (ИД командира)
IDPartyMember:=pck[22] + pck[23] + pck[32] + pck[25];
//Запоминаем собственный ИД (ИД бота)
IDMy:=pck[6] + pck[7] + pck[8] + pck[9];
end;

//если принят пакет со сменой таргета у командира то
if FromServer and (ConnectName='Name') and (pck[1]=#$29) then
if (pck[2]+pck[3]+pck[4]+pck[5]=IDPartyMember) then
begin
//запоминаем ИД таргета командира для ассиста
IDAssistTarget:= pck[6]+pck[7]+pck[8]+pck[9];
end;

//если принят пакет от клиента с моими кординатами то
if FromClient and (ConnectName='Name') and (pck[1]=#$48) then
begin
//запоминаем мои координаты
MyCoordX:= pck[6] + pck[7] + pck[8] + pck[9];
MyCoordY:= pck[10] + pck[11] + pck[12] + pck[13];
MyCoordZ:= pck[14] + pck[15] + pck[16] + pck[17];
end;

//далее идут управляющие команды

//если КОМАНДИР пишет в любой чат цифру "1" (код "#$31 #$00" в юникоде (в юникоде под 1 символ используются 2 байта) я так понял) то
if FromClient and (ConnectName='Name')and (pck[1]=#$38) then
if (pck[2]=#$31) and (pck[3]=#$00) then
begin
//убиваем этот пакет, чтоб сервер его не получил
pck:='';
//гном бежит за КОМАНДИРОМ
bRun;
//выйти из рабочей части скрипта чтобы другие услови не проверяли убитый пакет нулевой длинны
exit;
end;

//СПОЙЛИМ ПО АССИСТУ
//если принято сообщение
//если оно в написано в патичат
//если отправитель- командир
//если текст в нем- цифра "2"
//если скрипт уже перехватил координаты и все значения для переменных
if FromServer and (ConnectName='Name') and (pck[1]=#$4a) then
if (pck[6]=#$03) and (pck[2]+pck[3]+pck[4]+pck[5] = IDPartyMember) then 
if (pck[32] = #$32) then
if (MyCoordX<>'') then
begin
pck:='';
bSpoil;
exit;
end;

//СВИПАЕМ АВТОМАТИЧЕСКИ
//если принят пакет DIE для моба (моб умер)
//если труп моба в таргете у командира
//если скрипт уже перехватил координаты и все значения для переменных
if FromServer and (ConnectName='Name') and (pck[1]=#$06) then
if (pck[2]+pck[3]+pck[4]+pck[5] = IDAssistTarget) then
if (MyCoordX<>'') then
begin
//юзаем cвип (предполагая что в таргет брать ненужно, т.к. мы его спойлили и
//труп остался в таргете у бота)
bSweep;
end;

end.
Вобщем могут быть ошибки,если что помогите =)

P.S. Исправлял я его потомучто перечитав скрипт VORON-a я заметил что пакеты не убиваются и доходят до сервера.Если я не прав - поправте меня(Критику уважаю и внимательно выслушываю,так как она заставляет меня работать над поставленой задачей)

Вот сейчас буду склеивать бафы ПП и ШЕ в один скрипт,гляним что выйдет.

Добавлено спустя 6 часов 43 минуты 49 секунд:
Гость, понял,вот пакет отвечающий за юзание скила Ансумон(тойсть это пакет который шлёт клиент серверу во время того как ты юзаешь скил Ансумон),опишу его строение

45=RequestActionUse:d(ActionID)d(CtrlPressed)d(Shi ftPressed)

Добавлено спустя 1 час 6 минут 10 секунд:
Кстате,протокол версион у меня Version: 656
StKolya вне форума   Ответить с цитированием