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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 10.04.2010, 19:41   #1
Рыцарь
 
Аватар для QaK
 
Регистрация: 28.09.2007
Сообщений: 1,558
Сказал Спасибо: 71
Имеет 351 спасибок в 244 сообщенях
QaK пока неопределено
По умолчанию

Михаил111, посмотри тему "Скриптинг" и "Жесткий скриптинг"
QaK вне форума   Ответить с цитированием
За это сообщение QaK нажился спасибкой от:
Старый 02.06.2010, 13:18   #2
Новичок
 
Регистрация: 03.03.2009
Сообщений: 5
Сказал Спасибо: 4
Имеет 0 спасибок в 0 сообщенях
KaBuKi пока неопределено
По умолчанию

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

//после активации скрипта необходимо выпить сначала банку CP, потом HP для получения их ID
const
   Name='kabUki';  //ник перса
   PckUseCP='14 75 DC 4C 40 00 00 00 00';
   PckUseHP='14 68 E6 4C 40 00 00 00 00';
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:=HStr(PckUseCP);
  SendToServerEx(Name);
end;
procedure OnTimerHP(Sender: TObject);
begin
  buf:=HStr(PckUseHP);
  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;
if (CurCP<MaxCP-200) then TimerCP.enabled:=true else TimerCP.enabled:=false;
if (CurHP<MaxHP) 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.
KaBuKi вне форума   Ответить с цитированием
Старый 05.06.2010, 21:12   #3
Рыцарь
 
Аватар для QaK
 
Регистрация: 28.09.2007
Сообщений: 1,558
Сказал Спасибо: 71
Имеет 351 спасибок в 244 сообщенях
QaK пока неопределено
По умолчанию

KaBuKi, недостаточно информации, давай более развернуто, что как делаешь, в какой последовательности, версия пакетхака/хроники сервера и все такое прочее
QaK вне форума   Ответить с цитированием
Старый 07.06.2010, 10:57   #4
Новичок
 
Регистрация: 03.03.2009
Сообщений: 5
Сказал Спасибо: 4
Имеет 0 спасибок в 0 сообщенях
KaBuKi пока неопределено
По умолчанию

Использую l2phx.3.4.1.83, версия протокола 660. Собственно изначальный скрипт работает отлично, но мне не нравится там необходимость при старте скрипта выпивать банки СР и НР, для того чтобы сохранились пакеты использования банок. Соответственно эти пакеты я через "просмотр" перехватил, задал константы на эти пакеты, некоторые условия убрал (CPuse<>'', HPuse<>'') в оригинальном скрипте убрал. Впринципе, можно удалить переменные CPuse и HPuse. Как я понял при приходе пакета StatusUpdate из него извлекаются текущие и максимальные значения СР и НР, если выполняются неравенства, то запускается таймер и начинают отсылаться пакеты на использование банок, но почему-то они не используются. Части скрипта которые я изменил - закомментил, так что различия между моим скриптом и оригиналом видны сразу. При старте скрипта и изменении НР и СР ничего не происходит.

Последний раз редактировалось KaBuKi, 07.06.2010 в 11:21.
KaBuKi вне форума   Ответить с цитированием
Старый 07.06.2010, 12:29   #5
Местный
 
Аватар для Sherman
 
Регистрация: 24.04.2008
Сообщений: 364
Сказал Спасибо: 15
Имеет 116 спасибок в 83 сообщенях
Sherman пока неопределено
По умолчанию

Пакет RequestUseItem по определению константным быть не может, т.к. содержит в себе ObjID - идентификатор объекта в инвентаре, который в свою очередь может меняться. При грамотном подходе к реализации подобного скрипта, следует отслеживать инвентарь, анализировать его содержимое, но не как не константами забивать пакеты.
Sherman вне форума   Ответить с цитированием
Старый 07.06.2010, 12:56   #6
Новичок
 
Регистрация: 03.03.2009
Сообщений: 5
Сказал Спасибо: 4
Имеет 0 спасибок в 0 сообщенях
KaBuKi пока неопределено
По умолчанию

Цитата:
Сообщение от Sherman Посмотреть сообщение
Пакет RequestUseItem по определению константным быть не может, т.к. содержит в себе ObjID - идентификатор объекта в инвентаре, который в свою очередь может меняться. При грамотном подходе к реализации подобного скрипта, следует отслеживать инвентарь, анализировать его содержимое, но не как не константами забивать пакеты.
А разве для предметов типа банок может быть другой ObjID? Содержит ли ObjID информацию о расположении предмета в инвентаре?
KaBuKi вне форума   Ответить с цитированием
Старый 07.06.2010, 13:01   #7
Местный
 
