[Plugin] Furien VIP

Sign in to follow this  

About This File

Descriere: Am vazut ca multe servere au nevoie de un plugin complex pentru VIP . Astazi am facut acest plugin, si sa il public sa il aveti si voi . :)

 

Nume: Furien VIP

Versiune: 1.0

Autor: hadesownage

Multumiri: geo_neo9

 

Instalare:

1. Fisierul furien_vip.sma il puneti in addons/amxmodx/scripting

2. Fisierul furien_vip.amxx il puneti in addons/amxmodx/plugins

4. Fisierul colorchat.inc il puneti in addons/amxmodx/scripting/include

5. Fisierul vip.html il puneti in addons/amxmodx/configs

3. Intrati in fisierul addons/amxmodx/configs/plugins.ini si adaugati la urma:

furien_vip.amxx

 

 

Cvar-uri (se adauga in fisierul amxmodx\configs\amxx.cfg):

-

 

Comenzi publice (se tasteaza in joc prin apasarea tastei Y):

/furienvip - Afiseaza meniul VIP, doar vipii au acces

/vips - Afiseaza VIPII online

/vip - Afiseaza informatii despre vip

 

Module necesare (se sterge ; din fata modulului de mai jos; acestea le gasiti in fisierul amxmodx\configs\modules.ini):

cstrike

fun

hamsandwich

 

Avantaje:

Meniul unui VIP contine urmatoarele:

GRAVITATIE

INVIZIBILITATE

M4A1 + DEAGLE

AK47 + DEAGLE

HEGRENADE + FLASHBANG

 

Alte Detalii:

* Meniul VIP se poate utiliza doar odata pe runda .

* Doar anti-furienii pot folosi meniul .

* Flagul pentru vip este "R", se poate modifica din sma:

#define ACCES "ADMIN_LEVEL_F"

#define ACCES_LEVEL ADMIN_LEVEL_F

 

 

Sursa:

Furien VIP

 

 

#include <amxmodx>

#include <amxmisc>

#include <cstrike>

#include <hamsandwich>

#include <fun>

#include <colorchat>

 

#define PLUGIN "VIP PLUGIN"

#define VERSION "1.0"

#define AUTHOR "hadesownage"

 

#define ACCES "ADMIN_LEVEL_F"

#define ACCES_LEVEL ADMIN_LEVEL_F

#define MAX_HEALTH 225

 

#define COLOR "^x04"

#define CONTACT "/vip pentru detalii"

 

new maxplayers

new gmsgSayText

new g_ScoreAttrib;

 

new limita[33];

 

new gHealth_add, gHealth_max

 

public plugin_init() {

register_plugin(PLUGIN, VERSION, AUTHOR)

gHealth_add = register_cvar("vip_hp_add", "5")

gHealth_max = register_cvar("vip_hp_max", "100")

register_event("DeathMsg", "VIP_KILL", "ae")

register_event("CurWeapon", "CurWeapon", "be", "1=1")

RegisterHam(Ham_Spawn, "player", "SetSomeThing", 1)

register_logevent("round_start", 2, "1=Round_Start")

register_clcmd ("say /vip" , "vipinfo" , -1);

register_clcmd ("say_team /vip" , "vipinfo" , -1);

register_clcmd("say /furienvip", "check_acces");

register_clcmd("say /vips", "print_adminlist");

maxplayers = get_maxplayers()

gmsgSayText = get_user_msgid("SayText")

register_cvar("amx_contactinfo", CONTACT, FCVAR_SERVER)

RegisterHam(Ham_Spawn, "player", "HamPlayerSpawn", 0);

g_ScoreAttrib = get_user_msgid("ScoreAttrib");

register_event("ResetHUD", "resetModel", "b")

return PLUGIN_CONTINUE

}

 

public round_start()

{

new iPlayers[32]

new iNum

 

get_players( iPlayers, iNum )

 

for( new i = 0; i < iNum; i++ )

{

limita[iPlayers] = 0;

}

}

 

public VIP_KILL() {

new killer = read_data(1)

new victim = read_data(2)

 

if(!killer || !victim)

return

 

if(get_user_flags(killer) & ACCES_LEVEL) {

if(killer && is_user_alive(killer)) {

if(cs_get_user_team(victim) == CS_TEAM_T) {

if(get_user_health(killer) < 200 - 10) {

set_user_health(killer, get_user_health(killer) + 10)

}

 

if(cs_get_user_money(killer) < 16000 - 800) {

cs_set_user_money(killer, cs_get_user_money(killer) + 800)

}

 

}

 

if(cs_get_user_team(victim) == CS_TEAM_CT) {

if(cs_get_user_money(killer) < 16000 - 700) {

cs_set_user_money(killer, cs_get_user_money(killer) + 700)

}

}

}

}

}

 

public SetSomeThing(id) {

if(!(get_user_flags(id) & ACCES_LEVEL))

return

 

if(get_user_health(id) < 225) {

set_user_health(id, 225)

}

 

if(get_user_armor(id) < 225) {

set_user_armor(id, 225)

}

 

set_task(0.5, "ScoreBoard", id + 6910)

}

 

public ScoreBoard(tID) {

new id = tID - 6910

 

message_begin(MSG_ALL, get_user_msgid("ScoreAttrib"))

write_byte(id)

write_byte(4)

message_end()

}

 

public CurWeapon(id) {

if(!(get_user_flags(id) & ACCES_LEVEL))

return

 

new CW = read_data(2)

 

if(CW != CSW_KNIFE)

return

else

 

if(get_user_health(id) < 50)

set_task(5.0, "hp_up",id, _, _, "b")

}

 

public hp_up(id) {

new addhealth = get_pcvar_num(gHealth_add)

if(!addhealth)

return

 

new maxhealth = get_pcvar_num(gHealth_max)

 

if(maxhealth > MAX_HEALTH) {

set_pcvar_num(gHealth_max, MAX_HEALTH)

maxhealth = MAX_HEALTH

}

 

new health = get_user_health(id)

 

if(is_user_alive(id) && (health < maxhealth)) {

set_user_health(id, health + addhealth)

new cvar_health[5]

get_pcvar_string(gHealth_max, cvar_health, 4)

set_hudmessage(0, 255, 0, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.1, 4)

show_hudmessage(id, "[VIP-REGENERATION] Viata ta se incarca pana la %s !", cvar_health)

message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id)

write_short(1<<10)

write_short(1<<10)

write_short(0x0000)

write_byte(0)

write_byte(191)

write_byte(255)

write_byte(75)

message_end()

} else {

if(is_user_alive(id) && (health > maxhealth))

emit_sound(id,CHAN_VOICE, "fvox/medical_repaired.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)

 

remove_task(id)

}

 

 

}

 

public vipinfo(id) show_motd(id,"/addons/amxmodx/configs/vip.html")

 

public print_adminlist(user)

{

new adminnames[33][32]

new message[256]

new contactinfo[256], contact[112]

new id, count, x, len

 

for(id = 1 ; id <= maxplayers ; id++)

if(is_user_connected(id))

if( get_user_flags(id) & read_flags(ACCES) )

get_user_name(id, adminnames[count++], 31)

 

len = format(message, 255, "%s VIPS ONLINE: ",COLOR)

if(count > 0) {

for(x = 0 ; x < count ; x++) {

len += format(message[len], 255-len, "%s%s ", adminnames[x], x < (count-1) ? ", ":"")

if(len > 96 ) {

print_message(user, message)

len = format(message, 255, "%s ",COLOR)

}

}

print_message(user, message)

}

else {

len += format(message[len], 255-len, "Nici un VIP online.")

print_message(user, message)

}

 

get_cvar_string("amx_contactinfo", contact, 63)

if(contact[0]) {

format(contactinfo, 111, "%s Cumpara VIP -- %s", COLOR, contact)

print_message(user, contactinfo)

}

}

 

print_message(id, msg[]) {

message_begin(MSG_ONE, gmsgSayText, {0,0,0}, id)

write_byte(id)

write_string(msg)

message_end()

}

 

public HamPlayerSpawn(id)

{

if( get_user_flags(id) & read_flags(ACCES) )

{

set_user_scoreattrib(id, 4);

}

}

stock set_user_scoreattrib(id,

attrib = 0)

{

message_begin(MSG_BROADCAST, g_ScoreAttrib, _, 0);

write_byte(id);

write_byte(attrib);

message_end( );

}

 

public plugin_precache() {

precache_model("models/player/vip_ct/vip_ct.mdl")

precache_model("models/player/vip_t/vip_t.mdl")

 

return PLUGIN_CONTINUE

}

 

public resetModel(id, level, cid) {

if( get_user_flags(id) & read_flags(ACCES) ) {

new CsTeams:userTeam = cs_get_user_team(id)

if (userTeam == CS_TEAM_T) {

cs_set_user_model(id, "vip_t")

}

else if(userTeam == CS_TEAM_CT) {

 

set_user_rendering(id,kRenderFxGlowShell,0,176,255,kRenderFxNone,0)

cs_set_user_model(id, "vip_ct")

}

else {

cs_reset_user_model(id)

}

}

 

return PLUGIN_CONTINUE

}

 

