Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
  • 0
ka3ant1p

SQF функции

Объясните мне неучу как компьютер понимает нестандартный SQF язык?
Как я понимаю любая функция из нестандартного языка должна быть представлена и ее действия должны быть описаны в неком скрипте на понятном языке то бишь в случае с SQF все его уникальные функции должны быть представлены в например SQS языке.
Так вот где это все хранится? В смысле описание этих уникальных функций?
Вот как например BIS функции по сути являют собой скрипты правда используют SQF и служат для упрощения кода, то же должно быть и с "родительскими" функциями SQF такими как createAgent, creatVehicle и другие.
П.С. извиняюсь за безграмотность, может попутал терминологию называя языками форматы файлов и так далее, главное надеюсь что смысл понятен =)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендованные сообщения

  • 0
 

Странно что ты такие вопросы задаешь(вроде ZedAI свой делал). Ну на примере WAI я добавил функцию спавна техники в определенном месте.

 

в инит WAI я добавил подключение файла где описана функция

vehicle_custom = compile preprocessFileLineNumbers "\z\addons\dayz_server\WAI\compile\vehicle_custom.sqf";

собственно vehicle_custom становится функцией.

и добавил вызов скрипта который эту функцию вызывает

[] ExecVM "\z\addons\dayz_server\WAI\customSpawnsVEH.sqf";

 

customSpawnsVEH.sqf выглядит так 

 



[[4047.23,8029.27,0],"UH1H_DZE"] call vehicle_custom;

 

 

vehicle_custom.sqf выглядит так 

 



private ["_startingpos","_heli_class","_veh","_vehdir","_objectID"];

_startingpos = _this select 0; // получаем координты([4047.23,8029.27,0])
_heli_class = _this select 1; // получаем класс "UH1H_DZE"


_veh = createVehicle [_heli_class, [(_startingpos select 0),(_startingpos select 1), 0], [], 0, "CAN_COLLIDE"];
_vehdir = round(random 360);
_veh setDir _vehdir;
_objectID = str(round(random 999999));
_veh setVariable ["ObjectID", _objectID, true];
_veh setVariable ["ObjectUID", _objectID, true];
PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_veh];
waitUntil {(!isNull _veh)};
clearWeaponCargoGlobal _veh;
clearMagazineCargoGlobal _veh;
Изменено пользователем Golgofinyanin (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах





  • 0

Объясните мне неучу как компьютер понимает нестандартный SQF язык?

Как я понимаю любая функция из нестандартного языка должна быть представлена и ее действия должны быть описаны в неком скрипте на понятном языке то бишь в случае с SQF все его уникальные функции должны быть представлены в например SQS языке.

Так вот где это все хранится? В смысле описание этих уникальных функций?

Вот как например BIS функции по сути являют собой скрипты правда используют SQF и служат для упрощения кода, то же должно быть и с "родительскими" функциями SQF такими как createAgent, creatVehicle и другие.

П.С. извиняюсь за безграмотность, может попутал терминологию называя языками форматы файлов и так далее, главное надеюсь что смысл понятен =)

Погугли слово "интерпретатор".

Если не поймешь, то поясню -

Функции стандартные, находятся в коде интерпретатора)) т.е. в исполняемом файле армы)

При подключении sqf файла, он построчно прогоняется, и в случае отсутствия ошибок, компилируются в исполняемый код.

Можешь и createAgent найти) Если знаний очень много) - взять арма2оасервер.ехе и декомпилировать его) потом реверс инжирингом найти нужную функцию, переделать в свою, и скомпилировать обратно. Си, Дельфи, АСМ, в помощь)

Ну или можешь у бисов попросить исходники )))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

 

 

Странно что ты такие вопросы задаешь(вроде ZedAI свой делал). Ну на примере WAI я добавил функцию спавна техники в определенном месте.

 

в инит WAI я добавил подключение файла где описана функция

vehicle_custom = compile preprocessFileLineNumbers "\z\addons\dayz_server\WAI\compile\vehicle_custom.sqf";

собственно vehicle_custom становится функцией.

и добавил вызов скрипта который эту функцию вызывает

[] ExecVM "\z\addons\dayz_server\WAI\customSpawnsVEH.sqf";

 

customSpawnsVEH.sqf выглядит так 

 



[[4047.23,8029.27,0],"UH1H_DZE"] call vehicle_custom;

 

 

vehicle_custom.sqf выглядит так 

 



private ["_startingpos","_heli_class","_veh","_vehdir","_objectID"];

_startingpos = _this select 0; // получаем координты([4047.23,8029.27,0])
_heli_class = _this select 1; // получаем класс "UH1H_DZE"


