spawnloadouts
SPAWN DE PERSONAJE CON ROPA ESPECIAL SEGUN EL JUGADOR
- En el archivo init.c de la misión se programa una clase de tipo MissionServer.
- La primera vez se autogenera una carpeta SpawnLoadout dentro de la carpeta de Profiles del servidor.
- En esa carpeta SpawnLoadout se autogeneran 2 archivos (Regular.txt y CommonItems.txt) más una subcarpeta Donators.
- El archivo Regular.txt contiene los items para los personajes comunes.
- El archivo CommonItems.txt contiene los items comunes para todos los personajes.
- Los archivos de la carpeta Donators se identifican con el número SteamId de cada jugador.
Ejemplo de la estructura de carpetas y archivos
G:\SERVER_PATAGONIA\PROFILES\SPAWNLOADOUT
│ CommonItems.txt
│ Regular.txt
│
└───Donators
76561198031630167.txt
76561198182095246.txt
Ejemplo de archivo Regular.txt
// REGULAR ITEMS GUXLARLAND_PATAGONIA_Jacket GUXLARLAND_PATAGONIA_Pants HikingBoots_Black WoolGloves_Green RadarCap_Green
Ejemplo de archivo CommonItems.txt
// COMMON ITEMS BandageDressing 4 KitchenKnife Matchbox Chemlight_White WaterBottle TunaCan TunaCan MKII Mag_MKII_10Rnd
Ejemplo de archivo para el jugador especial 76561198182095246.txt
// 76561198182095246 guxlar admin user SheriffJacket SheriffPants HikingBoots_Black WoolGloves_Black SheriffHat ChestHolster Mag_Glock_15Rnd Glock19 AviatorGlasses StunBaton
EJEMPLO DE ARCHIVO DE MISION init.c
void main()
{
Weather weather = g_Game.GetWeather();
weather.MissionWeather(false);
Hive ce = CreateHive();
if ( ce )
ce.InitOffline();
}
// SPAWN LOADOUT
class CustomMission: MissionServer
{
string m_SpawnLoadoutDirectory = "$profile:SpawnLoadout/";
string m_DonatorDirectory = m_SpawnLoadoutDirectory + "Donators/";
string m_RegularLoadout = m_SpawnLoadoutDirectory + "Regular.txt";
string m_CommonItems = m_SpawnLoadoutDirectory + "CommonItems.txt";regular and donator
void CustomMission()
{
FileHandle templateFile;
PrintString("[CustomMission] CustomMission");
PrintString("[CustomMission] SpawnLoadoutDirectory: " + m_SpawnLoadoutDirectory);
PrintString("[CustomMission] DonatorDirectory: " + m_DonatorDirectory);
PrintString("[CustomMission] RegularLoadout: " + m_RegularLoadout);
PrintString("[CustomMission] CommonItems: " + m_CommonItems);
if (!FileExist(m_SpawnLoadoutDirectory))
{
PrintString("[CustomMission] Spawn loadout folder does not exist: " + m_SpawnLoadoutDirectory);
PrintString("[CustomMission] Making directory: " + m_SpawnLoadoutDirectory);
MakeDirectory(m_SpawnLoadoutDirectory);
PrintString("[CustomMission] Directory made: " + m_SpawnLoadoutDirectory);
// create default CommonItems.txt
PrintString("[CustomMission] Creating file: " + m_CommonItems);
templateFile = OpenFile(m_CommonItems, FileMode.WRITE);
FPrintln(templateFile, "// COMMON ITEMS\nBandageDressing 4\nHuntingKnife\nMatchbox\nHatchet\nFlashlight\nBattery9V\nSodaCan_Cola\nBakedBeansCan");
CloseFile(templateFile);
PrintString("[CustomMission] File created: " + m_CommonItems);
// create default Regular.txt
PrintString("[CustomMission] Creating file: " + m_RegularLoadout);
templateFile = OpenFile(m_RegularLoadout, FileMode.WRITE);
FPrintln(templateFile, "// REGULAR ITEMS\nBomberJacket_Grey\nJeans_Grey\nTaloonBag_Blue\nAthleticShoes_Grey");
CloseFile(templateFile);
PrintString("[CustomMission] File created: " + m_RegularLoadout);
}
if (!FileExist(m_DonatorDirectory))
{
PrintString("[CustomMission] Donator folder does not exist: " + m_DonatorDirectory);
string template = GetDonatorFile("STEAMIDHERE.txt");
PrintString("[CustomMission] Making directory: " + m_DonatorDirectory);
MakeDirectory(m_DonatorDirectory);
PrintString("[CustomMission] Directory made: " + m_DonatorDirectory);
// create template donator file
PrintString("[CustomMission] Creating template donator file... ");
templateFile = OpenFile(template, FileMode.WRITE);
FPrintln(templateFile, "// STEAMIDNUMBER\nBomberJacket_Black\nJeans_Black\nTaloonBag_Black\nAthleticShoes_Black");
CloseFile(templateFile);
PrintString("[CustomMission] Template donator file created");
}
}
override void StartingEquipSetup(PlayerBase player, bool clothesChosen)
{
PrintString("[StartingEquipSetup] StartingEquipSetup... ");
player.RemoveAllItems(); // clear all default spawning items
FileHandle donatorFile;
string line;
TStringArray contents = new TStringArray();
string file = GetDonatorFile(player.GetIdentity().GetPlainId());
if (FileExist(file))
{
PrintString("[StartingEquipSetup] Donator file exists: " + file);
SpawnLoadout(player, ReadFileLines(file)); // spawn donator loadout
return;
}
PrintString("[StartingEquipSetup] Inexistent donator file: " + file);
SpawnLoadout(player, ReadFileLines(m_RegularLoadout)); // spawn regular player loadout
}
private void SpawnLoadout(PlayerBase player, ref TStringArray loadout)
{
PrintString("[SpawnLoadout] SpawnLoadout.");
FileHandle loadoutFile;
string line;
// creates clothes loadout
PrintString("[SpawnLoadout] Creating clothes loadout");
foreach (string clothes : loadout)
{
PrintString("[SpawnLoadout] Clothes: " + clothes);
player.GetInventory().CreateInInventory(clothes);
}
// creates common items
PrintString("[SpawnLoadout] Reading the common items: " + m_CommonItems);
TStringArray items = ReadFileLines(m_CommonItems);
foreach (string item : items)
{
PrintString("[SpawnLoadout] Item: " + item);
if (!item.Contains("//")) // check for commented lines
{
player.GetInventory().CreateInInventory(item);
}
}
}
private void CreateQuantityItem(PlayerBase player, string item)
{
PrintString("[CreateQuantityItem] CreateQuantityItem: " + item);
TStringArray quantity = new TStringArray();
item.Split(" ", quantity);
ItemBase quantityItem = player.GetInventory().CreateInInventory(quantity[0]);
quantityItem.SetQuantity(quantity[1].ToFloat());
}
private string GetDonatorFile(string id)
{
PrintString("[GetDonatorFile] GetDonatorFile: " + m_DonatorDirectory + id + ".txt");
return string.Format("%1%2.txt", m_DonatorDirectory, id);
}
private TStringArray ReadFileLines(string path)
{
PrintString("[ReadFileLines] ReadFileLines: " + path);
FileHandle file;
string line;
TStringArray contents = new TStringArray();
file = OpenFile(path, FileMode.READ);
while (FGets(file, line) > 0)
{
line.Trim();
PrintString("[ReadFileLines] Line: " + line);
if (line != string.Empty)
{
contents.Insert(line);
line = string.Empty;
}
}
CloseFile(file);
return contents;
}
};
Mission CreateCustomMission(string path)
{
return new CustomMission();
}
spawnloadouts.txt · Última modificación: por adminwiki
