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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 15.07.2009, 18:55   #1
Пользователь
 
Регистрация: 11.07.2009
Сообщений: 65
Сказал Спасибо: 64
Имеет 0 спасибок в 0 сообщенях
Imperial2008 пока неопределено
Печаль Помогите со скриптом

Здравствуйте!
Сразу просьба, не писать сообщений типа "посмотри подобные скрипты и напиши сам" - смотрел и не вышло.
Суть скрипта очень простая: при соц действии 1 - посылает на сервер 1 блок пакетов, при соц. действии 2 - посылает на сервер второй блок пакетов. И все, никаких таймеров и тому подобное. Под блоком пакетов имеется ввиду 10-15 пакетов. Не нужно вообще никакой автоматизации.

Чтобы не было лишних вопросов, я пробовал переделывать скрипт точки оружия:
Цитата:
// Ядро от mks.
// Модификация ядра от HORSE.
// Конечный продукт от dev.
// http://coderx.ru/showthread.php?t=1684

// Настройики
const
characterName='dev'; // Имя персоонажа
useEnchant=hstr('19 E6 C0 09 10 00 00 00 00'); // [0x19 (UseItem)]
requestEnchant=hstr('5F E2 22 09 10 00 00 00 00'); // [0x5F (RequestEnchantItem)]
itemID=9421; // ID предмета [0x21 (InventoryUpdate)]
enchant=10; // До сколько скрипт должен заточить указанный предмет
speed=150; // Скорость заточки
start=2; // Соц. действие hello, запускает скрипт
stop=3; // Соц. действие victory, остонавливает скрипт

// Ниже ничего можно не трогать
var
timer:TTimer;
x:byte;

procedure Init;
begin
timer:=TTimer.Create(nil);
timer.interval:=speed;
timer.OnTimer:=@fireTimer;
timer.enabled:=false;
x:=1;
end;

procedure Free;
begin
timer.Free;
end;

procedure fireTimer(Sender: TObject);
begin
case x of
1:begin
buf:=useEnchant;
SendToServerEx(characterName);
inc(x);
end;
2:begin
buf:=requestEnchant;
SendToServerEx(characterName);
x:=1;
end;
end;{case}
end;

begin
if FromClient then
begin
case pck[1] of
#$34: begin
if (ReadD(2)=start) then timer.enabled:=true;
if (ReadD(2)=stop) then timer.enabled:=false;
end;
end;
end;
if FromServer then
begin
case pck[1] of
#$21: begin
if (ReadD(12)=itemID) and (ReadD(34)=Enchant) then timer.enabled:=false;
end;
end;
end;
end.
Только я заменил if (ReadD(2)=start) then timer.enabled:=true; таймер на пакеты, но у меня ничего не вышло( Скрипт не сложный, кто знает что делает)
Я не программер, по этому очень надеюсь на вашу помощь.
Imperial2008 вне форума   Ответить с цитированием
Старый 15.07.2009, 19:45   #2
Рыцарь
 
Аватар для TAMBIK
 
Регистрация: 03.03.2009
Сообщений: 773
Сказал Спасибо: 361
Имеет 300 спасибок в 168 сообщенях
TAMBIK на пути к лучшему
По умолчанию