_veh = createVehicle [_heli_class, [(_startingpos select 0),(_startingpos select 1), 0], [], 0, "CAN_COLLIDE"];
_vehdir = round(random 360);
_veh setDir _vehdir;
_objectID = str(round(random 999999));
_veh setVariable ["ObjectID", _objectID, true];
_veh setVariable ["ObjectUID", _objectID, true];
PVDZE_serverObjectMonitor set [count PVDZE_serverObjectMonitor,_veh];
waitUntil {(!isNull _veh)};
clearWeaponCargoGlobal _veh;
clearMagazineCargoGlobal _veh;

Ты меня не так понял =)

Я сам так же делал через для своих ЗедАи =)

Можно скажем функции разделить на первичные и вторичные.

Первичные используют для описания действий какой то стандартный язык программирования

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

SQF это искуственный не понятный компьютеру язык который должен быть представлен на каком нибуть понятном языке. Вот я и спрашивал где бы это посмотреть, и в 3 посте есть ответ =)

 

 

 

Объясните мне неучу как компьютер понимает нестандартный SQF язык?

Как я понимаю любая функция из нестандартного языка должна быть представлена и ее действия должны быть описаны в неком скрипте на понятном языке то бишь в случае с SQF все его уникальные функции должны быть представлены в например SQS языке.

Так вот где это все хранится? В смысле описание этих уникальных функций?

Вот как например BIS функции по сути являют собой скрипты правда используют SQF и служат для упрощения кода, то же должно быть и с "родительскими" функциями SQF такими как createAgent, creatVehicle и другие.

П.С. извиняюсь за безграмотность, может попутал терминологию называя языками форматы файлов и так далее, главное надеюсь что смысл понятен =)

Погугли слово "интерпретатор".

Если не поймешь, то поясню -

Функции стандартные, находятся в коде интерпретатора)) т.е. в исполняемом файле армы)

При подключении sqf файла, он построчно прогоняется, и в случае отсутствия ошибок, компилируются в исполняемый код.

Можешь и createAgent найти) Если знаний очень много) - взять арма2оасервер.ехе и декомпилировать его) потом реверс инжирингом найти нужную функцию, переделать в свою, и скомпилировать обратно. Си, Дельфи, АСМ, в помощь)

Ну или можешь у бисов попросить исходники )))

Как думаю ты успел заметить знаний нет вообще =( Я еще и в каком то смысле ленивый, вместо того что бы почитать что какая функция делает, я вооружившись английским начал тупо анализировать и разбираться что да как в Арме работает иногда подглядывая в Вики =)

Как я понял исполняемый файл это екзешник? реверс инжиринг - вообще какой то непонятный "инжир" как по мне =) Это корочее очень сложно? 

Как я понял свою функцию туда не впихнуть, точнее нет смысла так как у других работать это не будет? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

получается что функция createAgent получает свой маршрут за значениями в файл конфига уже в интерпритированом языке, или все таки может еще есть какой файл который описывает действия этих функций в SQF синтаксисе?
Типо if {createAgent} then {
и понеслось получение значений из выбранного класса

Или то все уже в испольнительном файле прописано?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

пробовал несколько программ не одна не смогла декомпилировать =(

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
 

Представь что createAgent для армы как тег <br> для браузера(который выступает как раз интерпретатором html).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

 

 

Представь что createAgent для армы как тег <br> для браузера(который выступает как раз интерпретатором html).

ну это я понял, только что мне это дает?

Меня интересует действия которые выполняются при использовании createAgent.

Дело в том что это же не банальное размещение объекта в пространстве, по сколько этой функции не представлены начальные параметры то в исходном коде должно быть описание действий для этой функции:

1)Получение значений для параметров класса указанного в массиве параметров функции:

получение модели из файла конфига

получение текстуры из файла конфига

получение идентификатора и как следстиве лица

и так далее

2)Расчет координат для размещения случайным образом с задаными парметрами радиуса и центра

3)непосредственное создание объекта в месте полученном в п.2 используя данные полученные из п.1

 

И вот что я хочу с этим сделать: попытаться создать функцию которая будет для п.1 брать значения не из файла конфига а откуда я укажу то есть из description.ext

 

Сейчас просмотрел все возможные функции в Арме2 и возможно получится обойтись без этого, а с помощью этих функций поменять значения полученные функцией createAgent

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

В функции createAgent все есть, для твоих нужд. И не надо ее копать. Последний раз пишу.

Как ты сделаешь все остальное(какие параметры передашь, при создании)- скин, позицию и т.п. это уже твое дело.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

ну тогда объясни пожалуйста как это всетаки сделать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×
×
  • Создать...

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.