Скрипты
Привет!
вот потихоньку разбираюсь со скриптами, возник вопрос, как использовать функции в коде игры из скрипта, т.е. из игры вызвать функцию в скрипте можно, а наоборот ? Как я понял так сделать нельзя, тогда подскажите способы как из скрипта узнать координаты игрока, к примеру? Вообще как это организовать, передавать насильно в скрипт координаты не вариант, т.к. скриптов много, и они должны быть одного типа. |
Ответ: Скрипты
Скрипт по сути текстовый файл и когда его (скрипт) надо задействовать, то считывай файл, парси и тд. А так же функции скриптов должны быть прописаны в самой игре. По сути это тот же код.
|
Ответ: Скрипты
так вот как мне эти функции использовать из скрипта ?
|
Ответ: Скрипты
Наскок я знаю, все функции Ксорса забиндены разрабами, поэтому тебе в скрипте остается только их вызывать.
Скорее всего названия одноименные. Примерно так : x = xEntityX(entity); |
Ответ: Скрипты
Я наверное непонятно объяснил...
например, написал я функцию в основном коде LoadMap(map) map = loadmesh(level1.b3d) end function как вызвать эту функцию из скрипта ? |
Ответ: Скрипты
Какой язык? В Си достаточно заюзать xRegisterFunction. В блице для этого нужно как-то получить адрес функции (через либу FastPointer, например), но вряд ли оно будет работать.
|
Ответ: Скрипты
Как написал нерд, ее необходимо зарегестрировать в скриптовом движке.
Но в Блиц3Д такое не сделать, так как он не поддерживает указатели на функции. ЗЫ Можно написать эту функцию в самом скрипте. |
Ответ: Скрипты
Можно по-подробнее ?
|
Ответ: Скрипты
Суть такова:
- Ставишь вот это - http://fastlibs.com/download.php?id=...inter_1_00.zip - Смотришь в примере Example_FunctionPointer.bb как получить указатель на функцию (там делаются дикие махинации над goto, так что лучше сделай только одну функцию-обработчик, а все остальные имплементируй внутри скрипта) - Пробуешь заюзать xRegisterFunction, указав в первом аргументе строкой название функции и аргументы (например: "LoadMap(map)"), а во втором - указатель на функцию Самому интересен результат. |
Ответ: Скрипты
Неполучится. В функции xRegisterFunction() нужно передавать функцию, которая вызывается по стандарту __stdcall.
Цитата:
Ну примерно так : Код:
void LoadMap(int &map) |
Ответ: Скрипты
Цитата:
Ну епрст, я что настолько непонятно изъясняюсь ? :4to: У меня получилось зарегистрировать функцию, но из скрипта никак не хочет работать ... |
Ответ: Скрипты
Цитата:
Если она не хочет работать из скрипта, значит она не зарегестрировалась. Фейл при регистрации может быть только в одном случае : ты пытаешься скормить скрипту либо функцию с некорректным стандартом вызова либо какую-то ересь. логично? |
Ответ: Скрипты
Diablo1909, конечно понял, моя функция теперь подсвечивается как стандартная...
|
Ответ: Скрипты
Цитата:
Цитата:
|
Ответ: Скрипты
Цитата:
|
Часовой пояс GMT +4, время: 15:40. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot