PDA

Просмотр полной версии : Определение id цели


ПолуГость2
26.05.2009, 05:38
Я понимаю, что выгляжу лохом, но раньше как-то не лез в эту область, поэтому ламер и есть. Вопрос следующий: как определить ID типа выбранного непися. Перехватывать все пакеты 0C, вести своими силами список из {ID типа; ID экземпляра}, следить за его пополнением и очисткой, не прощелкать утечку памяти, ИМХО, путь идиотский. Нет ли ловкого вызова готовой функции, которая поможет это сделать цивилизованно? Вроде бы как общеупотребительная должна быть фишка. :sorry:

QaK
26.05.2009, 08:41
ПолуГость2, выражай мысль конкретнее: какой ИД тебе нужен: Обждект ИД или НПЦ ИД? Для каких целей тебе нуден этот ИД?

alexteam
26.05.2009, 12:24
если речь про обжектайди - именно ведением базы это и делается.

ПолуГость2
26.05.2009, 12:45
Я еще не в теме правильной терминологии. Тип объекта. Кельтир или вольф из селектед. Зачем надо - в зависимости от типа выбранного моба подменять пакет на удар иным. Применений масса - ну, например, юзать ключ для сундука, хотя я затеял все это для другого.
alexteam это печально до крайности, потому что помимо дела придется заниматься массой лишних однозначно стандартных телодвижений. Тогда вопрос номер два - скрипт в ПХ запускается после коннекта юзера, т.е. когда все описания окружающих мобов уже просвистели мимо. Получается, после запуска скрипта надо уйти из локации и затем в нее вернуться, чтобы получить актуальный список мобов?
А никто не делал бота чисто средствами ПХ? Хотя бы в зачаточном состоянии? Ведь это все там должно быть уже сделано - хранение списка мобов, актуализация их координат, расчет ближайшего, чтобы атаковать именно его и пр. Мне бы такая заготовка очень помогла.

alexteam
26.05.2009, 12:50
alexteam это печально до крайности, потому что помимо дела придется заниматься массой лишних однозначно стандартных телодвижений. Стандартных в чем ?


Тогда вопрос номер два - скрипт в ПХ запускается после коннекта юзера, т.е. когда все описания окружающих мобов уже просвистели мимо. когда напротив него ставицца галочка.
в игру можно войти и с включенным скриптом.

Получается, после запуска скрипта надо уйти из локации и затем в нее вернуться, чтобы получить актуальный список мобов?если он был включен пожже входа в игру/локацию/по какойто причине учет мобов не велся - да. либо перезайти.

А никто не делал бота чисто средствами ПХ? Хотя бы в зачаточном состоянии? Ведь это все там должно быть уже сделано - хранение списка мобов, актуализация их координат, расчет ближайшего, чтобы атаковать именно его и пр. Мне бы такая заготовка очень помогла.http://coderx.ru/showthread.php?t=334

ПолуГость2
26.05.2009, 12:58
Про запуск с крипта до логина - а у кого выставлять галку, если в списке коннектов только "пусто"? Кстати, я хочу ловить коннект валкера, а не клиента.

Ага, отлично, сенкс.

alexteam
26.05.2009, 13:22
а у кого выставлять галку, если в списке коннектов только "пусто"
в общем так.
procedure init - выполняеться при активации скрипта. (подготовка переменных/создание обьектов) можно вызвать в любой момент до логина в игру/ после. неважно.
free - при деактивации

все что между begin end. (с точкой) - тело скрипта - вызывается каждый раз при приходе пакета от сервера/клиента. при чем не имеет разницы какое соединение выбрано, должно выполняться только одно условие - скрипт отмечен к исполнению. тобиш вызвана секция инит.

зы. в последних версиях скриптовой редактор поприятней будет.

ПолуГость2
27.05.2009, 03:42
Скрипт-то я во внешнем редакторе пишу... Ладно, будем разбираться, если что получится - поделюсь, если будут вопросы - задам. :)

Добавлено через 11 часов 32 минуты
Еще вопросик: TMemo это просто текстовое многострочное поле, типа TEXTAREA в HTML, а есть класс отвечающий за структурированное текстовое поле. Это похоже на представление файлов в эксплорере в виде списка, где каждая строка имеет несколько полей, поля выдаются в виде выровненных столбцов. Короче, матрица с ячейками без переноса слов.

dmitry501
27.05.2009, 07:57
Заставить обновится НПС можно пакетом Appering

alexteam
27.05.2009, 12:46
ПолуГость2, tlistview в отображении как репорт.

QaK
27.05.2009, 12:49
ПолуГость2, а чем StringGrid не канает?

ПолуГость2
28.05.2009, 06:02
dmitry501 поздняк метаться, я уже сделал ведение списка...

alexteam, QaK сенку, посмотрим

QaK очень может быть что и канает, просто я обо всем этом впервые слышу :)

Добавлено через 15 часов 51 минуту
Еще один ламерский вопрос: зачем нужны objectid и targetid пакета на селект цели? После targetSelected приходит myTargetSelected, где указан только objectid, а при снятии селекта приходит targetUnselected, в нем соотв. только targetid. Для ведения корректного списка, приходится хранить оба, или ингорить деселект. Непонятно, зачем такое многообразие идентификаторов?

QaK StringGrid в фастскрипте вроде не обнаружен.

QaK
28.05.2009, 08:48
Еще один ламерский вопрос: зачем нужны objectid и targetid пакета на селект цели? После targetSelected приходит myTargetSelected, где указан только objectid, а при снятии селекта приходит targetUnselected, в нем соотв. только targetid. Для ведения корректного списка, приходится хранить оба, или ингорить деселект. Непонятно, зачем такое многообразие идентификаторов?
myTargetSelected - это конкретно для твоего клиента инфа, что ты корректно выделил чара с ObjectID таким-то, targetUnselected это инфа о том, что ты убрал/отменил таргет с чара с ObjectID таким-то.
QaK StringGrid в фастскрипте вроде не обнаружен.Сорь, привык думать, что все плугины юзают вместо скриптов.

NLObP
28.05.2009, 09:27
Еще один ламерский вопрос: зачем нужны objectid и targetid пакета на селект цели?

В принципе это одно и тоже, просто в пакетах по разному названия. Без ObjectID нет возможности идентифицировать конкретный объект в мире линаги.

ПолуГость2
28.05.2009, 15:40
NLObP
В том то и дело, что они имеют разные значения. В NpcInfo используется ObjectID, в targetSelected - оба, и ObjectID, и TargetID, в MyTargetSelected - ObjectID, а в TargetUnselected - TargetID. Получается, что TargetID фигурирует только в targetSelected и TargetUnselected, зачем такое изобилие id я, как простой программер, в упор не понимаю. Можно, конечно, хранить оба, мне не в падлу, оно и придется, т.к. в атаках исползуется опять же TargetID, просто непонятно зачем такой геморрой придуман...
Ладно, это так, вопрос к облакам, сделаем как заставляют, просто чуднО...

QaK
28.05.2009, 15:47
ПолуГость2, названия полей не пересекаются между собой, они несут смысловую нагрузку в объеме одного пакета, какая часть в пакете что означает.

NLObP
28.05.2009, 15:51
В NpcInfo используется ObjectID, в targetSelected - оба, и ObjectID, и TargetID, в MyTargetSelected - ObjectID, а в TargetUnselected - TargetID. Получается, что TargetID фигурирует только в targetSelected и TargetUnselected

0C=NpcInfo:d(ObjectID)d(NpcTypeId:Get.NpcId)d(IsAt tackable)d(X)d(Y)d(Z)...
По этому пакету можно выяснить соответствие ObjectID и NpcId. Вносим в базу данных.

23=TargetSelected:d(ObjectID)d(TargetID)d(X)d(Y)d( Z)d(0)
Пакет приходит не только твой, но и окружающих игроков.
ObjectID - это кто взял в таргет,
TargetID - это кого взяли в таргет.

B9=MyTargetSelected:d(ObjectID)h(Color)d(0)
Это когда ты в таргет кого-то (ObjectID) берешь.

TargetUnselected:d(TargetID)d(X)d(Y)d(Z)d(0)
Это про тебя говорят, что ты снял таргет с TargetID

Все эти ID это и есть ObjectID, за исключением NpcId.

alexteam
28.05.2009, 16:05
не пойму в черпроблема...
к примеру.
33=Attack:d(AttackerID)d(TargetID)d(Damage)c(Flags )d(X)d(Y)d(Z)h(HitsSize:Loop.01.0003)d(TargetID)d( Damage)c(Flags)
кто, кого, с каким дамагом, и т.д.
оба параметра - обжектайди участников драки.

ПолуГость2
28.05.2009, 18:35
NLObP
Да, все сходится, спасибо. Маленькая поправка:


TargetUnselected:d(TargetID)d(X)d(Y)d(Z)d(0)Это про тебя говорят, что ты снял таргет с TargetIDЗдесь TargetID - это твой id, видимо, пакет не только для тебя, но и для окружающих, а с кого снимают таргет - не сообщают вовсе.

alexteam
Проблема была у меня в мозгах :)