lovenina12
Descrição
Esse é um Item Extra para Zumbis, que fazem a pessoa acreditar que você realmente morreu!
O que acontece por alguns fatores:
Um clone seu é criado na hora que o item é ativado e ele faz a animação de morte
Com o cvar KillMessg ativado (OBSERVAÇÕES) ele manda uma mensagem FAKE que o player morreu!
Pode fazer um Fake da Thunder M4A1 & AK47 tambem, caindo o raio e tudo mais (por cvar)
Plugin em si:
Nome do Item
Dead Ringer ( Toque da Morte, Clone Mortal )
Origem
Eu montei o plugin mais a ideia não foi minha, esse item existe no jogo Team Fortress 2
O que faz?
Simula uma morte
Pra que Time?
Apenas para zumbis
Cade o SMA?
Vai tar ali embaixo, apressadinho '-'
Como uso?
Olha, você compra ele e quando você quiser ativar o efeito, você vai apertar [Z] e esperar tomar 1 tiro ou sofrer qualquer dano ( até por queda se não me engano ), quando o dano acontecer os efeitos vão acontecer juntos!
Descrição
Esse é um Item Extra para Zumbis, que fazem a pessoa acreditar que você realmente morreu!
O que acontece por alguns fatores:
Um clone seu é criado na hora que o item é ativado e ele faz a animação de morte
Com o cvar KillMessg ativado (OBSERVAÇÕES) ele manda uma mensagem FAKE que o player morreu!
Pode fazer um Fake da Thunder M4A1 & AK47 tambem, caindo o raio e tudo mais (por cvar)
E simplesmente porque você vai tomar o tiro e tudo isso vai acontecer enquanto você fica invisivel por 5 segundos e vai la matar o cara que atirou em você =)
Plugin em si:
Nome do Item
Dead Ringer ( Toque da Morte, Clone Mortal )
Origem
Eu montei o plugin mais a ideia não foi minha, esse item existe no jogo Team Fortress 2
O que faz?
Simula uma morte
Pra que Time?
Apenas para zumbis
Cade o SMA?
Vai tar ali embaixo, apressadinho '-'
Como uso?
Olha, você compra ele e quando você quiser ativar o efeito, você vai apertar [Z] e esperar tomar 1 tiro ou sofrer qualquer dano ( até por queda se não me engano ), quando o dano acontecer os efeitos vão acontecer juntos!
[SMA IN-TOPIC]
Código:
/***************************************************************************
Esse plugin faz o seguinte: Quando o zombie tomar um tiro ele ficara invisivel por 5 segundos
enquanto um corpo falso cai e finge de morto. O zumbi vai um pouco pra tras pra evitar o fato
de que se o player continuar atirando vai acertar o zumbi mesmo invisivel.
Simplesmente simula uma morte e segundos depois voce esta perto do inimigo pronto pra infectar!
Creditos:
Team Fortress II - Item Original
AnGeL - o plugin em si
[P]erfec[T] [S]cr[@]s[H] - Knockback
Enigmaya - Fake Player ( foi necessario pra copiar o model do zumbi )
GuhRDS - Death Drop Egg - Nao sabia criar um novo item ( o caso do clone ) entao usei o plugin dele e modifiquei coisinhas
***************************************************************************/
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>
#include <fakemeta_util>
#include <engine>
#include < fun >
#include <cstrike>
#include <zombieplague>
#define SEQUENCEID = 104
new const item_class_name[] = "dm_item"
new cvar_knockback, cvar_invistime, cvar_losedeath, cvar_thunderon, cvar_thundglow, cvar_killmessg
new g_itemid
new bool:g_Ringer[33], bool:g_Activated[33]
public plugin_init()
{
register_plugin("[TEAM FORTRESS] Dead Ringer Effect", "1.0", "AnGeL FeniX")
RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
RegisterHam(Ham_Spawn, "player", "fw_Spawn")
RegisterHam(Ham_Killed, "player", "fw_Killed")
cvar_knockback = register_cvar("zp_deadringer_knockback", "150") // Forca do Knockback
cvar_invistime = register_cvar("zp_deadringer_invistime", "5.0") // Duracao da Invisibilidade
cvar_losedeath = register_cvar("zp_deadringer_losedeath", "0") // Perde quando morre?
cvar_thunderon = register_cvar("zp_deadringer_thunderon", "1") // Ative caso tenha as armas thunder no server!
cvar_thundglow = register_cvar("zp_deadringer_thundglow", "1") // Glow RED do Thunder
cvar_killmessg = register_cvar("zp_deadringer_killmessg", "1") // Msg ao matar (item & real)LEIA----: Caso seu server tenha o plugin que ja faz isso, desative o plugin e ative esse cvar!
g_itemid = zp_register_extra_item("Dead Ringer", 40, ZP_TEAM_ZOMBIE)
register_clcmd("radio1", "use_ability")
}
public fw_Killed(victim, attacker, shouldgib)
{
if(get_pcvar_num(cvar_killmessg) == 1)
killmsg(victim, attacker)
}
public use_ability(id)
{
if(g_Activated[id] && g_Ringer[id])
{
g_Activated[id] = false
client_print(id, print_center, "Dead Ringer Desativado")
return PLUGIN_HANDLED
}
else if(!g_Activated[id] && g_Ringer[id])
{
g_Activated[id] = true
client_print(id, print_center, "Dead Ringer Ativado")
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
// Perde o item
public zp_user_humanized_pre(id, survivor)
{
g_Ringer[id] = false
g_Activated[id] = false
}
public zp_user_infected_pre(id, infector, nemesis)
{
g_Ringer[id] = false
g_Activated[id] = false
}
// Nao e recomendado por mim colocar pra perder quando morrer, se nao o preco tem que ser baixo.
public fw_Spawn(id)
{
if(get_pcvar_num(cvar_losedeath) == 1)
{
g_Ringer[id] = false
g_Activated[id] = false
}
}
public zp_extra_item_selected(id, itemid)
{
if(itemid == g_itemid)
{
g_Ringer[id] = true
g_Activated[id] = false
client_print(id, print_chat, "Voce comprou o Dead Ringer, use o [Z]")
client_print(id, print_chat, "para ativar e desativar o efeito.!")
}
}
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
if(g_Ringer[victim] && zp_get_user_zombie(victim) && g_Activated[victim])
{
new origin[3]
get_user_origin(victim, origin, 0)
new model[64]
cs_get_user_model(victim, model, 63)
// Clone
ExecuteHam(Ham_DeathNotice, victim, attacker)
new modelstring[64];
format(modelstring,63,"models/player/%s/%s.mdl",model,model)
if(get_user_button(victim) & IN_DUCK)
criaClone(origin, 104, modelstring, attacker)
else
criaClone(origin, 110, modelstring, attacker)
// Player Original
set_user_rendering(victim, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 0)
set_task(get_pcvar_float(cvar_invistime), "reset_invis", victim)
set_user_knockback(victim, attacker, get_pcvar_num(cvar_knockback))
g_Ringer[victim] = false
g_Activated[victim] = false
if(get_pcvar_num(cvar_killmessg) == 1)
killmsg(victim, attacker)
client_print(victim, print_center, "Voce esta invisivel por alguns segundos, se vingue!")
}
return PLUGIN_CONTINUE
}
public reset_invis(id)
{
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 255)
client_print(id, print_center, "Sua invisibilidade acabou!")
}
// Outros
public criaClone(origin[3], const Sequence, const Model[64], attacker) {
new ent = fm_create_entity("info_target")
set_pev(ent, pev_classname, item_class_name)
engfunc(EngFunc_SetModel,ent, Model)
set_pev(ent, pev_mins, Float:{-10.0, -10.0,0.0})
set_pev(ent, pev_maxs, Float:{10.0, 10.0,25.0})
set_pev(ent, pev_size, Float:{-10.0, -10.0, 0.0, 10.0, 10.0, 25.0})
engfunc(EngFunc_SetSize, ent, Float:{-10.0, -10.0, 0.0}, Float:{10.0, 10.0, 25.0})
new Float:fOrigin[3]
origin[2]-=7
IVecFVec(origin, fOrigin)
set_pev(ent, pev_origin, fOrigin)
new weapon = get_user_weapon(attacker)
if(get_pcvar_num(cvar_thunderon) == 1 && get_pcvar_num(cvar_thundglow) == 1 && (weapon == CSW_M4A1 || weapon == CSW_AK47))
{
set_pev(ent, pev_renderfx, kRenderFxGlowShell)
set_pev(ent, pev_rendercolor, Float:{255.0, 255.0, 255.0})
}
set_pev( ent, pev_sequence, Sequence )
set_pev( ent, pev_animtime, get_gametime() );
set_pev( ent, pev_frame, 0 );
set_pev( ent, pev_framerate, 1.0 );
}
stock set_user_knockback(victim, attacker, force) // Creditos [P]erfec[T] [S]cr[@]s[H]
{
new Float:vec[3];
new Float:oldvelo[3];
get_user_velocity(victim, oldvelo);
create_velocity_vector(victim , attacker , vec, force);
vec[0] += oldvelo[0];
vec[1] += oldvelo[1];
set_user_velocity(victim , vec);
}
stock create_velocity_vector(victim,attacker,Float:velocity[3], force) // Creditos [P]erfec[T] [S]cr[@]s[H]
{
if(victim > 0 && victim < 33)
{
if(!is_user_alive(attacker))
return 0;
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;
new a = force
velocity[0] = ( origin2[0] * (100 *a) ) / get_entity_distance(victim , attacker);
velocity[1] = ( origin2[1] * (100 *a) ) / get_entity_distance(victim , attacker);
if(velocity[0] <= 20.0 || velocity[1] <= 20.0)
velocity[2] = random_float(200.0 , 275.0);
}
return 1;
}
stock client_printcolor(const id, const input[], any:...) {
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Chat Verde
replace_all(msg, 190, "!y", "^1") // Chat Normal
replace_all(msg, 190, "!t", "^3") // Chat Do Time Tr=Vermelho Ct=Azul Spec=Branco
if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++) {
if (is_user_connected(players[i])) {
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}
killmsg(victim, attacker)
{
new vname[32], aname[32]
get_user_name(victim, vname, 31)
get_user_name(attacker, aname, 31)
client_printcolor(0, "!g[ZP] !t%s !gmatou o !t%s!g!", aname, vname)
}
Download ( Compilado & SMA )
https://www.mediafire.com/?52ugrm7cd6gv9md
Observações:
1º Sobre o Kill Messg, você tem que olhar no SMA, se seu server ja tiver um sistema desses, desative ele e use o do plugin se não quando vc matar de verdade aparecer 2x a mensagem e quando for ativado pelo clone fake so aparecerá 1 e isso entregara o jogo.
1º Sobre o Kill Messg, você tem que olhar no SMA, se seu server ja tiver um sistema desses, desative ele e use o do plugin se não quando vc matar de verdade aparecer 2x a mensagem e quando for ativado pelo clone fake so aparecerá 1 e isso entregara o jogo.
2º O plugin esta incompleto
3º O Knockback existe pra que quando o item seja ativado e o cara continuar atirando, ele não ficar acertando vc mesmo invisivel!
4º Tem 2 coisas importantes pra configurar que é meio necessário. O cvar das armas Thunder, ativar/desativar o Glow ( alguns servers não tem e outros tem ) & o cvar da KillMessg
Previews:
- Irá fazer 1 DeathNotice falso como isso na hora que o efeito acontece:
- Irá mudar o Model da M4A1 & AK47 para os models da Thunder (nesse caso, esse item extra também devera ficar lá em cima junto com as armas thunder para não bugar os models dos item extra)
- Sugestione
Última edição por lovenina12 em 29/5/2014, 3:37 pm, editado 5 vez(es)