Аватар для Xen
 
Регистрация: 02.05.2010
Сообщений: 168
Сказал Спасибо: 9
Имеет 33 спасибок в 18 сообщенях
Xen пока неопределено
По умолчанию

С каждой сессией этот ид меняется
__________________
Free инет хранилище 2.3 Гб сейчас и до 8 гб с прямыми ссылками рефферал
Xen вне форума   Ответить с цитированием
Старый 21.08.2014, 16:20   #8
Рыцарь
 
Аватар для VORON
 
Регистрация: 06.08.2007
Сообщений: 209
Сказал Спасибо: 6
Имеет 67 спасибок в 34 сообщенях
VORON пока неопределено
По умолчанию

Цитата:
Сообщение от Xen Посмотреть сообщение
С каждой сессией этот ид меняется
конечноже нет. хотя наверное ты неверно понял вопрос собеседника.. и ответил некоректно.
у клиента есть чёткая таблица соответствий графического образа и ОбжектИД.. он никогда не меняется. мб тока при апдейте клиента.. сервер присылает ИД обжекта клиент его показывает.. в соответствии с таблицей..
другое дело что ИтемИД ето ненадо путать с ОбжектИД .. например у тебя есть 2 кувалды в инвенторе.. выгледят одинаково.. но лежат в разных слотах и заточены поразному.. при етом у них будет одинаковый обжектИД но совершенно разный ИтемИД. Итем ИД- хранится на сервере. у клиента нет таблиц соответствий аналогично обжекту- для итемов..
более подробно ето так.. клиент логинится к серверу.. сервер наливает пакет чем наполнен рюкзак игрока.. говорит примерно так:
(ид пакета на инвентарь) (ОбжектИД) (итемИД) (характеристики итема).
клиент эту информацию помнит ровно 1 сеанс игры и не сохраняет ее нигде.. в новом конекте к серверу ОБЖЕКТ ИД останется темже самым.. но итемид сменится.
__________________
Цитата:
Сообщение от pybukon
прежде чета попросить я немнога раскажу чтоб вы понили как мне плоха
Цитата:
Сообщение от Byrger
А как сделать мой скрипт бесконечным?
Цитата:
Сообщение от XKOR
.. каждый день ионизированной ногой протирает больную)
Цитата:
Сообщение от PsyR
Вылоджите пожалуйста скрипт на рыбалку желательно что бы сам в ВХ клал адаптированый под шоки и так же скрипт на ТТ рец, тоже с диалогами
VORON вне форума   Ответить с цитированием
Старый 07.06.2010, 13:03   #9
Новичок
 
Регистрация: 03.03.2009
Сообщений: 5
Сказал Спасибо: 4
Имеет 0 спасибок в 0 сообщенях
KaBuKi пока неопределено
По умолчанию

Тогда как следует поступить? Расположить банки в определенных ячейках инвентаря, а потом определять их ObjID и на основании его фомировать пакет на покупку?
KaBuKi вне форума   Ответить с цитированием
Старый 07.06.2010, 13:29   #10
Местный
 
Аватар для Sherman
 
Регистрация: 24.04.2008
Сообщений: 364
Сказал Спасибо: 15
Имеет 116 спасибок в 83 сообщенях
Sherman пока неопределено
По умолчанию

0. Описать переменные для ID банок ЦП, ХП, (МП), переменные для хранения количества банок ЦП, ХП, (МП).
1. Написать обработку пакетов прилетающих от ГС: ItemListPacket, InventoryUpdate. анализируя ItemListPacket определять количество и ID банок. Анализируя InventoryUpdate анализировать изменение количества этих самых банок.
2. Написать алгоритм юзания банок по изменению ЦП, ХП, (МП). Если кончились - не юзать.

В таком раскладе - если ты включил галку скрипта уже во время игры, а не до загрузки чара, для инициализации переменных прийдется вызвать окно инвентаря (Ctrl+V), либо купить банки, либо ждать когда прилетит пакет инвентаря.

ЗЫ. Код писать не буду, лень, и все можно скопипастить из скриптов этой темы.

ЗЫЫ. Есть ID вещи, предмета, используется для определения его названия, описания, иконки в клиенте, и есть ObjID, для идентифицирования конкретного объекта для нужд сервера. В пакете RequestUseItem серверу отправляется именно ObjID.

Последний раз редактировалось Sherman, 07.06.2010 в 13:38.
Sherman вне форума   Ответить с цитированием
За это сообщение Sherman нажился спасибкой от:
Ответ

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



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

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


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

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

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