Plugin-uri[Zombie mod] Liderul oamenilor

Moderatori: Moderators, Founder

Mesaj

Avatar utilizator
CEO
Posts
3802
Descriere: Jucatorul care are cele mai multe fraguri si cele mai putine decese, va fi ales liderul echipei. Acesta primeste trail, glow, aura (fiecare se seteaza din cvar) si va fi anuntat printr-un mesaj in chat. Acest plugin este conceput doar pentru modul biohazard.

Descarcare: Aici

SMA (pentru biohazard) |

Cod: Selectaţi tot

/*
* CREDITS:
* - tuty *for Trail Player
*/

#include <amxmodx>
#include <fun>
#include <fakemeta>
#include <biohazard>

#define TASK_AURA 1292

enum attributes
{
GLOW = 0,
TRAIL,
AURA
};
new cvar[attributes];
new trail_randomcolor[3], trail[33], Float:bflNextCheck[33];
new leader = -1, last_leader = -1, g_rounds = 0, trail_sprite;

new const g_trail_sprite[] = "sprites/zbeam2.spr";
const IN_MOVING = IN_FORWARD | IN_BACK | IN_MOVELEFT | IN_MOVERIGHT | IN_JUMP;

public plugin_init()
{
register_plugin("[Biohazard] Leader", "1.0", "YONTU");

register_logevent("le_RoundStart", 2, "1=Round_Start");
register_logevent("le_RoundRestart", 2, "1&Restart_Round_");
register_logevent("le_RoundRestart", 2, "1=Game_Commencing");

register_event("DeathMsg", "event_DeathMsg", "a");

register_forward(FM_CmdStart, "fw_CmdStart");

cvar[GLOW] = register_cvar("bio_leader_glow", "1");
cvar[TRAIL] = register_cvar("bio_leader_trail", "1");
cvar[AURA] = register_cvar("bio_leader_aura", "1");
}

public plugin_precache()
{
trail_sprite = precache_model(g_trail_sprite);
}

public le_RoundRestart()
{
g_rounds = 0;
}

public client_disconnect(id)
{
return_to_default(leader);
set_task(0.1, "check_leader");
}

public le_RoundStart()
{
if(g_rounds == 1)
{
g_rounds = -1;
}
else if(g_rounds != -1)
{
g_rounds = 1;
}

return_to_default(leader);
return_to_default(last_leader);
last_leader = -1;
}

public event_infect(victim, attacker)
{
set_task(0.5, "check_leader");
}

public event_DeathMsg()
{
set_task(0.5, "check_leader");
}

public event_gamestart()
{
set_task(0.5, "check_leader");
}

public check_leader()
{
if(!game_started() || g_rounds == 0 || g_rounds == 1)
{
return;
}

leader = get_leader();

if(last_leader != leader && last_leader != -1)
{
return_to_default(leader);
return_to_default(last_leader);
last_leader = -1;
}

if(leader != last_leader)
{
trail_randomcolor[0] = random_num(0, 255);
trail_randomcolor[1] = random_num(0, 255);
trail_randomcolor[2] = random_num(0, 255);

if(get_pcvar_num(cvar[GLOW]))
{
set_user_rendering(leader, kRenderFxGlowShell, trail_randomcolor[0], trail_randomcolor[1], trail_randomcolor[2], kRenderNormal, 15);
}

if(get_pcvar_num(cvar[TRAIL]))
{
trail[leader] = 1;
}

if(get_pcvar_num(cvar[AURA]))
{
set_task(0.1, "leader_aura", leader + TASK_AURA, _, _, "b");
}

new name[32];
get_user_name(leader, name, charsmax(name));
ColorChat(0, "!4[Biohazard]!1 Noul lider al acestei runde este!3 %s!1.", name);

last_leader = leader;
}
}

public fw_CmdStart(id, handle)
{
if(!get_pcvar_num(cvar[TRAIL]))
{
return FMRES_HANDLED;
}

if(leader != last_leader)
{
id = leader;
}

if(!is_user_alive(id) || trail[id] == 0)
{
return FMRES_IGNORED;
}

new iButton = get_uc(handle, UC_Buttons);

if(!(iButton & IN_MOVING))
{
new Float:flGameTime = get_gametime();

if(bflNextCheck[id] < flGameTime)
{
UTIL_KillBeamFollow(id);
UTIL_BeamFollow(id);

bflNextCheck[id] = flGameTime + (15 / 8);
}
}

return FMRES_IGNORED;
}

public get_leader_handler(id1, id2)
{
if(get_user_frags(id1) > get_user_frags(id2) || get_user_frags(id1) == get_user_frags(id2) && get_user_deaths(id1) < get_user_deaths(id2))
return -1;

return 1;
}

public get_leader()
{
new players[32], num;
get_players(players, num, "aeh", "CT");

SortCustom1D(players, num, "get_leader_handler");

return players[0];
}

public leader_aura(taskid)
{
new id = taskid - TASK_AURA;

new origin[3];
get_user_origin(id, origin);

message_begin(MSG_PVS, SVC_TEMPENTITY, origin);
write_byte(TE_DLIGHT);
write_coord(origin[0]);
write_coord(origin[1]);
write_coord(origin[2]);
write_byte(20);
write_byte(trail_randomcolor[0]);
write_byte(trail_randomcolor[1]);
write_byte(trail_randomcolor[2]);
write_byte(2);
write_byte(0);
message_end();
}

stock UTIL_BeamFollow(const id)
{
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(TE_BEAMFOLLOW);
write_short(id);
write_short(trail_sprite);
write_byte(15);
write_byte(20);
write_byte(trail_randomcolor[0]);
write_byte(trail_randomcolor[1]);
write_byte(trail_randomcolor[2]);
write_byte(255);
message_end();
}

stock UTIL_KillBeamFollow(const id)
{
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(TE_KILLBEAM);
write_short(id);
message_end();
}

stock return_to_default(id)
{
if(!(1 <= id <= 32) || !is_user_connected(id))
return;

set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderNormal, 0);
trail[id] = 0;
bflNextCheck[id] = -1.0;
UTIL_KillBeamFollow(id);
remove_task(id + TASK_AURA);
}

stock ColorChat(id, String[], any:...)
{
static szMesage[192];
vformat(szMesage, charsmax(szMesage), String, 3);

replace_all(szMesage, charsmax(szMesage), "!1", "^1");
replace_all(szMesage, charsmax(szMesage), "!3", "^3");
replace_all(szMesage, charsmax(szMesage), "!4", "^4");

static g_msg_SayText = 0;
if(!g_msg_SayText)
g_msg_SayText = get_user_msgid("SayText");

new Players[32], iNum = 1, i;

if(id) Players[0] = id;
else get_players(Players, iNum, "ch");

for(--iNum; iNum >= 0; iNum--)
{
i = Players[iNum];

message_begin(MSG_ONE_UNRELIABLE, g_msg_SayText, _, i);
write_byte(i);
write_string(szMesage);
message_end();
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1048\\ f0\\ fs16 \n\\ par }
*/


Nume plugin: [Zombie mod] Leader
Versiune: 1.0

Instalare:
1. Fisierul bio_leader.sma il puneti in addons/amxmodx/scripting
2. Fisierul bio_leader.amxx il puneti in addons/amxmodx/plugins
3. Intrati in fisierul addons/amxmodx/configs/plugins.ini si adaugati la urma:
Code:
bio_leader.amxx

4. Alti pasi necesari:

Cvar-uri (se adauga in fisierul addons/amxmodx/configs/amxx.cfg):
bio_leader_trail "1/0" - 1: esti urmat de o dara in spatele tau | 0: oprit
bio_leader_glow "1/0" - 1: stralucesti | 0: oprit
bio_leader_aura "1/0" - 1: in functie de pozitia ta, in jurul tau totul straluceste | 0: oprit

Comenzi administrative (se tasteaza in consola si trebuie sa fiti admin): NU necesita.

Comenzi publice (se tasteaza in joc prin apasarea tastei Y sau U): NU necesita.

Module necesare (se sterge ; din fata modului de mai jos):
fun
fakemeta

Imagini



Alte informatii:
- Culorile pentru trail/glow/aura sunt alese random (aleatoriu) pentru mai multa distractie.
- Acest plugin este unul pentru FUN.
========================
CONTACT : diliulro@yahoo.com
========================
Scrie răspuns