public check_acces(id){

if(!is_user_alive(id))

return PLUGIN_HANDLED;

 

if(limita[id] == 1){

ColorChat(id,GREEN,"[Furien VIP]^x01 Ai folosit deja meniul");

return PLUGIN_HANDLED;

}

 

if( get_user_flags(id) & read_flags(ACCES) && (cs_get_user_team(id) == CS_TEAM_CT) )

furien_menu(id)

else

ColorChat(id,GREEN,"[Furien VIP]^x01 Nu ai acces la meniu");

 

return PLUGIN_CONTINUE

}

 

public furien_menu(id){

new menu = menu_create( "Furien VIP Menu", "menu_handler" )

menu_additem(menu, "GRAVITATIE", "1", 0)

menu_additem(menu, "INVIZIBILITATE", "2", 0)

menu_additem(menu, "M4A1 + DEAGLE", "3", 0)

menu_additem(menu, "AK47 + DEAGLE", "4", 0)

menu_additem(menu, "HEGRENADE + FLASHBANG", "5", 0)

 

menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);

menu_display(id, menu, 0);

}

 

public menu_handler ( id, menu, item ) {

 

if( item == MENU_EXIT )

{

return 1

}

 

new data[6], szName[64];

new access, callback;

menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);

new key = str_to_num(data);

 

switch(key)

{

 

case 1:{

ColorChat(id,GREEN,"[Furien VIP]^x01 Acum poti sari mai tare");

set_user_gravity(id,0.7)

limita[id] += 1

}

 

case 2:{

ColorChat(id,GREEN,"[Furien VIP]^x01 Acum esti 100% invizibil");

set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 0);

limita[id] += 1

}

 

case 3:{

ColorChat(id,GREEN,"[Furien VIP]^x01 Ai primit M4A1 + DEAGLE");

give_item(id, "weapon_m4a1");

give_item(id, "weapon_deagle");

cs_set_user_bpammo(id, CSW_M4A1, 90);

cs_set_user_bpammo(id, CSW_DEAGLE, 35);

limita[id] += 1

}

 

case 4:{

ColorChat(id,GREEN,"[Furien VIP]^x01 Ai primit AK47 + DEAGLE");

give_item(id, "weapon_ak47");

give_item(id, "weapon_deagle");

cs_set_user_bpammo(id, CSW_AK47, 90);

cs_set_user_bpammo(id, CSW_DEAGLE, 35);

limita[id] += 1

}

 

case 5:{

ColorChat(id,GREEN,"[Furien VIP]^x01 Ai primit 2 Flashuri + 1 HE");

give_item(id, "weapon_flashbang");

give_item(id, "weapon_flashbang");

give_item(id, "weapon_hegrenade");

limita[id] += 1

}

}

 

menu_destroy(menu);

return 1

 

}

 

 

Includeul folosit:

colorchat.inc

 

/* Fun functions

*

* by Numb

*

* This file is provided as is (no warranties).

*/

 

 

enum Color

{

NORMAL = 1, // clients scr_concolor cvar color

GREEN, // Green Color

TEAM_COLOR, // Red, grey, blue

GREY, // grey

RED, // Red

BLUE, // Blue

}

 

new TeamName[][] =

{

"",

"TERRORIST",

"CT",

"SPECTATOR"

}

 

ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...)

{

static message[256];

 

switch(type)

{

case NORMAL: // clients scr_concolor cvar color

{

message[0] = 0x01;

}

case GREEN: // Green

{

message[0] = 0x04;

}

default: // White, Red, Blue

{

message[0] = 0x03;

}

}

 

vformat(message[1], 251, msg, 4);

 

// Make sure message is not longer than 192 character. Will crash the server.

message[192] = '^0';

 

static team, ColorChange, index, MSG_Type;

 

if(id)

{

MSG_Type = MSG_ONE;

index = id;

} else {

index = FindPlayer();

MSG_Type = MSG_ALL;

}

 

team = get_user_team(index);

ColorChange = ColorSelection(index, MSG_Type, type);

 

ShowColorMessage(index, MSG_Type, message);

 

if(ColorChange)

{

Team_Info(index, MSG_Type, TeamName[team]);

}

}

 

ShowColorMessage(id, type, message[])

{

message_begin(type, get_user_msgid("SayText"), _, id);

write_byte(id)

write_string(message);

message_end();

}

 

Team_Info(id, type, team[])

{

message_begin(type, get_user_msgid("TeamInfo"), _, id);

write_byte(id);

write_string(team);

message_end();

 

return 1;

}

 

ColorSelection(index, type, Color:Type)

{

switch(Type)

{

case RED:

{

return Team_Info(index, type, TeamName[1]);

}

case BLUE:

{

return Team_Info(index, type, TeamName[2]);

}

case GREY:

{

return Team_Info(index, type, TeamName[0]);

}

}

 

return 0;

}

 

FindPlayer()

{

static i;

i = -1;

 

while(i <= get_maxplayers())

{

if(is_user_connected(++i))

{

return i;

}

}

 

return -1;

}