Здравствуйте!
Не могу заставить перса бежать в определенную точку. Клиент падает в ошибку. Подскажите, пожалуйста, что в моем коде неправильно. Пишу на Autoit.
Вот тут мой код. Тык
semoder и N00bSa1b0t, спасибо вам большое за помощь.
N00bSa1b0t, сколько искал информацию по инжектам, не встречал такую, что через структуру действий можно гонять перса по координатам. Очень интересно. Обязательно попробую его реализовать.
X Y Z - это ж координаты, по идее float. Хотя в самом FlyWQ это интовые числа. Но ведь размерность одинаковая (4 байта) поэтому одно и тоже значение можно интерпретировать и как float и как int32.
movetype всегда 1 (int32)
client - это просто ID процесса, с которым ты работаешь.
actionstruct - оффсет (int_ptr)
height - float
хммм.. ну почему нельзя писать понятным образом?
что значит можно интерпретировать? окей, интерпретируем 3.14 как int: 1078523331. одинаковый результат? что-то не похоже, так что размерность - не показатель того, что пихать можно любые значения. важен смысл, а не размер.
Цитата:
movetype всегда 1 (int32)
что всегда 1? равен 1? тогда зачем делать из него параметр?
или занимает один байт? тогда зачем в скобочках приписано int32? int32 это простой стандартный int, т.е. целое, 4 байта.
и ещё. где логика порядка параметров? : D Функция(координаты, тип движения, процесс игры, структура, высота)
я бы сделал так: MoteTo(GameProcessId, Struct, Type, X, Y, Z, Height);
причём, зачем указывать начало структуры, если мы указываем процесс игры, из который это начало можно получить парой операций? ну неужели для экономии.. ресурсов?
в общем, я рад, что у тебя работает, но описано всё не очень понятно.
что значит можно интерпретировать? окей, интерпретируем 3.14 как int: 1078523331. одинаковый результат? что-то не похоже, так что размерность - не показатель того, что пихать можно любые значения. важен смысл, а не размер.
Смысл важен для человека. Если ты координаты считал как инт, и отправляешь как инт - все работает.
Я просто сказал, что в FlyWQ координаты представлены в виде инта:
Вот и все. Автору так было проще. Работает? Работает. Прилетел на точку, снял координаты - полетел дальше.
Цитата:
Сообщение от BritishColonist
что всегда 1? равен 1? тогда зачем делать из него параметр?
или занимает один байт? тогда зачем в скобочках приписано int32? int32 это простой стандартный int, т.е. целое, 4 байта.
Зачем параметр - не знаю, спроси автора FlyWQ. Всегда равен 1, занимает 4 байта)
Цитата:
Сообщение от BritishColonist
и ещё. где логика порядка параметров? : D
Опять-таки, вопрос не ко мне. Я лишь привел кусок исходника FlyWQ
PS
Если кто не понял, что такой FlyWQ - это вот это http://zhyk.ru/forum/showthread.php?t=117469
Правда в теме исходников нет, но вроде на пвлабе ссылка была.. или в другой какой-то теме, я успел скачать)
а, так не ты это написал.. ну Ctrl+C'n'Ctrl+V это конечно круто : D
рекомендую всё же переписывать так, как удобно тебе, чтобы хотя бы понимать, что в этом коде происходит и как работает.
Зачем параметр - не знаю, спроси автора FlyWQ. Всегда равен 1, занимает 4 байта)
Опять-таки, вопрос не ко мне. Я лишь привел кусок исходника FlyWQ
Код:
setFlyTo(theId, xCoord, yCoord, zCoord, height)
{
global
local baseAddress := ReadMemory(realBaseAddress, theId)
local structurePointer := ReadMemory(baseAddress + baseOffset, theId)
local playerPointer := ReadMemory(structurePointer + playerOffset, theId)
local actionStruct := ReadMemory(playerPointer + playerActionStructOffset, theId)
MoveTo(Xcoord, Ycoord, Zcoord, 0, theId, actionStruct, height)
}
единственный вызов приведенной вами функции, как видно в 4м параметре передается 0. откуда появилась 1 в этом параметре?
Цитата:
Сообщение от N00bSa1b0t
PS
Если кто не понял, что такой FlyWQ - это вот это http://zhyk.ru/forum/showthread.php?t=117469
Правда в теме исходников нет, но вроде на пвлабе ссылка была.. или в другой какой-то теме, я успел скачать)
Исходники FlyWQ выложены автором [Ссылки могут видеть только зарегистрированные пользователи. ], включаемый файл [Ссылки могут видеть только зарегистрированные пользователи. ]
насчёт параметра. да, если игрок управляет персонажем, то movetype принимает следующие состояния:
при прыжке 4.
при передвижении клавишами 3.
при передвижении щелчками мыши 0.
если щёлкать мышью не на объект, а на небо (т.е. указываем просто сторону, в которую надо бежать), то movetype равен 2.
movetype никогда не равен 1. если прописать такое значение, передвигая игрока одним из вышеописанных способов, то он стопроцентно останавливается (даже при прыжке в небе зависнет, кстати). это кроме зажатия клавиш - у них значение 3 будет перезаписываться многократно, пока клавиши нажаты.
вот такие вот дела.