Просмотр полной версии : Можно пара вишней?
klemberg
04.09.2009, 15:18
Актуально для 3.5.15.126
1. При подключении клиента ПХ начинает сразу перехватывать и отображать в окне лога пробегающие пакеты.
Непонятен смысл сего действа - с текущими пакетами работаем по-моему реже, чем со скриптами...
2. Обилие дополнительных окон (посылка пакетов, преобразоваия, скрипты). ИМХО, в ветке 3.4. была более удобная реализация с вкладками.
В окнах реально путаюсь :(
Воть.
Заранее спасибо за внимание.
Underwhy
04.09.2009, 15:25
Непонятен смысл сего действа - с текущими пакетами работаем по-моему реже, чем со скриптами...
Не ври, я вообще скрипты не юзаю х_х
2. Обилие дополнительных окон (посылка пакетов, преобразоваия, скрипты). ИМХО, в ветке 3.4. была более удобная реализация с вкладками.
В окнах реально путаюсь
Килмиплс? в 3.4.15.126 очень хорошее "Обилие дополнительных окон", всё сделано так как нужно, ничего лишнего. Если тебе не нравится, юзай прошлые версии. Всё тоже самое, решает тока inject.dll - зайдёт или нет.
alexteam
04.09.2009, 15:59
klemberg,
никто не мешает использовать 83 и ниже, либо переделать под себя (сурсы на свн)
модульность к примеру мне удобна как пользователю, и как разработчику (гораздо сложнее ориентироваться в одномодульном приложении с одним окошком с 10к строками кода в юните и кучей интерфейсных элементов на дфме)
и вообще, дабы не путаться в окнах - реализовано сворачивание онных ОТДЕЛЬНО друг от друга, запоминание их позиций и горячие клавиши для их скрытия\показа.
Добавлено через 5 минут
/me представило фотошоп в концепции "все на виду"
klemberg
04.09.2009, 19:35
м.б. я не прав - действительно больше похоже на мое индивидуальное "хочу".
До последнего момента использовал и продолжаю использовать версию 3.4.1.83, но есть один момент, из за которого скачал 3.5.15.126:
в 83 скрипт (вырезан кусок):
const
CHAR_NAME='enchanter';
var
OFFSET: integer;
procedure Init; //Âûçûâàåòñÿ ïðè âêëþ÷åíèè ñêðèïòà
begin
NoFreeOnClientDisconnect;
end;
//================================================== ============================
// Îñíîâíàÿ ÷àñòü ñêðèïòà
//================================================== ============================
begin
// íå îáðàáàòûâàåì ïóñòûå ïàêåòû
if pck='' then exit;
// åñëè ïàêåò äëÿ ÷àðà CHAR_NAME
if (ConnectName=CHAR_NAME) then begin
// åñëè ïàêåò îò ñåðâåðà
if (FromServer) then begin
// Tèï: 0x4A (Say2)
if (pck[1]=#$4A) then begin
// ÏÌ
if (ReadD(6) = 2) then begin
buf:=#$1B;
WriteD(12);
SendToServerEx(CHAR_NAME);
end;
end;
end;
// åñëè ïàêåò îò êëèåíòà
if (FromClient) then begin
if (pck[1]=#$6F) then begin
pck:='';
buf:=#$7E;
SendToClientEx(CHAR_NAME);
end;
end;
end;
end.
вызывает множественные ошибки "... 10038: Сделана попытка выполнить операцию на объекте, не являющемся сокетом..."
(ошибку переписал по памяти, т.к. сейчас нет возможности скопипастить)
рано или поздно (от 1 часа до 10+ часов) ПХ зависает.
ошибку понять/побороть собственной головой не смог, а 126 этой мелкой неприятности лишен.
припрусь домой, попробую заменить инжекты.
ЗЫ: Всё тоже самоередактор FS в 126 рулит.
alexteam
04.09.2009, 19:52
это не редактор, и тем более не фс.
это SendToClientEx/SendToServerEx в связке с сокетным движком такое выдают потому что писавший скрипт не учел что SendToClientEx/SendToServerEx вызывать при отваливании от сервера/клиента нельзя ибо это приведет к попытке выполнить send() и, как следствие - данной ошибке.
в 100+ этот момент предусмотрен. еще в сокетном движке.
учти это в скрипте - и юзай на здоровье 83й.
SendToClientEx(CHAR_NAME);
из учебника
3. Правила именования
3.1. Выбор имён
2. Допустимыми языками для именования являются русский и английский. Русские имена пишутся транслитом. Допустимо использовать одни имена на английском, другие — на русском языке, но запрещено смешивать русский и английский в одном имени. То есть допустимо как имя ChildWindow, так и имя DocherneeOkno, но имя ChildOkno недопустимо.
klemberg
04.09.2009, 19:59
это не редактор, и тем более не фс.я имел ввиду, что в 126 не все то же самое, что и в 83.
в 126 более удобный и навороченный редактор скриптов.
не учел что SendToClientEx/SendToServerEx вызывать при отваливании от сервера/клиента нельзя
учти это в скрипте - и юзай на здоровье 83й.
т.е. возможно использование только SendToClient/SendToServer?
а как же... :(
/me подвисает в конце недели. поехал домой, дома попробую дабы не грузить вас.
alexteam
04.09.2009, 19:59
к стати. и вылазит это явно не в этом куске кода.
klemberg
04.09.2009, 20:02
из учебникаиз учебника по практически любому языку: Идентификатор всегда начинается буквой, за которой могут следовать буквы и цифры. Напомню, что буквой считается также символ подчеркивания, поэтому идентификатор может начинаться этим символом и даже состоять только из одного или нескольких символов подчеркивания. Пробелы и специальные символы алфавита не могут входить в идентификатор.
естессно, нельзя использовать зарезервированные слова.
alexteam
04.09.2009, 20:02
SendToClient/SendToClientEx нельзя если соответствующий клиент дисконнектнут от пх.
SendToServer/SendToServerEx нельзя если пх отключен от сервера игры.
если кончено тела этих функций не предусматривают предварительную проверку на "был ли дисконектнут соответствующий сокет ранее".
klemberg
04.09.2009, 20:03
к стати. и вылазит это явно не в этом куске кода.другие скрипты не запущены.
два окна: одно на ПХ и на этом скрипте; второе мимо ПХ чтобы наблюдать за первым и кидать ПМ.
alexteam
04.09.2009, 20:04
TAMBIK, к чему ты это ? Character_name ~~ Char_name
klemberg
04.09.2009, 20:04
SendToClient/SendToClientEx нельзя если соответствующий клиент дисконнектнут от пх.
SendToServer/SendToServerEx нельзя если пх отключен от сервера игры.логично. спасибо. отпишусь.
alexteam
04.09.2009, 20:08
я про то что
if (FromServer) then
if (pck[1]=#$4A) then
if (ReadD(6) = 2) then
begin
//тут вылетать не может, ибо мы только что получили пакет от сервера, т.е. сокет еще существует.
buf:=#$1B;
WriteD(12);
SendToServerEx(CHAR_NAME);
end;
if (FromClient) then
if (pck[1]=#$6F) then
begin
//аналогично предыдущему но наоборот.
pck:='';
buf:=#$7E;
SendToClientEx(CHAR_NAME);
end;
если конечно на момент обработки пакета пх одна из сторон была отключена. вероятность этого очень мизерна. да и если бы такое произошло. то ошибка бы высветилась единожды.
т.е. либо существуют места с "произвольной" отсылкой пакета на сервер при приходе от клиента либо с отсылкой на клиент при приходе от сервера.
либо глюк сокетного движка в ревизии 83, честно, с этим, разбираться не особо хочеться т.к. единожды уже пришлось переписывать его практически полностью.
klemberg
04.09.2009, 21:41
Приперся домой. Сижу-тестю. Вот скрипт от начала и до конца:
const
CHAR_NAME = 'Bzdoo';
//================================================== ============================
// Îñíîâíàÿ ÷àñòü ñêðèïòà
//================================================== ============================
begin
// íå îáðàáàòûâàåì ïóñòûå ïàêåòû
if pck='' then exit;
// åñëè ïàêåò îò ñåðâåðà
if (ConnectName=CHAR_NAME) then begin
// åñëè ïàêåò äëÿ ÷àðà CHAR_NAME
if (FromClient) then begin
if (pck[1]=#$6F) then begin
NoFreeOnClientDisconnect;
NoFreeOnServerDisconnect;
buf:=#$7E;
SendToClientEx(CHAR_NAME);
end;
end;
end;
end.
Вот лог ПХ в ответ на скрипт:
04.09.2009 19:40:53 На сокете: 276 ошибка: 10038 Сделана попытка выполнить операцию на объекте, не являющемся сокетом
04.09.2009 19:40:53 На сокете: 276 ошибка: 10038 Сделана попытка выполнить операцию на объекте, не являющемся сокетом
04.09.2009 19:40:53 На сокете: 276 ошибка: 10038 Сделана попытка выполнить операцию на объекте, не являющемся сокетом
04.09.2009 19:40:53 На сокете: 276 ошибка: 10038 Сделана попытка выполнить операцию на объекте, не являющемся сокетом
04.09.2009 19:40:53 На сокете: 276 ошибка: 10038 Сделана попытка выполнить операцию на объекте, не являющемся сокетом
04.09.2009 19:40:54 На сокете: 276 ошибка: 10038 Сделана попытка выполнить операцию на объекте, не являющемся сокетом
04.09.2009 19:40:54 На сокете: 276 ошибка: 10038 Сделана попытка выполнить операцию на объекте, не являющемся сокетом
04.09.2009 19:40:54 На сокете: 276 ошибка: 10038 Сделана попытка выполнить операцию на объекте, не являющемся сокетом
04.09.2009 19:40:54 На сокете: 276 ошибка: 10038 Сделана попытка выполнить операцию на объекте, не являющемся сокетом
04.09.2009 19:40:54 На сокете: 276 ошибка: 10038 Сделана попытка выполнить операцию на объекте, не являющемся сокетом
04.09.2009 19:40:54 На сокете: 276 ошибка: 10038 Сделана попытка выполнить операцию на объекте, не являющемся сокетом
04.09.2009 19:40:54 На сокете: 276 ошибка: 10038 Сделана попытка выполнить операцию на объекте, не являющемся сокетом
04.09.2009 19:40:54 На сокете: 276 ошибка: 10038 Сделана попытка выполнить операцию на объекте, не являющемся сокетом
04.09.2009 19:40:54 На сокете: 276 ошибка: 10038 Сделана попытка выполнить операцию на объекте, не являющемся сокетом
вот скрин ПХ (другие скрипты не запущены):
http://s39.radikal.ru/i083/0909/c5/f5157edba338t.jpg (http://radikal.ru/F/s39.radikal.ru/i083/0909/c5/f5157edba338.gif.html)
Underwhy
04.09.2009, 21:41
задам вопрос ))..
Вопрос не по теме:
о-о обьясните мне смысл названия темы "Можно пара вишней?"
klemberg
04.09.2009, 21:54
"Можно пара вишней?"Можно пару пожеланий. (англ. "wishes", пожелания)
по первому пункту: не начинать сразу отлавливать пакеты.
по второму: вкладки.
Underwhy
04.09.2009, 22:01
Можно пару пожеланий. (англ. "wishes", пожелания)
Уайшес? о.о Как это связано с Вишнями?
Ладно, не буду флудить чтобы не схватить бан >_<
По теме:
Какую функцию выполняет скрипт?
klemberg
04.09.2009, 22:06
семпл? уверенно демонстрирует ошибку.
непосредственно скрипт в нескольких варианциях: трейдер, крафтер, ТХ на саммоне ключей, СВС/БД......................
Underwhy
04.09.2009, 22:10
семпл? уверенно демонстрирует ошибку.
Уайшес / Вайшес. Но уж не как не Виснес xD
непосредственно скрипт в нескольких варианциях: трейдер, крафтер, ТХ на саммоне ключей, СВС/БД......................
х_х почему бы просто не заюзать l2 walker?
klemberg
04.09.2009, 22:12
почему бы просто не юзать клиент, сидя перед монитором?
Underwhy
04.09.2009, 22:13
почему бы просто не юзать клиент, сидя перед монитором?
+100500, Терпение и труд все перетрут!
[Волкер действительно неплохой выход >_>.. как мне кажется.]
alexteam
04.09.2009, 22:42
если я правильно понял задумку скрипта - то.. по идее вот так.
const
CHAR_NAME = 'Bzdoo';
var
logoutok : boolean;
procedure init;
begin
logoutok := false;
end;
begin
if pck='' then exit;
if (ConnectName=CHAR_NAME) then begin
if (FromClient) then begin
if (pck[1]=#$6F) then
begin
//Не забыл ли ты обнулить пакет ?
//pck := 0 или реквайст должен пройти на сервер ?
NoFreeOnClientDisconnect; //разрешить отключение клиента онли. при отключении сервера тунель будет разрушаться, что и должно происходить.
logoutok := true; //флаг
buf:=#$7E; //шлем логауток на клиент
SendToClientEx(CHAR_NAME);
end;
end;
end;
if (ConnectName=CHAR_NAME) and FromServer and logoutok then pck := ''; //!!!! не пропускать пакеты на клиент через ПХ!! если он уже отключен.
end.
Добавлено через 1 минуту
в любом случае, попробуй привыкнуть к 100+. :P
klemberg
04.09.2009, 22:48
alexteam, большое спасибо.
Тему можно закрыть ибо не актуальна, а лучше удалить ибо автор лапух и ему стыдно.
ЗЫ: 38 билд рулит :)
alexteam
04.09.2009, 22:55
эм... а в чем причина то ?.. в обнулении pck ?
зы. 38 где ты его отрыл.. 0_о
Добавлено через 2 минуты
Тему удалять не стоит. если конечно решение в данном топике все таки есть. ибо кто знает, может ктото еще будет ловить 10038ю.
klemberg
04.09.2009, 23:52
эм... а в чем причина то ?
if (ConnectName=CHAR_NAME) and FromServer and logoutok then pck := ''; //!!!! не пропускать пакеты на клиент через ПХ!! если он уже отключен.
зы. 38 где ты его отрыл.. 0_о
блин, 83-й :)
3.4.1.83
klemberg
22.12.2009, 01:59
Ух ты! Это ж моя тема! :)
Ребят, если обнуляете пакет, то после команды
pck := '';пишите exit; - это вам съэкономит немного времени и нервов при отладке (постояно на этом попадаюсь)
alexteam
22.12.2009, 12:30
нахуйа ?...
юзать кейс не проще ? не ?
alexteam, тсс!, не пали секретное оружие)
ЗЫ а вообще case эт конечно хорошо и здорово, но вот только условие не всегда одно и целочисленное)
vBulletin® v3.6.11, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot