GTA Vice City > Скриптинг

Создание пикапа через Функцию

(1/1)

SpitFire:
Я решил попробовать свои возможности в скриптинге и написать миссию через CLEO, для GTA Vice City и столкнулся с рядом проблем. Одной из такой проблем была нехватка переменных. Судя по всему, я достиг лимита использования глоб. переменных, т.к. после достижения этого лимита, после окончания миссии некоторые пикапы/объекты не хотят удаляться, хотя опкод на их удаление прописан. К сожалению, локальные переменные все заняты и так же нужны после окончания миссии. Я как мог уменьшил кол-во глоб. переменных, но этого всё равно недостаточно. Тогда я решил пойти через создание пикапов через функцию и увы, функцию создания пикапа я не нашёл, так что прошу помощи здесь.

Shagg_E:
В CLEO лучше не использовать глобальные переменные вообще. Ты записываешь в глоб. переменную указатель на пикап, потом игра в scm записывает в эти же глобальные переменные свои значения и в результате в этой глобальной переменной перестает храниться указатель на пикап и ты из-за этого не можешь его удалить. Это меньшее из зол. Опаснее всего то, что код в scm не рассчитан на то, чтобы в его глобальные переменные велись какие-то записи, и в результате это может запороть нормальный ход выполнения кода scm, что приведет в дальнейшем к глюкам и багам.

Для экономии переменных лучше использовать скриптовые функции(как обычный gosub, только в каждой функции есть свой набор локальных переменных), а также скриптовый буфер памяти, в который можно записывать сколь угодно много информации(в зависимости от размера созданного буфера).

SpitFire:
Лучше не буду с этим заморачиваться, а создам второй скрипт.

xanser:
Вот пример:

--- Код: C++ ---auto CreatePickup = (int (__cdecl *)(RwV3d pos, int id, int type, int ammo, int, char, int)) 0x4418C0;CreatePickup(Pos,284,2,100,0,0,0);
Для скриптового случая наверное в таком виде:

--- Код: C++ ---auto CreatePickup = (int (__cdecl *)(float x, float y, float z, int id, int type, int ammo, int, char, int)) 0x4418C0;CreatePickup(x,y,z,284,2,100,0,0,0);

Навигация

[0] Главная страница сообщений

Перейти к полной версии