Base Builder Shop v1.0
Bueno esta tienda la edite con mi amigo Alan ^-^ hace rato para mi BB
Eh visto personas que quieren una shop maso menos buena en sus bb & les dejare esta:
Contiene
models
Espero les sirva a alguien
Bueno esta tienda la edite con mi amigo Alan ^-^ hace rato para mi BB
Eh visto personas que quieren una shop maso menos buena en sus bb & les dejare esta:
Contiene
Código PHP:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#include <hamsandwich>
#include <fakemeta>
#include <engine>
#include <csx>
#include <colorchat>
#include <basebuilder>
new const INF[][]= {"Primer Tienda", "1.0", "Nickky & skylar"}
// Prefix
new const Prefijo[] = "^4-[ZK]#^1"
new bool:g_m4a1[33], bool:g_knife[33], bool:g_deagle[33], bool:g_bHasSuperM249[33], bool:g_bHasTar21[33], bool:g_bHasDual[33],
bool:g_bHasFurienScoult[33], bool:g_bHasM14EBR[33], g_has_unlimited_clip[33], bullets[ 33 ], cvar_duration, cvar_radius, cvar_sound,
cvar_mode, cvar_damage, cvar_speed, cvar_shake, cvar_extraap, g_trail, g_ring, g_fire, g_score, g_death, g_shake, bool: g_has_pipe[33], bool: g_has_shield[33],
m_spriteTexture, cvar_goldbullets, cvar_hp, g_maxplayers, g_ADSpr, explode_script
// Models precache
new const M4A1_Model[][] = {
"models/shop/v_m4.mdl",
"models/shop/p_m4.mdl"
}
new const Knife_Model[][] = {
"models/shop/v_cutter.mdl",
"models/shop/p_cutter.mdl"
}
new const DEAGLE_Model[][] = {
"models/shop/v_super_deagle.mdl",
"models/shop/p_super_deagle.mdl"
}
new const DUAL_model[][] = {
"models/v_InfiniTy.mdl",
"models/p_InfiniTy.mdl"
}
new const TAR21_model[][] = {
"models/v_TaR_21.mdl",
"models/p_TaR_21.mdl"
}
new const M14EBR_model[][] = {
"models/v_M14EBR.mdl",
"models/p_M14EBR.mdl"
}
new const FURIENSCOULT_model[][] = {
"models/v_Arco.mdl",
"models/p_scout.mdl"
}
new const MACHINE_model[][] = {
"models/v_ZKMachine.mdl",
"models/p_ZKMachine.mdl"
}
// CS Offsets
#if cellbits == 32
const OFFSET_CLIPAMMO = 51
#else
const OFFSET_CLIPAMMO = 65
#endif
const OFFSET_LINUX_WEAPONS = 4
// Max Clip for weapons
new const MAXCLIP[] = { -1, 13, -1, 10, 1, 7, -1, 30, 30, 1, 30, 20, 25, 30, 35, 25, 12, 20,
10, 30, 100, 8, 30, 30, 20, 2, 7, 30, 30, -1, 50 }
// Bomba pipee
const m_pPlayer = 41;
new const NADE_TYPE_PIPE = 4327
new const NADE_DURATION_PIPE = pev_flSwimTime
new const g_trailspr[] ="sprites/laserbeam.spr"
new const g_ringspr[] = "sprites/shockwave.spr"
new const g_sound[] = "items/pipe_beep.wav"
new const g_vmodel[] = "models/shop/v_pipe.mdl"
new const g_pmodel[] = "models/shop/p_pipe.mdl"
new const g_wmodel[] = "models/shop/w_pipe.mdl"
new const g_vflare[] = "models/v_smokegrenade.mdl"
public plugin_init() {
register_plugin(INF[0], INF[1], INF[2])
// Events
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
register_event("CurWeapon", "Current_Weapon", "be", "1=1")
RegisterHam(Ham_TakeDamage, "player", "Player_Took_Dmg")
register_event("CurWeapon", "make_tracer", "be", "1=1", "3>0")
register_forward(FM_SetModel,"fw_SetModel", 1)
register_dictionary("bb_pipee.txt")
RegisterHam(Ham_Think, "grenade", "fw_ThinkGren")
RegisterHam(Ham_Spawn, "player", "fw_Spawn")
RegisterHam(Ham_Item_Deploy, "weapon_smokegrenade", "fw_smDeploy", 1)
// Register Message
register_message(get_user_msgid("CurWeapon"), "message_cur_weapon")
// Clcmd Say
register_clcmd("say /shop", "show_menu_tienda")
register_clcmd("buyequip", "show_menu_tienda")
g_maxplayers = get_maxplayers()
// Admins Commands
register_concmd("amx_dinero", "give_player_money", ADMIN_CFG, "<Target> <Amount>")
// Cvars
cvar_goldbullets = register_cvar("bb_goldenm4_gold_bullets", "1")
cvar_hp = register_cvar("bb_hp", "550")
cvar_duration = register_cvar("bb_pipe_duration", "4")
cvar_radius = register_cvar ( "bb_pipe_radius", "200")
cvar_mode = register_cvar("bb_pipe_mode", "1")
cvar_sound = register_cvar("bb_pipe_sound", "1")
cvar_damage = register_cvar("bb_pipe_damage", "50")
cvar_speed = register_cvar("bb_pipe_speed", "90.0")
cvar_shake = register_cvar("bb_pipe_shake", "1")
cvar_extraap = register_cvar("bb_pipe_ap", "1")
// Added by me
g_score = get_user_msgid("ScoreInfo")
g_death = get_user_msgid("DeathMsg")
g_shake = get_user_msgid("ScreenShake")
}
public plugin_precache() {
static i
for( i = 0; i < sizeof M4A1_Model; i++ )
precache_model(M4A1_Model[i])
for( i = 0; i < sizeof Knife_Model; i++ )
precache_model(Knife_Model[i])
for( i = 0; i < sizeof DEAGLE_Model; i++ )
precache_model(DEAGLE_Model[i])
for( i = 0; i < sizeof DUAL_model; i++ )
precache_model(DUAL_model[i])
for( i = 0; i < sizeof TAR21_model; i++ )
precache_model(TAR21_model[i])
for( i = 0; i < sizeof M14EBR_model; i++ )
precache_model(M14EBR_model[i])
for( i = 0; i < sizeof FURIENSCOULT_model; i++ )
precache_model(FURIENSCOULT_model[i])
for( i = 0; i < sizeof MACHINE_model; i++ )
precache_model(MACHINE_model[i])
// Sprites
explode_script = precache_model("sprites/fire_cannon.spr")
m_spriteTexture = precache_model("sprites/xbeam1_new.spr")
g_ADSpr = precache_model("sprites/shockwave.spr")
g_trail = precache_model(g_trailspr)
g_ring = precache_model(g_ringspr)
// Pipee
precache_model(g_vmodel)
precache_model(g_pmodel)
precache_model(g_wmodel)
precache_model(g_vflare)
precache_sound(g_sound)
}
public show_menu_tienda(id) {
if(is_user_alive(id)) {
if(get_user_team(id) == 2) {
new menu = menu_create("\r[\yTienda Humana\r]", "menu_tienda")
menu_additem(menu, "M4A1 Gold \y[10000$]", "1", 0)
menu_additem(menu, "Super Knife \y[10000$]", "2", 0)
menu_additem(menu, "Balas Infinitas \d(1 ronda) \y[9000$]", "3", 0)
menu_additem(menu, "HE \y[500$]", "4", 0)
menu_additem(menu, "Congeladora \y[900$]", "5", 0)
menu_additem(menu, "GodMode \d(10 seg) \y[1800$]", "6", 0)
menu_additem(menu, "100 HP \y[1000$]", "7", 0)
menu_additem(menu, "Deagle Gold \y[16000$]", "8", 0)
menu_additem(menu, "Pipe Bomb \y[800$]", "9", 0)
menu_additem(menu, "DuaL InfiniTy \y[5000$]", "10", 0)
menu_additem(menu, "Tar21 \y[7000$]", "11", 0)
menu_additem(menu, "M14EBR \y[8000$]", "12", 0)
menu_additem(menu, "Arco \y[12000$]", "13", 0)
menu_additem(menu, "Machine \y[8000$]", "14", 0)
menu_setprop(menu, MPROP_EXITNAME, "\wSalir")
menu_display(id, menu, 0)
} else
ColorChat(id, NORMAL, "%s Necesitas ser ct para este menu", Prefijo)
} else
ColorChat(id, NORMAL, "%s Necesitas estar vivo", Prefijo)
return PLUGIN_HANDLED;
}
public menu_tienda(id, menu, item) {
if(item == MENU_EXIT) {
menu_destroy(menu)
return PLUGIN_HANDLED;
}
switch(item) {
case 0: {
if (cs_get_user_money(id) >= 10000) {
cs_set_user_money(id, cs_get_user_money(id) - 10000)
g_m4a1[id] = true
give_item(id, "weapon_m4a1")
cs_set_user_bpammo(id, CSW_M4A1, 90)
ColorChat(id, NORMAL, "%s Compraste^4 M4A1 Gold", Prefijo)
} else
ColorChat(id, NORMAL, "%s No tienes dinero, debes tener^4 10000$", Prefijo)
}
case 1: {
if (cs_get_user_money(id) >= 10000) {
cs_set_user_money(id, cs_get_user_money(id) - 10000)
g_knife[id] = true
give_item(id, "weapon_knife")
ColorChat(id, NORMAL, "%s Compraste^4 Super Knife", Prefijo)
} else
ColorChat(id, NORMAL, "%s No tienes dinero, debes tener^4 10000$", Prefijo)
}
case 2: {
if (cs_get_user_money(id) >= 9000) {
cs_set_user_money(id, cs_get_user_money(id) - 9000)
g_has_unlimited_clip[id] = true
ColorChat(id, NORMAL, "%s Compraste^4 Balas Infinitas^1 por 1 ronda", Prefijo)
} else
ColorChat(id, NORMAL, "%s No tienes dinero, debes tener^4 9000$", Prefijo)
}
case 3: {
if (cs_get_user_money(id) >= 500) {
cs_set_user_money(id, cs_get_user_money(id) - 500)
give_item(id, "weapon_hegrenade")
ColorChat(id, NORMAL, "%s Compraste^4 HE Grenade", Prefijo)
} else
ColorChat(id, NORMAL, "%s No tienes dinero, debes tener^4 500$", Prefijo)
}
case 4: {
if (cs_get_user_money(id) >= 900) {
cs_set_user_money(id, cs_get_user_money(id) - 900)
give_item(id, "weapon_flashbang")
ColorChat(id, NORMAL, "%s Compraste^4 Smoke Grenade", Prefijo)
} else
ColorChat(id, NORMAL, "%s No tienes dinero, debes tener^4 900$", Prefijo)
}
case 5: {
if (cs_get_user_money(id) >= 1800) {
cs_set_user_money(id, cs_get_user_money(id) - 1800)
set_user_godmode(id, 1)
set_task(10.0, "remover_godmode", id)
ColorChat(id, NORMAL, "%s Compraste^4 GodMode^1 por^4 10 segundos", Prefijo)
} else
ColorChat(id, NORMAL, "%s No tienes dinero, debes tener^4 1800$", Prefijo)
}
case 6: {
if (cs_get_user_money(id) >= 1000) {
cs_set_user_money(id, cs_get_user_money(id) - 1000)
set_user_health(id, get_user_health(id) + get_pcvar_num(cvar_hp))
ColorChat(id, NORMAL, "%s Compraste^4 100^1 de^4 HP", Prefijo)
} else
ColorChat(id, NORMAL, "%s No tienes dinero, debes tener^4 1000$", Prefijo)
}
case 7: {
if (cs_get_user_money(id) >= 16000) {
cs_set_user_money(id, cs_get_user_money(id) - 16000)
g_deagle[id] = true
give_item(id, "weapon_deagle")
cs_set_user_bpammo(id, CSW_DEAGLE, 200)
ColorChat(id, NORMAL, "%s Compraste^4 Deagle Gold", Prefijo)
} else
ColorChat(id, NORMAL, "%s No tienes dinero, debes tener^4 16000$", Prefijo)
}
case 8: {
if (cs_get_user_money(id) >= 800) {
cs_set_user_money(id, cs_get_user_money(id) - 800)
g_has_pipe[id] = true
give_item(id, "weapon_smokegrenade")
ColorChat(id, NORMAL, "%s Compraste^4Pipe bomb", Prefijo)
} else
ColorChat(id, NORMAL, "%s No tienes dinero, debes tener^4 800$", Prefijo)
}
case 9: {
if (cs_get_user_money(id) >= 5000) {
cs_set_user_money(id, cs_get_user_money(id) - 5000)
g_bHasDual[id] = true
give_item(id, "weapon_elite")
cs_set_user_bpammo(id, CSW_ELITE, 30)
ColorChat(id, NORMAL, "%s Compraste^4 Dual InfiniTy", Prefijo)
} else
ColorChat(id, NORMAL, "%s No tienes dinero, debes tener^4 5000$", Prefijo)
}
case 10: {
if (cs_get_user_money(id) >= 7000) {
cs_set_user_money(id, cs_get_user_money(id) - 7000)
g_bHasTar21[id] = true
give_item(id, "weapon_aug")
cs_set_user_bpammo(id, CSW_AUG, 30)
ColorChat(id, NORMAL, "%s Compraste^4 Dual Tar21 ", Prefijo)
} else
ColorChat(id, NORMAL, "%s No tienes dinero, debes tener^4 7000$", Prefijo)
}
case 11: {
if (cs_get_user_money(id) >= 8000) {
cs_set_user_money(id, cs_get_user_money(id) - 8000)
g_bHasM14EBR[id] = true
give_item(id, "weapon_ak47")
cs_set_user_bpammo(id, CSW_AK47, 30)
ColorChat(id, NORMAL, "%s Compraste^4 Dual M14EBR ", Prefijo)
} else
ColorChat(id, NORMAL, "%s No tienes dinero, debes tener^4 8000$", Prefijo)
}
case 12: {
if (cs_get_user_money(id) >= 12000) {
cs_set_user_money(id, cs_get_user_money(id) - 12000)
g_bHasFurienScoult[id] = true
give_item(id, "weapon_scout")
cs_set_user_bpammo(id, CSW_SCOUT, 30)
ColorChat(id, NORMAL, "%s Compraste^4 Dual Arco", Prefijo)
} else
ColorChat(id, NORMAL, "%s No tienes dinero, debes tener^4 12000$", Prefijo)
}
case 13: {
if (cs_get_user_money(id) >= 8000) {
cs_set_user_money(id, cs_get_user_money(id) - 8000)
g_bHasSuperM249[id] = true
give_item(id, "weapon_m249")
cs_set_user_bpammo(id, CSW_M249, 30)
ColorChat(id, NORMAL, "%s Compraste^4 Dual Machine", Prefijo)
} else
ColorChat(id, NORMAL, "%s No tienes dinero, debes tener^4 8000$", Prefijo)
}
}
menu_destroy(menu)
return PLUGIN_HANDLED;
}
public remover_godmode(id) {
set_user_godmode(id, 0)
ColorChat(id, NORMAL, "%s Se te acabo el godmode", Prefijo)
}
public Current_Weapon(id) {
new weapon = read_data(2)
if(weapon == CSW_M4A1) {
if(g_m4a1[id]) {
set_pev(id, pev_viewmodel2, M4A1_Model[0])
set_pev(id, pev_weaponmodel2, M4A1_Model[1])
}
}
if(weapon == CSW_KNIFE)
{
if(g_knife[id])
{
set_pev(id, pev_viewmodel2, Knife_Model[0])
set_pev(id, pev_weaponmodel2, Knife_Model[1])
}
}
if(weapon == CSW_DEAGLE)
{
if(g_deagle[id])
{
set_pev(id, pev_viewmodel2, DEAGLE_Model[0])
set_pev(id, pev_weaponmodel2, DEAGLE_Model[1])
}
}
if(weapon == CSW_SMOKEGRENADE)
{
if(g_has_pipe[id])
{
set_pev(id, pev_viewmodel2, g_vmodel)
set_pev(id, pev_weaponmodel2, g_pmodel)
}
}
if(weapon == CSW_ELITE)
{
if(g_bHasDual[id])
{
set_pev(id, pev_viewmodel2, DUAL_model[0])
set_pev(id, pev_weaponmodel2, DUAL_model[1])
}
}
if(weapon == CSW_AUG)
{
if(g_bHasTar21[id])
{
set_pev(id, pev_viewmodel2, TAR21_model[0])
set_pev(id, pev_weaponmodel2, TAR21_model[1])
}
}
if(weapon == CSW_AK47)
{
if(g_bHasM14EBR[id])
{
set_pev(id, pev_viewmodel2, M14EBR_model[0])
set_pev(id, pev_weaponmodel2, M14EBR_model[1])
}
}
if(weapon == CSW_SCOUT)
{
if(g_bHasFurienScoult[id])
{
set_pev(id, pev_viewmodel2, FURIENSCOULT_model[0])
set_pev(id, pev_weaponmodel2, FURIENSCOULT_model[1])
}
}
if(weapon == CSW_M249)
{
if(g_bHasSuperM249[id])
{
set_pev(id, pev_viewmodel2, MACHINE_model[0])
set_pev(id, pev_weaponmodel2, MACHINE_model[1])
}
}
}
public replace_models(id)
{
if(get_user_weapon(id) == CSW_SMOKEGRENADE)
{
set_pev(id, pev_viewmodel2, g_vmodel)
set_pev(id, pev_weaponmodel2, g_pmodel)
}
}
public replace_models2(id)
if(get_user_weapon(id) == CSW_SMOKEGRENADE)
set_pev(id, pev_viewmodel2, g_vflare)
public fw_smDeploy(const iEntity)
{
if(pev_valid(iEntity) != 2)
return HAM_IGNORED;
new id = get_pdata_cbase(iEntity, m_pPlayer, 4);
if(g_has_pipe[id] && !zp_get_user_zombie(id) && is_user_alive(id))
{
set_pev(id, pev_viewmodel2, g_vmodel);
set_pev(id, pev_weaponmodel2, g_pmodel);
}
return HAM_IGNORED;
}
public Player_Took_Dmg(victim, inflictor, attacker, Float:damage, bits) {
if(!is_user_connected(victim) || !is_user_connected(attacker) || attacker == victim)
return HAM_IGNORED
new Clip, Ammo
new weapon = get_user_weapon(attacker, Clip, Ammo)
if(g_m4a1[attacker] && weapon == CSW_M4A1 && cs_get_user_team(attacker) != cs_get_user_team(victim)) {
SetHamParamFloat(4, damage + 59.0)
User_Kill_Effects(victim)
}
if(g_knife[attacker] && weapon == CSW_KNIFE && cs_get_user_team(attacker) != cs_get_user_team(victim))
{
SetHamParamFloat(4, damage + 1000)
set_user_maxspeed(attacker, get_user_maxspeed(attacker) + 1.0)
User_Kill_Effects(victim)
}
if(g_deagle[attacker] && weapon == CSW_DEAGLE && cs_get_user_team(attacker) != cs_get_user_team(victim))
{
static Float:originF[3]
pev(victim, pev_origin, originF)
SetHamParamFloat(4, damage + 350.0)
Effects(originF)
}
if(g_bHasDual[attacker] && weapon == CSW_ELITE && cs_get_user_team(attacker) != cs_get_user_team(victim)) {
SetHamParamFloat(4, damage + 50.0)
User_Kill_Effects(victim)
}
if(g_bHasTar21[attacker] && weapon == CSW_AUG && cs_get_user_team(attacker) != cs_get_user_team(victim)) {
SetHamParamFloat(4, damage + 70.0)
User_Kill_Effects(victim)
}
if(g_bHasM14EBR[attacker] && weapon == CSW_AK47 && cs_get_user_team(attacker) != cs_get_user_team(victim)) {
SetHamParamFloat(4, damage + 75.0)
User_Kill_Effects(victim)
}
if(g_bHasFurienScoult[attacker] && weapon == CSW_SCOUT && cs_get_user_team(attacker) != cs_get_user_team(victim)) {
SetHamParamFloat(4, damage + 1000.0)
User_Kill_Effects(victim)
}
if(g_bHasSuperM249[attacker] && weapon == CSW_M249 && cs_get_user_team(attacker) != cs_get_user_team(victim)) {
SetHamParamFloat(4, damage + 50.0)
User_Kill_Effects(victim)
}
return HAM_IGNORED
}
public User_Kill_Effects(id) {
new Origin[3]
get_user_origin(id, Origin)
emit_sound(0, CHAN_VOICE, "weapons/c4_explode1.wav", 1.0, 0.5, 0, PITCH_NORM)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY, _, id)
write_byte(TE_SPRITE)
write_coord(Origin[0])
write_coord(Origin[1])
write_coord(Origin[2])
write_short(explode_script)
write_byte(15)
write_byte(255)
message_end()
}
public give_player_money(id, level, cid) {
if(!cmd_access(id, level, cid, 3))
return PLUGIN_HANDLED
new target[32], amount[21]
read_argv(1, target, charsmax(target))
read_argv(2, amount, charsmax(amount))
new player = cmd_target(id, target, 8)
if(!player)
return PLUGIN_HANDLED
new szAdminName[32], szPlayerName[32]
get_user_name(id, szAdminName, charsmax(szAdminName))
get_user_name(player, szPlayerName, charsmax(szPlayerName))
new player_money = str_to_num(amount)
if(player_money > 16000 || player_money < 0) {
ColorChat(id, NORMAL, "%s El maximo de dinero que puedes dar es de^4 16000$", Prefijo)
return PLUGIN_HANDLED
}
cs_set_user_money(player, player_money)
ColorChat(id, NORMAL, "%s El admin^4 %s^1 le dio dinero a^4 %s", Prefijo, szAdminName, szPlayerName)
return PLUGIN_HANDLED
}
public make_tracer(id) {
if (get_pcvar_num(cvar_goldbullets)) {
new clip,ammo
new wpnid = get_user_weapon(id,clip,ammo)
new pteam[16]
get_user_team(id, pteam, 15)
if ((bullets[id] > clip) && (wpnid == CSW_M4A1) && g_m4a1[id]) {
new vec1[3], vec2[3]
get_user_origin(id, vec1, 1) // origin; your camera point.
get_user_origin(id, vec2, 4) // termina; where your bullet goes (4 is cs-only)
//BEAMENTPOINTS
message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
write_byte (0) //TE_BEAMENTPOINTS 0
write_coord(vec1[0])
write_coord(vec1[1])
write_coord(vec1[2])
write_coord(vec2[0])
write_coord(vec2[1])
write_coord(vec2[2])
write_short( m_spriteTexture )
write_byte(1) // framestart
write_byte(5) // framerate
write_byte(2) // life
write_byte(10) // width
write_byte(0) // noise
write_byte( 255 ) // r, g, b
write_byte( 215 ) // r, g, b
write_byte( 0 ) // r, g, b
write_byte(200) // brightness
write_byte(150) // speed
message_end()
}
bullets[id] = clip
}
}
public event_round_start()
{
for (new id = 1; id <= g_maxplayers; id++){
g_m4a1[id] = false
g_knife[id] = false
g_deagle[id] = false
g_bHasDual[id] = false
g_bHasTar21[id] = false
g_bHasM14EBR[id] = false
g_bHasFurienScoult[id] = false
g_bHasSuperM249[id] = false
g_has_unlimited_clip[id] = false
}
}
public message_cur_weapon(msg_id, msg_dest, msg_entity)
{
// Player doesn't have the unlimited clip upgrade
if (!g_has_unlimited_clip[msg_entity])
return;
// Player not alive or not an active weapon
if (!is_user_alive(msg_entity) || get_msg_arg_int(1) != 1)
return;
static weapon, clip
weapon = get_msg_arg_int(2) // get weapon ID
clip = get_msg_arg_int(3) // get weapon clip
// Unlimited Clip Ammo
if (MAXCLIP[weapon] > 2) // skip grenades
{
set_msg_arg_int(3, get_msg_argtype(3), MAXCLIP[weapon]) // HUD should show full clip all the time
if (clip < 2) // refill when clip is nearly empty
{
// Get the weapon entity
static wname[32], weapon_ent
get_weaponname(weapon, wname, sizeof wname - 1)
weapon_ent = fm_find_ent_by_owner(-1, wname, msg_entity)
// Set max clip on weapon
fm_set_weapon_ammo(weapon_ent, MAXCLIP[weapon])
}
}
}
// Find entity by its owner (from fakemeta_util)
stock fm_find_ent_by_owner(entity, const classname[], owner)
{
while ((entity = engfunc(EngFunc_FindEntityByString, entity, "classname", classname)) && pev(entity, pev_owner) != owner) {}
return entity;
}
// Set Weapon Clip Ammo
stock fm_set_weapon_ammo(entity, amount)
{
set_pdata_int(entity, OFFSET_CLIPAMMO, amount, OFFSET_LINUX_WEAPONS);
}
Effects(const Float:originF3[3]){
// Largest ring
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF3, 0)
write_byte(TE_BEAMCYLINDER) // TE id
engfunc(EngFunc_WriteCoord, originF3[0]) // x
engfunc(EngFunc_WriteCoord, originF3[1]) // y
engfunc(EngFunc_WriteCoord, originF3[2]) // z
engfunc(EngFunc_WriteCoord, originF3[0]) // x axis
engfunc(EngFunc_WriteCoord, originF3[1]) // y axis
engfunc(EngFunc_WriteCoord, originF3[2]+100.0) // z axis
write_short(g_ADSpr) // sprite
write_byte(0) // startframe
write_byte(0) // framerate
write_byte(4) // life
write_byte(60) // width
write_byte(0) // noise
write_byte(255) // red
write_byte(50) // green
write_byte(0) // blue
write_byte(200) // brightness
write_byte(0) // speed
message_end()
}
// Pipee
public fw_Spawn(id){
g_m4a1[id] = false
g_knife[id] = false
g_deagle[id] = false
g_has_pipe[id] = false
g_has_shield[id] = false
}
public fw_SetModel(entity, const model[]) // Set smokegrenade pipes effects and type
{
static Float:dmgtime, owner;
pev(entity, pev_dmgtime, dmgtime);
owner = pev(entity, pev_owner);
if(!pev_valid(entity) || dmgtime == 0.0)
return FMRES_IGNORED;
if (model[9] == 's' && model[10] == 'm' && g_has_pipe[owner])
{
g_has_pipe[owner] = false;
entity_set_model(entity, g_wmodel);
replace_models2(owner);
set_rendering(entity, kRenderFxGlowShell, 128, 0, 0, kRenderNormal, 16);
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW) // TE id
write_short(entity) // entity
write_short(g_trail) // sprite
write_byte(10) // life
write_byte(10) // width
write_byte(128) // r
write_byte(0) // g
write_byte(0) // b
write_byte(255) // brightness
message_end()
set_pev(entity, pev_flTimeStepSound, NADE_TYPE_PIPE);
return FMRES_SUPERCEDE;
}
return FMRES_IGNORED;
}
public fw_ThinkGren(entity) // Grenade think event
{
if (!pev_valid(entity))
return HAM_IGNORED;
static Float:dmgtime, Float: current_time, attacker;
pev(entity, pev_dmgtime, dmgtime);
current_time = get_gametime();
attacker = pev(entity, pev_owner);
if(dmgtime > current_time)
return HAM_IGNORED;
if(pev(entity, pev_flTimeStepSound) == NADE_TYPE_PIPE)
{
static duration;
duration = pev(entity, NADE_DURATION_PIPE);
if (duration > 0)
{
new Float:originF[3]
pev(entity, pev_origin, originF);
if (duration == 1)
{
remove_task(entity);
effect(originF);
if (get_pcvar_num(cvar_mode) == 1)
kill(originF, attacker);
engfunc(EngFunc_RemoveEntity, entity);
return HAM_SUPERCEDE;
}
light(originF, duration);
set_task(0.1, "hook", entity, _, _, "b");
if(get_pcvar_num(cvar_mode) == 2)
set_task(1.0, "hurt", entity, _, _, "b");
if(get_pcvar_num(cvar_sound))
{
if(duration == 2)
set_task(0.1, "beep", entity, _, _, "b");
else
emit_sound(entity, CHAN_WEAPON, g_sound, 1.0, ATTN_NORM, 0, PITCH_HIGH);
}
set_pev(entity, NADE_DURATION_PIPE, --duration);
set_pev(entity, pev_dmgtime, current_time + 3.0);
} else if ((pev(entity, pev_flags) & FL_ONGROUND) && get_speed(entity) < 10)
{
set_pev(entity, NADE_DURATION_PIPE, 1 + get_pcvar_num(cvar_duration)/3);
set_pev(entity, pev_dmgtime, current_time + 0.1);
} else
set_pev(entity, pev_dmgtime, current_time + 0.5);
}
return HAM_IGNORED;
}
public beep(entity) // Plays loop beep sound before explosion
{
//Bugfix
if (!pev_valid(entity))
{
remove_task(entity);
return;
}
emit_sound(entity, CHAN_WEAPON, g_sound, 1.0, ATTN_NORM, 0, PITCH_HIGH);
}
public hook(entity) // Magnet func. Hooks zombies to nade
{
//Bugfix
if (!pev_valid(entity))
{
remove_task(entity);
return;
}
static Float:originF[3], Float:radius, victim = -1;
radius = get_pcvar_float(cvar_radius);
pev(entity, pev_origin, originF);
while ((victim = engfunc(EngFunc_FindEntityInSphere, victim, originF, radius)) != 0)
{
if (!is_user_alive(victim) || !zp_get_user_zombie(victim) || g_has_shield[victim])
continue;
new Float:fl_Velocity[3];
new vicOrigin[3], originN[3];
get_user_origin(victim, vicOrigin);
originN[0] = floatround(originF[0]);
originN[1] = floatround(originF[1]);
originN[2] = floatround(originF[2]);
new distance = get_distance(originN, vicOrigin);
if (distance > 1)
{
new Float:fl_Time = distance / get_pcvar_float(cvar_speed);
fl_Velocity[0] = (originN[0] - vicOrigin[0]) / fl_Time;
fl_Velocity[1] = (originN[1] - vicOrigin[1]) / fl_Time;
fl_Velocity[2] = (originN[2] - vicOrigin[2]) / fl_Time;
} else
{
fl_Velocity[0] = 0.0
fl_Velocity[1] = 0.0
fl_Velocity[2] = 0.0
}
entity_set_vector(victim, EV_VEC_velocity, fl_Velocity);
if(get_pcvar_num(cvar_shake))
{
message_begin(MSG_ONE_UNRELIABLE, g_shake, _, victim)
write_short(1<<14) // amplitude
write_short(1<<14) // duration
write_short(1<<14) // frequency
message_end()
}
}
}
public hurt(entity) // Hurts zombies if mode = 2
{
//Bugfix
if (!pev_valid(entity))
{
remove_task(entity);
return;
}
static Float:originF[3], Float:radius, victim = -1;
radius = get_pcvar_float(cvar_radius)/2.0;
pev(entity, pev_origin, originF);
while ((victim = engfunc(EngFunc_FindEntityInSphere, victim, originF, radius)) != 0)
{
if (!is_user_alive(victim) || !zp_get_user_zombie(victim) || g_has_shield[victim])
continue;
new Float:dam = get_pcvar_float(cvar_damage);
if(get_user_health(victim) - get_pcvar_float(cvar_damage) > 0)
fakedamage(victim, "Pipe Bomb", dam, 256);
}
}
public light(const Float:originF[3], duration) // Blast ring and small red light around nade from zombie_plague40.sma. Great thx, MeRcyLeZZ!!! ;)
{
// Lighting
engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, originF, 0);
write_byte(TE_DLIGHT); // TE id
engfunc(EngFunc_WriteCoord, originF[0]); // x
engfunc(EngFunc_WriteCoord, originF[1]); // y
engfunc(EngFunc_WriteCoord, originF[2]); // z
write_byte(5); // radius
write_byte(128); // r
write_byte(0); // g
write_byte(0); // b
write_byte(51); //life
write_byte((duration < 2) ? 3 : 0); //decay rate
message_end();
// Smallest ring
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
write_byte(TE_BEAMCYLINDER) // TE id
engfunc(EngFunc_WriteCoord, originF[0]) // x
engfunc(EngFunc_WriteCoord, originF[1]) // y
engfunc(EngFunc_WriteCoord, originF[2]) // z
engfunc(EngFunc_WriteCoord, originF[0]) // x axis
engfunc(EngFunc_WriteCoord, originF[1]) // y axis
engfunc(EngFunc_WriteCoord, originF[2]+385.0) // z axis
write_short(g_ring) // sprite
write_byte(0) // startframe
write_byte(0) // framerate
write_byte(4) // life
write_byte(60) // width
write_byte(0) // noise
write_byte(128) // red
write_byte(0) // green
write_byte(0) // blue
write_byte(200) // brightness
write_byte(0) // speed
message_end()
// Medium ring
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
write_byte(TE_BEAMCYLINDER) // TE id
engfunc(EngFunc_WriteCoord, originF[0]) // x
engfunc(EngFunc_WriteCoord, originF[1]) // y
engfunc(EngFunc_WriteCoord, originF[2]) // z
engfunc(EngFunc_WriteCoord, originF[0]) // x axis
engfunc(EngFunc_WriteCoord, originF[1]) // y axis
engfunc(EngFunc_WriteCoord, originF[2]+470.0) // z axis
write_short(g_ring) // sprite
write_byte(0) // startframe
write_byte(0) // framerate
write_byte(4) // life
write_byte(60) // width
write_byte(0) // noise
write_byte(128) // red
write_byte(0) // green
write_byte(0) // blue
write_byte(200) // brightness
write_byte(0) // speed
message_end()
// Largest ring
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
write_byte(TE_BEAMCYLINDER) // TE id
engfunc(EngFunc_WriteCoord, originF[0]) // x
engfunc(EngFunc_WriteCoord, originF[1]) // y
engfunc(EngFunc_WriteCoord, originF[2]) // z
engfunc(EngFunc_WriteCoord, originF[0]) // x axis
engfunc(EngFunc_WriteCoord, originF[1]) // y axis
engfunc(EngFunc_WriteCoord, originF[2]+555.0) // z axis
write_short(g_ring) // sprite
write_byte(0) // startframe
write_byte(0) // framerate
write_byte(4) // life
write_byte(60) // width
write_byte(0) // noise
write_byte(128) // red
write_byte(0) // green
write_byte(0) // blue
write_byte(200) // brightness
write_byte(0) // speed
message_end()
}
public effect(const Float:originF[3]) // Explosion effect
{
// Largest ring
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
write_byte(TE_BEAMCYLINDER) // TE id
engfunc(EngFunc_WriteCoord, originF[0]) // x
engfunc(EngFunc_WriteCoord, originF[1]) // y
engfunc(EngFunc_WriteCoord, originF[2]) // z
engfunc(EngFunc_WriteCoord, originF[0]) // x axis
engfunc(EngFunc_WriteCoord, originF[1]) // y axis
engfunc(EngFunc_WriteCoord, originF[2]+555.0) // z axis
write_short(g_ring) // sprite
write_byte(0) // startframe
write_byte(0) // framerate
write_byte(4) // life
write_byte(60) // width
write_byte(0) // noise
write_byte(128) // red
write_byte(0) // green
write_byte(0) // blue
write_byte(200) // brightness
write_byte(0) // speed
message_end()
// Explosion sprite
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
write_byte(TE_EXPLOSION)
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2])
write_short(g_fire) //sprite index
write_byte(25) // scale in 0.1's
write_byte(10) // framerate
write_byte(0) // flags
message_end()
}
SendDeathMsg(attacker, victim) // Sends death message
{
message_begin(MSG_BROADCAST, g_death)
write_byte(attacker) // killer
write_byte(victim) // victim
write_byte(0) // headshot flag
write_string("Pipe Bomb") // killer's weapon
message_end()
}
UpdateFrags(attacker, frags, scoreboard) // Updates attacker frags
{
// Set attacker frags
set_pev(attacker, pev_frags, float(pev(attacker, pev_frags) + frags))
if(get_pcvar_num(cvar_extraap) > 0)
cs_set_user_money(attacker, cs_get_user_money(attacker) + get_pcvar_num(cvar_extraap));
// Update scoreboard with attacker and victim info
if (scoreboard)
{
message_begin(MSG_BROADCAST, g_score)
write_byte(attacker) // id
write_short(pev(attacker, pev_frags)) // frags
write_short(get_user_deaths(attacker)) // deaths
write_short(0) // class?
write_short(get_user_team(attacker)) // team
message_end()
}
}
public kill(const Float:originF[3], attacker) // Kills zombies in radius / 2 if mode = 1
{
static Float:radius, victim = -1;
radius = get_pcvar_float(cvar_radius) / 2.0;
while ((victim = engfunc(EngFunc_FindEntityInSphere, victim, originF, radius)) != 0)
{
if (!is_user_alive(victim) || !zp_get_user_zombie(victim) || g_has_shield[victim])
continue;
new Float:dam = get_pcvar_float(cvar_damage);
set_msg_block(g_death, BLOCK_SET);
fakedamage(victim, "Pipe Bomb", dam, 256);
set_msg_block(g_death, BLOCK_NOT);
if(get_user_health(victim) <= 0)
{
SendDeathMsg(attacker, victim);
if(victim != attacker && !zp_get_user_zombie(attacker))
UpdateFrags(attacker, 1, 1);
else
UpdateFrags(attacker, -1, 1);
}
}
}
models
Espero les sirva a alguien