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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 29.01.2008, 22:01   #1
Пользователь
 
Регистрация: 10.12.2007
Сообщений: 52
Сказал Спасибо: 22
Имеет 16 спасибок в 9 сообщенях
ChiterEPT
Печаль Вывод OutGame бота из игры. И вопросы по процедурам NoFree..

Еще несколько вопросов:
1. Как локализовать работу процедур NoFree... Прописывая процедуры в одном скрипте она работает для всех соединений. Есть ли возможность прописать их только для одного соединения?
2. Пробовал написать скрипт который при отключении выводил бы бота из игры. Использовал следующее:
Код:
procedure  Free;
begin
YesFreeOnServerDisconnect;
YesFreeOnClientDisconnect;
buf:=#$09; //LogOut
SendToServerEX(NickName);
end;
Как вы уже догадались она не работает. :cry:
Либо нужна процедура... скажем... Disconnect (обязательно локализованная) либо обьясните мне как реализовать выход чара из игры.

У кого какие мысли?
ChiterEPT вне форума   Ответить с цитированием
Старый 29.01.2008, 22:11   #2
Рыцарь
 
Аватар для QaK
 
Регистрация: 28.09.2007
Сообщений: 1,558
Сказал Спасибо: 71
Имеет 351 спасибок в 244 сообщенях
QaK пока неопределено
По умолчанию

1)Хз (ХКОР знает=)).
2) Попробуй прописать не во Free, а отдльную процедурку сделай, которая будет вызываться, например, при определенных условиях(тыркнул кнопку,конец скрипта).
QaK вне форума   Ответить с цитированием
Старый 31.01.2008, 00:27   #3
Пользователь
 
Регистрация: 10.12.2007
Сообщений: 52
Сказал Спасибо: 22
Имеет 16 спасибок в 9 сообщенях
ChiterEPT
По умолчанию

Цитата:
Сообщение от lQaKl
2) Попробуй прописать не во Free, а отдельную процедуру сделай, которая будет вызываться, например, при определенных условиях(тыркнул кнопку,конец скрипта).
Какая разница то? Попробую сейчас, но по моему Free такая же процедура которая вызывается при определенных условиях (отключении скрипта).

Добавлено спустя 1 минуту 13 секунд:
Цитата:
Сообщение от lQaKl
Хз (ХКОР знает=)).
Он ВСЕ знает! Но не хочет говорить :o :P :crazy:

Добавлено спустя 23 часа 1 минуту 25 секунд:
Переименовал тему (простите если неправомерно) в надежде привлечь внимание к ней и получить таки ответы на вопросы. Прошу, у администрации сервера, прощенья за излишний сарказм.
ChiterEPT вне форума   Ответить с цитированием
Старый 31.01.2008, 02:17   #4
Гость
 
Сообщений: n/a
По умолчанию

ОЧЕНЬ инетерсна эта вещь, сейчас пытаюсь сделать так чтобы чар остался в игре, но чтото я не понимаю, читал чт о надо ещё и скрипт сделать чтобы на пакеты отвечал... и думаю как это должны выгглядеть? просто закртие клиента?
  Ответить с цитированием
Старый 31.01.2008, 03:03   #5
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию Re: Вывод OutGame бота из игры. И вопросы по процедурам NoFree..

Цитата:
Сообщение от АрхиНуб
1. Как локализовать работу процедур NoFree... Прописывая процедуры в одном скрипте она работает для всех соединений. Есть ли возможность прописать их только для одного соединения?
ну можно например поставить условие)
if ConnectionID=0 then NoFreeOnClientDisconnect;
Цитата:
Сообщение от АрхиНуб
2. Пробовал написать скрипт который при отключении выводил бы бота из игры. Использовал следующее:
Код:
procedure  Free;
begin
YesFreeOnServerDisconnect;
YesFreeOnClientDisconnect;
buf:=#$09; //LogOut
SendToServerEX(NickName);
end;
Как вы уже догадались она не работает. :cry:
в каком смысле неработает?) и кстати потвоему это нормально отключаться от сервера прежде чем слать пакет об отключении?)
дело в том что когда отключен клиент или сервер и вызываются YesFreeOnServerDisconnect и YesFreeOnClientDisconnect отключение окончательное происходит немедленно, так что после этого уже что то слать бессмысленно), так что лучше пиши так:
Код:
procedure  Free;
begin
  buf:=#$09; //LogOut
  SendToServerEX(NickName);
  YesFreeOnServerDisconnect;
  YesFreeOnClientDisconnect;
end;
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Старый 31.01.2008, 16:20   #6
Пользователь
 
Регистрация: 10.12.2007
Сообщений: 52
Сказал Спасибо: 22
Имеет 16 спасибок в 9 сообщенях
ChiterEPT
По умолчанию

Цитата:
Сообщение от xkor
ну можно например поставить условие)
if ConnectionID=0 then NoFreeOnClientDisconnect;
Зря я выбрал себе такой ник. Нет ну я конечно нуб, но не настолько :roll:

Хкор, может ли

if (ConnectName=NickName)then SendToServer;

заменить

SendToServerEX(ConnectName);

???

Предложенный тобой вариант просто проверит ID соединения и ЗащититОтРазрываСоединения ВСЕ соединения (брр каламбур), я спрашивал Есть ли, или, возможно ли сделать процедуру типа NoFreeOnClientDisconnectEX(NickName) (например) .

