config.c 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. /**
  2. * @file config.c
  3. * @author 稻草人
  4. * @version 1.0
  5. * @date 2025-02-12
  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. string profileDir = "$profile:DcrServerModCfg\\CustomRevivalSuitCfg";
  23. string profileName = "\\CustomRevivalSuitCfg.json";
  24. string profilePath = profileDir + profileName;
  25. string desc = "上面的变量不要修改, 由于1.27的更新,导致上述变量在外部.c文件中无法被引用";
  26. ref array< ref PlayerRevivalEquipmentData > PlayerRevivalEquipmentDataList;
  27. void loadConfig()
  28. {
  29. if ( !FileExist( profilePath ) )
  30. makeConfig();
  31. JsonFileLoader< ref CustomRevivalSuitCfg >.JsonLoadFile( profilePath, this );
  32. }
  33. void makeConfig()
  34. {
  35. PlayerRevivalEquipmentDataList = new ref array< ref PlayerRevivalEquipmentData >();
  36. ref PlayerRevivalEquipmentData playerData = new ref PlayerRevivalEquipmentData( "76561198422667486" );
  37. PlayerRevivalEquipmentDataList.Insert( playerData );
  38. MakeDirectory( "$profile:DcrServerModCfg/" );
  39. MakeDirectory( profileDir + "/" );
  40. SaveConfig();
  41. }
  42. void SaveConfig()
  43. JsonFileLoader< ref CustomRevivalSuitCfg >.JsonSaveFile( profilePath, this );
  44. ref PlayerRevivalEquipmentData GetPlayerRevivalEquipmentData( string steamid )
  45. {
  46. foreach ( ref PlayerRevivalEquipmentData playerData : PlayerRevivalEquipmentDataList )
  47. {
  48. if ( !playerData ) continue;
  49. ref TStringArray TeamMembers = playerData.TeamMembers;
  50. if ( TeamMembers && TeamMembers.Find( steamid ) > -1 )
  51. return playerData;
  52. }
  53. return NULL;
  54. }
  55. }
  56. class PlayerRevivalEquipmentData
  57. {
  58. // string SteamId;
  59. string TeamName;
  60. ref TStringArray TeamMembers; // 兼容个人和队伍,单人玩家 == 单人队伍
  61. ref TStringArray Equipments;
  62. ref TStringArray ItemList;
  63. ref WeaponCfg WeaponData;
  64. void PlayerRevivalEquipmentData( string steamid )
  65. {
  66. // SteamId = steamid;
  67. TeamName = "小队名字";
  68. TeamMembers = new TStringArray();
  69. TeamMembers.Insert( steamid );
  70. Equipments = { "WoolGloves_White", "BaseballCap_Black",
  71. "Jeans_Blue", "Wellies_Black", "TShirt_Black"
  72. };
  73. ItemList = { "Apple" };
  74. WeaponData = new ref WeaponCfg();
  75. }
  76. }
  77. class WeaponCfg
  78. {
  79. string WeaponName;
  80. string Desc;
  81. ref TStringArray WeaponComponents;
  82. void WeaponCfg()
  83. {
  84. WeaponName = "FAL";
  85. Desc = "武器配件中,一级配件(比如枪托,弹夹)放在前排,二级配件(比如电池)其次 以此类推"
  86. WeaponComponents = {
  87. "Fal_FoldingBttstck",
  88. "Mag_FAL_20Rnd"
  89. };
  90. }
  91. }