搜索
查看: 550|回复: 2

[AMXX 带源码] 多功能手雷插件txt文本显示问题求助

[复制链接]
发表于 2025-4-13 16:46:48 | 显示全部楼层 |阅读模式 来自 中国–北京–北京
这是一个多功能手雷插件,右键可以切换手雷模式(正常,感应,碰炸,激光,速度感应,遥控),已经将txt文本放进了addons\amxmodx\data\lang,进入游戏右键切换不显示文本,只显示%s,求助大佬帮忙分析一下问题
发表于 2025-4-18 15:08:48 | 显示全部楼层 来自 中国–上海–上海
插件呢?
回复

使用道具 举报

发表于 昨天 15:46 | 显示全部楼层 来自 中国–河南–开封

#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[33]
new g_iGrenadeEnt[33]
new bool:g_bGrenadeThrown[33]

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[id] = MODE_NORMAL
    g_bGrenadeThrown[id] = false
}

public event_round_start() {
    for(new i = 1; i <= 32; i++) {
        g_iGrenadeMode[i] = MODE_NORMAL
        g_bGrenadeThrown[i] = 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[id] = (g_iGrenadeMode[id] + 1) % 6
        show_mode_hud(id)
    }
   
    return FMRES_IGNORED
}

public fw_ThinkGrenade(ent) {
    if(!pev_valid(ent))
        return HAM_IGNORED
        
    static classname[32]
    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[owner]) {
        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[6][] = {
        "普通模式",
        "感应模式",
        "碰炸模式",
        "激光模式",
        "速度感应",
        "遥控模式"
    }
   
    set_hudmessage(0, 255, 0, -1.0, 0.8, 0, 6.0, 1.0)
    show_hudmessage(id, "当前手雷模式: %s", mode_name[g_iGrenadeMode[id]])
}
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

快速回复 返回顶部 返回列表