|
Member
|

03-01-2017
, 19:27
Help, adding extra item to this plugin
|
#1
|
Hello! I made this plugin where i can set normal weapons from CS 1.6, but i dont know how to add ''Custom items'' like Golden AK or something like that, I think i have to do a Native and that, but i dont know how to add that native, set his rank needed, bullets and name.
Sorry about some variables on spanish, but its more easy for me to understand certain things
I know how to register a native, how to create a inc and that.
This is an example with Crowbar, using his own plugin (or maybe im doing something wrong)
PHP Code:
public register_native ("Has_Crowbar", "give_crowbar", 1);
and
PHP Code:
public give_crowbar(id) return g_HasCrowbar[id] = true;
Main plugin rank
PHP Code:
/*===================== Includes =======================*/
#include <amxmodx> #include <cstrike> #include <hamsandwich> #include <fun>
//#include <extraitems> // Maybe i need to use a native? and then what?
/*============================ Defines ==============================*/
#define PLUGIN "EXP/LVLS/RANK" #define VERSION "1.4" #define AUTHOR "xeloxded"
/*============================ G. V ==============================*/
new g_compro[33][2] new g_maxplayers new g_rango[33][2] new g_exp[33][2]
const TASK_HUD = 2000
enum _:rng { RANGO_NAME[50], RANGO_EXP } #define MAX_CT 6 new const RANGOS_CT[MAX_CT][rng] = { //Rank name, exp needed, { "Rank 1", 1 }, { "Rank 2", 10 }, { "Rank 3", 20 }, { "Rank 4", 30 }, { "Rank 5", 40 }, { "Bug", 9999999 } }
#define MAX_TT 3 new const RANGOS_TT[MAX_TT][rng] = { { "Rank TT", 1 }, // 0 { "Rank TT2", 15 }, // 1 { "Bug", 9999999 } }
enum _:arm { ARMA_NAME[30], ARMA_WEAPON[30], ARMA_CSW, ARMA_RANGO, BALAS }
/*====================================================== Customization =======================================================*/
new const ARMAS_CT_PRI[][arm] = { { "P90", "weapon_p90", CSW_P90, 0, 100}, { "M3", "weapon_m3", CSW_M3, 1, 32 }, { "UMP45", "weapon_ump45", CSW_UMP45, 2, 100 }, { "MP5", "weapon_mp5navy", CSW_MP5NAVY, 3, 120 }, { "Galil", "weapon_galil", CSW_GALIL, 4, 90 } }
new const ARMAS_CT_SEC[][arm] = { { "Usp", "weapon_usp", CSW_FIVESEVEN, 0, 100 }, { "Deagle", "weapon_deagle", CSW_DEAGLE, 1, 35 } }
/*============================ Plugin init ==============================*/
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) RegisterHam(Ham_Killed, "player", "HamPlayerKilled") RegisterHam(Ham_Spawn, "player", "HamPlayerSpawn", 1)
register_logevent("logevent_round_end", 2, "1=Round_End")
g_maxplayers = get_maxplayers()
register_clcmd("buy", "show_buy") }
public client_putinserver(id) { set_task(0.1, "Hud", id+TASK_HUD,_,_,"b") }
/*============================ HUD ==============================*/
public Hud(id) { id -= TASK_HUD new szNombre[33]; get_user_name(id, szNombre, charsmax(szNombre)); set_hudmessage(0, 127, 255, 0.01, 0.15, 0, 6.0, 12.0) if(cs_get_user_team(id) == CS_TEAM_T) show_hudmessage(id, "Nick: %s^nHP: %d - Armor: %d^nRank : %s (%d)^nExp : %d", szNombre, get_user_health(id), get_user_armor(id), RANGOS_TT[g_rango[id][0]][RANGO_NAME], g_rango[id][0], g_exp[id][0]) if(cs_get_user_team(id) == CS_TEAM_CT) show_hudmessage(id, "Nick: %s^nHP: %d - Armor: %d^nRank: %s (%d)^nExp : %d", szNombre, get_user_health(id), get_user_armor(id), RANGOS_CT[g_rango[id][1]][RANGO_NAME], g_rango[id][1], g_exp[id][1]) }
/*============================ Check rank ==============================*/
public check_rango(id) { while (g_exp[id][0] >= RANGOS_TT[g_rango[id][0]+1][RANGO_EXP] && g_rango[id][0] < MAX_TT) { g_rango[id][0] ++ } while (g_exp[id][1] >= RANGOS_CT[g_rango[id][1]+1][RANGO_EXP] && g_rango[id][1] < MAX_CT) { g_rango[id][1] ++ } }
/*============================ Ham ==============================*/
public HamPlayerKilled(victim, attacker, shouldgib) { if (victim == attacker) return HAM_IGNORED; if (cs_get_user_team(attacker) == CS_TEAM_CT) { g_exp[attacker][1] ++ } if (cs_get_user_team(attacker) == CS_TEAM_T) { g_exp[attacker][0] ++ } check_rango(attacker) return HAM_IGNORED; }
public HamPlayerSpawn(id) { if (!is_user_connected(id) || !is_user_alive(id)) return;
if (cs_get_user_team(id) == CS_TEAM_CT) show_prim_ct(id) g_compro[id] = { 0, 0} }
public logevent_round_end() { for (new id = 1; id < g_maxplayers; id++) { if (is_user_alive(id)) { if (cs_get_user_team(id) == CS_TEAM_T) { g_exp[id][0] += random_num(2, 5) } if (cs_get_user_team(id) == CS_TEAM_CT) { g_exp[id][1] += random_num(2, 5) } check_rango(id) } } }
/*============================ Menu ==============================*/
public show_buy(id) { if (cs_get_user_team(id) == CS_TEAM_CT) show_prim_ct(id) return PLUGIN_HANDLED; }
public show_prim_ct(id) { new armas[999], menu = menu_create("Primary Weapons", "hand_prim_ct")
for (new i = 0; i < sizeof ARMAS_CT_PRI; i++) { if (g_rango[id][1] >= ARMAS_CT_PRI[i][ARMA_RANGO]) formatex(armas, sizeof armas, "\w%s \y[Available]", ARMAS_CT_PRI[i][ARMA_NAME]) else formatex(armas, sizeof armas, "\d%s \r[Rank needed: %s]", ARMAS_CT_PRI[i][ARMA_NAME], RANGOS_CT[i][RANGO_NAME])
menu_additem(menu, armas) }
menu_display(id, menu, 0) }
public hand_prim_ct(id, menu, item) { if (item == MENU_EXIT) { menu_destroy(menu) return PLUGIN_HANDLED; } if (g_compro[id][0]) { show_sec_ct(id) return PLUGIN_HANDLED; } if (g_rango[id][1] >= ARMAS_CT_PRI[item][ARMA_RANGO]) { g_compro[id][0] = 1 give_item(id, ARMAS_CT_PRI[item][ARMA_WEAPON]) cs_set_user_bpammo(id, ARMAS_CT_PRI[item][ARMA_CSW], ARMAS_CT_PRI[item][BALAS]) show_sec_ct(id) } else { show_prim_ct(id) return PLUGIN_HANDLED; } return PLUGIN_HANDLED; }
public show_sec_ct(id) { new armas[999], menu = menu_create("Secondary Weapons", "hand_sec_ct")
for (new i = 0; i < sizeof ARMAS_CT_SEC; i++) { if (g_rango[id][1] >= ARMAS_CT_SEC[i][ARMA_RANGO]) formatex(armas, sizeof armas, "\w%s \y[Avaialble]", ARMAS_CT_SEC[i][ARMA_NAME]) else formatex(armas, sizeof armas, "\d%s \r[Rank needed: %s]", ARMAS_CT_SEC[i][ARMA_NAME], RANGOS_CT[i][RANGO_NAME])
menu_additem(menu, armas) }
menu_display(id, menu, 0) }
public hand_sec_ct(id, menu, item) { if (item == MENU_EXIT) { menu_destroy(menu) return PLUGIN_HANDLED; } if (g_compro[id][1]) { menu_destroy(menu) return PLUGIN_HANDLED; } if (g_rango[id][1] >= ARMAS_CT_SEC[item][ARMA_RANGO]) { g_compro[id][1] = 1 give_item(id, ARMAS_CT_SEC[item][ARMA_WEAPON]) cs_set_user_bpammo(id, ARMAS_CT_SEC[item][ARMA_CSW], ARMAS_CT_SEC[item][BALAS]) } else { show_sec_ct(id) return PLUGIN_HANDLED; } return PLUGIN_HANDLED; }
and Crowbar plugin
PHP Code:
#include <amxmodx> #include <amxmisc> #include <fun> #include <colorchat> #include <engine> #include <fakemeta> #include <hamsandwich>
#define PLUGIN "Crowbar" #define VERSION "1.1" #define AUTHOR "DoNii"
#define is_valid_connected(%1) (1 <= %1 <= get_maxplayers())
const OFFSET_WEAPONOWNER = 41 const OFFSET_LINUX_WEAPONS = 4 const m_pActiveItem = 373
new g_HasCrowbar[33];
// Models new CROWBAR_MODEL_V[64] = "models/crowbar/crowbar_v.mdl" new CROWBAR_MODEL_P[64] = "models/crowbar/crowbar_p.mdl"
new const crowbar_sounds[][] = { "weapons/crowbar/knife_deploy1.wav", "weapons/crowbar/knife_hit1.wav", "weapons/crowbar/knife_hit2.wav", "weapons/crowbar/knife_hit3.wav", "weapons/crowbar/knife_hit4.wav", "weapons/crowbar/knife_hitwall1.wav", "weapons/crowbar/knife_slash1.wav", "weapons/crowbar/knife_slash2.wav", "weapons/crowbar/knife_stab.wav" }
new const oldknife_sounds[][] = { "weapons/knife_deploy1.wav", "weapons/knife_hit1.wav", "weapons/knife_hit2.wav", "weapons/knife_hit3.wav", "weapons/knife_hit4.wav", "weapons/knife_hitwall1.wav", "weapons/knife_slash1.wav", "weapons/knife_slash2.wav", "weapons/knife_stab.wav" }
// Cvars new g_crowbar_damage; new g_crowbar_knockback;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR) register_forward(FM_EmitSound, "fw_EmitSound");
RegisterHam(Ham_Item_Deploy, "weapon_knife", "fw_HamDeployCrowbarPost", 1) RegisterHam(Ham_TakeDamage, "player", "fw_HamTakeDamagePre") RegisterHam(Ham_Spawn, "player", "fw_HamSpawnPost", 1) // Cvars g_crowbar_damage = register_cvar("crowbar_damage", "3") // Damage multiplier g_crowbar_knockback = register_cvar("crowbar_knockback", "30") // Knockback
// Log Cvar register_cvar("crowbar_version", VERSION, FCVAR_SERVER|FCVAR_SPONLY|FCVAR_UNLOGGED) }
public plugin_precache() { precache_model(CROWBAR_MODEL_V) precache_model(CROWBAR_MODEL_P)
for (new i=0; i < sizeof crowbar_sounds; i++ ) precache_sound(crowbar_sounds[i])
}
CrowbarModel(id) { set_pev(id, pev_viewmodel2, CROWBAR_MODEL_V) set_pev(id, pev_weaponmodel2, CROWBAR_MODEL_P) }
stock create_velocity_vector(victim, attacker, Float:velocity[3]) { new Float:vicorigin[3]; new Float:attorigin[3]; entity_get_vector(victim , EV_VEC_origin , vicorigin); entity_get_vector(attacker , EV_VEC_origin , attorigin); new Float:origin2[3] origin2[0] = vicorigin[0] - attorigin[0]; origin2[1] = vicorigin[1] - attorigin[1]; new Float:largestnum = 0.0; if(floatabs(origin2[0])>largestnum) largestnum = floatabs(origin2[0]); if(floatabs(origin2[1])>largestnum) largestnum = floatabs(origin2[1]); origin2[0] /= largestnum; origin2[1] /= largestnum; if (g_HasCrowbar[attacker]) { velocity[0] = ( origin2[0] * get_pcvar_num(g_crowbar_knockback) * 3000) / get_entity_distance(victim , attacker); velocity[1] = ( origin2[1] * get_pcvar_num(g_crowbar_knockback) * 3000) / get_entity_distance(victim , attacker); }
if(velocity[0] <= 20.0 || velocity[1] <= 20.0) velocity[2] = random_float(200.0 , 275.0); return 1; }
public fw_HamSpawnPost(id) {
if(g_HasCrowbar[id]) g_HasCrowbar[id] = false
}
public fw_HamDeployCrowbarPost(ent) { new id = get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS); if(pev_valid(ent) != 2 ) return HAM_IGNORED; if(!is_valid_connected(id)) return HAM_IGNORED; if(get_pdata_cbase(id, m_pActiveItem ) != ent) return HAM_IGNORED; if(!g_HasCrowbar[id]) return HAM_IGNORED; CrowbarModel(id) return HAM_IGNORED; }
public fw_HamTakeDamagePre(victim, inflictor, attacker, Float:damage, damagebit) { if(!is_valid_connected(attacker)) return HAM_IGNORED; if(get_user_weapon(attacker) == CSW_KNIFE && g_HasCrowbar[attacker]) { new Float:dmg = damage dmg *= get_pcvar_num(g_crowbar_damage) SetHamParamFloat(4, dmg) new Float:vec[3]; new Float:oldvelo[3]; get_user_velocity(victim, oldvelo); create_velocity_vector(victim , attacker , vec); vec[0] += oldvelo[0]; vec[1] += oldvelo[1]; set_user_velocity(victim , vec); } return HAM_IGNORED; }
public fw_EmitSound(id, channel, const sound[]) { for(new i = 0; i < sizeof crowbar_sounds; i++) { if(equal(sound, oldknife_sounds[i])) { if (g_HasCrowbar[id]) { emit_sound(id, channel, crowbar_sounds[i], 1.0, ATTN_NORM, 0, PITCH_NORM) return FMRES_SUPERCEDE }
emit_sound(id, channel, oldknife_sounds[i], 1.0, ATTN_NORM, 0, PITCH_NORM) return FMRES_SUPERCEDE } } return FMRES_IGNORED }
Last edited by xeloxded; 03-01-2017 at 19:30.
|
|