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

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

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

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

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

пример скрипта "рандомный выбор из списка, координаты"

ребята, нужен пример вышеописанного скрипта. хочу в данном файле для некоторых трейдеров задать фиксированные, возможные места появления как у boats.sqf

 

/*
Epoch Dynamic Traders my maca134
http://www.epochservers.com


You will need to go into each file in the traders file and change the model/skin to the relevent trader for the map you are using. 
Look in server_traders.sqf in the mission pbo for more information.


*/
private ["_trader_config", "_markers"];


DT_fnc_ObjectsMapper = compile preprocessFileLineNumbers "\z\addons\dayz_server\DynamicTraders\objectMapper.sqf";
DT_fnc_CreateTrader = compile preprocessFileLineNumbers "\z\addons\dayz_server\DynamicTraders\createTrader.sqf";


_trader_config = [
    [1, "hero.sqf",         "Hero Trader",                     "ColorBlue"],
    [1, "bandit.sqf",         "Bandit Trader",                 "ColorRed"],
    [2, "general.sqf",         "Торговец снаряжением / стройматериалами",     "ColorGreen"],
    [2, "helicopters.sqf",     "Black Trader",                     "ColorYellow"],
    [3, "medical.sqf",         "Medical Trader",                 "ColorGreen"],
    [2, "vehicles.sqf",     "Vehicle Trader",                 "ColorYellow"],
    [3, "weapons.sqf",         "Weapons Trader",                 "ColorYellow"],
    [1, "wholesaler.sqf",     "Бакалейщик",                     "ColorBlack"],
    [3, "boat.sqf",         "Торговец катерами",                         "ColorBlack"]
]; 


_markers = [];
waitUntil { sleep 1; !isNil "sm_done" };
{
    for [{_i=0}, {_i<(_x select 0)}, {_i=_i+1}] do {
        private ["_position", "_found_position", "_j", "_near_trader"];
        waitUntil { !isNil "BIS_fnc_findSafePos" };
        _found_position = false;
        _j = 0;
        while {!_found_position} do {
            _j = _j + 1;
            if ((_x select 1) == "boat.sqf") then {
                _position = [getMarkerPos 'center',0,DynamicVehicleArea,20,0,2000,1] call BIS_fnc_findSafePos;
            } else {
                if (!isNil "RoadList" and {(random 1) > 0.5}) then {
                    waitUntil{!isNil "BIS_fnc_selectRandom"};
                    _position = RoadList call BIS_fnc_selectRandom;
                    _position = _position modelToWorld [0,0,0];
                    waitUntil{!isNil "BIS_fnc_findSafePos"};
                    _position = [_position,5,40,20,0,2000,0] call BIS_fnc_findSafePos;
                } else {
                    waitUntil{!isNil "BIS_fnc_findSafePos"};
                    _position = [getMarkerPos 'center',0,DynamicVehicleArea,20,0,2000,0] call BIS_fnc_findSafePos;
                };
            };
            
            {
                if (((_x select 0) distance _position) < 1000) exitWith {
                    _position = [];
                };
                true
            } count _markers;
            if ((count _position) == 2 or _j > 10) then {
                _found_position = true;
            };
        };


        if ((count _position) == 2) then { 
            diag_log format["Trader Caravans: Spawning %1 at %2 (%3)", _x select 1, _position, mapGridPosition _position];
            _position execVM format["\z\addons\dayz_server\DynamicTraders\traders\%1", _x select 1];
            _markers set [count _markers, [_position, _x select 2, _x select 3]];
        };
    };
    true
} count _trader_config;


PV_TraderMarkers = _markers;
publicVariable "PV_TraderMarkers";
 

 

 

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


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

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

  • 0
 


private ["_trader_config", "_markers"];


DT_fnc_ObjectsMapper = compile preprocessFileLineNumbers "\z\addons\dayz_server\DynamicTraders\objectMapper.sqf";
DT_fnc_CreateTrader = compile preprocessFileLineNumbers "\z\addons\dayz_server\DynamicTraders\createTrader.sqf";


_trader_config = [
[1, "hero.sqf", "Hero Trader", "ColorBlue"],
[1, "bandit.sqf", "Bandit Trader", "ColorRed"],
[2, "general.sqf", "Торговец снаряжением / стройматериалами", "ColorGreen"],
[2, "helicopters.sqf", "Black Trader", "ColorYellow"],
[3, "medical.sqf", "Medical Trader", "ColorGreen"],
[2, "vehicles.sqf", "Vehicle Trader", "ColorYellow"],
[3, "weapons.sqf", "Weapons Trader", "ColorYellow"],
[1, "wholesaler.sqf", "Бакалейщик", "ColorBlack"],
[3, "boat.sqf", "Торговец катерами", "ColorBlack"]
];
_btpos = [
[1000,1000],
[2000,2000]
];

_markers = [];
waitUntil { sleep 1; !isNil "sm_done" };
{
for [{_i=0}, {_i<(_x select 0)}, {_i=_i+1}] do {
private ["_position", "_found_position", "_j", "_near_trader"];
waitUntil { !isNil "BIS_fnc_findSafePos" };
_found_position = false;
_j = 0;
if ((_x select 1) == "bt.sqf") then {
_position = _btpos call BIS_fnc_selectRandom;
} else {
while {!_found_position} do {
_j = _j + 1;
if ((_x select 1) == "boat.sqf") then {
_position = [getMarkerPos 'center',0,DynamicVehicleArea,20,0,2000,1] call BIS_fnc_findSafePos;
} else {
if (!isNil "RoadList" and {(random 1) > 0.5}) then {
waitUntil{!isNil "BIS_fnc_selectRandom"};
_position = RoadList call BIS_fnc_selectRandom;
_position = _position modelToWorld [0,0,0];
waitUntil{!isNil "BIS_fnc_findSafePos"};
_position = [_position,5,40,20,0,2000,0] call BIS_fnc_findSafePos;
} else {
waitUntil{!isNil "BIS_fnc_findSafePos"};
_position = [getMarkerPos 'center',0,DynamicVehicleArea,20,0,2000,0] call BIS_fnc_findSafePos;
};
};

{
if (((_x select 0) distance _position) < 1000) exitWith {
_position = [];
};
true
} count _markers;
if ((count _position) == 2 or _j > 10) then {
_found_position = true;
};
};
};

if ((count _position) == 2) then {
diag_log format["Trader Caravans: Spawning %1 at %2 (%3)", _x select 1, _position, mapGridPosition _position];
_position execVM format["\z\addons\dayz_server\DynamicTraders\traders\%1", _x select 1];
_markers set [count _markers, [_position, _x select 2, _x select 3]];
};
};
true
} count _trader_config;


PV_TraderMarkers = _markers;
publicVariable "PV_TraderMarkers";

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


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



  • 0

Гайд по динамическим трейдерам на сайте видел? Там можно вроде бы подобное делать. Глянь короче.

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


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

Гайд по динамическим трейдерам на сайте видел? Там можно вроде бы подобное делать. Глянь короче.

этот скрипт как раз из этих трейдеров, места для торговцев ищет функция BIS_fnc_findSafePos.

я же хочу задать возможные точки появления для некоторых трейдеров, как это сделано с boats.sqf по умолчанию:

 

            if ((_x select 1) == "boat.sqf") then {
                _position = [getMarkerPos 'center',0,DynamicVehicleArea,20,0,2000,1] call BIS_fnc_findSafePos;
 

но сделать поиск не по функции findSafePos, а по чему-то навроде BIS_fnc_selectRandom (кусок скрипта суисайд):

 

    player playMove (["ActsPercMstpSnonWpstDnon_suicide1B","ActsPercMstpSnonWpstDnon_suicide2B"] call BIS_fnc_selectRandom);

 

главное то - чтоб выбирало из списка уже заданных точек.

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


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

вот что пытаюсь получить в результате (чтоб работало :))
весь скрипт:

 

 

 

/*
Epoch Dynamic Traders my maca134
http://www.epochservers.com
 
You will need to go into each file in the traders file and change the model/skin to the relevent trader for the map you are using. 
Look in server_traders.sqf in the mission pbo for more information.
 
*/
private ["_trader_config", "_markers"];
 
DT_fnc_ObjectsMapper = compile preprocessFileLineNumbers "\z\addons\dayz_server\DynamicTraders\objectMapper.sqf";
DT_fnc_CreateTrader = compile preprocessFileLineNumbers "\z\addons\dayz_server\DynamicTraders\createTrader.sqf";
 
