config.c 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. /**
  2. * @file config.c
  3. * @author 稻草人
  4. * @version 1.0
  5. * @date 2025-00-01
  6. * @copyright Copyright (c) 2025
  7. *
  8. * @brief This file contains the configuration for the custom revival suit feature.
  9. */
  10. static ref CustomRevivalSuitCfg g_CustomRevivalSuitCfg;
  11. static ref CustomRevivalSuitCfg GetCustomRevivalSuitCfg()
  12. {
  13. if ( !g_CustomRevivalSuitCfg )
  14. {
  15. g_CustomRevivalSuitCfg = new ref CustomRevivalSuitCfg();
  16. g_CustomRevivalSuitCfg.loadConfig();
  17. }
  18. return g_CustomRevivalSuitCfg;
  19. }
  20. class CustomRevivalSuitCfg
  21. {
  22. protected static string profileDir = "$profile:DcrServerModCfg\\CustomRevivalSuitCfg";
  23. protected static string profileName = "\\CustomRevivalSuitCfg.json";
  24. protected static string profilePath = profileDir + profileName;
  25. ref array< ref PlayerRevivalEquipmentData > PlayerRevivalEquipmentDataList;
  26. void loadConfig()
  27. {
  28. if ( !FileExist( profilePath ) )
  29. makeConfig();
  30. JsonFileLoader< ref CustomRevivalSuitCfg >.JsonLoadFile( profilePath, this );
  31. }
  32. void makeConfig()
  33. {
  34. PlayerRevivalEquipmentDataList = new ref array< ref PlayerRevivalEquipmentData >();
  35. ref PlayerRevivalEquipmentData playerData = new ref PlayerRevivalEquipmentData( "76561198422667486" );
  36. PlayerRevivalEquipmentDataList.Insert( playerData );
  37. MakeDirectory( "$profile:DcrServerModCfg/" );
  38. MakeDirectory( profileDir + "/" );
  39. SaveConfig();
  40. }
  41. void SaveConfig()
  42. JsonFileLoader< ref CustomRevivalSuitCfg >.JsonSaveFile( profilePath, this );
  43. ref PlayerRevivalEquipmentData GetPlayerRevivalEquipmentData( string steamid )
  44. {
  45. foreach ( ref PlayerRevivalEquipmentData playerData : PlayerRevivalEquipmentDataList )
  46. if ( playerData.SteamId == steamid )
  47. return playerData;
  48. return NULL;
  49. }
  50. void RemovePlayerRevivalEquipmentData( string steamid )
  51. {
  52. foreach ( ref PlayerRevivalEquipmentData playerData : PlayerRevivalEquipmentDataList )
  53. {
  54. if ( playerData.SteamId == steamid )
  55. {
  56. PlayerRevivalEquipmentDataList.RemoveItem( playerData );
  57. SaveConfig()
  58. }
  59. }
  60. }
  61. }
  62. class PlayerRevivalEquipmentData
  63. {
  64. string SteamId;
  65. ref TStringArray Equipments;
  66. ref TStringArray ItemList;
  67. ref WeaponCfg WeaponData;
  68. void PlayerRevivalEquipmentData( string steamid )
  69. {
  70. SteamId = steamid;
  71. Equipments = { "WoolGloves_White", "BaseballCap_Black",
  72. "Jeans_Blue", "Wellies_Black", "TShirt_Black"
  73. };
  74. ItemList = { "Apple" };
  75. WeaponData = new ref WeaponCfg();
  76. }
  77. }
  78. class WeaponCfg
  79. {
  80. string WeaponName;
  81. string Desc;
  82. ref TStringArray WeaponComponents;
  83. void WeaponCfg()
  84. {
  85. WeaponName = "FAL";
  86. Desc = "武器配件中,一级配件(比如枪托,弹夹)放在前排,二级配件(比如电池)其次 以此类推"
  87. WeaponComponents = {
  88. "Fal_FoldingBttstck",
  89. "Mag_FAL_20Rnd"
  90. };
  91. }
  92. }