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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 22.07.2010, 01:39   #1
Местный
 
Аватар для Breadfan
 
Регистрация: 29.04.2008
Сообщений: 830
Сказал Спасибо: 80
Имеет 230 спасибок в 169 сообщенях
Breadfan пока неопределено
По умолчанию ShortCutInit\Управление вторым окном

Где-то встречал идею о переносе панелей скилов из пакета ShortCutInit - у когонть наработки имеются?
__________________
На фразы в аську типа "слух карочь 1)как точить 2)как раскачаться за 5 мин" - игнор. ИМХО идиотизм
Дай голодному рыбу - он будет один день сыт. Покажи ему, как удить рыбу - он пошлёт тебя и скажет, что у него есть более интересные занятия, чем забрасывать снасти в воду
David Kastrup @ de.comp.text.tex.
"Приобретенные навыки общения с маленькими детьми - сильно упрощают взаимопонимание на форумах..."

А вы знаете, что для качественной сварки - место шва нужно протереть спиртом?

Последний раз редактировалось Breadfan, 22.07.2010 в 01:41.
Breadfan вне форума   Ответить с цитированием
Старый 22.07.2010, 20:30   #2
Местный
 
Аватар для J-Fobos
 
Регистрация: 09.06.2008
Сообщений: 867
Сказал Спасибо: 175
Имеет 468 спасибок в 259 сообщенях
J-Fobos пока неопределено
По умолчанию

О переносе куда?
__________________

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

Переходим на протокол нового поколения jabber
J-Fobos вне форума   Ответить с цитированием
Старый 22.07.2010, 20:47   #3
Местный
 
Аватар для Breadfan
 
Регистрация: 29.04.2008
Сообщений: 830
Сказал Спасибо: 80
Имеет 230 спасибок в 169 сообщенях
Breadfan пока неопределено
По умолчанию

Грубо говоря мысль такова:
1. есть 2 окна (1 - главное, 2 - саппорт\ассистент)
2. набор скилов с одной из панелей 2го окна - передаются в 1ое (например одна полоска с рутом\слипом и т.д.) - это приведет к отображению в 1ом клиенте панели 2го
3. вызов скилов с этой панели перехватывается и отправляется на сервер от имени 2го

Не перенос скилов между окнами) Просто вариант управления 2ым окном. Он будет более менее-универсален для разных проф, просто потребуется выставить нужные скилы (которые будут задействованы, к примеру рут\блок вв и прочее, что иногда хочется использовать) на одну из панелей, к примеру на 10ю, откуда ярлыки будут считаны и переданы в клиент 1, причем в самом скрипте править ничего не придется, все будет делаться в клиенте 2

Придется писать отдельную процедуру для распознавания пакета ShortCutInit, т.к. его структура записей в нем различна, в зависимости от ярлыков панели (ярлыки скила\макроса\банки - записываются по разному. Вот из исходников кусочек кода:Оффтоп). Хотя если передавать панель с однотипными ярлыками - то все будет нормально.

Можно, конечно, все это сделать в виде массива, и вызывать по команде в чат, но в принципе большая часть скрипта будет одинаковой, а в случае с таким переносом - намного нагляднее
--------------------------------------------------------

Обновлено: не, настолько внаглую не получится, надо как-то подругому пробовать.................
__________________
На фразы в аську типа "слух карочь 1)как точить 2)как раскачаться за 5 мин" - игнор. ИМХО идиотизм
Дай голодному рыбу - он будет один день сыт. Покажи ему, как удить рыбу - он пошлёт тебя и скажет, что у него есть более интересные занятия, чем забрасывать снасти в воду
David Kastrup @ de.comp.text.tex.
"Приобретенные навыки общения с маленькими детьми - сильно упрощают взаимопонимание на форумах..."

А вы знаете, что для качественной сварки - место шва нужно протереть спиртом?

Последний раз редактировалось Breadfan, 22.07.2010 в 22:18.
Breadfan вне форума   Ответить с цитированием
Старый 22.07.2010, 23:01   #4
Местный
 