_trader_config = [
    [1, "hero.sqf",         "Hero Trader",                     "ColorBlue"],
    [1, "bandit.sqf",         "Bandit Trader",                 "ColorRed"],
    [2, "general.sqf",         "Торговец снаряжением / стройматериалами",     "ColorGreen"],
    [1, "bt.sqf",             "Торговец черного рынка",                     "ColorBlack"],
    [3, "medical.sqf",         "Medical Trader",                 "ColorGreen"],
    [2, "vehicles.sqf",     "Vehicle Trader",                 "ColorYellow"],
    [3, "weapons.sqf",         "Weapons Trader",                 "ColorYellow"],
    [1, "wholesaler.sqf",     "Бакалейщик",                     "ColorBlack"],
    [1, "catera.sqf",         "Торговец катерами",                         "ColorBlack"],
    [1, "boat.sqf",         "Торговец лодками",                         "ColorBlack"]
]; 
 
_markers = [];
waitUntil { sleep 1; !isNil "sm_done" };
{
    for [{_i=0}, {_i<(_x select 0)}, {_i=_i+1}] do {
        private ["_position", "_found_position", "_j", "_near_trader", "_btpos"];
        waitUntil { !isNil "BIS_fnc_findSafePos","BIS_fnc_selectRandom" };
        _found_position = false;
        _j = 0;
        _btpos = ["1000,1000,0","2000,2000,0","3000,3000,0",];
        while {!_found_position} do {
            _j = _j + 1;
            if ((_x select 1) == "boat.sqf" or (_x select 1) == "catera.sqf") then {
                _position = [getMarkerPos 'center',0,DynamicVehicleArea,20,0,2000,1] call BIS_fnc_findSafePos;
            };
            if (_x select 1) == "bt.sqf" then {
                _position = _btpos select call BIS_fnc_selectRandom;
            } else {
                if (!isNil "RoadList" and {(random 1) > 0.5}) then {
                    waitUntil{!isNil "BIS_fnc_selectRandom"};
                    _position = RoadList call BIS_fnc_selectRandom;
                    _position = _position modelToWorld [0,0,0];
                    waitUntil{!isNil "BIS_fnc_findSafePos"};
                    _position = [_position,5,40,20,0,2000,0] call BIS_fnc_findSafePos;
                } else {
                    waitUntil{!isNil "BIS_fnc_findSafePos"};
                    _position = [getMarkerPos 'center',0,DynamicVehicleArea,20,0,2000,0] call BIS_fnc_findSafePos;
                };
            };
            
            {
                if (((_x select 0) distance _position) < 1000) exitWith {
                    _position = [];
                };
                true
            } count _markers;
            if ((count _position) == 2 or _j > 10) then {
                _found_position = true;
            };
        };
 
        if ((count _position) == 2) then { 
            diag_log format["Trader Caravans: Spawning %1 at %2 (%3)", _x select 1, _position, mapGridPosition _position];
            _position execVM format["\z\addons\dayz_server\DynamicTraders\traders\%1", _x select 1];
            _markers set [count _markers, [_position, _x select 2, _x select 3]];
        };
    };
    true
} count _trader_config;
 
PV_TraderMarkers = _markers;
publicVariable "PV_TraderMarkers";
 

 


 
 

 

 

 

мои вставки туда:
 

 

 

 


 

        private ["_position", "_found_position", "_j", "_near_trader", "_btpos"];        waitUntil { !isNil "BIS_fnc_findSafePos","BIS_fnc_selectRandom" };
        _found_position = false;
        _j = 0;
        _btpos = ["1000,1000,0","2000,2000,0","3000,3000,0",];
 

 

 