А теперь по поводу выхода из игры.
Вся проблема в том, что сервер сам не разрывает соединения (проверено на двух ПТС серверах, один из которых, достаточно известен)и ПакетХак тоже не разрывает соединения при NoFree... Разрывает соединение только клиент при получении ответного пакета на ЛогАут (7Е). А если клиент уже выключен то и разрывать соединение некому. Вот именно поэтому я и просил сделать процедуру типа Disconnect(NickName или Connect ID) для разрыва соединения именно ПакетХаком.

Добавлено спустя 3 минуты 58 секунд:
Цитата:
Сообщение от xkor
дело в том что когда отключен клиент или сервер и вызываются YesFreeOnServerDisconnect и YesFreeOnClientDisconnect отключение окончательное происходит немедленно
А ты проверял??? Насколько я понял работу процедур YesFree... они просто возвращают клиенту право разорвать соединение. Тебе конечно виднее, ты автор, но я то это все проверил по 10 раз.
ChiterEPT вне форума   Ответить с цитированием
Старый 31.01.2008, 16:55   #7
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Цитата:
Сообщение от АрхиНуб
А ты проверял??? Насколько я понял работу процедур YesFree... они просто возвращают клиенту право разорвать соединение. Тебе конечно виднее, ты автор, но я то это все проверил по 10 раз.
так и непонял в чём заключалась твоя проверка, но после вызова NoFreeOnClientDisconnect если клиент отключается то поток принимающийпакеты от клиента переходит в бесконечный цикл и выходит из него тока когда вызвана YesFreeOnClientDisconnect после чего всё происходит как и раньше тоесть разрывются оба соединения так как вызывается функция closesocket для обоих соединений, так что пакет хак 100% рвёт соединение...
NoFreeOnClientDisconnectEX(NickName) на мой взгляд бессмыслена так как логичнее всего вызывать эту функцию при создании подключения а при этом имя соединения неизвестно так как ещё небыло пакета с ним...
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Старый 31.01.2008, 19:51   #8
Пользователь
 
Регистрация: 10.12.2007
Сообщений: 52
Сказал Спасибо: 22
Имеет 16 спасибок в 9 сообщенях
ChiterEPT
По умолчанию

Цитата:
Сообщение от xkor
так и непонял в чём заключалась твоя проверка
Код:
procedure Init; 
begin
NoFreeOnClientDisconnect;
NoFreeOnServerDisconnect;
end;

procedure Free; 
begin
buf:=#$09;
SendToServer;
YesFreeOnClientDisconnect;
YesFreeOnServerDisconnect;
end;
В этом. После выключения скрипта соединение не разрывается. Кроме того вводил на вкладке дополнительно в скрипт две строки:
YesFreeOnClientDisconnect;
YesFreeOnServerDisconnect;
и по нажатии кнопки выполнить соединение опять не разорвалось. Вот именно поэтому пришел к выводу, что процедуры YesFree... не разрывают соединения.
Цитата:
Сообщение от xkor
NoFreeOnClientDisconnectEX(NickName) на мой взгляд бессмыслена так как логичнее всего вызывать эту функцию при создании подключения а при этом имя соединения неизвестно так как ещё небыло пакета с ним...
А другого способа привязать NoFree... к конкретным соединениям нет? Просто не хочется чтоб во время работы одного ОутГайм Бота ВСЕ твои чары после выхода оставались в игре.
ChiterEPT вне форума   Ответить с цитированием
Старый 31.01.2008, 20:13   #9
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Цитата:
Сообщение от АрхиНуб
procedure Init;
begin
NoFreeOnClientDisconnect;
NoFreeOnServerDisconnect;
end;

procedure Free;
begin
buf:=#$09;
SendToServer;
YesFreeOnClientDisconnect;
YesFreeOnServerDisconnect;
end;
сначала не обратил внимания, эти процедуры нельзя вызывать внутри процедур Init или Free ибо они действуют на соединение для которого они вызваны а Init и Free непривязаны к конкретному соединению!
вобщем раз так хочеш чтоб они вызывались внутри этих процедур то в следующей версии сделаю NoFreeOnClientDisconnectEX(NickName) или NoFreeOnClientDisconnectEX(ConnectID)
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Старый 31.01.2008, 21:20   #10
Пользователь
 
Регистрация: 10.12.2007
Сообщений: 52
Сказал Спасибо: 22
Имеет 16 спасибок в 9 сообщенях
ChiterEPT
По умолчанию

Тоесть если я вызову процедуры из OnConnect они будут работать исключительно для этого соединения? Если это так-то нет смысла делать специальные процедуры. Сейчас проверю вызвать их из OnConnect.

Добавлено спустя 6 минут 24 секунды:
Все проверил. Если вызывать их из OnConnect они работают только для одного соединения! Один вопрос отпал.

Добавлено спустя 7 минут 14 секунд:
Сейчас поэксперементирую с YesFree... вызову его из другой процедуры может чего и получится...

Написал такой скрипт
Код:
begin
if FromServer and (pck[1]=#$4a) and (pck[6]=#$02) then begin
i:=10;
From:=ReadS(i);
Command:=ReadS(i);
case command of
'exit': begin
      YesFreeOnClientDisconnect;
      YesFreeOnServerDisconnect;
      end;
    end;
  end;
end.
Если он работоспособен, значит должен разрывать соединение при получении в приват "exit". Но соединение не разрывается. Или скрипт нерабочий, или процедуры YesFree... не работают должным образом.
ChiterEPT вне форума   Ответить с цитированием
Ответ

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



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

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


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

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

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