ручками, начиная думать о том что мы делаем. Подругому никак. По крайней мере в данной игре, если хочешь бесплатно научиться что-то делать сам.
Как говорится, первый совет бесплатно (хотя уже устал эти первые давать, вон пятая часть раздела форума в этих первых советах)
void DefaultSets(PlayerBase player) // Функция выдает сеты игрокам, не прописанным в конфигурации скрипта!!!
{
EntityAI itemCreated = NULL;
EntityAI itemCreated1 = NULL;
ItemBase itemCasted = NULL;
// ниже пример, если вам нужно задать свои точки спавна для всех игроков. Этот код можно также использовать и для каждого сета индивидуально!
// Код закомментирован, если это надо - раскомментируйте!
// начало кода точек спавна игрока
private array <vector> spawnpoints = new array <vector>;
// конец кода точек спавна игрока
private int random_set_number = Math.RandomIntInclusive(1,6); // генерируем рандом номер сета от 1 до 6 включительно (по значениям блоков case ниже)
switch( random_set_number ) //Раздаем лут (можно использовать значения от 1 и выше, только не 0 и не -1)
{
case 1: //Set with number 1 (Сет с номером 1)
{
spawnpoints = {"7500 0 7500",
"7500 0 7500","7500 0 7500",
"7500 0 7500"};
break;
}
case 2: //Set with number 2 (Сет с номером 2)
{
spawnpoints = {"7500 0 7500",
"7500 0 7500","7500 0 7500",
"7500 0 7500"};
break;
}
case 3: //Set with number 3 (Сет с номером 3)
{
spawnpoints = {"7500 0 7500",
"7500 0 7500","7500 0 7500",
"7500 0 7500"};
break;
}
case 4: //Set with number 4 (Сет с номером 4)
{
spawnpoints = {"7500 0 7500",
"7500 0 7500","7500 0 7500",
"7500 0 7500"};
break;
}
case 5: //Set with number 5 (Сет с номером 5)
{
spawnpoints = {"7500 0 7500",
"7500 0 7500","7500 0 7500",
"7500 0 7500"};
break;
}
case 6: //Set with number 6 (Сет с номером 6)
{
spawnpoints = {"7500 0 7500",
"7500 0 7500","7500 0 7500",
"7500 0 7500"};
break;
}
default: //Default starting spawn set (Сет поумолчанию для всех игроков, в случае если ни один из сетов выше не выпал.
{
//My_Custom_Spawn_Parameters.RemoveAllItems(player); // Чтобы удалить с персонажа уже имеющиеся стандартные стартовые шмотки раскомментировать строку
spawnpoints = {"7500 0 7500",
"7500 0 7500","7500 0 7500",
"7500 0 7500"};
break;
}
}
private vector selected_spawnpoint = spawnpoints.GetRandomElement();
player.SetPosition(selected_spawnpoint);
}
сделай так, пропиши сеты и у тебя все готово
написать хотя бы 1 игрока надо, дабы скрипт не отключился и работал. Потому как скрипт тупо не заточен изначально под идею сетов 'для всех', хоть и поддерживает такую реализацию. Как сделать? Ну прописать например админа или себя, либо несуществующий steam64id, у которого цифра первая 0 будет (в стиме у всех с 765 идет). Ну а дальше скрипт схавает.
У скрипта смысл прост. Скрипт читает конфиг заносит в память. При респавне игрока вызывает StartSetsPlayer с значением в use_set_id номера сета. Если он не задан или не определен будет 0 или -1, тобишь то что указано в (об этом кстати уже говорил на форуме, как помню)
соответственно идет блок switsch-case по номерам, номер какой не попал в этот блок - попадает в блок default, в котором вызывается функция
которую разумеется правим отдельно ниже под свой вкус и цевет, если оно нам нужно, вынесена для удобства.
Можно ее использовать, можно не использовать, и сет прямо сверху внести нужный. Добавлена такая конструкция по просьбам трудящихся.
Собственно поумолчанию ее вызов включен.
Ну а далее в функции DefaultSets идет примерно похожая конструкция, в которой
генерируется номер сета из тех значений что ты указываешь, ну и по тому же switch-case шаблону выдается один из вариантов, в зависимости от выпадения рандомом.
Блок с точками спавна там был как шаблон. Закомментированный. Как показала практика, если комманду
player.SetPosition(selected_spawnpoint);
поместить до выдачи сета - сет не будет виден у игрока, пока не перезайдет (как-то с синхронизацией связано видимо напрямую). Потому ее ставим снизу после выдачи сетов всех, как скинул выше.
Ну а как точки спавна задавать смотрите сами, можно сверху над switch-case задать один общий массив, можно к сету свой набор точек задать, крутите как вам нравится.
Ну а если вам скрипт не подходит - открою великую тайну - все что в sets.c идет можно буквально в инит внести ручками в функцию, что выдает стартовый лут (кроме комманды My_Custom_Spawn_Parameters.RemoveAllItems(player); - она в скрипте своя добавлена). как правильно - объяснять не буду, читайте темы и самообразовывайтесь, специально для вас написаны, чтобы хотя бы простецкий сет могли сами без вопросов собрать - это самое простое. Рекоммендую к изучению, кароче:
Ну а в качестве благодарности за помощь я всегда принимаю 'тугрики', реквизиты есть в описании любой из моих работ на торговой площадке.