мож так
Код:
var
x: integer;
//===============================================================================
 begin
 if FromClient  and (pck[1]=#$34) and (pck[2]=#$06) then begin//соц.действие- yes 
 case x of
1: begin
     buf:=hstr('пакет № 1');
     inc(x);
     end;
// и т.д

10: begin
     buf:=hstr('пакет № 10');
     x:=0;
     SendToServer;
     end;
     end;
TAMBIK вне форума   Ответить с цитированием
Старый 15.07.2009, 20:27   #3
Пользователь
 
Регистрация: 11.07.2009
Сообщений: 65
Сказал Спасибо: 64
Имеет 0 спасибок в 0 сообщенях
Imperial2008 пока неопределено
По умолчанию

Код:
var
x: integer;
//===============================================================================
 begin
 if FromClient  and (pck[1]=#$34) and (pck[2]=#$06) then begin//соц.действие- yes 
 case x of
1: begin
     buf:=hstr('1F EB 84 00 10 C5 2E 01 00 D4 42 02 00 F6 F1 FF FF 00'); 
     buf:=hstr('23 6E 00 70 00 63 00 5F 00 32 00 36 00 38 00 34 00 36 00 39 00 34 00 38 00 33 00 5F 00 41 00 75 00 67 00 6D 00 65 00 6E 00 74 00 20 00 31 00 00 00');
     buf:=hstr('D0 26 00 F4 CE 11 10');
     buf:=hstr('D0 28 00 F4 CE 11 10 06 11 19 10 35 10 19 10 19 00 00 00');
     buf:=hstr('D0 44 00 F4 CE 11 10 06 11 19 10 35 10 19 10 19 00 00 00');
     inc(x);
     end;
// и т.д

10: begin
     buf:=hstr('пакет № 10');
     x:=0;
     SendToServer;
     end;
     end;
Вставил так, но ничего не происходит. Скажите что не так делаю.
Да, еще одно, а какое второе соц. действие?

Добавлено через 24 минуты
Код:
begin
if fromclient and (pck=#$34#$06#$00#$00#$00) then
begin
     buf:=hstr('1F EB 84 00 10 C5 2E 01 00 D4 42 02 00 F6 F1 FF FF 00'); 
     buf:=hstr('D0 28 00 F4 CE 11 10 06 11 19 10 35 10 19 10 19 00 00 00');
     buf:=hstr('D0 44 00 F4 CE 11 10 06 11 19 10 35 10 19 10 19 00 00 00');  
     SendToServer;
end;
if fromclient and (pck=#$34#$05#$00#$00#$00) then
begin
buf:=hstr('D0 26 00 F4 CE 11 10');
buf:=hstr('D0 26 00 F4 CE 11 10');
buf:=hstr('D0 26 00 F4 CE 11 10');
buf:=hstr('D0 26 00 F4 CE 11 10');
buf:=hstr('D0 26 00 F4 CE 11 10');
buf:=hstr('D0 26 00 F4 CE 11 10');
SendToServer;
end;
end.
Я сделал так) Все работает) Тема закрыта. Сорри что побеспокоил)

Последний раз редактировалось Imperial2008, 15.07.2009 в 20:27. Причина: Добавлено сообщение
Imperial2008 вне форума   Ответить с цитированием
Старый 16.07.2009, 09:16   #4
Новичок
 
Регистрация: 01.07.2009
Сообщений: 8
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
dmn-synthet пока неопределено
По умолчанию

Цитата:
Сообщение от Imperial2008 Посмотреть сообщение
Код:
var
     buf:=hstr('1F EB 84 00 10 C5 2E 01 00 D4 42 02 00 F6 F1 FF FF 00'); 
     buf:=hstr('D0 28 00 F4 CE 11 10 06 11 19 10 35 10 19 10 19 00 00 00');
     buf:=hstr('D0 44 00 F4 CE 11 10 06 11 19 10 35 10 19 10 19 00 00 00');  
     SendToServer;
Я сделал так) Все работает) Тема закрыта. Сорри что побеспокоил)
Не понятна вот эта последовательность присвоений buf:=.
Как же так оно работает?
dmn-synthet вне форума   Ответить с цитированием
Старый 16.07.2009, 18:14   #5
Пользователь
 
Регистрация: 11.07.2009
Сообщений: 65
Сказал Спасибо: 64
Имеет 0 спасибок в 0 сообщенях
Imperial2008 пока неопределено
По умолчанию