Аватар для J-Fobos
 
Регистрация: 09.06.2008
Сообщений: 867
Сказал Спасибо: 175
Имеет 468 спасибок в 259 сообщенях
J-Fobos пока неопределено
По умолчанию

Отличная идея, да и на первый взгляд не сложная в реализации.

В грации эпилог пакет с клавишами выглядит следующим образом:
Код:
45 = id
05 00 00 00 = количество используемых клавиш
................
01 00 00 00 =тип клавиши (итем)
00 00 00 00 =позиция (в данном случаи F1)
BC AF 41 10 =ObjectId итема
01 00 00 00 = хз
FF FF FF FF = хз (вроде как количество, но не уверен)
00 00 00 00 = хз
00 00 00 00 = хз
00 00 00 00 = хз
..................
02 00 00 00 =тип клавиши (скил)
01 00 00 00 =позиция (в данном случаи F2)
64 00 00 00 =id скила
0F 00 00 00 =лвл скила
00 = хз
01 00 00 00 = хз 
.....................
03 00 00 00 =тип клавиши (действие)
02 00 00 00 =позиция (в данном случаи F3)
00 00 00 00 =id действия (в данном случаи сесть)
01 00 00 00 =хз что, но для всех действий всегда такой
.......................
04 00 00 00 =тип клавиши (макрос)
03 00 00 00 =позиция (в данном случаи F4)
E8 03 00 00 =id макроса
01 00 00 00 = хз что, но  для всех макросов всегда такой
Рецептов у меня в сумке не было, так что их я не смотрел. Собственно исходя из выше написанной информации можно написать следующую обработку пакета (в виде массива считаю хорошим решением).

Код:
var
type1,slot,id,lvl,a1,a2,a3,a4,a5,a6,a7,a8,a9:array [0..99] of integer; 
//массивы клавиш, 100 значений потому что максимум 100 клавиш.
//массивы а будут использоваться для хранения неизвестных параметров пакета.
//согласен что не оптимально объявлять 9 массивов неизвестных значений:) 

procedure ShortCutInit;

var
count,i,number:integer;

begin

number:=2;//позиция "курсора" в пакете 

count:=ReadD(2); //количество используемых клавиш

for i:=0 to count do
begin

type1[i]:=ReadD(number); //смотрим тип клавиши

case  type1[i] of

1:begin         //обрабатываем клавишу с итемом
slot[i]:=ReadD(number+4);
id[i]:=ReadD(number+8);
lvl[i]:=ReadD(number+12);
a1[i]:=ReadD(number+16);
a2[i]:=ReadD(number+20);
a3[i]:=ReadD(number+24);
a4[i]:=ReadD(number+28);
a5[i]:=ReadD(number+32);
number:=number+36;  //перемещаем курсор на следующую клавишу
end;

2:begin   //обрабатываем клавишу со скилом
slot[i]:=ReadD(number+4);
id[i]:=ReadD(number+8);
lvl[i]:=ReadD(number+12);
a6[i]:=ReadC(number+16);
a7[i]:=ReadD(Number+17);
number:=number+21;  //перемещаем курсор на следующую клавишу
end;

3:begin     //обрабатываем клавишу с действием
slot[i]:=ReadD(number+4);
id[i]:=ReadD(number+8);
lv[i]l:=ReadD(number+12)
a8[i]:=ReadD(number+16);
number:=number+20;
end;

4:begin    // обрабатываем клавишу с макросом
slot[i]:=ReadD(number+4);
id[i]:=ReadD(number+8);
lvl[i]:=ReadD(number+12)
a9[i]:=ReadD(number+16);
number:=number+20;
end;

