设为首页收藏本站新闻投稿

MOD中国同盟社

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 573|回复: 4

[求助] 丢弃武器的代码放在这里会导致游戏崩溃,如何解决 [复制链接]

Rank: 3Rank: 3

帖子
127
精华
0
声望
453 点
金币
121 Mold
被赞许
3 次
注册时间
2009-3-22
发表于 2011-2-13 15:36:49 |显示全部楼层
本帖最后由 545594291 于 2011-2-13 15:38 编辑

//丢弃武器的代码放在这里会导致游戏崩溃,如何解决
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <cstrike>
#include <hamsandwich>
#include <fun>

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

const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|
        (1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|
        (1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
       
const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)

public plugin_init()
{
        register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
        register_event("DeathMsg","event_death","a")
        register_logevent("round_start", 2, "0=World triggered", "1=Round_Start")
}

public round_start()
{
                new maxplayers = get_maxplayers()
                for (new id=1; id<=maxplayers; id++)
                {
                                Disarm_Weapon(id)
                                               give_item(id,"weapon_glock18")
                                         give_item(id,"ammo_9mm")
                                  give_item(id,"ammo_9mm")
                                  give_item(id,"ammo_9mm")
                                  give_item(id,"ammo_9mm")
                                return PLUGIN_CONTINUE
                 }
        return PLUGIN_CONTINUE
}

public event_death()
{
        new iKiller = read_data(1)
        new iVictim = read_data(2)
        new wpn[32]
        read_data(4,wpn,31)

        if ( !iKiller || iKiller==iVictim || get_user_team(iKiller)==get_user_team(iVictim) )
        {
                return PLUGIN_CONTINUE
        }

        if(iKiller)
        {
                if ((iKiller != iVictim)  && (get_user_team(iKiller) != get_user_team(iVictim)))
                {                
                                drop_weapons(iKiller, 2)                                                                 give_item(iKiller,"weapon_usp")
                                         give_item(iKiller,"ammo_45acp")
                                  give_item(iKiller,"ammo_45acp")
                                  give_item(iKiller,"ammo_45acp")
                                  give_item(iKiller,"ammo_45acp")
                                return PLUGIN_CONTINUE
                }
        }
        return PLUGIN_CONTINUE
}

public Disarm_Weapon(id)
{
        new pOrigin[3], pName[32], aName[32]
        new pWeapons[32], pWeaponName[32], pWeaponNum

        get_user_origin(id, pOrigin, 0)
        pOrigin[2] -= 2000
        set_user_origin(id, pOrigin)

        get_user_weapons(id, pWeapons, pWeaponNum)

        for(new i = 0; i < pWeaponNum; ++i)
        {
                get_weaponname(pWeapons, pWeaponName, 31)
                engclient_cmd(id, "drop", pWeaponName)
        }

        engclient_cmd(id, "weapon_knife")

        pOrigin[2] += 2005
        set_user_origin(id, pOrigin)

        return 1
}

stock drop_weapons(id, dropwhat) // dropwhat: 1 = primary weapon , 2 = secondary weapon
{


        static weapons[32], num, i, weaponid
        num = 0 // reset passed weapons count (bugfix)
        get_user_weapons(id, weapons, num)
       
        for (i = 0; i < num; i++)
        {
                weaponid = weapons
               
                if ((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM)))
                {
                        static wname[32]
                        get_weaponname(weaponid, wname, charsmax(wname))
                       
                        engclient_cmd(id, "drop", wname)
                }
        }
}

使用道具 举报

Rank: 3Rank: 3

帖子
0
精华
0
声望
110 点
金币
40 Mold
被赞许
3 次
注册时间
2009-6-18
发表于 2011-2-13 15:57:11 |显示全部楼层
你写插件习惯我看着很别扭
为什么把变量不写在前面

使用道具 举报

头像被屏蔽

禁止发言

帖子
667
精华
0
声望
558 点
金币
1135 Mold
被赞许
3 次
注册时间
2009-8-2
发表于 2011-2-13 16:29:38 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽

使用道具 举报

Rank: 3Rank: 3

帖子
127
精华
0
声望
453 点
金币
121 Mold
被赞许
3 次
注册时间
2009-3-22
发表于 2011-2-13 16:56:02 |显示全部楼层
楼上的,这点我早就考虑过了,但是我觉得不太好用

使用道具 举报

Administrator

荻野埃及

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

帖子
605
精华
0
声望
8563 点
金币
1495 Mold
被赞许
19 次
注册时间
2006-2-5
发表于 2011-3-3 19:36:41 |显示全部楼层
使用fm_give_item而不是give_item

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

回顶部