Zombie Online
Últimos assuntos
» Zombie Plague Special 2.4 (24/04/2015)por [P]erfec[T] [S]cr[@]s[H] Qui Abr 30 2015, 13:19
» Ideia Para Novos Plugins
por willyan Sáb Dez 21 2013, 02:28
» [Extra Item] Modo Pain
por [P]erfec[T] [S]cr[@]s[H] Ter Dez 03 2013, 10:26
» Criando uma CVAR Simples
por Br7 Dom Dez 01 2013, 12:34
» Regras ao postar seu servidor
por MtsLa!<3.L Dom Dez 01 2013, 11:27
» Regras do nosso fórum
por MtsLa!<3.L Dom Dez 01 2013, 11:23
» [Plugin] Chapeus Natal
por MtsLa!<3.L Sáb Nov 30 2013, 21:20
» [Protecao] Ddos
por jone_pvh Sáb Nov 30 2013, 20:52
» Zombie Plague Advance New Modes v 1.0
por jone_pvh Sáb Nov 30 2013, 11:40
» Uso dos Ammo Packs no fórum
por MtsLa!<3.L Sex Nov 29 2013, 21:57
» (Valve Hammer)Tamanhos
por MtsLa!<3.L Sex Nov 29 2013, 21:48
» [Duelo] MtsLa!<3.L & Dexter S
por MtsLa!<3.L Sex Nov 29 2013, 15:44
» [Extra Item] Modo Goku
por MtsLa!<3.L Sex Nov 29 2013, 12:02
Os membros mais ativos da semana
Nenhum usuário |
Os que mais criam tópicos
MtsLa!<3.L | ||||
[P]erfec[T] [S]cr[@]s[H] | ||||
[D]etonado[R] | ||||
ApC # $ Awp PJL $ | ||||
Synopsis | ||||
Freddy Krueger [Jhadson] | ||||
waLLzyk | ||||
XaropinhoO | ||||
HDjose | ||||
Jovem_BR |
[Tutorial] Colocando Limite de Compras em um item extra
3 participantes
Página 1 de 1
[Tutorial] Colocando Limite de Compras em um item extra
Bom pessoal vô fazer um tutorial de como colcar limite em um item extra. Diferente do outro (que limita pela quantidade de players usando o mesmo item) esse dai var ser por limites de compra por round.
1º Passo: Escolha uma sma de algum item extra (eu usarei a antidote bomb como exemplo)
2º Passo: Abra a sma e coloque isso junto com as news
Coloque isso em dentro do plugin_init()
4º Passo: Fazendo o Limite Funcionar.
Vai ate o zp_extra_item_selected e coloque isso em dentro dele:
Feito isso vai ate o event_round_start e coloque isso de baixo na parte em que tem os g_has[player] = false OBS: Não é no infected_post ou outros que tenha g_has[player] = false sempre tem que ser na public do round_start.
OBS: Caso queira colocar o limite de compras por mapa o 5º Passo não sera necessario só ate o 4º Passo o limite conta por mapa.
SMA Pronta:
1º Passo: Escolha uma sma de algum item extra (eu usarei a antidote bomb como exemplo)
2º Passo: Abra a sma e coloque isso junto com as news
3º Passo: Registrando a cvar.new bought_limit[33], cvar_limit_bought
Coloque isso em dentro do plugin_init()
OBS: A quantia pode ser alterada pra 1, 2, 3 e por ai vai.cvar_limit_bought = register_cvar("zp_antidote_bomb_limit", "(Quantia)")
4º Passo: Fazendo o Limite Funcionar.
Vai ate o zp_extra_item_selected e coloque isso em dentro dele:
Feito isso vai ate onde fica os g_has[player] = true no extra_item_selected e coloque isso abaixo:if(bought_limit[player] >= get_pcvar_num(cvar_limit_boughts))
{
client_print(player, print_chat, "[ZP] Ja tacaram muitas bombas antidotos e nao podera atacar mais ") zp_set_user_ammo_packs(player, zp_get_user_ammo_packs(player) + item_cost)
return;
}
5º Passo: Zerando o contadorbought_limit[player]++
Feito isso vai ate o event_round_start e coloque isso de baixo na parte em que tem os g_has[player] = false OBS: Não é no infected_post ou outros que tenha g_has[player] = false sempre tem que ser na public do round_start.
Caso na sma não tenha esse event_round_start coloque isso em dentro do plugin_init():for(new id = 1; id <= get_maxplayers(); id++)
{
g_has[id] = false
bought_limit[id] = 0
}
E depois coloque isso em qualquer parte do plugin (de preferencia no final):register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
E pronto.public event_round_start()
{
for(new id = 1; id <= g_maxplayers; id++)
{
bought_limit[id] = 0
}
}
OBS: Caso queira colocar o limite de compras por mapa o 5º Passo não sera necessario só ate o 4º Passo o limite conta por mapa.
SMA Pronta:
- Código:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <zombieplague>
#include <hamsandwich>
#include <fakemeta_util>
#define PLUGIN "Nowy Plugin"
#define VERSION "1.0"
#define AUTHOR "Sn!ff3r"
new const NADE_TYPE_ANTIDOTEBOMB = 6969
new const Float:RADIUS = 240.0
new const sprite_grenade_trail[] = "sprites/laserbeam.spr"
new const sprite_grenade_ring[] = "sprites/shockwave.spr"
new const item_cost = 60
new const item_name[] = "Bomba antidoto"
new const model_grenade_infect[] = "models/zombie_plague/v_grenade_infect.mdl"
new item_id
new has_bomb[33]
new cvar_enabled, cvar_fragsinfect, cvar_ammoinfect, cvar_humanbonushp, cvar_flaregrenades
new g_trailSpr, g_exploSpr, g_msgScoreInfo, g_msgDeathMsg, g_msgScoreAttrib
new bought_limit[33], cvar_limit_bought
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
RegisterHam(Ham_Think, "grenade", "fw_ThinkGrenade")
RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
register_forward(FM_SetModel, "fw_SetModel")
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
register_message(get_user_msgid("CurWeapon"), "message_cur_weapon")
cvar_enabled = register_cvar("zp_antidote_bomb","1")
cvar_fragsinfect = get_cvar_pointer("zp_zombie_frags_for_infect")
cvar_ammoinfect = get_cvar_pointer("zp_zombie_infect_reward")
cvar_humanbonushp = register_cvar("zp_antidote_bomb_extra_hp","10")
cvar_flaregrenades = get_cvar_pointer("zp_flare_grenades")
cvar_limit_bought = register_cvar("zp_antidote_bomb_limit", "3")
g_msgScoreInfo = get_user_msgid("ScoreInfo")
g_msgDeathMsg = get_user_msgid("DeathMsg")
g_msgScoreAttrib = get_user_msgid("ScoreAttrib")
}
public event_round_start()
{
for(new id = 1; id <= get_maxplayers(); id++)
{
bought_limit[id] = 0
}
}
public plugin_precache()
{
g_trailSpr = engfunc(EngFunc_PrecacheModel, sprite_grenade_trail)
g_exploSpr = engfunc(EngFunc_PrecacheModel, sprite_grenade_ring)
engfunc(EngFunc_PrecacheModel, model_grenade_infect)
item_id = zp_register_extra_item(item_name,item_cost,ZP_TEAM_HUMAN)
}
public client_disconnect(id)
{
has_bomb[id] = 0
}
public zp_extra_item_selected(player, itemid)
{
if(itemid == item_id)
{
if(bought_limit[player] >= get_pcvar_num(cvar_limit_bought))
{
client_print(player, print_chat, "[ZP] Ja tacaram muitas bombas antidotos e nao podera atacar mais ")
zp_set_user_ammo_packs(player, zp_get_user_ammo_packs(player) + item_cost)
return;
}
else
{
has_bomb[player] = 1
bought_limit[player]++
fm_strip_user_gun(player,9)
fm_give_item(player,"weapon_smokegrenade")
}
}
}
public fw_PlayerKilled(victim, attacker, shouldgib)
{
has_bomb[victim] = 0
}
public fw_ThinkGrenade(entity)
{
static Float:dmgtime
pev(entity, pev_dmgtime, dmgtime)
if (dmgtime > get_gametime())
return HAM_IGNORED
if(pev(entity, pev_flTimeStepSound) == NADE_TYPE_ANTIDOTEBOMB)
antidote_explode(entity)
return HAM_SUPERCEDE
}
public fw_SetModel(entity, const model[])
{
if(!get_pcvar_num(cvar_enabled))
return
static Float:dmgtime
pev(entity, pev_dmgtime, dmgtime)
if (dmgtime == 0.0)
return
if (equal(model[7], "w_sm", 4))
{
new owner = pev(entity, pev_owner)
if(!zp_get_user_zombie(owner) && has_bomb[owner])
{
set_pcvar_num(cvar_flaregrenades,0)
fm_set_rendering(entity, kRenderFxGlowShell, 255, 128, 0, kRenderNormal, 16)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW) // TE id
write_short(entity) // entity
write_short(g_trailSpr) // sprite
write_byte(10) // life
write_byte(10) // width
write_byte(255) // r
write_byte(128) // g
write_byte(0) // b
write_byte(200) // brightness
message_end()
set_pev(entity, pev_flTimeStepSound, NADE_TYPE_ANTIDOTEBOMB)
}
}
}
public antidote_explode(ent)
{
if (!zp_has_round_started()) return
set_pcvar_num(cvar_flaregrenades,1)
static Float:originF[3]
pev(ent, pev_origin, originF)
create_blast(originF)
//engfunc(EngFunc_EmitSound, ent, CHAN_WEAPON, grenade_infect[random_num(0, sizeof grenade_infect - 1)], 1.0, ATTN_NORM, 0, PITCH_NORM)
static attacker
attacker = pev(ent, pev_owner)
has_bomb[attacker] = 0
static victim
victim = -1
while ((victim = engfunc(EngFunc_FindEntityInSphere, victim, originF, RADIUS)) != 0)
{
if (!is_user_alive(victim) || !zp_get_user_zombie(victim) || zp_get_user_nemesis(victim) || zp_get_user_first_zombie(victim) || zp_get_user_last_zombie(victim))
continue
SendDeathMsg(attacker, victim)
FixDeadAttrib(victim)
UpdateFrags(attacker, victim, get_pcvar_num(cvar_fragsinfect), 1, 1)
zp_disinfect_user(victim)
zp_set_user_ammo_packs(attacker,zp_get_user_ammo_packs(attacker) + get_pcvar_num(cvar_ammoinfect))
fm_set_user_health(attacker, pev(attacker, pev_health)+get_pcvar_num(cvar_humanbonushp))
}
engfunc(EngFunc_RemoveEntity, ent)
}
public create_blast(const Float:originF[3])
{
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_exploSpr) // 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(128) // green
write_byte(0) // blue
write_byte(200) // brightness
write_byte(0) // speed
message_end()
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_exploSpr) // 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(164) // green
write_byte(0) // blue
write_byte(200) // brightness
write_byte(0) // speed
message_end()
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_exploSpr) // 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(200) // green
write_byte(0) // blue
write_byte(200) // brightness
write_byte(0) // speed
message_end()
}
public UpdateFrags(attacker, victim, frags, deaths, scoreboard)
{
set_pev(attacker, pev_frags, float(pev(attacker, pev_frags) + frags))
fm_set_user_deaths(victim, fm_get_user_deaths(victim) + deaths)
if (scoreboard)
{
message_begin(MSG_BROADCAST, g_msgScoreInfo)
write_byte(attacker) // id
write_short(pev(attacker, pev_frags)) // frags
write_short(fm_get_user_deaths(attacker)) // deaths
write_short(0) // class?
write_short(fm_get_user_team(attacker)) // team
message_end()
message_begin(MSG_BROADCAST, g_msgScoreInfo)
write_byte(victim) // id
write_short(pev(victim, pev_frags)) // frags
write_short(fm_get_user_deaths(victim)) // deaths
write_short(0) // class?
write_short(fm_get_user_team(victim)) // team
message_end()
}
}
stock fm_set_user_deaths(id, value)
{
set_pdata_int(id, 444, value, 5)
}
stock fm_get_user_deaths(id)
{
return get_pdata_int(id, 444, 5)
}
stock fm_get_user_team(id)
{
return get_pdata_int(id, 114, 5)
}
public SendDeathMsg(attacker, victim)
{
message_begin(MSG_BROADCAST, g_msgDeathMsg)
write_byte(attacker) // killer
write_byte(victim) // victim
write_byte(1) // headshot flag
write_string("grenade") // killer's weapon
message_end()
}
public FixDeadAttrib(id)
{
message_begin(MSG_BROADCAST, g_msgScoreAttrib)
write_byte(id) // id
write_byte(0) // attrib
message_end()
}
public replace_models(id)
{
if (!is_user_alive(id))
return
if(get_user_weapon(id) == CSW_SMOKEGRENADE && has_bomb[id])
{
set_pev(id, pev_viewmodel2, model_grenade_infect)
}
}
public message_cur_weapon(msg_id, msg_dest, msg_entity)
{
replace_models(msg_entity)
}
[P]erfec[T] [S]cr[@]s[H]- Administrador
- Mensagens : 27
Ammos Pakcs : 15088
Honra : 11
Data de inscrição : 19/10/2013
Idade : 28
Localização : Na Cadeirinda do Pc
Re: [Tutorial] Colocando Limite de Compras em um item extra
Boaa , O [P]erfec[T] [S]cr[@]s[H] Tem como vc fazer um que limita por pessoa tipo eu to no sv e compro 1 eo limite é 2 ai eu compro outro ai eu ñ posso mais compra maais os outros player vai ter 2 mesmo assim , consegue ?
ApC # $ Awp PJL $- Ex-Staff
- Mensagens : 18
Ammos Pakcs : 11813
Honra : 126
Data de inscrição : 06/10/2013
Idade : 31
Re: [Tutorial] Colocando Limite de Compras em um item extra
Booa , tava precisando disso ^^
Synopsis- Parceiros
- Mensagens : 6
Ammos Pakcs : 4888
Honra : 20
Data de inscrição : 22/10/2013
Tópicos semelhantes
» [Tutorial] Colocando Limite em armas
» [Tutorial] Colocando Efeito Nas Granadas
» [Extra Item] Ethereal + Sma
» [Tutorial] Bloqueando os jogadores de acessar o menu de compras antes do round comecar
» [Extra Item] Modo Goku
» [Tutorial] Colocando Efeito Nas Granadas
» [Extra Item] Ethereal + Sma
» [Tutorial] Bloqueando os jogadores de acessar o menu de compras antes do round comecar
» [Extra Item] Modo Goku
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos