Просмотр полной версии : Интересный скрипт!
Привет всем вот я написал скриптик на регенерацию хп мп цп! Вот мне интересно можно ли сделать этот скрипт не используя ValidatePosition?
Например типо скрипта на Автоаугумент! Или как например по вашему можно модифицировать скрипт?Да! Вот еще каогда сервер рестартается то мне приходится переписывать пакеты....а как сделать чтобы скрипт запоминал сам данные пакеты? Хроники Интерлуде!
Привет всем вот я написал скриптик на регенерацию хп мп цп! Вот мне интересно можно ли сделать этот скрипт не используя ValidatePosition?при чем тут вообще ValidatePosition?
Или как например по вашему можно модифицировать скрипт?скрипт можно модифицировать безконечно.Например: убрать тупое переписывание пакета, а оформить грамотно процедурку. Как это делать - объяснять не буду, кури примеры скриптов.
З.Ы. ты бы хоть хроники написал чтоли.
Когда сервер рестартается назначается новые обджектИД нпц. Поэтому твой пакет 04=Action:d(ObjectID)d(OriginX)d(OriginY)d(OriginZ )c(ShiftFlag)
уже не рабоатет
Я смотрел примеры! Пакеты это запросы к баферу! Незнаю как сделать чтобы он запоминал именно то что мне нужно....а не какой другой request или action.. Примеры уже все перекурил! Я в этом новичек....(
pmen, сначала идет выделение нужного НПЦ как написал Fer123, чтобы получить нужный О_ИД нужного нпц даже если рестартанул - нужно вести мониторинг всех нпц в округе, при старте скрипта сделать релогин, после входа в мир ла2 ловить пакеты NPCInfo и собирать из них информацию: Имя перса и его О_ИД, и потом, соответственно подставлять в пакет нужный О_ИД нужного НПЦ, примеры плохо курил.
Я говорю я еще нубик в этом ((
Вот смотрите я сделать небольшую вещь и скрипт стал работать лучше и быстрее! Я чесно неочень понимаю еще( Можете показать на деле как оптимизировать скрипт!?
Ну во-первых поменяй вот такие записи
#$21+#$6E+#$00+#$70+#$00+#$63+#$00+#$5F+#$00+ #$32+#$00+#$36+#$00+#$38+#$00+#$34+#$00+#$37+#$00+ #$37+#$00+#$39+#$00+#$31+#$00+#$30+#$00+#$5F+#$00+ #$72+#$00+#$65+#$00+#$73+#$00+#$74+#$00+#$6F+#$00+ #$72+#$00+#$65+#$00+#$20+#$00+#$68+#$00+#$70+#$00+ #$20+#$00+#$31+#$00+#$00+#$00;
на
buf:=#$21;
WriteS('npc_268477910_restore hp 1');
SendToServer;
Здесь 268477910 как раз тот самы ОбджекИД который надо мониторить по пакетам NPCInfo
Вот я заменил как ты сказал и на этом выбивает еррор
Добавлено через 1 минуту
А все я поправил нужно было ковычки поставить =)
Добавлено через 1 минуту
Видите я в этом скрипте использую пакет на Validate Positin? А можно от него както избавиться?)
хмм а зачем он вообще нужен?
хмм а зачем он вообще нужен?
Это место расположение бафера....Я птылся просто убрать пакет этот но не получалось...скрипт без него не работает
pmen, на деле показать = зделать все за тебя, учись переводить строки, в ПНХ есть специальная штука для этого.
вот я уже учусь ! Спасибо Fer123 перевел в нормальный вид пару строк)
Добавлено через 1 минуту
Вот Fer123 мне показал эту функцию и я ее уже знаю и могу использовать=) Просто я еще многое незнаю и может что-то на ваш взгляд в скрипте можно изменить?
validateposition - это не место бафера, это клиент отсылает свои координаты на сервак, для сравнения.
validateposition - это не место бафера, это клиент отсылает свои координаты на сервак, для сравнения.
Да ты прав сорри) Я использую ValidatePosition для того чтобы сервер думал что я нахожусь рядом с бафером
Вот Fer123 мне показал эту функцию и я ее уже знаю и могу использовать=)а почитать мануал, для написания скрипта, чтобы самому все нужные для себя функции/процедуры найти?
Я читал! Просто не все функции понимаю как использовать
Добавлено через 10 минут
Так как вы думаете что еще можно заменить?
Можете показать на деле как оптимизировать скрипт!?
Можно попробовать
buf:=#$04+#$D6+#$A5+#$00+#$10+#$80+#$41+#$02+#$00+ #$F0+#$22+#$FF+#$FF+#$23+#$F5+#$FF+#$FF+#$00;
заменить на
buf:=hstr('04 D6 A5 00 10 80 41 02 00 F0 22 FF FF 23 F5 FF FF 00');
Добавлено через 6 минут
Ну во-первых поменяй вот такие записи
на
buf:=#$21;
WriteS('npc_268477910_restore hp 1');
SendToServer;
Здесь 268477910 как раз тот самы ОбджекИД который надо мониторить по пакетам NPCInfo
Я вот так мониторил
begin
--8<--
//16=NpcInfo
#$16: begin
msg.Lines.Add('S>Пакет NpcInfo #$16'+inttostr(ReadD(2)));
// OID ID
AppendNpc(ReadD(2), ReadD(6)); //добавляем в базу данных
if (FishermanID=ReadD(6)-kID) then begin
EditFishermanOID.text:=inttostr(ReadD(2));
FishermanOID:=strtoint(EditFishermanOID.text);
if java then begin
//java
getbuylist:='npc_'+inttostr(FishermanOID)+'_Buy 411';
getselllist:='npc_'+inttostr(FishermanOID)+'_Sell' ;
getmultisell:='npc_'+inttostr(FishermanOID)+'_mult isell 009';
end;
end;
end;
--8<--
Вот что у меня получилось=)
[/QUOTE]
Да ты прав сорри) Я использую ValidatePosition для того чтобы сервер думал что я нахожусь рядом с бафером
if FromClient and (pck[1]=#$48) then ValidatePosition:=pck;
С такой строчкой ValidatePosition запоминается постоянно. В переменной ValidatePosition всегда будут ваши реальные координаты, а не координаты того места что рядом с бафером. Обьясните плиз зачем отсылать этот пакет.
А как можно оптимизировать это
buf:=hstr('04 D6 A5 00 10 80 41 02 00 F0 22 FF FF 23 F5 FF FF 00'); //открытие окна бафера
и это
buf:=hstr('48 80 41 02 00 F0 22 FF FF 23 F5 FF FF 87 CC 00 00 00 00 00 00');//validateposition
Неодскажете?)
я щас немного подделал скрипт и он вообще летает! Но все же 1 трудность.....Object id нужно менять
Добавлено через 2 минуты
Никак с мониторингом норм не разберусь(
pmen, ответьте на вопрос в посте #20 и скажу как мониторить =р
Короче! Посмотрите внимательно..Сначало скрипт запоминает мой ValidatePositionя ,затем посылает ValidatePosition (я стою у бафера) серверу чтобы он думал что я у бафера,а в конце посылается раннее запомненый ValidatePosition.Без этой функции после использовании скрипта я уходил в инвиз, а эта функция после исполнения скрипта возвращает меня на место и я не изчезаю!
Добавлено через 1 минуту
Так что поможете с тем чтобы я не мучался с заменой obj.id
Вот моя последняя версия скрипта
Добавлено через 10 минут
Можете Мониторинг внедрить в этот скрипт( а то бесит менять obj.Id
Добавлено через 16 минут
Да вот еще 1 проблемка...Меня иногда,когда я использую скрипт, тпшит к баферу...Как этого избежать
Сразу хочу сказать что тот вариант который предлагает нло очень хорош и универсален. Я предлагаю вариант чуть попроще, но не настолько универсальный и удобный.
Для того чтоб каждый раз не менять objectid будем записывать в переменную при запуске скрипта. Брать его будем из пакета Actoin (#$1F это для камаел и выше). В скрипт добавляем процедуру:
procedure Init; //Вызывается при включении скрипта
begin
SendMsc('Возьмите в таргет бафера');
b:=false;
end;
В главный блок добавляем условие:
if FromClient and (pck[1]=#$1F)and (not b) then
begin
a:=ReadD(2);
SendMsc('ObjectID = '+inttostr(a));
b:=true;
end;
В условие где уже диалог идет добавим and(b) чтоб если ObjectID не был определен диаог не открывался. Сами команды где ObjectID будет использоватся будут выглядеть например так:
WriteS('npc_'+inttostr(a)+'_restore mp 1');
ps: насчет тп к баферу я хз
У меня хроники интерлудии
Расскажи подробно что происходит когда ты летишь к баферу черный экран или ты рядом с ним появляешься?
Просто игра подвисает....и я оказываюсь у бафера...а иногда просто под городом
Добавлено через 4 минуты
Сможете почмочь с мониторингом....а то никак не вкурю( как не крути ошибки синтаксиса
Если ИЛ то гляньте какой id у пакета Actoin и замените в скрите.
"Action" ?
Добавлено через 9 минут
Вот так правильно???
Добавлено через 9 минут
Спасибо огромное! Все получилось!!И вот последний вопрос! А можно как-то в самом Action ,чтобы Obj.ID тоже заменялся??
buf:=hstr('04 D2 A6 00 10 80 41 02 00 F0 22 FF FF 23 F5 FF FF 00');
buf:=#$04;
WriteD(a);
и так далее, лучше читайте тему Что нужно знать для написания скриптов (http://coderx.ru/showthread.php?t=10)
buf:=#$04;
WriteD(a);
и так далее, лучше читайте тему Что нужно знать для написания скриптов (http://coderx.ru/showthread.php?t=10)
Проблема в том щас то что отсылается 04 D2 A6 00 10 а остальная часть пакета нет..Как сделать полную отсылку
04 D2 A6 00 10 80 41 02 00 F0 22 FF FF 23 F5 FF FF 00'
:shout: реакция на прочтение все темы!!!!!
что надо знать автору:
1. понять как разберается пакет типа ReadD() ReadS() и подобная дребедень. ну очень много примеров от простых до посложней
2. понять как запоминать и выбирать данные в масив и соответсвенно из него
3. Научиться строить свою мысль тоесть разбить действия на компоненты.
пример нам нужно запомнить О_ид бафера:
способ А. ручной
if pck(1)=04 and FromServer and x1=true then begin Ox_id:=ReadD(2); Oy_id:=ReadD(6); Oz_id:=ReadD(10); x1:=false end;
во самый простой метод камнями не кидать писал с коленки последний раз это делал месяца 3 назад :)
что тут мы делаем:
если мы получаем пакет Актион от сервера когда флаг x1 труе то мы запоминаем из пакета последовательно по 4 байта О_ид и координаты и потом опускаем флаг и теперь без проблем можем тыкать по другим НПЦ и мобам зная что пока мы в игре мы знаем обжект ид. ну тут надо все переменые объявить и по сообщению в чат флаг подымать вот типа решили проблему
Способ Б описан выше другими прогерами
Добавлено через 5 минут
зы так же можно зная ИД НПЦ сделать фильт пакета НПЦинфо и запомнить теже данные из него в этом случае нам будет пофигу как мы получим пакет с нужным нам нпц мы его запомним и будем запомнать столько раз сколько будет приходить этот пакет
Все) Я практически закончил писать скрипт!!
Мда, прикольно, это чит-тематика запрещена?=) Что за сервер, если не секрет?
По скрипту хз, что нагородили. Валидэйт зачем в скрипте отлавливать?
Там проверки вообще другие должны быть.
//Работает на сервер где есть у бафера регенерация хп мп цп
Работает на кривояве.
Мда, прикольно, это чит-тематика запрещена?=) Что за сервер, если не секрет?
По скрипту хз, что нагородили. Валидэйт зачем в скрипте отлавливать?
Там проверки вообще другие должны быть.
Работает на кривояве.
Примерно таким скриптом у меня был андеад,на la2real.net,там я не скажу что кривая ява)
С последним обновлением от Fyrre,с l2phx не зайти=/ Даже лсп не помогает=/
n1ce?!, я неделю-две назад прекрасно заходил....
И тоже там с андедом набегался, пока некий "Сухарик" не слил всю инфу нубу-админу и не ПОМОГ пофиксить (и то, я не уверен что до конца).
А реал - жутко кривая ява до сих пор, багов там немерено.
Vklu4atel^^
23.05.2009, 23:32
при чем тут вообще ValidatePosition?
скрипт можно модифицировать безконечно.Например: убрать тупое переписывание пакета, а оформить грамотно процедурку. Как это делать - объяснять не буду, кури примеры скриптов.
З.Ы. ты бы хоть хроники написал чтоли.
а как сделать чтобы скрипт запоминал сам данные пакеты? Хроники Интерлуде!
Он написал!
запоминал сам данные пакеты?какие "данные пакеты"? Хроники он после дописал.
vBulletin® v3.6.11, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot