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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 22.04.2008, 15:40   #1
Новичок
 
Регистрация: 22.04.2008
Сообщений: 21
Сказал Спасибо: 8
Имеет 26 спасибок в 6 сообщенях
poizon пока неопределено
Смех всем привет, хочу научится немного скрипт писать..вот пример

я немного писал скрипты на АС тулсе, там конечно всё гораздо проще, для меня покрайней мере.
ну так вот хочу написать небольшой скрипт только не могу разобраться.нужно вот что

вопервых не могу понять каким пакетом от сервера приходит информация о текущем MP .
сам скрипт простой

procedure make
if MP = maxMp
set lomp = 0
loop while lowmp = 0 зацикливает пока переменная lowmp = 0
compute rnd1 = 1 + int(rnd(2)) // рассчитать рандомное число для делея
delay $rnd1 sec
sendtoserver "AF 14 00 00 00 " //вобщем типа послать сервуру этот пакет , нажимает на кнопку создания соулшота.

if mp < 40 //если маны мало то "вырубает" данный цикл
set lowmp = 1
end
end // конец цикла с условием
call make
else //если переменная МП не = макс МП то выполняет вызывает опять

call make
end //конец процедуры мейк


вобщем хочу понять на премере как всё делается в пакет хаке...
нужно значит следить за маной..ну я думаю вы поняли, буду очень признателен за помошь )) если не сложно то с комментариями типа как я писал сделайте пожалуйста....

Последний раз редактировалось poizon, 22.04.2008 в 15:57.
poizon вне форума   Ответить с цитированием
Старый 22.04.2008, 17:35   #2
Местный
 
Аватар для nezabudkin
 
Регистрация: 06.03.2008
Сообщений: 154
Сказал Спасибо: 46
Имеет 130 спасибок в 38 сообщенях
nezabudkin
По умолчанию

господа, программеры!

а ведь нету на нашем форуме скрипта для бота-крафтера сосок, а ведь тема то актуальная.
nezabudkin вне форума   Ответить с цитированием
За это сообщение nezabudkin нажился спасибкой от:
Старый 22.04.2008, 17:40   #3
Новичок
 
Аватар для Ptica
 
Регистрация: 11.02.2008
Сообщений: 24
Сказал Спасибо: 8
Имеет 11 спасибок в 5 сообщенях
Ptica
По умолчанию

чего уж так скромно то? тогда уж и с автопродажей сразу
__________________
Пустынен мир, и нет конца пустыне,
и рай закрыт, и ни души в аду.

Октавио Пас "Оборванная элегия"
Ptica вне форума   Ответить с цитированием
Старый 22.04.2008, 23:19   #4
Новичок
 
Регистрация: 22.04.2008
Сообщений: 21
Сказал Спасибо: 8
Имеет 26 спасибок в 6 сообщенях
poizon пока неопределено
По умолчанию

ну тогда ваще надо полноценный делать скрипд.

типа можно выбрать рец. который будет крафтится

задать имя персонажа
------
задать первый предмет для крафта/продажи
сколько стоит маны mpCost1
задать кол-во сколько нужно накрафтить
--------
задать ХХ предмет для крафта /продажи
задать колво скока надо сделать
MpCost
---------
задать сообщение для продажи
задать цену продажи 1 предмета 2 предмета третьего и тп
первый предмет продавать всё? (если да то 0 если нет то количество)
второй предмет продавать всё? (если да то 0 если нет то количество)


далее скрипт

1. октрыть книгу рецептов
2. проверка сколько шотов в инвент. если >shoMin call trade
else сесть
3.выбрать первый рец для крафта
далее set mpcost = xx call make

procedure trade
кнопка магазина
кнопка сообщения ввести заданный текст
ок
первый предмет
цена
колво (или кнопка алл или количество)
тоже самое второй предмет (если задан)

ок (начало торговли)

4.начать крафтить
если накрафтили скока надо то нажать назад, открыть новый рец

вобщем я запутался уже...

Добавлено через 4 часа 34 минуты
ладно вобщемто начинать надо с малого, как получать количество маны? и как поставить отсыл пакета несколько раз при условии когда мана максимальна?