5:begin 
//а тут надо рецепт дописать, но времени нету :)
number:=number+0;
end;
end;
end;
end;
Дальше надо будет изменить пакет что пойдет в главное окно (в принципе получается что вторичное окно надо будет грузить до того как загружено главное). Код примерно такой:
Код:
for i:=1 to count do
case slot[i] of
12:begin {тут изменим клавишу что предлагает сервер, значения возьмем с ранее полученных массивов}end;//если клавиша для F1 второй панельки
13:begin{тут изменим клавишу что предлагает сервер} end;//если клавиша для F2 второй панельки
14:begin{тут изменим клавишу что предлагает сервер} end;//если клавиша для F3 второй панельки
end;
Это уже будем править под себя пакет пакет с главного окна.


PS: не уверен в правильности кода, писал в блокноте
__________________

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

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

Последний раз редактировалось J-Fobos, 22.07.2010 в 23:12.
J-Fobos вне форума   Ответить с цитированием
За это сообщение J-Fobos нажился 2 спасибками от:
Старый 23.07.2010, 03:45   #5
Местный
 
Аватар для Breadfan
 
Регистрация: 29.04.2008
Сообщений: 830
Сказал Спасибо: 80
Имеет 230 спасибок в 169 сообщенях
Breadfan пока неопределено
По умолчанию

Ну (как я думаю), в данном варианте рецепты и рассмотривать не стоит, т.к. расчитывается скрипт на использование в замесах\фарме, где лучше не переключаться меж окон, либо на использование вместе с отключенным клиентом (NoCloseServerAfterClientDisconnect; )
Поправлю: максимум - 120 клавиш (10 панелек по 12). Так же можно в любой момент вызвать пакет ShortCutInit - добавив и тут же убрав любой скил\банку\макрос на панель.

В данный момент считывает 10ю панельку у 'donor' (кнопки отвечающие условию slot>107) и в виде набора макросов передает в главное окошко. Макрос в названии и акроним имеют ИД скила (впоследствии надо изменить акронимы), внутри он же - т.е. при его нажатии перс в общий чат пишет этот ИД. Запись названия скила убрал из-за кривости руссификации серверной части - после релога русские символы в макросе превращаются в наборы вопросительных знаков, так что куски использующие работу с SkillsID.INI - можно будет смело выкинуть, или заменить файл его английский версией ...
При этом передаются лишь скилы - остальное пока не стал создавать. Напрямую передать - попытка провалилась) Ярлык скила появляется - но серый, при его нажатии пакетов годных для обработки клиент не отправляет к сожалению, так что немного изменил принцип.

Теперь необходимо добавить части обрабатывающие пакеты от 'rec' - своевременно убивать их, не давая попасть на сервер, и включать скил\прочее в клиенте 'donor', соответственно запроса, ну и часть следящую за таргетом...На пару минут копаний

Добавлено через 1 час 34 минуты
Кстати, надо будет оценить, насколько жестко он будет относиться к уже имеющимся макросам
__________________
На фразы в аську типа "слух карочь 1)как точить 2)как раскачаться за 5 мин" - игнор. ИМХО идиотизм
Дай голодному рыбу - он будет один день сыт. Покажи ему, как удить рыбу - он пошлёт тебя и скажет, что у него есть более интересные занятия, чем забрасывать снасти в воду
David Kastrup @ de.comp.text.tex.
"Приобретенные навыки общения с маленькими детьми - сильно упрощают взаимопонимание на форумах..."

А вы знаете, что для качественной сварки - место шва нужно протереть спиртом?

Последний раз редактировалось Breadfan, 23.07.2010 в 05:56. Причина: Добавлено сообщение
Breadfan вне форума   Ответить с цитированием
Старый 23.07.2010, 03:59   #6
Местный
 
Аватар для Breadfan
 
Регистрация: 29.04.2008
Сообщений: 830
Сказал Спасибо: 80
Имеет 230 спасибок в 169 сообщенях
Breadfan пока неопределено
По умолчанию

Может сразу сделать работу только с макросами имеющими определенное имя (напр. cut1, cut2...cut12), и проверять наличие свободных ячеек под вновь создаваемые - что бы не переживать за сохранность ранее созданных

