山野领主 发表于 2025-4-13 16:46:48

多功能手雷插件txt文本显示问题求助

这是一个多功能手雷插件,右键可以切换手雷模式(正常,感应,碰炸,激光,速度感应,遥控),已经将txt文本放进了addons\amxmodx\data\lang,进入游戏右键切换不显示文本,只显示%s,求助大佬帮忙分析一下问题

BliaNe 发表于 2025-4-18 15:08:48

插件呢?

n1anqingyouwei 发表于 3 天前


#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN "Multi-Grenade"
#define VERSION "1.0"
#define AUTHOR "n1anqing"

enum {
    MODE_NORMAL,    // 普通模式
    MODE_PROXIMITY, // 感应模式
    MODE_IMPACT,    // 碰炸模式
    MODE_LASER,   // 激光模式
    MODE_SPEED,   // 速度感应
    MODE_REMOTE   // 遥控模式
}

new g_iGrenadeMode
new g_iGrenadeEnt
new bool:g_bGrenadeThrown

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
   
    register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
    register_event("CurWeapon", "event_weapon_change", "be", "1=1")
   
    RegisterHam(Ham_Think, "grenade", "fw_ThinkGrenade")
    RegisterHam(Ham_Item_Deploy, "weapon_hegrenade", "fw_GrenadeDeploy", 1)
   
    register_forward(FM_CmdStart, "fw_CmdStart")
}

public client_putinserver(id) {
    g_iGrenadeMode = MODE_NORMAL
    g_bGrenadeThrown = false
}

public event_round_start() {
    for(new i = 1; i <= 32; i++) {
      g_iGrenadeMode = MODE_NORMAL
      g_bGrenadeThrown = false
    }
}

public event_weapon_change(id) {
    if(read_data(2) == CSW_HEGRENADE) {
      show_mode_hud(id)
    }
}

public fw_GrenadeDeploy(ent) {
    new id = get_pdata_cbase(ent, 41, 4)
    if(pev_valid(id) && is_user_alive(id)) {
      show_mode_hud(id)
    }
}

public fw_CmdStart(id, uc) {
    if(!is_user_alive(id) || get_user_weapon(id) != CSW_HEGRENADE)
      return FMRES_IGNORED
      
    static buttons
    buttons = get_uc(uc, UC_Buttons)
   
    if(buttons & IN_ATTACK2 && !(pev(id, pev_oldbuttons) & IN_ATTACK2)) {
      g_iGrenadeMode = (g_iGrenadeMode + 1) % 6
      show_mode_hud(id)
    }
   
    return FMRES_IGNORED
}

public fw_ThinkGrenade(ent) {
    if(!pev_valid(ent))
      return HAM_IGNORED
      
    static classname
    pev(ent, pev_classname, classname, 31)
   
    if(!equal(classname, "grenade"))
      return HAM_IGNORED
      
    static owner
    owner = pev(ent, pev_owner)
   
    if(!(1 <= owner <= 32))
      return HAM_IGNORED
      
    switch(g_iGrenadeMode) {
      case MODE_PROXIMITY: proximity_mode(ent)
      case MODE_IMPACT: impact_mode(ent)
      case MODE_LASER: laser_mode(ent)
      case MODE_SPEED: speed_mode(ent)
      case MODE_REMOTE: remote_mode(ent)
    }
   
    return HAM_IGNORED
}

// 各模式具体实现函数(示例)
proximity_mode(ent) {
    // 感应模式:检测附近是否有敌人
}

impact_mode(ent) {
    // 碰炸模式:碰到物体立即爆炸
}

laser_mode(ent) {
    // 激光模式:检测激光束触发
}

speed_mode(ent) {
    // 速度感应:速度低于阈值爆炸
}

remote_mode(ent) {
    // 遥控模式:按E键引爆
}

show_mode_hud(id) {
    static mode_name[] = {
      "普通模式",
      "感应模式",
      "碰炸模式",
      "激光模式",
      "速度感应",
      "遥控模式"
    }
   
    set_hudmessage(0, 255, 0, -1.0, 0.8, 0, 6.0, 1.0)
    show_hudmessage(id, "当前手雷模式: %s", mode_name])
}
页: [1]
查看完整版本: 多功能手雷插件txt文本显示问题求助