Цитата:
Сообщение от dmn-synthet Посмотреть сообщение
Не понятна вот эта последовательность присвоений buf:=.
Как же так оно работает?
Дело вт ом, что пакетов там больше (15 шт). Работает просто - мне надо было скрипт на агмент (примитивный). Суть в чем: при нажатии одного соц действия - отсылается блок пакетов, который отвечает за агментацию оружия, а при втором соц действии - второй, который удаляет уже ту агментацию. Просто сюда не выложил весь скрипт (лимит символов). Наверное можно было по другому сделать, ввести кучу переменных да и сократить исходный код, но я не программер, да и все работает и довольно просто (как для меня))))
Imperial2008 вне форума   Ответить с цитированием
Старый 17.07.2009, 03:25   #6
Местный
 
Регистрация: 11.10.2007
Сообщений: 144
Сказал Спасибо: 44
Имеет 7 спасибок в 7 сообщенях
Amorality
По умолчанию

Imperial2008,
Вообще твой код равен этому должен быть:
DELPHI Код:
begin if fromclient and (pck=#$34#$06#$00#$00#$00) then begin      buf:=hstr('D0 44 00 F4 CE 11 10 06 11 19 10 35 10 19 10 19 00 00 00');       SendToServer; end; if fromclient and (pck=#$34#$05#$00#$00#$00) then begin buf:=hstr('D0 26 00 F4 CE 11 10'); SendToServer; end; end.

Хотя могу ошибаться, просто не понимаю какой смысл присваивать переменной разные значения, когда отправляется только конечное?
Amorality вне форума   Ответить с цитированием
Старый 17.07.2009, 10:44   #7
Пользователь
 
Регистрация: 11.07.2009
Сообщений: 65
Сказал Спасибо: 64
Имеет 0 спасибок в 0 сообщенях
Imperial2008 пока неопределено
По умолчанию

Цитата:
Сообщение от Amorality Посмотреть сообщение
Imperial2008,
Вообще твой код равен этому должен быть:
DELPHI Код:
begin if fromclient and (pck=#$34#$06#$00#$00#$00) then begin      buf:=hstr('D0 44 00 F4 CE 11 10 06 11 19 10 35 10 19 10 19 00 00 00');       SendToServer; end; if fromclient and (pck=#$34#$05#$00#$00#$00) then begin buf:=hstr('D0 26 00 F4 CE 11 10'); SendToServer; end; end.

Хотя могу ошибаться, просто не понимаю какой смысл присваивать переменной разные значения, когда отправляется только конечное?
Подожди ка, конечное действие - это нажатие кнопки выполнить и тогда на сервер не поступит информация не о геймстоунах ни о лайфстоунах ни о самом оружии) Если я правильно понимаю. Тут всего лишь три действия как я говорил, поскольку выложить полный скрипт я не смог. Главное что он работает безукоризненно на всех хрониках и сервах (где нету защиты от запуска пакетхака), поскольку он базируется на самом элементарной действии)))
Imperial2008 вне форума   Ответить с цитированием
Старый 17.07.2009, 16:26   #8
Местный
 
Регистрация: 11.10.2007
Сообщений: 144
Сказал Спасибо: 44
Имеет 7 спасибок в 7 сообщенях
Amorality
По умолчанию

А ты попробуй приведенный мной вариант, это одно и тоже, что твой..

Добавлено через 48 секунд
Баф отправляется после сендто, зачем его присваивать без отправки?

Последний раз редактировалось Amorality, 17.07.2009 в 16:26. Причина: Добавлено сообщение
Amorality вне форума   Ответить с цитированием
За это сообщение Amorality нажился спасибкой от:
Старый 17.07.2009, 19:53   #9
Пользователь
 
Регистрация: 11.07.2009
Сообщений: 65
Сказал Спасибо: 64
Имеет 0 спасибок в 0 сообщенях
Imperial2008 пока неопределено
По умолчанию

Цитата:
Сообщение от Amorality Посмотреть сообщение
А ты попробуй приведенный мной вариант, это одно и тоже, что твой..

Добавлено через 48 секунд
Баф отправляется после сендто, зачем его присваивать без отправки?
Я извиняюсь, но уже разобрался, что все эти пакеты только закружены в буф, а только 1 действительно отправляется. Но все равно спасибо)
Imperial2008 вне форума   Ответить с цитированием
Ответ

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



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

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


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

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

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