Пока вылилось в "это":
Оффтоп - Пока что оно "переносит" только скилы, не бегает за 'rec', не меняет таргет, не делает прочего, чего бы туда ни хотелось засунуть Только включает скилы со своей 10ой панели (предварительно таргет надо взять)
И все бы ничего, но только зарраза чат блокирует периодически, при спаме макроса

PS: файлы skillseng.ini и itemseng.ini - взяты от более старой версии - L2phx 3.2.1, изза этого будут недочеты...
__________________
На фразы в аську типа "слух карочь 1)как точить 2)как раскачаться за 5 мин" - игнор. ИМХО идиотизм
Дай голодному рыбу - он будет один день сыт. Покажи ему, как удить рыбу - он пошлёт тебя и скажет, что у него есть более интересные занятия, чем забрасывать снасти в воду
David Kastrup @ de.comp.text.tex.
"Приобретенные навыки общения с маленькими детьми - сильно упрощают взаимопонимание на форумах..."

А вы знаете, что для качественной сварки - место шва нужно протереть спиртом?

Последний раз редактировалось Breadfan, 23.07.2010 в 21:04.
Breadfan вне форума   Ответить с цитированием
Старый 24.07.2010, 23:29   #7
Местный
 
Аватар для supernewbie
 
Регистрация: 23.09.2009
Сообщений: 1,232
Сказал Спасибо: 119
Имеет 172 спасибок в 134 сообщенях
supernewbie пока неопределено
По умолчанию

Я делал такое

Помоему не проще ли

begin
if FromServer and (ConnectName=Name1) and (pck[1]=#$45) then
begin
buf:=pck;
SendToClientEx(Name);
end;
end;

PS это если надо перенести панель с одного перса на другого. Перед этим еще придется переносить СкиллЛист и ИтемЛист, это давольно удобно при написании скрипта "Вселение", который вселяет в перса от которого есть только соединение)
__________________
Начало.
supernewbie вне форума   Ответить с цитированием
Старый 25.07.2010, 00:01   #8
Местный
 
Аватар для Breadfan
 
Регистрация: 29.04.2008
Сообщений: 830
Сказал Спасибо: 80
Имеет 230 спасибок в 169 сообщенях
Breadfan пока неопределено
По умолчанию

Это вообще явно не такое. К чему мне полностью замененная панель? в моем варианте - добавляются макросы на панель Главного, в твоем же - произойдет полная замена. Я смысла от такого "вселения" не вижу - ты заменишь скиллист, итемлист - а к чему это все? проще без извращений сразу в окне с бафером быть
У меня так: в главном окне формируется набор макросов, повторяющих скилы выставленные на 10ую панель ведомого окна. При нажатии макрос в чат выдает текстовую команду use skill xxxx (ид скила) - команда перехватывается и отправляется на ведомый клиент. Ведомый, получив такую команду и юзает соответствующий скил на цель находящуюся в таргете у Главного. Простейший пример применения: лук в связке с пп - берет в таргет цель, жмет макрос на своей панели (пп берет в таргет ту же цель и кидает ей рут) и спокойно расстреливает...Выделяет себя - бафает ченть или может хильнутся - как угодно....
Можно то же самое сделать написав обработчик наподобие "если от клиента А в чат "используй 1" то --> в клиенте Б включить скил 1" НО: для каждого отдельного перса придется создавать свой обработчик команд, в зависимости от набора имеющихся скилов, моя же цель - создание унифицированного скрипта, минимизирующего правку и подгонку под разные профы\случаи: сегодня бегаю луком и пп, а завтра - спойлером + овер
__________________
На фразы в аську типа "слух карочь 1)как точить 2)как раскачаться за 5 мин" - игнор. ИМХО идиотизм
Дай голодному рыбу - он будет один день сыт. Покажи ему, как удить рыбу - он пошлёт тебя и скажет, что у него есть более интересные занятия, чем забрасывать снасти в воду
David Kastrup @ de.comp.text.tex.
"Приобретенные навыки общения с маленькими детьми - сильно упрощают взаимопонимание на форумах..."

