Если я правильно понимаю лучше вообще убрать команду " 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 аптечек, жесть)