ttbs123 发表于 2009-4-28 20:47:20

只没收单一武器以及ShowSyncHudMsg函数

本帖最后由 ttbs123 于 2009-4-29 14:03 编辑

问题1:例如允许玩家购买盾牌,但回合结束时,要没收掉玩家的盾牌,不没收玩家所有武器,只没收盾牌的代码要怎么写?
问题2:ShowSyncHudMsg函数有详细使用方法吗?
如:
static name
get_user_name(newzombie, name, 31)
ShowSyncHudMsg(0, g_sync_msgdisplay, "%L", LANG_PLAYER, "INFECTED_HUD", name)
后面的变量name好像是替换到lang文件的%s里面,那么LANG_PLAYER替换到哪里?
哪位大哥能详细说说ShowSyncHudMsg的参数说明吗?

only33 发表于 2009-11-2 13:08:04

LANG_PLAYER 是个执行函数,不是显示的东西。
LANG_PLAYER代表使用客户端的语言来替换DATA/LANG/XX.TXT里的内容,LANG_SERVER代表统一使用服务器指定的语言。

zwfgdlc 发表于 2009-11-2 15:27:13

http://forums.alliedmods.net/showpost.php?p=488852&postcount=1

LittleKu 发表于 2009-11-2 15:46:44

1. 个人建议LZ可以先用
format()这个函数先!
然后再用ShowSyncHudMsg
2.关于LANG_PLAYER这个东西,说一下我个人理解!
就拿楼主的代码为例!有两种:static name
get_user_name(newzombie, name, 31)
ShowSyncHudMsg(0, g_sync_msgdisplay, "%L", LANG_PLAYER, "INFECTED_HUD", name)第二种:
static name
get_user_name(newzombie, name, 31)
ShowSyncHudMsg(newzombie, g_sync_msgdisplay, "%L", newzombie, "INFECTED_HUD", name)
大概应该就是这样了!!

LittleKu 发表于 2009-11-2 20:15:58

楼主,我帮你试写了一个,但是好像盾牌是不能让它消失的!
我测试过!其它武器都可以!但是就是盾牌不可以!!我发我的代码给你看看!#include <amxmodx>
#include <amxmisc>
#include <fakemeta_util>
#include <fakemeta>

#define PLUGIN_NAME        "Remove Shield"
#define PLUGIN_VERSION        "1.0"
#define PLUGIN_AUTHOR        "Unknow"

new g_max_players

public plugin_init()
{
        register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
       
        register_event("SendAudio", "event_EndRound", "a", "2&%!MRAD_terwin","2&%!MRAD_ctwin","2&%!MRAD_rounddraw")
        g_max_players = get_maxplayers()
}

public event_EndRound()
{
        new id
        new param
        for (id = 1; id < g_max_players; id++)
        {
                new iEnt = fm_find_ent_by_owner(-1, "weapon_shield", id)
                engclient_cmd(id, "drop", "weapon_shield")
                new iBox = pev(iEnt, pev_owner)
                if (!iBox || iBox == id)
                        return PLUGIN_HANDLED
                param = iBox
                set_task(1.0, "drop_weapon", 0, param, 1)
        }
        return PLUGIN_HANDLED
}

public drop_weapon(param[])
{
        new iBox = param
        engfunc(EngFunc_RemoveEntity, iBox)
}

LittleKu 发表于 2009-11-2 20:21:31

可能是我能力有限,看来还是等R版来吧!!

zwfgdlc 发表于 2009-11-2 23:30:53

应该可行,没试过。
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>

#define PLUGIN_NAME        "New Plug-In"
#define PLUGIN_VERSION        "1.0"
#define PLUGIN_AUTHOR        "zwfgdlc"

public plugin_init()
{
        register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
        register_logevent("Round_End",2,"1=Round_End");
}

public Round_End()
{
        new Num,Players,id;
        get_players(Players,Num,"ae","CT");
       
        if(!Num) return;
       
        for(new i=0;i<Num;i++)
        {
                id=Players;
                if(cs_get_user_shield(id))
                remove_player_shield(id);
        }
}

stock remove_player_shield(id)
{
        new ent=-1;
        engclient_cmd(id,"drop","weapon_shield");
        while((ent=engfunc(EngFunc_FindEntityByString,ent,"model","models/w_shield.mdl")))
        {
                dllfunc(DLLFunc_Think, ent);
        }
}

LittleKu 发表于 2009-11-5 14:37:39

get_players(Players,Num,"ae","CT");

你用这个,你不知道盾牌TE也可以捡的吗!!

zwfgdlc 发表于 2009-11-5 15:51:39


get_players(Players,Num,"a");
改这样就行了.
说实在话,盾牌这东西,从一开始都是被禁用的,不怎么了解。何况
我并不玩CS,只是研究下插件而已.

心静如水 发表于 2009-11-5 21:56:02

本帖最后由 心静如水 于 2009-11-5 22:05 编辑


get_players(Players,Num,"a");
改这样就行了.
说实在话,盾牌这东西,从一开始都是被禁用的,不怎么了解。何况
我并不玩CS,只是研究下插件而已.
zwfgdlc 发表于 2009-11-5 15:51 http://www.dt-club.net/forum/images/common/back.gif
记得使用没收武器的涵数就有人会买得盾牌.........但不知道是什么命令.........学得一点......

局末活的全部处死也方便吧.............
页: [1] 2
查看完整版本: 只没收单一武器以及ShowSyncHudMsg函数