А вы знаете, что для качественной сварки - место шва нужно протереть спиртом?

Последний раз редактировалось Breadfan, 25.07.2010 в 00:53.
Breadfan вне форума   Ответить с цитированием
Старый 25.07.2010, 19:49   #9
Местный
 
Аватар для Breadfan
 
Регистрация: 29.04.2008
Сообщений: 830
Сказал Спасибо: 80
Имеет 230 спасибок в 169 сообщенях
Breadfan пока неопределено
По умолчанию

В итоге вышло: бегает за ведущим не тыкая по нему (соответственно удерживая нужную цель в таргете), а используя координаты перемещения, юзает свитки ТП, стараясь использовать то же что и ведущий, держит в таргете ту же цель что и ведущий. Диапазон разницы координат при перемещении при старте равен 99, в процессе может меняться командой в чат "mult XX", где х - 0..99, либо нажатием Соц.Действий "Да"\"Нет" - с шагом 10. Порядок запуска - запустить скрипт, открыть сумку бота (в лог L2PHX выведет инфу о наличии сое: тип 1 - сое, 2 - соеКХ, 3 - соеЗамок), принять его в пати (будут считаны необходимые ИД персов). Макросы в главном окне - имеют имя - ИД скила, акроним - его название (необходима англ. версия файла SkillsID.ini под именем skillseng.ini !!! - от одной из старых версий подойдет переименованный) - сформировать набор скилов на 10ой панели( если это необходимо) и на какой либо другой (1-9) переместить туда-сюда любой ярлык (перемещать надо для формирования пакета ярлыков).
Если бегаете с mult не сильно маленьким - то лучше маленькими перебежками не передвигаться, иначе саппорта болтать начинает, как г... в проруби НЕ бьет с Ctrl (хотя это можно подправить при желании в блоке формирования пакета скила), не тепешится от гк одновременно с ведущим, НЕ тестировалась работа при отключенном клиенте (да и нет там пары кусков для такого).
Гонял в основном связку тх+пп, и под конец написания тх+спойл, так что замечания - только приветствуются
Файлы из архива files.rar кинуть в корень папки L2phx
Хроники: Грация Финал (ну судя по тому что на моем сервере написано )
Обновлено:
mod_2: Оффтоп
Вложения
Тип файла: rar files.rar (67.9 Кб, 18 просмотров)
Тип файла: rar Perenos_Mod_1.rar (3.1 Кб, 15 просмотров)
Тип файла: rar Perenos_Mod_2.rar (3.5 Кб, 14 просмотров)
__________________
На фразы в аську типа "слух карочь 1)как точить 2)как раскачаться за 5 мин" - игнор. ИМХО идиотизм
Дай голодному рыбу - он будет один день сыт. Покажи ему, как удить рыбу - он пошлёт тебя и скажет, что у него есть более интересные занятия, чем забрасывать снасти в воду
David Kastrup @ de.comp.text.tex.
"Приобретенные навыки общения с маленькими детьми - сильно упрощают взаимопонимание на форумах..."

А вы знаете, что для качественной сварки - место шва нужно протереть спиртом?

Последний раз редактировалось Breadfan, 26.07.2010 в 22:38.
Breadfan вне форума   Ответить с цитированием
За это сообщение Breadfan нажился 2 спасибками от:
Старый 25.07.2010, 21:40   #10
Местный
 
Регистрация: 23.02.2009
Сообщений: 319
Сказал Спасибо: 72
Имеет 60 спасибок в 45 сообщенях
Kilatif пока неопределено
По умолчанию

Вообще интересная идея.. Сам бы занялся, имея бы достаточные знания вообще о пакетах, о написании скриптов... Спасибо)
Kilatif вне форума   Ответить с цитированием
Ответ

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



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

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


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

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

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