Вернуться   CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг
Войти через OpenID

Скриптинг Форум посвещенный созданию скриптов для L2PacketHack

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 06.04.2010, 16:47   #1
Новичок
 
Регистрация: 20.03.2010
Сообщений: 2
Сказал Спасибо: 3
Имеет 0 спасибок в 0 сообщенях
Infernale пока неопределено
По умолчанию

Из того что нашел на форуме, решил переделать скрипт под эпилог, вот что получилось
delphi Код:
const Name='Infernal'; var    CurHP,MaxHP,CurCP,MaxCP,MyCorX,MyCorY,MyCorZ,MaxMP,CurMP: integer;    CPuse,HPuse,MPuse: string;    i, CubicsSize, CharObjectId, tmpCharObjectId: integer;    tmpMyName, tmpMyTitle: string;            TimerMP,TimerCP,TimerHP: TTimer; procedure Init; //Вызывается при включении скрипта begin   TimerCP:=TTimer.Create(nil);   TimerCP.OnTimer:=@OnTimerCP;   TimerCP.enabled:=false;   TimerCP.interval:=1000//интервал 1сек, т.к. чаще пить CP всеравно не будет, дабы не засорять трафик   TimerMP:=TTimer.Create(nil);   TimerMP.OnTimer:=@OnTimerMP;   TimerMP.enabled:=false;   TimerMP.interval:=1000//интервал 1сек, т.к. чаще пить MP всеравно не будет, дабы не засорять трафик   TimerHP:=TTimer.Create(nil);   TimerHP.OnTimer:=@OnTimerHP;   TimerHP.enabled:=false;   TimerHP.interval:=15000; //интервал 15сек, т.к. действие одной бутылки = 15сек end; procedure OnTimerCP(Sender: TObject); begin   buf:=CPuse;   SendToServerEx(Name); end; procedure OnTimerMP(Sender: TObject); begin   buf:=MPuse;   SendToServerEx(Name); end; procedure OnTimerHP(Sender: TObject); begin   buf:=HPuse;   SendToServerEx(Name); end; procedure Free; //Вызывается при выключении скрипта begin   TimerCP.free;   TimerMP.free;   TimerHP.free;   HPuse:='';   CPuse:=''; end; //основная часть скрипта //вызывается при приходе каждого пакета если скрипт включен begin     //пьем сначала CP, потом HP банку что б запомнить их ID(я решил взять эти пакеты целиком, дабы не усложнять)   if FromClient and  (pck[1]=#$19) and (CPuse='') then CPuse:=pck;   if FromClient and  (pck[1]=#$19) and (CPuse<>pck) and (HPuse='') then HPuse:=pck;   if FromClient and  (pck[1]=#$19) and (CPuse<>pck) and (HPuse<>pck) and (MPuse='') then MPuse:=pck;     if FromServer and (pck[1]=#$32) then   begin     MyCorX:=ReadD(2);    MyCorY:=ReadD(6);    MyCorZ:=ReadD(10);    i:=22;    tmpMyName:=ReadS(i);                 i:=i+48;    MaxHP:=ReadD(i);    CurHP:=ReadD(i);    MaxMP:=ReadD(i);    CurMP:=ReadD(i);           i:= 552 + length(tmpMyName) * 2;    tmpMyTitle:=ReadS(i);    i:= i + 31;    CubicsSize:= ReadH(i);    i:= i + 28 + (CubicsSize * 2);           MaxCP:=ReadD(i);     CurCP:=ReadD(i);              end;        if FromServer and (pck[1]=#$18) then   begin     CurHP:=ReadD(14);     CurCP:=ReadD(30);        CurMP:=ReadD(22);     //   ShowMessage(IntToStr(CurMP)); //если вы используете не грэйтер CP то вместо 200 подставьте кол-во CP сколько восстанавливает 1 банка if (CurCP<MaxCP-200)  then TimerCP.enabled:=true else TimerCP.enabled:=false; if (CurHP<MaxHP)  then TimerHP.enabled:=true else TimerHP.enabled:=false; if (CurMP<MaxMP-2500) then TimerMP.enabled:=true else TimerMP.enabled:=false;      end;   end.
Проблема в том что использование банок начинается не сразу после изменения параметров, а только спустя интервал, заданный в таймере. Для Cp и MP это не критично при задержке в 1 сек, а для HP и в дальнейшем элексиров доставляет неудобства. Как это можно исправить?
Infernale вне форума   Ответить с цитированием
Старый 06.04.2010, 23:11   #2
Местный
 
Аватар для J-Fobos
 
Регистрация: 09.06.2008
Сообщений: 867
Сказал Спасибо: 175
Имеет 468 спасибок в 259 сообщенях
J-Fobos пока неопределено
По умолчанию

Infernale, запустить процедуру юзания банки сразу после/перед включением таймера. Вот так:
Код:
//.........
if (CurMP<MaxMP-2500) then 
beign
OnTimerMP();
TimerMP.enabled:=true;
end 
else 
TimerMP.enabled:=false;
//........

Или еще вариант менять время таймера в самом таймере. Вот так:
Код:
//.........
TimerHP.interval:=1; //интервал 0.001сек
end;

//.........
procedure OnTimerHP(Sender: TObject);
begin
  buf:=HPuse;
  SendToServerEx(Name);
  TimerHP.interval:=15000; //сделали как надо интервал 15сек
end;
//.........
__________________

В любом из нас спит гений. И с каждым днем все крепче.

Переходим на протокол нового поколения jabber

Последний раз редактировалось J-Fobos, 06.04.2010 в 23:22.
J-Fobos вне форума   Ответить с цитированием
За это сообщение J-Fobos нажился спасибкой от:
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 19:01.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!