....

 

            if (_x select 1) == "bt.sqf" then {
                _position = _btpos select call BIS_fnc_selectRandom;
            } else {
 

 

 

Изменено пользователем malamuc (история изменений)

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


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

 

 
private ["_trader_config", "_markers"];


DT_fnc_ObjectsMapper = compile preprocessFileLineNumbers "\z\addons\dayz_server\DynamicTraders\objectMapper.sqf";
DT_fnc_CreateTrader = compile preprocessFileLineNumbers "\z\addons\dayz_server\DynamicTraders\createTrader.sqf";


_trader_config = [
    [1, "hero.sqf",         "Hero Trader",                     "ColorBlue"],
    [1, "bandit.sqf",         "Bandit Trader",                 "ColorRed"],
    [2, "general.sqf",         "Торговец снаряжением / стройматериалами",     "ColorGreen"],
    [2, "helicopters.sqf",     "Black Trader",                     "ColorYellow"],
    [3, "medical.sqf",         "Medical Trader",                 "ColorGreen"],
    [2, "vehicles.sqf",     "Vehicle Trader",                 "ColorYellow"],
    [3, "weapons.sqf",         "Weapons Trader",                 "ColorYellow"],
    [1, "wholesaler.sqf",     "Бакалейщик",                     "ColorBlack"],
    [3, "boat.sqf",         "Торговец катерами",                         "ColorBlack"]
]; 
_btpos = [
[1000,1000],
[2000,2000]
];

_markers = [];
waitUntil { sleep 1; !isNil "sm_done" };
{
    for [{_i=0}, {_i<(_x select 0)}, {_i=_i+1}] do {
        private ["_position", "_found_position", "_j", "_near_trader"];
        waitUntil { !isNil "BIS_fnc_findSafePos" };
        _found_position = false;
        _j = 0;
		 if ((_x select 1) == "bt.sqf") then { 
		 _position = _btpos call BIS_fnc_selectRandom;
		 } else {
        while {!_found_position} do {
            _j = _j + 1;
            if ((_x select 1) == "boat.sqf") then {
                _position = [getMarkerPos 'center',0,DynamicVehicleArea,20,0,2000,1] call BIS_fnc_findSafePos;
            } else {
                if (!isNil "RoadList" and {(random 1) > 0.5}) then {
                    waitUntil{!isNil "BIS_fnc_selectRandom"};
                    _position = RoadList call BIS_fnc_selectRandom;
                    _position = _position modelToWorld [0,0,0];
                    waitUntil{!isNil "BIS_fnc_findSafePos"};
                    _position = [_position,5,40,20,0,2000,0] call BIS_fnc_findSafePos;
                } else {
                    waitUntil{!isNil "BIS_fnc_findSafePos"};
                    _position = [getMarkerPos 'center',0,DynamicVehicleArea,20,0,2000,0] call BIS_fnc_findSafePos;
                };
            };
            
            {
                if (((_x select 0) distance _position) < 1000) exitWith {
                    _position = [];
                };
                true
            } count _markers;
            if ((count _position) == 2 or _j > 10) then {
                _found_position = true;
            };
        };
       };

        if ((count _position) == 2) then { 
            diag_log format["Trader Caravans: Spawning %1 at %2 (%3)", _x select 1, _position, mapGridPosition _position];
            _position execVM format["\z\addons\dayz_server\DynamicTraders\traders\%1", _x select 1];
            _markers set [count _markers, [_position, _x select 2, _x select 3]];
        };
    };
    true
} count _trader_config;


PV_TraderMarkers = _markers;
publicVariable "PV_TraderMarkers";

спасибо большое

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


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

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

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

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

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

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

Войти

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

Войти сейчас

  • Похожие публикации

    • Автор: ZizionarD
      Здравствуйте! Как отключить выбор пола в ESS v3? Спасибо
    • Автор: BorizzK
      Как и обещал выкладываю код и небольшой гайд
       
      Собственно речь о функции загрузки UID и координат из файла в массив m_playersSpawnPoints класса миссии, который в последствии можно исполдьзовать в других функциях в классе миссии
       
      Отступление
      массив m_playersSpawnPoints это массив типа map
      В данном случае <string,string> где и индекс и значение текстовые строки
      индексом выступает записанный UID,  а значением координаты, которые перед использованием преобразуются из текста в vector c помощью функции ToVector()
      Но об этом позже
       
      Раздел 1. Подключение
       
      КОд функции:
      //Players personal spawn points (for new connected players) ref map<string,string> m_playersSpawnPoints = new map<string,string>; void LoadPlayersSpawnPoints() { /* Файл playersSpawnPoints.lst кладем в папку указанную в параметре запуска сервера -profiles= тогда путь будет "$Profile:" или если кладем в файл в mpmissions\dayzOffline.chernarusplus\_CONF путь будет "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\_CONF\\" Путь меняется в переменной m_SettingsPath - "$Profile:" или "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\_CONF\\" Можете указать свой путь, но он должен быть либо в $Profiles: либо в $CurrentDir:\\mpmissions\\dayzOffline.chernarusplus Формат файла: Steam UID в привычном виде 17 цифр Координаты Комментарий (через пробелы) Помните любая ошибка может привести к крашу сервера Не желательны пустые строки! Пример: 76562298156537008 1300 0 5600 Дима 76561998116927209 3000 0 3000 Вася из Новороссийска Про массив: ref map<string, string> m_playersSpawnPoints = new map<string, string>; m_playersSpawnPoints тут массив типа map, где каждый элемент массива состоит из 2х ячеек. 1. Индекс - тип string 2. Значение - тип string Пример работы с массивом типа map Запись в массив m_playersSpawnPoints.Insert("76562298156537008", "1300 0 5600"); //записываем первый элемент - индекс dayz, значение 10 m_playersSpawnPoints.Insert("76561998116927209", "3000 0 3000"); //записываем второй элемент - индекс dayzf, значение 17 Чтение из массива: Получаем значение 0го элемента string m = m_playersSpawnPoints.GetElement(0); // = "1300 0 5600" Получаем индекс 0го элемента string name = m_playersSpawnPoints.GetKey(0); / /= "76562298156537008" Получаем значение по индексу (в данном случае нас интерисует именно ЭТО) string n = m_playersSpawnPoints.Get("76561998116927209"); // = "3000 0 3000" //затем n переводим в вектор Usage in CreateCharacter function for change default spawn position: string PlayerUID = identity.GetPlainId(); if (PlayerUID) { if (m_playersSpawnPoints.Contains(PlayerUID) { pos = m_playersSpawnPoints.Get(PlayerUID).ToVector(); } } */ string FileName = "playersSpawnPoints.lst"; string m_SettingsPath = "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\_CONF\\"; //Folder with config files - .ini or .lst // Or "$Profiles:\\" FileHandle file; string file_line; array<string> read_line; int linecount = 0; //Comments check bool skipline = false; bool skipblock = false; //Comments check file = OpenFile(m_SettingsPath + FileName, FileMode.READ); if (file != 0) { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Read File: " + m_SettingsPath + FileName + " :::"); while (FGets(file, file_line) >= 0) { linecount++; //Comments check and skip if (file_line.IndexOfFrom(0,"//") == 0 || file_line.IndexOfFrom(0,"#") == 0 || file_line.IndexOfFrom(0," ") == 0 || file_line.Length() <= 0) { skipline = true; } else { skipline = false; } if (file_line.IndexOfFrom(0,"/*") == 0) { skipblock = true; } else if (file_line.IndexOfFrom(0,"*/") == 0) { skipblock = false; skipline = true; } //Comments check if (!skipline && !skipblock) { read_line = new array<string>; file_line.Split(" ",read_line); if (read_line.Count() >= 4) { if (read_line.Get(0).Length() == 17) { if (read_line.Get(1).ToFloat() > 0 && read_line.Get(3).ToFloat() > 0) { if (!m_playersSpawnPoints.Contains(read_line.Get(0))) { m_playersSpawnPoints.Insert(read_line.Get(0), read_line.Get(1) + " " + read_line.Get(2) + " " + read_line.Get(3)); // UID, Position Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Read Line c" + linecount + " Add UID " + read_line.Get(0) + " spawnpoint: " + read_line.Get(1) + " " + read_line.Get(2) + " " + read_line.Get(3) + " to m_playersSpawnPoints"); } else { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Read Line c" + linecount + " UID " + read_line.Get(0) + " duplicated, check file!"); } } else { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Read Line c" + linecount + " Position error: '" + read_line.Get(1) + " " + read_line.Get(2) + " " + read_line.Get(3) + "' :::"); } } else { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Read Line c" + linecount + " UID error: " + file_line + " :::"); } } else { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Read Line c" + linecount + " have errors: " + file_line + " :::"); } } } CloseFile(file); if (m_playersSpawnPoints.Count() > 0) { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Players personal spawn points count: " + m_playersSpawnPoints.Count() + " :::"); } else { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Players personal spawn points is not loaded! :::"); } } else { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Error open file: " + m_SettingsPath + FileName + " :::"); } } Комментарии, а так же диагностические принты в лог не убираю сознательно
       
      ПОдключение и использование.
       
      Функцию размещаем в теле класса миссии в init.c или если она вынесена в другой файл (и файл подключени через #include) в том самом файле в теле класса миссии
       
      Вот как-то так:
       
      class CustomMission : MissionServer { //Тут разные функции и определение переменных класса... //Вот тут переопределенный штатно OnInit override void OnInit () { //тут его код ) //Тут определяем наш массив и функцию //Players personal spawn points (for new connected players) ref map<string,string> m_playersSpawnPoints = new map<string,string>; void LoadPlayersSpawnPoints() { //тут ее код } //Тут разные функции... }  
      Ну Вы поняли...
       
      Далее нам надо при запуске и инициализации сервера эту функцию выполнить
      Но прежде надо создать файл по нужному пути в котором будут UID'ы и координаты
      В данной редакции используется путь "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\_CONF\\" и имя файла "playersSpawnPoints.lst"
      те в папке mpmissions\dayzOffline.chernarusplus нужно создать папку _CONF и поместить в нее этот файл
      Но вы можете это переделать как Вам больше нравится
       
      Формат файла:
       
      6561198156925007 2698.36 0 5989.59 USER
      6561198156924007 2698.36 0 5989.59 ВАСЯ
       
      6561198156923007 2698.36 0 5989.59 ПЕТЯ
      //Тут комментарий
      /*
      6561193356923001 3698.36 30 5189.59 ПЕТЯ
      */
       
      //Тут комментарий
      #Тут комментарий
       
      Первое поле - позиция - Это Steam UID (17 цифирь)
      2,3,4 поля позиции числа это координаты X Z Y (Z = высота) - если 0 система поставит перса на землю или ближайшую твердую поверхность под ним
      все что дальше игнорится
       
      Можно каментить строки с помощью // , #
      Можно каментить блоки
      /*
      */
       
      Если первый символ в строке пробел, все остальное то же игнорится
      Пустые строки то же игнорятся
       
      Если в строке с UID и координатами ошибка об этом напишет в лог с указанием номера строки
      Если UID дублируется об этом то же напишет в лог
       
      Ок
      Файл создали
       
      Теперь добавим вызов этой функции в тело функции OnInit в классе миссии (про нее речь шла Выше)
      Функция OnInit ВСЕГДА выполняется при запуске сервера
      Внутрь мы добавим вызов LoadPlayersSpawnPoints()
      В итоге при запуске сервера LoadPlayersSpawnPoints() выполнется и запишет в массив m_playersSpawnPoints UID'ы и координат
       
      Добавляем как-то так:
       
      override void OnInit() { //Тут может быть различный код //Тут вызов нашей функции //Load players personal spawn poins LoadPlayersSpawnPoints(); // => m_playersSpawnPoints // "UID", "Position" //Тут может быть различный код }  
      Запустили  сервер и увидели в логе что файл прочитался и все ок
      .... LoadPlayersSpawnPoints() ::: Players personal spawn points count: итд итп
      Или ошибки
      Если ошибки - читаем все еще раз и/или задаем вопросы в теме (НЕ В ЛИЧКЕ!!!) показывая что куда и как Вы прописали
       
      Отлично
      Тормозим в сервер
       
      Продолжение следует минут через 15
       
       
       
       
    • Автор: PJIIOxa
      Подскажите как создать группировки с помощью скрипта + привязать к ним определенный сет экипировки + собственные точки респа?
    • Автор: almalk454
      В общем тыкнул в init.sqf такого рода код: 
      diag_log( format[" INIT CONFIG: isServer: %1 isDedicated: %2 hasInterface: %3 is3DENMultiplayer: %4 playerName: %5 sidePlayer: %6 newSide: %7 ", (isServer), (isDedicated), (hasInterface), (is3DENMultiplayer), (name player), (side player), (getNumber (configFile >> "CfgVehicles" >> (typeOf player) >> "side"))] ); При первичном выборе роли все норм:
      Если релогнуться в лобби выбрать другую роль и зайти снова, то в логе уже следующее:
      Уже пол недели сижу с этой ошибкой, может знает кто как ее решить...
    • Автор: PAnovich
      В общем, делал я скрипт для гонок и столкнулся со следующей проблемой: 
      Вот отрезок кода:
      _group = group player;
      _group addWaypoint [блаблабла координаты]
      waypoint setWaypointStatements ["true", "start_race = 0; systemChat format ['%1. Время пошло', 'Старт']"];
      При присвоении start_race = 0 запускается дебаг который считает время показывает точку и тд. И вот получается какая интересная вещь, когда вейпоинт проходит какой либо игрок start_race = 0 становится у всех игроков, хотя вейпоинты у всех игроков разные. Т.е. Один игрок уже прошел старт, а второй еще нет, но у второго появился дебаг когда прошел первый. И хрен пойми че делать, я заколебался уже. Получается, что start_race делается каким то образом глобальной публичной переменной. Как сделать чтобы она не была таковой?)
  • Наш выбор

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

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

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