Если я правильно понимаю лучше вообще убрать команду " if (isServer) then {}; " из скрипта? Если не убрать, то скрипт выполнится у всех игроков. Появится техники столько, сколько народу на серваке.
Edited by Disab, 24 May 2014 - 00:52.
Best Answer SteelRat , 23 May 2014 - 00:23
В таком виде получается следующее: Если зайти на триггер, боты начинают спавнится на маркерах "spawn1" и "spawn2" одновременно. Короче говоря срабатывают сразу две точки спавна. Как же сделать чтобы при активации триггера (например №1) боты респились на "spawn1", триггера (например №2) боты респились на "spawn2" и.е.д. И всё это в одном файле spawn.sqf.
/*
Вызывать скрипт так
nul = "spawn1" execVM "spawn.sqf";
Только для каждого тригера свой "spawn*"
*/
_spawnArea = _this;
switch _spawnArea do {
// Этих секций может быть сколько душе угодно, в рамках разумного
case "spawn1": {
// код для спавна на позиции "spawn1"
};
case "spawn2": {
// код для спавна на позиции "spawn2"
};
};
Go to the full post
Posted 24 May 2014 - 00:43
Если я правильно понимаю лучше вообще убрать команду " if (isServer) then {}; " из скрипта? Если не убрать, то скрипт выполнится у всех игроков. Появится техники столько, сколько народу на серваке.
Edited by Disab, 24 May 2014 - 00:52.
Posted 24 May 2014 - 00:50
if !(isServer) exitWith {};
Эффект, если комп не сервер, команда isServer вернёт FALSE, то есть ЛОЖ, вот это
!isServer
значит возвращённый результат нужно конвертировать в противоположеный, то есть, если TRUE то сделать из него FALSE. И так
if !(isServer) exitWith {};
Если комп не сервер, прекращаем исполнение дальнейшего кода "exitWIth", в фигурных скобках пишется код , если надо, который исполнится, и баста.
А вот если так
if (isServer) exitWith {};
То что описал выше применится к серверу
Ну и это
// Если это сервер, исполняем код
if (isServer) then {};
// Если это не сервер, исполняем код
if !(isServer) then {};
Если я правильно понимаю лучше вообще убрать команду " if (isServer) then {}; " из скрипта?
Вообще хорошим тоном считается спавнить такие дела сервером, ну это если мультик, и стоит научиться этим пользоваться, эту команду не просто так придумали, ну а в сингле вы и сервер и клиент, в одном флаконе)
Edited by SteelRat, 24 May 2014 - 00:50.
Posted 24 May 2014 - 00:56
Если это сервер, исполняем кодif (isServer) then {}; Если это не сервер, исполняем код if !(isServer) then {};
Верней так
// Если это сервер, исполняем код
if !(isServer) exitWith {};
// Если это не сервер, исполняем код
if !(isServer) then {};
Да уж! Чем глубже я ныряю в науку скриптования, тем больше натыкаюсь на подводные камни.
Edited by Disab, 24 May 2014 - 00:59.
Posted 24 May 2014 - 01:03
Если это сервер, исполняем кодif (isServer) then {}; Если это не сервер, исполняем код if !(isServer) then {};
Верней так
// Если это сервер, исполняем код
if !(isServer) exitWith {};
// Если это не сервер, исполняем код
if !(isServer) then {};
Да уж! Чем глубже я ныряю в науку скриптования, тем больше натыкаюсь на подводные камни.
Точно)
И десерт тоже есть)
// Если это мультиплеер
if(isMultiplayer) then {};
// Если это дедикатед сервер
if (isDedicated) then {};
Edited by SteelRat, 24 May 2014 - 01:06.
Posted 24 May 2014 - 01:19
Можно еще один вопрос по скрипту? У меня есть несколько скриптовых файлов с расширением ".sqs".
Вот один из них
Его можно переделать в формат ".sqf" и сделать одним файлом (по аналогии с прошлыми скриптами)? Так чтоб всё в одном файле было (С командами - if !(isServer) exitWith {}; и .....case........). Если не затруднит помогите.
Прошу прощения, опять не понял как правильно выкладывать скрипты сюда.
Posted 24 May 2014 - 01:24
Там где отвечаете, есть такая кнопка <>
Posted 24 May 2014 - 01:27
; **************************************************************** ; HELP: Run this script from the INITIALIZATION box of the crate. ; CODE: [this] exec "DEN_Ammo.sqs" ; **************************************************************** ; Get the crate parameter given _crate = _this select 0 ; Remove the stock items from the crate clearMagazineCargo _crate clearWeaponCargo _crate ; Add the items to the crate _crate addweaponcargoglobal ["arifle_mas_aks74_gl",3]; _crate addweaponcargoglobal ["hlc_rifle_aks74",3]; _crate addweaponcargoglobal ["arifle_mas_aks74u_sd",3]; _crate addweaponcargoglobal ["hlc_rifle_aks74u",3]; _crate addmagazinecargoglobal ["10Rnd_mas_762x54_T_mag",1000]; _crate addmagazinecargoglobal ["30Rnd_mas_762x39_T_mag",1000]; _crate addmagazinecargoglobal ["100Rnd_mas_762x54_T_mag",1000]; _crate additemcargoglobal ["Medikit",3]; _crate additemcargoglobal ["FirstAidKit",500]; _crate additemcargoglobal ["ToolKit",3]; _crate additemcargoglobal ["MineDetector",5]; _crate addbackpackcargoglobal ["B_CRRC_backpack",3]; _crate addbackpackcargoglobal ["B_UAV_01_backpack_F",3]; _crate additemcargoglobal ["V_RebreatherB",3]; _crate additemcargoglobal ["U_B_Wetsuit",3]; _crate additemcargoglobal ["G_B_Diving",1]; Exit
Posted 24 May 2014 - 01:40
Кухня та же)
/*
Вызов, в инит ящика
0 = [this, "items_1"] execVM "Box_manager.sqf";
*/
_crate = _this select 0;
_items = _this select 1;
switch _items do {
// Набор 1
case "items_1": {
clearMagazineCargo _crate;
clearWeaponCargo _crate;
_crate addweaponcargoglobal ["arifle_mas_aks74_gl",3];
_crate addweaponcargoglobal ["hlc_rifle_aks74",3];
_crate addweaponcargoglobal ["arifle_mas_aks74u_sd",3];
_crate addweaponcargoglobal ["hlc_rifle_aks74u",3];
_crate addmagazinecargoglobal ["10Rnd_mas_762x54_T_mag",1000];
_crate addmagazinecargoglobal ["30Rnd_mas_762x39_T_mag",1000];
_crate addmagazinecargoglobal ["100Rnd_mas_762x54_T_mag",1000];
_crate additemcargoglobal ["Medikit",3];
_crate additemcargoglobal ["FirstAidKit",500];
_crate additemcargoglobal ["ToolKit",3];
_crate additemcargoglobal ["MineDetector",5];
_crate addbackpackcargoglobal ["B_CRRC_backpack",3];
_crate addbackpackcargoglobal ["B_UAV_01_backpack_F",3];
_crate additemcargoglobal ["V_RebreatherB",3];
_crate additemcargoglobal ["U_B_Wetsuit",3];
_crate additemcargoglobal ["G_B_Diving",1];
};
case "items_2": {
// набор 2
};
case "items_3": {
// набор 3
};
};
Edited by SteelRat, 24 May 2014 - 01:41.
Posted 24 May 2014 - 01:44
Ну и в самом начале прописать - if !(isServer) exitWith {};
Posted 24 May 2014 - 01:49
Ну и в самом начале прописать - if !(isServer) exitWith {};
Да лишним не будет.
И ещё, вот это
clearMagazineCargo _crate; clearWeaponCargo _crate;
Достаточно прописать один раз, вот так
/* Вызов, в инит ящика 0 = [this, "items_1"] execVM "Box_manager.sqf"; */ _crate = _this select 0; _items = _this select 1; clearMagazineCargo _crate; clearWeaponCargo _crate;
И не расписывать одно и тоже по каждой секции.
Posted 24 May 2014 - 01:53
Спасибо за уделённое время и за огромную помощь! Буду пробовать применять полученную информацию.
Posted 24 May 2014 - 02:04
_crate additemcargoglobal ["FirstAidKit",500];
500 аптечек, жесть)