Последний раз редактировалось poizon, 22.04.2008 в 23:19. Причина: Добавлено сообщение
poizon вне форума   Ответить с цитированием
Старый 23.04.2008, 14:25   #5
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Цитата:
Сообщение от poizon Посмотреть сообщение
во первых не могу понять каким пакетом от сервера приходит информация о текущем MP .
Пакет:
PHP код:
s0E=StatusUpdate:h(ObjectID)d(AttribCount)d(AttrID)d(AttrValue
в пакете может быть несколько атрибутов за один раз.
Пример использования:
delphi Код:
//*************************************************** 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: MyMP:=ReadD(i*8+14);       #$0C: MyMaxMP:=ReadD(i*8+14);       #$21: MyCP:=ReadD(i*8+14);       #$22: MyMaxCP:=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 StatsUpdate;     end;   end; end.

Цитата:
Сообщение от poizon Посмотреть сообщение
сам скрипт простой
procedure make
if MP = maxMp
set lomp = 0
loop while lowmp = 0 зацикливает пока переменная lowmp = 0
compute rnd1 = 1 + int(rnd(2)) // рассчитать рандомное число для делея
delay $rnd1 sec
sendtoserver "AF 14 00 00 00 " //вобщем типа послать сервуру этот пакет , нажимает на кнопку создания соулшота.
if mp < 40 //если маны мало то "вырубает" данный цикл
set lowmp = 1
end
end // конец цикла с условием
call make
else //если переменная МП не = макс МП то выполняет вызывает опять
call make
end //конец процедуры мейк
1. Работа с пакетами в скрипте происходит асинхронно.
2. Циклов задержки в процедурах ставить нельзя все станет колом из-за задержек прохождения других пакетов.
3. Расчитывай на флаги, которые сообщают о происшедших событиях.
4. Скрипты кнопок давить не могут. Все действия осуществляются посылкой определенных пакетов.
5. Последовательность можно посмотреть пакетхаком по логам, предварительно проделав их в клиенте.
NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился 2 спасибками от:
Старый 26.04.2008, 13:43   #6
Новичок
 
Регистрация: 22.04.2008
Сообщений: 21
Сказал Спасибо: 8
Имеет 26 спасибок в 6 сообщенях
poizon пока неопределено
По умолчанию

да это оказалось сложнее чем я думал...
значит
var
i: integer;

задаём переменную и - числовую, а эндом закрывать ендом надо?


begin
получается чтобы выполнить какието команды надо их обязательно засунуть сюда? тоесть просто если я напишу какуюто команду и она тут не будет она не выполнится?
end;


for i:=0 to ReadD(6)-1 do begin

это типа если и находится в пределе i:=0 to ReadD(6)-1 то выполнять следующие команды , да?
end;


case pck[i*8+10] of
#$09: CurHP:=ReadD(i*8+14);
#$0A: MaxHP:=ReadD(i*8+14);
#$0B: MyMP:=ReadD(i*8+14);
#$0C: MyMaxMP:=ReadD(i*8+14);
#$21: MyCP:=ReadD(i*8+14);
#$22: MyMaxCP:=ReadD(i*8+14);
end;
кейс это типа преобразовать пакет pck в 16тиричное значение ?
эту операцию я не понимаю совсем....
написано текущий пакет , а ак скрипт узнаёт какой текущий пакет?
и очень часто встречается [i*8+10] зачаем и умножать на 8 и прибавлять 10 или 14 я не понимаю)

как это кейс работает?

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

тут значит если имя перса равно имя перса в скрипте и FromServer
что FromServer то? ни знака равно ни чего не понимаю.(если от сервера то начать , непонимаю)

а далее опять кейс и pck непонимаю) обьяните пожалуйста....
poizon вне форума   Ответить с цитированием
Старый 26.04.2008, 15:07   #7
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

poizon, тебе бы немного про Паскаль почитать, потому что здесь скрипты на Паскале-подобном языке. Еще лучше Дельфи изучить.

Немного теории. Скрипт состоит из нескольких частей.
const //описываем глобальные константы
Name='';
var //описываем глобальные переменные
Title : string;
procedure Init; //Вызывается при включении скрипта
begin
//здесь инициализируются переменные
...
end;

procedure Free; //Вызывается при выключении скрипта
begin
//здесь удаляются объекты и производятся завершающие действия
...
end;
//здесь описываем процедуры и функции, которые будут вызываться из основной части скрипта
...

//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
//здесь описываем обработчики пакетов входящие/исходящие
...
end.

Лучше всего взять небольшой готовый скрипт и разобраться в его работе.
NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился спасибкой от:
Ответ

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



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

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


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

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

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