Bladeren bron

update: 玩家出生装备, 队伍和个人兼容.

Dcr 2 maanden geleden
bovenliggende
commit
a501487e93
2 gewijzigde bestanden met toevoegingen van 54 en 24 verwijderingen
  1. 13 17
      Mod/RespawnEqument/Scripts/CustomRevivalSuit/config.c
  2. 41 7
      Mod/RespawnEqument/init.c

+ 13 - 17
Mod/RespawnEqument/Scripts/CustomRevivalSuit/config.c

@@ -2,7 +2,7 @@
  * @file config.c
  * @author 稻草人
  * @version 1.0
- * @date 2025-00-01
+ * @date 2025-02-12
  * @copyright Copyright (c) 2025
  * 
  * @brief This file contains the configuration for the custom revival suit feature.
@@ -52,28 +52,21 @@ class CustomRevivalSuitCfg
     ref PlayerRevivalEquipmentData GetPlayerRevivalEquipmentData( string steamid )
     {
         foreach ( ref PlayerRevivalEquipmentData playerData : PlayerRevivalEquipmentDataList )
-            if ( playerData.SteamId == steamid )
+        {
+            if ( !playerData ) continue;
+            ref TStringArray TeamMembers = playerData.TeamMembers;
+            if ( TeamMembers && TeamMembers.Find( steamid ) > -1 )
                 return playerData;
+        }
 
         return NULL;
-    }
-
-    void RemovePlayerRevivalEquipmentData( string steamid )
-    {
-        foreach ( ref PlayerRevivalEquipmentData playerData : PlayerRevivalEquipmentDataList )
-        {
-            if ( playerData.SteamId == steamid )
-            {
-                PlayerRevivalEquipmentDataList.RemoveItem( playerData );
-                SaveConfig()
-            }
-        }
-    }                
+    }              
 }
 
 class PlayerRevivalEquipmentData
 {
-    string SteamId;
+    // string SteamId;
+    ref TStringArray TeamMembers;
 
     ref TStringArray Equipments;
     ref TStringArray ItemList;
@@ -81,7 +74,10 @@ class PlayerRevivalEquipmentData
 
     void PlayerRevivalEquipmentData( string steamid )
     {
-        SteamId     = steamid;
+        // SteamId     = steamid;
+        TeamMembers = new TStringArray();
+        TeamMembers.Insert( steamid );
+
         Equipments  = { "WoolGloves_White", "BaseballCap_Black",
             "Jeans_Blue", "Wellies_Black", "TShirt_Black"
         };

+ 41 - 7
Mod/RespawnEqument/init.c

@@ -2,12 +2,10 @@
 
 void main()
 {
-    //INIT ECONOMY--------------------------------------
     Hive ce = CreateHive();
     if ( ce )
         ce.InitOffline();
 
-    //DATE RESET AFTER ECONOMY INIT-------------------------
     int year, month, day, hour, minute;
     int reset_month = 9, reset_day = 20;
     GetGame().GetWorld().GetDate(year, month, day, hour, minute);
@@ -34,6 +32,10 @@ void main()
 
 class CustomMission: MissionServer
 {
+    //------------------------------------------------------------------
+    // 初始化方法:在服务器启动时调用
+    // 功能:加载复活套装配置并打印加载状态
+    //------------------------------------------------------------------
     override void OnInit()
     {
         super.OnInit();
@@ -42,7 +44,15 @@ class CustomMission: MissionServer
         if ( g_CustomRevivalSuitCfg )
             Print( "[复活套装]: 已加载" );
     }
-
+    //------------------------------------------------------------------
+    // 创建角色方法:在玩家首次加入或重生时调用
+    // 参数:
+    //   identity - 玩家身份信息
+    //   pos - 出生位置
+    //   ctx - 上下文参数
+    //   characterName - 角色名称
+    // 返回:PlayerBase - 创建的角色对象
+    //------------------------------------------------------------------
     override PlayerBase CreateCharacter(PlayerIdentity identity, vector pos, ParamsReadContext ctx, string characterName)
     {
         Entity playerEnt;
@@ -53,7 +63,15 @@ class CustomMission: MissionServer
 
         return m_player;
     }
-
+    //------------------------------------------------------------------
+    // 初始装备设置方法:在玩家重生时调用
+    // 功能:根据玩家身份加载VIP装备,并设置默认装备, 如果玩家不是VIP,则使用
+    //      默认的系统装备, 注意如果你要添加非VIP玩家的装备, 
+    //      请在 DefaultPlayerEquipment 方法中添加.
+    // 参数:
+    //   player - 玩家对象
+    //   clothesChosen - 是否已选择服装
+    //------------------------------------------------------------------
     override void StartingEquipSetup( PlayerBase player, bool clothesChosen )
     {
         GetCustomRevivalSuitCfg();
@@ -66,7 +84,13 @@ class CustomMission: MissionServer
 
         DefaultPlayerEquipment( player, clothesChosen );
     }
-
+    //------------------------------------------------------------------
+    // 处理VIP装备方法:为VIP玩家设置自定义装备
+    // 参数:
+    //   player - 玩家对象
+    //   equ_data - VIP装备数据
+    // VIP玩家的出生装备处理方法, 这里根据josn配置的来生成, 不懂,请勿改动
+    //------------------------------------------------------------------
     void ProcessVIPEquipment( PlayerBase player, ref PlayerRevivalEquipmentData equ_data )
     {
         if ( !equ_data ) return;
@@ -99,7 +123,11 @@ class CustomMission: MissionServer
                 ItemBase.Cast( weapon.GetInventory().CreateInInventory( attachment ) );
         }
     }
-
+    //------------------------------------------------------------------
+    // 设置随机健康值方法:为物品设置随机的健康值
+    // 参数:
+    //   itemEnt - 物品实体
+    //------------------------------------------------------------------
     void SetRandomHealth(EntityAI itemEnt)
     {
         if (itemEnt)
@@ -108,7 +136,13 @@ class CustomMission: MissionServer
             itemEnt.SetHealth01( "", "", rndHlt );
         }
     }
-
+    //------------------------------------------------------------------
+    // 默认装备设置方法:为玩家设置默认的初始装备
+    // 参数:
+    //   player - 玩家对象
+    //   clothesChosen - 是否已选择服装
+    // 这里的代码是原版init.c中 StartingEquipSetup 方法中的内容, 只是换了个方法名字
+    //------------------------------------------------------------------
     void DefaultPlayerEquipment( PlayerBase player, bool clothesChosen )
     {
         EntityAI itemClothing;