|
发表于 2008-11-21 00:48:31
|
显示全部楼层
|阅读模式
来自 中国–山东–东营
/*
Weapons Mod 2.0
Brought to you by TooLz
Special thanks to DoDPlugins.net for providing the wonderful community!
*/
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <dodx>
#include <fakemeta>
#define MAXWEAPON 23
new got_weapon[32], Weapon_Name[33][32]
enum WeaponData {
WMOD_Weapon,
WMOD_SayCmd[32],
WMOD_Disabled[32]
}
new WEAPON[MAXWEAPON][WeaponData] = {
{DODW_KAR,"k98","amx_disable_k98"}, //0
{DODW_GARAND,"garand","amx_disable_garand"}, //1
{DODW_K43,"k43","amx_disablek43"}, //2
{DODW_M1_CARBINE,"carbine","amx_disable_carbine"}, //3
{DODW_MP40,"mp40","amx_disable_mp40"}, //4
{DODW_THOMPSON,"thompson","amx_disable_thompson"}, //5
{DODW_STG44,"stg44","amx_disable_stg44"}, //6
{DODW_GREASEGUN,"greasegun","amx_disable_greasegun"}, //7
{DODW_SCOPED_KAR,"scopedk98","amx_disable_scopedk98"}, //8
{DODW_SPRINGFIELD,"springfield","amx_disable_springfield"}, //9
{DODW_MG34,"mg34","amx_disable_mg34"}, //10
{DODW_BAR,"bar","amx_disable_bar"}, //11
{DODW_MG42,"mg42","amx_disable_mg42"}, //12
{DODW_30_CAL,"30cal","amx_disable_30cal"}, //13
{DODW_PANZERSCHRECK,"panzerschreck","amx_disable_panzerschreck"}, //14
{DODW_BAZOOKA,"bazooka","amx_disable_bazooka"}, //15
{DODW_ENFIELD,"enfield","amx_disable_enfield"}, //16
{DODW_STEN,"sten","amx_disable_sten"}, //17
{DODW_BREN,"bren","amx_disable_bren"}, //18
{DODW_PIAT,"piat","amx_disable_piat"}, //19
{DODW_FG42,"fg42","amx_disable_fg42"}, //20
{DODW_SCOPED_FG42,"scopedfg42","amx_disable_scopedfg42"}, //21
{DODW_SCOPED_ENFIELD,"scopedenfield","amx_disable_scopedenfield"} //22
}
public plugin_init()
{
register_plugin("Weapons Mod 2.0","2.0","TooLz")
register_event("ResetHUD","respawn","be")
register_clcmd("say","cmdSay",0,"- Checks which weapon was said")
register_cvar("amx_weapon_changes", "2")
register_cvar("amx_disable_scopedfg42","0")
register_cvar("amx_disable_scopedenfield","0")
register_cvar("amx_disable_k98", "0")
register_cvar("amx_disable_garand", "0")
register_cvar("amx_disable_carbine", "0")
register_cvar("amx_disable_k43", "0")
register_cvar("amx_disable_mp40", "0")
register_cvar("amx_disable_thompson", "0")
register_cvar("amx_disable_stg44", "0")
register_cvar("amx_disable_bar", "0")
register_cvar("amx_disable_fg42", "0")
register_cvar("amx_disable_greasegun", "0")
register_cvar("amx_disable_bazooka", "0")
register_cvar("amx_disable_enfield", "0")
register_cvar("amx_disable_sten", "0")
register_cvar("amx_disable_mg42", "0")
register_cvar("amx_disable_mg34", "0")
register_cvar("amx_disable_30cal", "0")
register_cvar("amx_disable_springfield", "0")
register_cvar("amx_disable_scopedk98", "0")
register_cvar("amx_disable_bren", "0")
register_cvar("amx_disable_panzerschreck", "0")
register_cvar("amx_disable_piat", "0")
}
public respawn(id){
got_weapon[id] = 0
}
stock detect_weapon_id(id) {
// Big thanks to Wilson for this stock!
new m_iCurEnt = -1, m_iWpnEnt = 0, m_szWpn[32];
new clip, ammo, m_iWpn = get_user_weapon(id,clip,ammo);
xmod_get_wpnlogname(m_iWpn, m_szWpn, 31);
format(m_szWpn, 31, "weapon_%s", m_szWpn);
if(equal(m_szWpn, "weapon_scoped_enfield")) m_szWpn = "weapon_enfield";
if(equal(m_szWpn, "weapon_scoped_fg42")) m_szWpn = "weapon_fg42";
new Float:m_flOrigin[3];
pev(id, pev_origin, m_flOrigin);
while((m_iCurEnt = engfunc(EngFunc_FindEntityInSphere, m_iCurEnt, m_flOrigin, Float:1.0)) != 0) {
new m_szClassname[32];
pev(m_iCurEnt, pev_classname, m_szClassname, 31);
if(equal(m_szClassname, m_szWpn))
m_iWpnEnt = m_iCurEnt;
}
return m_iWpnEnt;
}
stock cmdWeapon(WeaponID, WeaponName[32]) {
xmod_get_wpnlogname(WeaponID, WeaponName, 31);
format(WeaponName, 31, "weapon_%s", WeaponName);
}
stock dod_get_scoped(id) {
new m_iCurEnt = -1, m_iWpnEnt = 0, m_szWpn[32];
new clip, ammo, m_iWpn = get_user_weapon(id,clip,ammo);
new is_scoped
xmod_get_wpnlogname(m_iWpn, m_szWpn, 31);
format(m_szWpn, 31, "weapon_%s", m_szWpn);
if(equal(m_szWpn, "weapon_scoped_enfield")) m_szWpn = "weapon_enfield";
if(equal(m_szWpn, "weapon_scoped_fg42")) m_szWpn = "weapon_fg42";
new Float:m_flOrigin[3];
pev(id, pev_origin, m_flOrigin);
while((m_iCurEnt = engfunc(EngFunc_FindEntityInSphere, m_iCurEnt, m_flOrigin, Float:1.0)) != 0) {
new m_szClassname[32];
pev(m_iCurEnt, pev_classname, m_szClassname, 31);
if(equal(m_szClassname, m_szWpn))
m_iWpnEnt = m_iCurEnt;
}
is_scoped = get_pdata_int(m_iWpnEnt,115,4);
return is_scoped;
}
public cmdMakeScoped(id){
new is_scoped = dod_get_scoped(id)
while(is_scoped != 1){
is_scoped = dod_get_scoped(id)
set_pdata_int(detect_weapon_id(id),115,1,4)
}
client_cmd(id,"slot2;wait;slot3")
}
public cmdGiveWeapon(id){
if (!equali(Weapon_Name[id],"weapon_scoped_fg42") && !equali(Weapon_Name[id], "weapon_scoped_enfield")){
give_item(id,Weapon_Name[id])
}
if(equali(Weapon_Name[id],"weapon_scoped_fg42")){
give_item(id,"weapon_fg42")
set_task(0.2,"cmdMakeScoped",id)
}
if(equali(Weapon_Name[id],"weapon_scoped_enfield")){
give_item(id,"weapon_enfield")
set_task(0.2,"cmdMakeScoped",id)
}
got_weapon[id]++
}
public cmdSay(id) {
new said[32]
read_argv(1,said,31)
if(said[0] != '/')
return PLUGIN_CONTINUE;
for(new i = 0 ; i < MAXWEAPON ; i++) {
if(equali(said[1],WEAPON[WMOD_SayCmd])) {
if(get_cvar_num(WEAPON[WMOD_Disabled]) != 0){
client_print(id,print_chat, "[Weapons Mod 2.0] This weapon is disabled on this server.")
return PLUGIN_HANDLED
}
if (got_weapon[id] == get_cvar_num("amx_weapon_changes")){
client_print(id,print_chat, "[Weapons Mod 2.0] You've used up your gun changes, you must wait until respawn to change guns again.")
return PLUGIN_HANDLED
}
cmdWeapon(WEAPON[WMOD_Weapon],Weapon_Name[id])
client_cmd(id, "drop")
set_task(0.3,"cmdGiveWeapon", id)
break;
}
}
return PLUGIN_HANDLED
}
想修改成 如果是会员才可以换枪,并提示换枪成功,否则就提示你不是会员无法换枪,谢谢各位 |
|