Показать сообщение отдельно
Старый 23.01.2010, 06:13   #20
Новичок
 
Регистрация: 23.01.2010
Сообщений: 1
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
HaxaJl пока неопределено
По умолчанию

Цитата:
Сообщение от lexayar Посмотреть сообщение
В тему выложу свою версию такого скрипта. Сделано на скорую руку, есть лишние моменты, легко переделать, чтоб работало для всех подключенных персонажей, и не надо было указывать ник. Основное отличие от предыдущего скрипта - не важен начальный уровень заточки, остальное почти все также:
delphi Код:
// @ LexaYar  v.1.0 от 2009.03.18 // Скрипт на точку скилов под hellbound // Настраиваем параметры скрипта: Имя персонажа и Максимальный уровень заточки // Включаем скрипт, подходим к НПЦ, у которого точим скилы, выбираем точить нужный скил, // после чего скрипт автоматически продолжает его точить до тех пор пока не будет // достигнут нужный уровень заточки, либо пока не кончатся книги, либо exp. // Остановить работу скрипта можно только сняв галку с его имени в Пакетхаке. Const   // ============= НАСТРОЙКИ ===============   NickName = 'Ваш ник';   MaxEnchantLevel = 7;   // =======================================   // задержка между точками в сек.   interval = 0;   // отладочные сообщения   MainDebug = false; var   CurLevel: integer;   tick: integer;   SKillID: integer; procedure Init; //Вызывается при включении скрипта begin   CurLevel := -1; end; procedure Free; //Вызывается при выключении скрипта begin end; // пауза в секундах function Wait(var tick: integer; Timewait: Integer): Boolean; // сквозная проверка без остановки скрипта var   t: integer; begin   result:=false;   t:=Round(Time*86400);   if t>(tick+Timewait) then begin     if tick>0 then result:=true;     tick:=t;   end; end; //###################### Сообщения ############################################# // послать сообщение в чат себе procedure SendMsg_to_Chat(ChatType: integer; msg:string);                                  // отправка системных сообщений клиенту begin   buf:=#$4A;   WriteD(0);   WriteD(ChatType);   WriteS(NickName);   WriteS(msg);   SendToClientEx(NickName); end; // послать отладочное сообщение себе procedure DebugMsg(msg:string); begin   if MainDebug then     SendMsg_to_Private(msg); end; // послать сообщение себе в приват procedure SendMsg_to_Private(msg:string); begin   SendMsg_to_Chat(2,msg); end; //основная часть скрипта //вызывается при приходе каждого пакета если скрипт включен begin   if pck = '' then exit;   // Т.к. использоваться будет только для одного чара, остальных сразу отсеиваем   if ConnectName<>NickName then Exit;   // пакет - сообщение со статусом заточки   if FromServer and (pck[1]=#$62) and (pck[3]+pck[4]+pck[5] = HStr('05 00 00')) then begin     if (pck[2] = #$A0)or(pck[2] = #$A1)then begin       SKillID := ReadD(14);       CurLevel := ReadD(18);       // заточка была не удачной, обнуляем текущий уровень заточки       if pck[2] = #$A1 then         CurLevel := (CurLevel div 100)*100// округляем       DebugMsg('SKillID='+inttostr(SKillID)+'; CurLevel='+inttostr(CurLevel));       if (CurLevel mod 100) >= MaxEnchantLevel then         CurLevel := -1;       tick := 0;       Wait(tick, interval);     end;   end;   //  Можно закомментировать "and Wait(tick, interval)", точиться будет намного быстрее,   // только ощущение такое, что шанс точки меньше, хотя может и показалось   if (CurLevel >= 0) and Wait(tick, interval) then  begin     DebugMsg('точим');     buf := HStr('D0 0F 00');     WriteD(SKillID);     WriteD(CurLevel+1);     SendToServerEx(NickName);     CurLevel := -1;   end; end.
Скрипт в принцепе работает только когда скил стачивает дисконектит, сервер la2world.ru
HaxaJl вне форума   Ответить с цитированием