Herramientas de usuario

Herramientas del sitio


spawnloadouts

SPAWN DE PERSONAJE CON ROPA ESPECIAL SEGUN EL JUGADOR

  1. En el archivo init.c de la misión se programa una clase de tipo MissionServer.
  2. La primera vez se autogenera una carpeta SpawnLoadout dentro de la carpeta de Profiles del servidor.
  3. En esa carpeta SpawnLoadout se autogeneran 2 archivos (Regular.txt y CommonItems.txt) más una subcarpeta Donators.
  4. El archivo Regular.txt contiene los items para los personajes comunes.
  5. El archivo CommonItems.txt contiene los items comunes para todos los personajes.
  6. 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

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki