diff --git a/Mod/RespawnEqument/Scripts/CustomRevivalSuit/config.c b/Mod/RespawnEqument/Scripts/CustomRevivalSuit/config.c index 1aa125f..68bcb69 100644 --- a/Mod/RespawnEqument/Scripts/CustomRevivalSuit/config.c +++ b/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" }; diff --git a/Mod/RespawnEqument/init.c b/Mod/RespawnEqument/init.c index 3e8e003..3be6ee4 100644 --- a/Mod/RespawnEqument/init.c +++ b/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;