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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 30.11.2007, 12:36   #1
Новичок
 
Регистрация: 30.11.2007
Сообщений: 1
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
anDy35
По умолчанию Вопрос по скрипту

как работает этот(скрипт ниже) скрипт после запуска в l2phx? постоянно спамит СР и ХП?
просто проверок на количество CP и ХП невижу.
как я понимаю его нужно запускать во время пвп в самом l2phx (потому как биндов на кнопки вроде тож нет)?

Код:
//by mks
//помошник в PvP и PK.
//пьет CP и HP пробирки в нужное время(можно добавить и MP для пвп серваков), и освобождает вас от небоходимости зажатия клавиши Ctrl, которая так меня раздражает!(думаю это раздражает и не только меня)
///////////////////////////////////////////////////////
///////////////Master PvP by MKS v.1.0/////////////////
///////////////////////////////////////////////////////

//после активации скрипта необходимо выпить сначала банку CP, потом HP для получения их ID
const
   Name='xxxxxxx';  //ник перса
var
   CurHP,MaxHP,CurCP,MaxCP: integer;
   CPuse,HPuse: string;

   TimerCP,TimerHP: TTimer;

procedure Init; //Вызывается при включении скрипта
begin
  TimerCP:=TTimer.Create(nil);
  TimerCP.OnTimer:=@OnTimerCP;
  TimerCP.enabled:=false;
  TimerCP.interval:=1000;  //интервал 1сек, т.к. чаще пить CP всеравно не будет, дабы не засорять трафик

  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 OnTimerHP(Sender: TObject);
begin
  buf:=HPuse;
  SendToServerEx(Name);
end;

procedure Free; //Вызывается при выключении скрипта
begin
  TimerCP.free;
  TimerHP.free;
  HPuse:='';
  CPuse:='';
end;

//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
//пьем сначала CP, потом HP банку что б запомнить их ID(я решил взять эти пакеты целиком, дабы не усложнять)
  if FromClient and (ConnectName=Name) and (pck[1]=#$14) and (CPuse='') then CPuse:=pck;
  if FromClient and (ConnectName=Name) and (pck[1]=#$14) and (CPuse<>pck) and (HPuse='') then HPuse:=pck;

//считываем текущие и максимальные значения CP и HP
if FromServer and (pck[1]+pck[6]=#$0E#$04) then
  begin
    CurHP:=ReadD(14);
    MaxHP:=ReadD(22);
    CurCP:=ReadD(30);
    MaxCP:=ReadD(38);
  end;

//если вы используете не грэйтер CP то вместо 200 подставьте кол-во CP сколько восстанавливает 1 банка
if (CurCP<MaxCP-200) and (CPuse<>'') then TimerCP.enabled:=true else TimerCP.enabled:=false;
if (CurHP<MaxHP) and (HPuse<>'') then TimerHP.enabled:=true else TimerHP.enabled:=false;

//если используем скилы или заклинания добавляем флаг Ctrl, что б не надо было удерживать контрол
if FromClient and (ConnectName=Name) and (pck[1]=#$2F) then pck[6]:=#$01;

//если наводим таргет, повторное нажатие по нему подменивается на атаку, опять же что б не удерживать контрол
if FromClient and (ConnectName=Name) and (pck[1]=#$04) then pck[1]:=#$0A;

end.
anDy35 вне форума   Ответить с цитированием
Старый 30.11.2007, 12:52   #2
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию Re: Вопрос по скрипту

Цитата:
Сообщение от anDy35
как работает этот(скрипт ниже) скрипт после запуска в l2phx? постоянно спамит СР и ХП?
просто проверок на количество CP и ХП невижу.
как я понимаю его нужно запускать во время пвп в самом l2phx (потому как биндов на кнопки вроде тож нет)?

Код:
//считываем текущие и максимальные значения CP и HP
if FromServer and (pck[1]+pck[6]=#$0E#$04) then
  begin
    CurHP:=ReadD(14);
    MaxHP:=ReadD(22);
    CurCP:=ReadD(30);
    MaxCP:=ReadD(38);
  end;
Вот выше кусок кода с проверкой HP и CP. Проверки осуществляются по приходу пакета "изменение характеристик" от сервера
Код:
0E=StatusUpdate:h(ObjectID)d(AttribCount)d(AttrID)d(AttrValue)
Как пользоваться: Запускаешь пакетхак. Заходишь чаром. Один раз вписать в скрипт ник перса. Включаешь скрипт. Все. Теперь не надо контрол жать при атаке персов. Чар автоматом пьет бутылки восстановления HP и CP. Лепота! :Yahoo!:
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
Старый 28.05.2008, 13:41   #3
Новичок
 
Аватар для Denis63RUS
 
Регистрация: 16.04.2008
Адрес: Самара
Сообщений: 24
Сказал Спасибо: 7
Имеет 6 спасибок в 3 сообщенях
Denis63RUS пока неопределено
По умолчанию

А у меня этот скрипт как то странно работает, при уменьшение ЦП бутыли пьёт, но когда ЦП востановилось, начинает иногда глотать бутыльки просто так, с интервалом 1-5 сек, когда выпьет штук 5-7 то останавливается, я никак не пойму из-за чего это может быть, т.к в самом скрипте всё верно сделанно
__________________
Всё можно починить, если вертеть в руках достаточно долго!
Denis63RUS вне форума   Ответить с цитированием
Старый 03.06.2008, 16:39   #4
Новичок
 
Регистрация: 09.12.2007
Сообщений: 24
Сказал Спасибо: 9
Имеет 12 спасибок в 12 сообщенях
alxabay
По умолчанию

0E=StatusUpdate:h(ObjectID)d(AttribCount)d(AttrID) d(AttrValue)
пакет приходит и от других чаров вроде h(ObjectID) надо свой вроде как вписывать?
чтобы не пить когда другой обнавляется у мня так было на сервере.

ну если что вот:
Код:
if FromServer and (pck[1]=#$A6) and (MyID=0) then begin  //berem svoi ID (выделить себя)
MyID:=readd(2);
//Say(inttostr(MyID));
end;
и при приходе 0E проверяем кто атрибуты меняет:
if FromServer and (pck[1]=#$0E) then begin  //pit' ili ne pit'...
if (MyID=readd(2)) then begin
....
тут пьем по скрипту
....//Drink(ReadD(30)); //cp
end;

Последний раз редактировалось alxabay, 03.06.2008 в 16:57.
alxabay вне форума   Ответить с цитированием
За это сообщение alxabay нажился спасибкой от:
Старый 03.06.2008, 16:59   #5
Новичок
 
Аватар для Denis63RUS
 
Регистрация: 16.04.2008
Адрес: Самара
Сообщений: 24
Сказал Спасибо: 7
Имеет 6 спасибок в 3 сообщенях
Denis63RUS пока неопределено
По умолчанию

Разобрался в чем причина! Вобщем если ты в пати, и у кого то из сопартийцев отнялос ХП или ЦП то от сервера приходит тот же пакет StatusUpdate (pck[1]+pck[6]=#$0E#$04) но с IdOb твоего сопартийца, а он в скрипте никак не учитывается, поэтому в скрипт нужно добавить проверку ID своего! Тогда всё работает на ура!

Добавлено через 1 минуту
Упс, прогнал, предыдущего сообщения не увидел
__________________
Всё можно починить, если вертеть в руках достаточно долго!

Последний раз редактировалось Denis63RUS, 03.06.2008 в 16:59. Причина: Добавлено сообщение
Denis63RUS вне форума   Ответить с цитированием
Старый 03.06.2008, 17:24   #6
Рыцарь
 
Аватар для mks
 
Регистрация: 21.09.2007
Сообщений: 376
Сказал Спасибо: 11
Имеет 218 спасибок в 106 сообщенях
mks пока неопределено
По умолчанию

да там на самом деле мой косяк, надо переделать слегка считывание CP,HP,MP таким образом:
Код:
procedure StatusUpdate;      
var 
  i: integer; 
begin 
  for i:=0 to ReadD(6)-1 do begin 
    case pck[i*8+10] of 
      #$09: CurHP:=ReadD(i*8+14); 
      #$0A: MaxHP:=ReadD(i*8+14); 
      #$0B: CurMP:=ReadD(i*8+14); 
      #$0C: MaxMP:=ReadD(i*8+14); 
      #$21: CurCP:=ReadD(i*8+14); 
      #$22: MaxCP:=ReadD(i*8+14); 
    end; 
  end; 
end; 

begin 
  if (ConnectName=Name) and FromServer then begin 
    case pck[1] of 
      #$0E: if (MyID=ReadD(2)) then StatusUpdate; 
    end; 
  end; 
end.

Последний раз редактировалось mks, 03.06.2008 в 17:37.
mks вне форума   Ответить с цитированием
За это сообщение mks нажился спасибкой от:
Старый 20.06.2010, 21:35   #7
Новичок
 
Регистрация: 20.06.2010
Сообщений: 1
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
Gos пока неопределено
По умолчанию

а можете как то скрипт переделать чтобы он вызывался на какуюнибудь кнопку плиз а то нпс выделить нельзя а сворачивать окно муторно
Gos вне форума   Ответить с цитированием
Старый 12.08.2011, 10:34   #8
Новичок
 
Регистрация: 12.08.2011
Сообщений: 1
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
root2 пока неопределено
По умолчанию

Подскажите так будет правильно ? а если не так поправьте СПС.

Код:
//////////////////////\\\\\\\\\\\\\\\\\\\\\\\\
// http://coderx.ru/showthread.php?t=119    \\
/////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\
//by mks
//помошник в PvP и PK.
//пьет CP и HP пробирки в нужное время(можно добавить и MP для пвп серваков), и освобождает вас от небоходимости зажатия клавиши //Ctrl, которая так меня раздражает!(думаю это раздражает и не только меня)
///////////////////////////////////////////////////////
///////////////Master PvP by MKS v.1.0/////////////////
///////////////////////////////////////////////////////

//после активации скрипта необходимо выпить сначала банку CP, потом HP для получения их ID
const
Name='xxxxxxx'; //ник перса
var
CurHP,MaxHP,CurCP,MaxCP: integer;
CPuse,HPuse: string;

TimerCP,TimerHP: TTimer;

procedure Init; //Вызывается при включении скрипта
begin
TimerCP:=TTimer.Create(nil);
TimerCP.OnTimer:=@OnTimerCP;
TimerCP.enabled:=false;
TimerCP.interval:=1000; //интервал 1сек, т.к. чаще пить CP всеравно не будет, дабы не засорять трафик

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 OnTimerHP(Sender: TObject);
begin
buf:=HPuse;
SendToServerEx(Name);
end;

procedure Free; //Вызывается при выключении скрипта
begin
TimerCP.free;
TimerHP.free;
HPuse:='';
CPuse:='';
end;

//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
//пьем сначала CP, потом HP банку что б запомнить их ID(я решил взять эти пакеты целиком, дабы не усложнять)
if FromClient and (ConnectName=Name) and (pck[1]=#$14) and (CPuse='') then CPuse:=pck;
if FromClient and (ConnectName=Name) and (pck[1]=#$14) and (CPuse<>pck) and (HPuse='') then HPuse:=pck;

//считываем текущие и максимальные значения CP и HP
procedure StatusUpdate;      
var 
  i: integer; 
begin 
  for i:=0 to ReadD(6)-1 do begin 
    case pck[i*8+10] of 
      #$09: CurHP:=ReadD(i*8+14); 
      #$0A: MaxHP:=ReadD(i*8+14); 
      #$21: CurCP:=ReadD(i*8+14); 
      #$22: MaxCP:=ReadD(i*8+14); 
    end; 
  end; 
end; 

begin 
  if (ConnectName=Name) and FromServer then begin 
    case pck[1] of 
      #$0E: if (MyID=ReadD(2)) then StatusUpdate; 
    end; 
  end; 
end.

//если вы используете не грэйтер CP то вместо 200 подставьте кол-во CP сколько восстанавливает 1 банка
if (CurCP<MaxCP-200) and (CPuse<>'') then TimerCP.enabled:=true else TimerCP.enabled:=false;
if (CurHP<MaxHP) and (HPuse<>'') then TimerHP.enabled:=true else TimerHP.enabled:=false;

//если используем скилы или заклинания добавляем флаг Ctrl, что б не надо было удерживать контрол
if FromClient and (ConnectName=Name) and (pck[1]=#$2F) then pck[6]:=#$01;

//если наводим таргет, повторное нажатие по нему подменивается на атаку, опять же что б не удерживать контрол
if FromClient and (ConnectName=Name) and (pck[1]=#$04) then pck[1]:=#$0A;

end.

спс
root2 вне форума   Ответить с цитированием
Ответ

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



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

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


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

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

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