#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <colorchat>
#include <fun>
#include <nvault>
#include <fakemeta>
#include <engine>
#define PLUGIN "BaseBuilder Shop"
#define VERSION "1.0"
#define AUTHOR "N*Joy^^"
#define VIPJOG ADMIN_RESERVATION
//Tároló
new pont[33]
new g_vault
new name[33][32]
new x_tempid
//Arany fegyverek
new bool:p_golden_ak47[33]
new bool:p_golden_m4a1[33]
//Bolt itemek
new bool:orokloszer[33]
new bool:sebesseg[33]
new bool:gravitacio[33]
new hasznalta[33]
//Bolt cvarok
new killp
new killhsp
new vipkillp
new vipkillhsp
new g_lehetmeg
//Örökloszer
// weapons offsets
#define OFFSET_CLIPAMMO 51
#define OFFSET_LINUX_WEAPONS 4
#define fm_cs_set_weapon_ammo(%1,%2) set_pdata_int(%1, OFFSET_CLIPAMMO, %2, OFFSET_LINUX_WEAPONS)
// players offsets
#define m_pActiveItem 373
const NOCLIP_WPN_BS = ((1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4))
new const g_MaxClipAmmo[] =
{
0,
13, //CSW_P228
0,
10, //CSW_SCOUT
0, //CSW_HEGRENADE
7, //CSW_XM1014
0, //CSW_C4
30,//CSW_MAC10
30, //CSW_AUG
0, //CSW_SMOKEGRENADE
15,//CSW_ELITE
20,//CSW_FIVESEVEN
25,//CSW_UMP45
30, //CSW_SG550
35, //CSW_GALIL
25, //CSW_FAMAS
12,//CSW_USP
20,//CSW_GLOCK18
10, //CSW_AWP
30,//CSW_MP5NAVY
100,//CSW_M249
8, //CSW_M3
30, //CSW_M4A1
30,//CSW_TMP
20, //CSW_G3SG1
0, //CSW_FLASHBANG
7, //CSW_DEAGLE
30, //CSW_SG552
30, //CSW_AK47
0, //CSW_KNIFE
50//CSW_P90
}
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /bolt", "fomenu")
register_clcmd("say /shop", "fomenu")
register_clcmd("say /netudjadallitsdat", "kuldesmenu")
RegisterHam(Ham_TakeDamage , "player" , "PlayerHurt", 0);
RegisterHam(Ham_Killed, "player", "fw_player_killed", 1)
register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
register_event("ResetHUD", "newRound", "b")
killp = register_cvar("pont_kill", "1")
killhsp = register_cvar("pont_killhs", "2")
vipkillp = register_cvar("pont_killvip", "2")
vipkillhsp = register_cvar("pont_killhsvip", "3")
g_lehetmeg = register_cvar("amx_lehetvenni", "2")
register_clcmd("MENNYISEG", "ponts")
g_vault = nvault_open("BasebuilderPont")
}
//Hud üzenet
public InfoHUD(id){
set_task(0.5, "InfoHUD", id);
set_hudmessage(0, 170, 255, 0.02, 0.2, 0, 1.0, 0.5)
show_hudmessage(id, " Pontjaid: %d", pont[id])
}
//Ölés pontokért
public fw_player_killed(victim, attacker, shouldgib)
{
if(get_user_flags(attacker) & VIPJOG && attacker != victim)
{
if(get_pdata_int(victim, 75) == HIT_HEAD)
{
pont[attacker] += get_pcvar_num(vipkillhsp)
set_hudmessage(attacker, 255, 0, -1.0, 0.3, 0, 6.0, 2.0)
show_hudmessage(attacker, "[+%d pont - Fejloves]", get_pcvar_num(vipkillhsp))
}
else
{
pont[attacker] += get_pcvar_num(vipkillp)
set_hudmessage(attacker, 255, 0, -1.0, 0.3, 0, 6.0, 2.0)
show_hudmessage(attacker, "[+%d pont]", get_pcvar_num(vipkillp))
}
}
else if(attacker != victim)
{
if(get_pdata_int(victim, 75) == HIT_HEAD)
{
pont[attacker] += get_pcvar_num(killhsp)
set_hudmessage(attacker, 255, 0, -1.0, 0.3, 0, 6.0, 2.0)
show_hudmessage(attacker, "[+%d pont - Fejloves]", get_pcvar_num(killhsp))
}
else
{
pont[attacker] += get_pcvar_num(killp)
set_hudmessage(attacker, 255, 0, -1.0, 0.3, 0, 6.0, 2.0)
show_hudmessage(attacker, "[+%d pont]", get_pcvar_num(killp))
}
}
return PLUGIN_CONTINUE
}
//Új kör
public newRound()
{
new players[32], num
get_players(players, num)
for(new i; i<get_maxplayers(); i++)
{
new id = players[i]
orokloszer[id] = false
sebesseg[id] = false
gravitacio[id] = false
p_golden_m4a1[id] = false
p_golden_ak47[id] = false
hasznalta[id] = 0
}
}
//Letöltések
public plugin_precache()
{
precache_model("models/p_golden_ak47.mdl")
precache_model("models/v_golden_ak47.mdl")
precache_model("models/p_golden_m4a1.mdl")
precache_model("models/v_golden_m4a1.mdl")
}
//Fomenu
public fomenu(id)
{
static CsTeams: team ; team = cs_get_user_team(id)
if (team == CS_TEAM_T)
{
new menu = menu_create("\rAngryBase \yZombibolt", "fomenut_handler");
new szoveg[192]
formatex(szoveg, 191, "\y1000 HP:\r15 pont \w[%d/%d]",hasznalta[id],get_pcvar_num(g_lehetmeg))
menu_additem(menu, szoveg, "", 0); // case 0
menu_additem(menu, "\yKisebb gravitacio:\r20 pont", "", 0); // case 1
menu_additem(menu, "\yGyorsasag:\r15 pont", "", 0); // case 2
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
return PLUGIN_HANDLED;
}
else
{
new menu = menu_create("\rAngryBase* \y|CT| \rBolt", "fomenuct_handler");
menu_additem(menu, "\y+50 HP:\r10 pont", "", 0); // case 0
menu_additem(menu, "\yGyorsasag:\r15 pont", "", 0); // case 1
menu_additem(menu, "\yKisebb gravitacio:\r20 pont", "", 0); // case 2
menu_additem(menu, "\yOrok tolteny:\r60 pont", "", 0); // case 3
menu_additem(menu, "\yArany M4A1:\r45 pont", "", 0); // case 4
menu_additem(menu, "\yArany AK47:\r45 pont", "", 0); // case 5
menu_additem(menu, "\yMinigun:\r35 pont", "", 0); // case 6
menu_additem(menu, "\yCT magozo:\r15 pont", "", 0); // case 7
menu_additem(menu, "\yT magozo:\r20 pont", "", 0); // case 8
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
}
return PLUGIN_HANDLED;
}
public fomenut_handler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_cancel(id);
return PLUGIN_HANDLED;
}
new command[6], name[64], access, callback;
menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);
switch(item)
{
case 0: {
if(pont[id] >= 15)
{
if(hasznalta[id] < get_pcvar_num(g_lehetmeg))
{
hasznalta[id]++
set_user_health(id, get_user_health(id)+1000)
pont[id] -= 15
ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
fomenu(id)
}
else
{
ColorChat(id, GREEN, "[Bolt]^1 Csak %dx hasznalhatod ezt a menupontot!",get_pcvar_num(g_lehetmeg))
}
fomenu(id)
}
else
{
ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
}
fomenu(id)
}
case 1: {
if(pont[id] >= 20)
{
set_user_gravity(id, 0.5)
gravitacio[id] = true
pont[id] -= 20
ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
fomenu(id)
}
else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
}
case 2: {
if(pont[id] >= 15)
{
set_user_maxspeed(id, 550.0)
sebesseg[id] = true
pont[id] -= 15
ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
fomenu(id)
}
else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public fomenuct_handler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_cancel(id);
return PLUGIN_HANDLED;
}
new command[6], name[64], access, callback;
menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);
switch(item)
{
case 0: {
if(pont[id] >= 10)
{
set_user_health(id, get_user_health(id)+50)
pont[id] -= 10
ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
fomenu(id)
}
else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
}
case 1: {
if(pont[id] >= 15)
{
set_user_maxspeed(id, 700.0)
sebesseg[id] = true
pont[id] -= 15
ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
fomenu(id)
}
else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
}
case 2: {
if(pont[id] >= 20)
{
set_user_gravity(id, 0.5)
gravitacio[id] = true
pont[id] -= 20
ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
fomenu(id)
}
else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
}
case 3: {
if(pont[id] >= 60)
{
orokloszer[id] = true
pont[id] -= 60
ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
fomenu(id)
}
else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
}
case 4: {
if(pont[id] >= 45)
{
pont[id] -= 45
give_item(id, "weapon_m4a1")
cs_set_user_bpammo(id, CSW_M4A1, 90)
p_golden_m4a1[id] = true
ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
fomenu(id)
}
else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
}
case 5: {
if(pont[id] >= 45)
{
give_item(id, "weapon_ak47")
cs_set_user_bpammo(id, CSW_AK47, 90)
p_golden_ak47[id] = true
pont[id] -= 45
ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
fomenu(id)
}
else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
}
case 6:{
if(pont[id] >= 35)
{
give_item(id,"weapon_m249")
cs_set_user_bpammo(id, CSW_M249, 200)
pont[id] -= 35
ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
fomenu(id)
}
else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
}
case 7: {
if(pont[id] >= 15)
{
give_item(id, "weapon_g3sg1")
cs_set_user_bpammo(id, CSW_G3SG1, 90)
pont[id] -= 15
ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
fomenu(id)
}
else ColorChat(id, GREEN, "[Bolt]^n Sajnos nincs eleg pontod")
}
case 8: {
if(pont[id] >= 20)
{
give_item(id, "weapon_sg550")
cs_set_user_bpammo(id, CSW_SG550, 90)
pont[id] -= 20
ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
fomenu(id)
}
else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
//Modellek
public Event_CurWeapon(id)
{
new weap = get_user_weapon(id)
if(weap == CSW_AK47 && p_golden_ak47[id] == true)
{
entity_set_string(id, EV_SZ_viewmodel, "models/v_golden_ak47.mdl")
entity_set_string(id, EV_SZ_weaponmodel, "models/v_golden_ak47.mdl")
}
else if(weap == CSW_M4A1 && p_golden_m4a1[id] == true)
{
entity_set_string(id, EV_SZ_viewmodel, "models/v_golden_m4a1.mdl")
entity_set_string(id, EV_SZ_weaponmodel, "models/v_golden_m4a1.mdl")
}
if(orokloszer[id] == true)
{
fm_cs_set_weapon_ammo( get_pdata_cbase(id, m_pActiveItem) , g_MaxClipAmmo[ weap ] )
}
}
//sebzés
public PlayerHurt( victim,inflictor,attacker,Float:damage, DamageBits )
{
new weap = get_user_weapon(attacker)
if(weap == CSW_AK47 && p_golden_ak47[attacker] == true || weap == CSW_M4A1 && p_golden_m4a1[attacker] == true)
{
SetHamParamFloat(4, damage * 2.0);
}
return HAM_IGNORED;
}
//Nvault, mentés
public mentes(id)
{
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-PONTOK", name[id])
format(vaultdata,255,"%d", pont[id])
nvault_set(g_vault,vaultkey,vaultdata)
return PLUGIN_CONTINUE
}
public betoltes(id)
{
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s-PONTOK", name[id])
nvault_get(g_vault,vaultkey,vaultdata,255)
pont[id] = str_to_num(vaultdata)
return PLUGIN_CONTINUE;
}
public client_disconnect(id)
{
mentes(id);
remove_task(id);
pont[id] = 0;
orokloszer[id] = false
sebesseg[id] = false
gravitacio[id] = false
p_golden_m4a1[id] = false
p_golden_ak47[id] = false
hasznalta[id] = 0
}
public client_connect(id)
{
get_user_name(id, name[id], 31)
betoltes(id);
if(!is_user_bot(id))
set_task(1.0, "InfoHUD", id);
}
public kuldesmenu(id)
{
new menu = menu_create("\y[Pont Kuldes]", "kuldes_handler");
new players[32], pnum, tempid;
new szName[32], szTempid[10];
get_players(players, pnum);
for( new i; i<pnum; i++ )
{
tempid = players[i];
{
get_user_name(tempid, szName, charsmax(szName));
num_to_str(tempid, szTempid, charsmax(szTempid));
menu_additem(menu, szName, szTempid, 0);
}
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
}
}
public kuldes_handler(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
x_tempid = str_to_num(data);
client_cmd(id, "messagemode MENNYISEG");
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public ponts(id)
{
new uzenet[121];
new kuldoneve[32], tempname[32]
read_args(uzenet, charsmax(uzenet))
remove_quotes(uzenet)
get_user_name(id, kuldoneve, 31)
get_user_name(x_tempid, tempname, 31)
pont[x_tempid] += str_to_num(uzenet)
ColorChat(0, GREEN, "[Pontrendszer] ^3%s ^1adott ^4%d ^1pontot ^3%s^1-nek!", kuldoneve,str_to_num(uzenet),tempname)
}