Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Need help?

    Create a topic in the appropriate section
    Don't write everything in the chat!
  • Take a look at the marketplace

    There you can buy
    everything related to game servers
  • Don't want a ban?

    Please read our rules
    Don't disturb the order!
  • Sell or buy?

    Use services of the guarantor
    We will make your deal safe
  • 0
Sign in to follow this  
ka3ant1p

SQF функции

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

Share this post


Link to post
Share on other sites

9 answers to this question

Recommended Posts

  • 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;
Edited by Golgofinyanin (see edit history)

Share this post


Link to post
Share on other sites





  • 0

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

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

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

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

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

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

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

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

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

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

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

Share this post


Link to post
Share on other sites
  • 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оасервер.ехе и декомпилировать его) потом реверс инжирингом найти нужную функцию, переделать в свою, и скомпилировать обратно. Си, Дельфи, АСМ, в помощь)

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

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

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

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

Share this post


Link to post
Share on other sites
  • 0

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

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

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites
  • 0
 

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

Share this post


Link to post
Share on other sites
  • 0

 

 

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

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

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

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

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

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

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

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

и так далее

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

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

 

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

 

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

Share this post


Link to post
Share on other sites
  • 0

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

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

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.