PDA

Просмотр полной версии : Заточка скилов Epilogue


playOK
12.05.2010, 15:37
Есть ли скрипт для автоматической заточки скилов на эпилоге? Существующий скрипт точит лишь на +1, независимо от выставленного значения.

const
nik='ник';
Enchant=10;

var
SubID, SkillID, SkillLvl, CurrEnch: integer;

procedure Init;
begin

end;

procedure OnTimer01(Sender: TObject);
begin

end;

procedure Free;
begin
CurrEnch:=0;
end;

procedure OnConnect(WithClient: Boolean);
begin

end;

procedure OnDisonnect(WithClient: Boolean);
begin

end;


begin
if FromServer and (pck[1]=#$62) then case pck[2] of
#$A0:
if CurrEnch<Enchant then
begin
CurrEnch:=CurrEnch+1;
Buf:=#$D0;
WriteH(SubID);
WriteD(SkillID);
WriteD(SkillLvl+CurrEnch);
SendToServerEx(nik);
end;
#$A1:
begin
CurrEnch:=1;

Buf:=#$D0;
WriteH(SubID);
WriteD(SkillID);
WriteD(SkillLvl+CurrEnch);
SendToServerEx(nik);

end;
end;

if FromClient and (pck[1]=#$D0) then
begin
SubID:=ReadH(2);
SkillID:=ReadD(4);
SkillLvl:=ReadD(8)-1;
CurrEnch:=1;
end;
end.

wimax
14.01.2011, 21:14
В тему выложу свою версию такого скрипта. Сделано на скорую руку, есть лишние моменты, легко переделать, чтоб работало для всех подключенных персонажей, и не надо было указывать ник. Основное отличие от предыдущего скрипта - не важен начальный уровень заточки, остальное почти все также:
// @ 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.


ищи лутше роботает на фреи

lg2010
10.03.2011, 15:45
подскажите нубу в каком формате заполнять эту строку
DebugMsg('SKillID='+inttostr(SKillID)+'; CurLevel='+inttostr(CurLevel));

в скрипт надо вводить ник, уровень точки, как тут именно прописывать ид и курлевел, больше ничего в скрипте не надо менять?

wimax
10.03.2011, 22:42
тока ник и до скольки точить и все

lg2010
10.03.2011, 23:17
wimax, не работает скрипт, выбрал ид ,точнул скил и ничего не происходит. Менял ид скилов и скилы не помогло. Он точно рабочий? или дело в сервере,защита?

wimax
11.03.2011, 20:30
скрипт рабочии у меня все работает не знаю как у вас

NLObP
11.03.2011, 22:23
подскажите нубу в каком формате заполнять эту строку
DebugMsg('SKillID='+inttostr(SKillID)+'; CurLevel='+inttostr(CurLevel));

Это строка для вывода отладочного сообщения. Для работы скрипта не нужна. Можешь её удалить.

lg2010
12.03.2011, 00:32
может ли не работать из за защиты на сервере?

cadaver
21.03.2011, 18:27
Скрипт не работает в автоматическом режиме на одном из серверов, после включения отладочной информации в чате увидел текст примерно такого содержания (Точу скилл с +11 на +12, руками, ломается)

ник: SkillId=0 ; CurLevel=0
точим

Ничего не происходит, точу руками с +0 на +1

ник: SkillId=1392 ; CurLevel=101
точим

Ничего не происходит, точу руками с +1 на +2

ник: SkillId=1392 ; CurLevel=102
точим

И так пока не сломаю, хотя раньше все работало, тут что-то можно сделать?

wimax
22.03.2011, 01:44
Скрипт не работает в автоматическом режиме на одном из серверов, после включения отладочной информации в чате увидел текст примерно такого содержания (Точу скилл с +11 на +12, руками, ломается)

ник: SkillId=0 ; CurLevel=0
точим

Ничего не происходит, точу руками с +0 на +1

ник: SkillId=1392 ; CurLevel=101
точим

Ничего не происходит, точу руками с +1 на +2

ник: SkillId=1392 ; CurLevel=102
точим

И так пока не сломаю, хотя раньше все работало, тут что-то можно сделать?

Вот после такого я дума зачем людям дали мозги?