/* Plugin generated by AMXX-Studio */
#include < amxmodx >
#include < engine >
#include < fakemeta_util >
#include < cstrike >
#include < fun >
#include < hamsandwich >
#include < nvault >
#define PLUGIN "Bonus Box"
#define VERSION "1.5"
#define AUTHOR "MegastorM Edit:LyleChriss"
#define TASK_BONUS 1234
new modell[] = { "models/box/w_bonus.mdl" }
new const szPrefix[15] = "[Bonus Box]"
new g_sprite
new Float:OriginZrtve[3], Float:Uglovi[3]
new fegyver[33]
new dobozok[33]
new bool:sebesseg[33]
new bool:duplasebzes[33]
new bool:norecoil[33]
new vault
new Sebesseg, Gravity, LathatatlansagIdo
enum Color
{
NORMAL = 1,
GREEN,
TEAM_COLOR,
GREY,
RED,
BLUE,
}
new TeamName[][] =
{
"",
"TERRORIST",
"CT",
"SPECTATOR"
}
new const g_playerModels[][] = {
"artic",
"guerilla",
"leet",
"terror",
"gign",
"gsg9",
"sas",
"urban"
}
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("DeathMsg", "event_death", "ade");
register_touch("BonusBox", "player", "touchbox");
RegisterHam(Ham_Spawn, "player", "player_spawn", 1)
RegisterHam(Ham_TakeDamage, "player", "sebzes")
register_forward(FM_PlayerPreThink, "prethink")
register_event("CurWeapon", "fegyvervaltas", "be", "1=1")
register_clcmd("say /raktar", "raktar")
Sebesseg = register_cvar("bbox_sebesseg", "425")
Gravity = register_cvar("bbox_gravity", "0.4")
LathatatlansagIdo = register_cvar("bbox_lathatatlan", "5")
vault = nvault_open("doboz")
}
public player_spawn(id)
{
sebesseg[id] = false
duplasebzes[id] = false
norecoil[id] = false
if(is_user_alive(id))
{
set_user_footsteps(id, 0)
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255)
}
if(is_user_connected(id)) cs_reset_user_model(id)
}
public mentes(id)
{
new name[32]
get_user_name(id, name, 31)
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s", name)
format(vaultdata,255,"%i",dobozok[id])
nvault_set(vault,vaultkey,vaultdata)
return PLUGIN_CONTINUE
}
public betoltes(id)
{
new name[32]
get_user_name(id, name, 31)
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s", name)
format(vaultdata,255,"%i",dobozok[id])
nvault_get(vault,vaultkey,vaultdata,255)
replace_all(vaultdata, 255, "#", " ")
new box[32]
parse(vaultdata, box, 31)
dobozok[id] = str_to_num(box)
return PLUGIN_CONTINUE
}
public client_connect(id)
{
betoltes(id)
}
public client_disconnect(id)
{
mentes(id)
}
public fegyvervaltas(id)
{
fegyver[id] = get_user_weapon(id)
if(sebesseg[id]) set_user_maxspeed(id, get_pcvar_float(Sebesseg))
}
public plugin_precache()
{
precache_model(modell)
g_sprite = precache_model("sprites/box/box_sprite.spr")
//precache_sound("box/supplybox.wav")
precache_sound("box/touched.wav")
}
public event_death()
{
new victim = read_data(2)
if(is_user_connected(victim))
{
get_origin(victim)
set_task(0.1,"create_bonusbox",TASK_BONUS)
}
}
public get_origin(id)
{
pev(id, pev_origin, OriginZrtve)
pev(id, pev_angles, Uglovi)
Uglovi[0] = 0.0
}
public create_bonusbox()
{
new ent = create_entity("info_target")
entity_set_origin(ent, OriginZrtve)
entity_set_string(ent, EV_SZ_classname, "BonusBox")
entity_set_model(ent, modell)
set_rendering ( ent, kRenderFxGlowShell, random_num(128,255),random_num(128,255),random_num(128,255), kRenderFxNone, 255 )
//emit_sound(ent, CHAN_ITEM, "box/supplybox.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
entity_set_int(ent, EV_INT_solid, SOLID_BBOX)
entity_set_int(ent, EV_INT_movetype, MOVETYPE_PUSHSTEP)
entity_set_size(ent,Float:{-2.0,-2.0,-2.0},Float:{5.0,5.0,5.0})
drop_to_floor(ent)
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, OriginZrtve, 0)
write_byte(TE_BEAMCYLINDER) // TE id
engfunc(EngFunc_WriteCoord, OriginZrtve[0]) // x
engfunc(EngFunc_WriteCoord, OriginZrtve[1]) // y
engfunc(EngFunc_WriteCoord, OriginZrtve[2]) // z
engfunc(EngFunc_WriteCoord, OriginZrtve[0]) // x axis
engfunc(EngFunc_WriteCoord, OriginZrtve[1]) // y axis
engfunc(EngFunc_WriteCoord, OriginZrtve[2]+385.0) // z axis
write_short(g_sprite) // sprite
write_byte(0) // startframe
write_byte(0) // framerate
write_byte(4) // life
write_byte(30) // width
write_byte(0) // noise
write_byte(250) // red
write_byte(0) // green
write_byte(0) // blue
write_byte(200) // brightness
write_byte(0) // speed
message_end()
}
public touchbox(ent, toucher)
{
if (!is_user_alive(toucher) || !pev_valid(ent))
return FMRES_IGNORED
new classname[32]
pev(ent, pev_classname, classname, 31)
if (!equal(classname, "BonusBox"))
return FMRES_IGNORED
meni_za_potvrdu(toucher)
emit_sound(toucher, CHAN_ITEM, "box/touched.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
set_pev(ent, pev_effects, EF_NODRAW)
set_pev(ent, pev_solid, SOLID_NOT)
remove_ent(ent)
return FMRES_IGNORED
}
public meni_za_potvrdu(id)
{
new szItem[32]
new menu = menu_create("Szeretnéd kinyitni a dobozt?","Box_H");
formatex(szItem,charsmax(szItem),"\yIgen, szeretném!")
menu_additem(menu, szItem)
formatex(szItem,charsmax(szItem),"\dNem, inkább elrakom későbbre!")
menu_additem(menu,szItem)
menu_display(id,menu);
}
public raktar(id)
{
new szItem[32]
new rmenu = menu_create("Raktár menü. Dobozaid: \r%d ^nKinyitsz egyet?", "Box_R", dobozok[id])
formatex(szItem, charsmax(szItem),"\yIgen")
menu_additem(rmenu, szItem)
formatex(szItem, charsmax(szItem),"\dNem")
menu_additem(rmenu, szItem)
menu_display(id, rmenu);
}
public Box_H(id, menu, item)
{
switch(item)
{
case 0:
{
switch(random_num(1, 13))
{
case 1:
{
set_user_health(id,get_user_health(id)+100)
ColorChat(id, TEAM_COLOR, "^4%s^1 Wow! +100 HP volt a dobozban!",szPrefix)
}
case 2:
{
set_user_health(id,get_user_health(id)-100)
ColorChat(id, TEAM_COLOR, "^4%s^1 Hehe! -100 HP volt a dobozban!",szPrefix)
}
case 3:
{
give_item(id, "weapon_hegrenade")
give_item(id, "weapon_flashbang")
give_item(id, "weapon_flashbang")
give_item(id, "weapon_smokegrenade")
ColorChat(id, TEAM_COLOR, "^4%s^1 Azta! Gránátcsomagot találtál!",szPrefix)
}
case 4:
{
ColorChat(id, TEAM_COLOR, "^4%s^1 Hát ez üres volt...",szPrefix)
}
case 5:
{
set_user_footsteps(id, 1)
ColorChat(id, TEAM_COLOR, "^4%s^1 Surranót kaptál!Mostmár senki sem hallja a trappod!",szPrefix)
}
case 6:
{
sebesseg[id] = true
set_user_maxspeed(id, get_pcvar_float(Sebesseg))
ColorChat(id, TEAM_COLOR, "^4%s^1 Te aztán felgyorsultál!Vajon mi volt abban a ládában?",szPrefix)
}
case 7:
{
ColorChat(id, TEAM_COLOR, "^4%s^1 Hát ezt üres volt...",szPrefix)
}
case 8:
{
set_user_gravity(id, get_pcvar_float(Gravity))
ColorChat(id, TEAM_COLOR, "^4%s^1 Ez meg mi?Antigraviációs öv?!",szPrefix)
}
case 9:
{
switch(get_user_team(id))
{
case 1: cs_set_user_model(id, g_playerModels[random_num(4, 7)])
case 2: cs_set_user_model(id, g_playerModels[random_num(0, 3)])
}
ColorChat(id, TEAM_COLOR, "^4%s^1 Egy koszos ruha?Hmmm, ebben úgy nézel ki, mint az ellenség!",szPrefix)
}
case 10:
{
ColorChat(id, TEAM_COLOR, "^4%s^1 Hát ez üres volt...",szPrefix)
}
case 11:
{
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 0)
set_task(get_pcvar_float(LathatatlansagIdo), "NoMoreInvis", id)
ColorChat(id, TEAM_COLOR, "^4%s^1 Egy köpeny?Várjunk csak, hisz ez láthatatlanná tesz!",szPrefix)
}
case 12:
{
duplasebzes[id] = true
ColorChat(id, TEAM_COLOR, "^4%s^1 Keménymagvú lövedéééék??!!Dehát ez növeli a sebzést!Legális ez?",szPrefix)
}
case 13:
{
norecoil[id] = true
ColorChat(id, TEAM_COLOR, "^4%s^1 CĂ©lzĂłkĂ©szĂĽlĂ©ket találtál!Mostmár Ăşgy lĹ‘Âsz, mintha no recoil cfg-d lenne!",szPrefix)
}
}
}
case 1:
{
switch(random_num(1,3))
{
case 1:
{
ColorChat(id, TEAM_COLOR, "^4%s^1 Eltéve a raktáradba!",szPrefix)
dobozok[id] = dobozok[id]+1
}
case 2:
{
ColorChat(id, TEAM_COLOR, "^4%s^1 Eltéve a raktáradba!",szPrefix)
dobozok[id] = dobozok[id]+1
}
case 3:
{
ColorChat(id, TEAM_COLOR, "^4%s^1 Eltéve a raktáradba!",szPrefix)
dobozok[id] = dobozok[id]+1
}
}
}
}
return PLUGIN_CONTINUE;
}
public Box_R(id, rmenu, item)
{
if(dobozok[id]>0){
switch(item)
{
case 0:
{
switch(random_num(1, 13))
{
case 1:
{
set_user_health(id,get_user_health(id)+100)
ColorChat(id, TEAM_COLOR, "^4%s^1 Wow! +100 HP volt a dobozban!",szPrefix)
}
case 2:
{
set_user_health(id,get_user_health(id)-100)
ColorChat(id, TEAM_COLOR, "^4%s^1 Hehe! -100 HP volt a dobozban!",szPrefix)
}
case 3:
{
give_item(id, "weapon_hegrenade")
give_item(id, "weapon_flashbang")
give_item(id, "weapon_flashbang")
give_item(id, "weapon_smokegrenade")
ColorChat(id, TEAM_COLOR, "^4%s^1 Azta! Gránátcsomagot találtál!",szPrefix)
}
case 4:
{
ColorChat(id, TEAM_COLOR, "^4%s^1 Hát ez üres volt...",szPrefix)
}
case 5:
{
set_user_footsteps(id, 1)
ColorChat(id, TEAM_COLOR, "^4%s^1 Surranót kaptál!Mostmár senki sem hallja a trappod!",szPrefix)
}
case 6:
{
sebesseg[id] = true
set_user_maxspeed(id, get_pcvar_float(Sebesseg))
ColorChat(id, TEAM_COLOR, "^4%s^1 Te aztán felgyorsultál!Vajon mi volt abban a ládában?",szPrefix)
}
case 7:
{
ColorChat(id, TEAM_COLOR, "^4%s^1 Hát ezt üres volt...",szPrefix)
}
case 8:
{
set_user_gravity(id, get_pcvar_float(Gravity))
ColorChat(id, TEAM_COLOR, "^4%s^1 Ez meg mi?Antigraviációs öv?!",szPrefix)
}
case 9:
{
switch(get_user_team(id))
{
case 1: cs_set_user_model(id, g_playerModels[random_num(4, 7)])
case 2: cs_set_user_model(id, g_playerModels[random_num(0, 3)])
}
ColorChat(id, TEAM_COLOR, "^4%s^1 Egy koszos ruha?Hmmm, ebben úgy nézel ki, mint az ellenség!",szPrefix)
}
case 10:
{
ColorChat(id, TEAM_COLOR, "^4%s^1 Hát ez üres volt...",szPrefix)
}
case 11:
{
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 0)
set_task(get_pcvar_float(LathatatlansagIdo), "NoMoreInvis", id)
ColorChat(id, TEAM_COLOR, "^4%s^1 Egy köpeny?Várjunk csak, hisz ez láthatatlanná tesz!",szPrefix)
}
case 12:
{
duplasebzes[id] = true
ColorChat(id, TEAM_COLOR, "^4%s^1 Keménymagvú lövedéééék??!!Dehát ez növeli a sebzést!Legális ez?",szPrefix)
}
case 13:
{
norecoil[id] = true
ColorChat(id, TEAM_COLOR, "^4%s^1 CĂ©lzĂłkĂ©szĂĽlĂ©ket találtál!Mostmár Ăşgy lĹ‘Âsz, mintha no recoil cfg-d lenne!",szPrefix)
}
}
}
case 1:
{
menu_cancel(id)
}
}
}
else
{
ColorChat(id, TEAM_COLOR, "^4%s^1 Sajnálom, nincs elég dobozod!",szPrefix)
}
return PLUGIN_CONTINUE;
}
public remove_ent(ent)
{
if (pev_valid(ent))
engfunc(EngFunc_RemoveEntity, ent)
}
public NoMoreInvis(id)
{
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255)
ColorChat(id, TEAM_COLOR, "%s ^1%L", szPrefix, "Szerintem elszakadt a köpeny... Már nem vagyok láthatatlan.")
}
public sebzes(victim, inflictor, attacker, Float:damage, damage_bits)
{
if(is_user_alive(attacker) && duplasebzes[attacker] && attacker != victim)
SetHamParamFloat(4, damage * 2)
}
public prethink(id)
{
if(!is_user_alive(id) || !norecoil[id])
return
set_pev(id, pev_punchangle, {0.0, 0.0, 0.0})
}
ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...)
{
if( !get_playersnum() ) return;
new message[256];
switch(type)
{
case NORMAL:
{
message[0] = 0x01;
}
case GREEN: // Zöld
{
message[0] = 0x04;
}
default: // SzĂĽrke, Piros, KĂ©k
{
message[0] = 0x03;
}
}
vformat(message[1], 251, msg, 4);
replace_all(message, 191, "!n", "^x01")
replace_all(message, 191, "!t", "^x03")
replace_all(message, 191, "!g", "^x04")
message[192] = '^0';
new 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[])
{
static bool:saytext_used;
static get_user_msgid_saytext;
if(!saytext_used)
{
get_user_msgid_saytext = get_user_msgid("SayText");
saytext_used = true;
}
message_begin(type, get_user_msgid_saytext, _, id);
write_byte(id)
write_string(message);
message_end();
}
Team_Info(id, type, team[])
{
static bool:teaminfo_used;
static get_user_msgid_teaminfo;
if(!teaminfo_used)
{
get_user_msgid_teaminfo = get_user_msgid("TeamInfo");
teaminfo_used = true;
}
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()
{
new i = -1;
while(i <= get_maxplayers())
{
if(is_user_connected(++i))
return i;
}
return -1;
}