#include <amxmodx>
#include <engine>
#include <fun>
#include <fakemeta>
#include <hamsandwich>
#include <dhudmessage>
#include <cstrike>
#define PLUGIN "Stay On Feet!"
#define VERSION "1.41"
#define AUTHOR "DeRoiD"
#define DeszkaId 20150307
#pragma semicolon 1
new ElozoDeszka[200][32], EltuntDeszkak, Elok[2], Masodperc;
new bool:Jatek, bool:Start;
new El[33], Beallt[33], Dollar[33], Gravitacio[33], Sebesseg[33];
new Bekapcsolva, DeszkaSzam;
new Bot;
new FajlUt[] = "addons/amxmodx/configs/stayonfeet_maps.ini";
new Cvarok[8];
new const DeszkaSzinek[][] =
{
"0 255 0", "0 0 255", "255 0 0", "255 255 0",
"255 0 255", "255 170 0", "0 127 255", "120 120 120",
"0 255 127", "0 0 0", "255 255 255", "165 128 89"
};
new const SkyBox[][] =
{
"neb1", "neb6", "neb7",
"xen8", "xen9", "xen10",
"space", "night", "doom1"
};
new const EltunesiEffekt[][] =
{
"stayonfeet/boing1.wav",
"stayonfeet/boing2.wav",
"stayonfeet/boing3.wav"
};
new const HalalEffekt[][] =
{
"stayonfeet/halal1.wav",
"stayonfeet/halal2.wav"
};
public plugin_precache()
{
for(new a; a < sizeof EltunesiEffekt; a++)
{
precache_sound(EltunesiEffekt[a]);
}
for(new b; b < sizeof HalalEffekt; b++)
{
precache_sound(HalalEffekt[b]);
}
}
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
new PalyaNev[12];
get_mapname(PalyaNev, 11);
if(equali(PalyaNev, "stayonfeet_"))
Bekapcsolva = 1;
if(Bekapcsolva == 1)
{
register_logevent("KorNullazas", 2, "1=Round_End");
register_logevent("KorKezdes", 2, "1=Round_Start");
register_logevent("KorNullazas", 2, "0=World triggered", "1&Restart_Round_");
register_logevent("KorNullazas", 2, "0=World triggered", "1=Game_Commencing");
register_event("Money", "PenzEvent", "b");
register_event("CurWeapon","Kepessegek","be","1=1");
register_forward(FM_Touch, "PadloErintes");
register_touch("padlo","player","PadloErintes");
RegisterHam(Ham_Spawn, "player", "UjraEledes", 1);
RegisterHam(Ham_TakeDamage, "player", "Sebzes", 0);
register_message(get_user_msgid("ShowMenu"), "MenuTiltas");
register_message(get_user_msgid("VGUIMenu"), "MenuTiltas");
register_clcmd("jointeam", "CsatlakozasTiltas");
register_clcmd("joinclass", "CsatlakozasTiltas");
register_clcmd("say /bolt", "Bolt");
register_clcmd("say_team /bolt", "Bolt");
register_clcmd("say /shop", "Bolt");
register_clcmd("say_team /shop", "Bolt");
set_task(5.0, "Ellenorzes", DeszkaId+4, _, _, "b");
set_task(10.0, "UjraInditas");
Cvarok[0] = register_cvar("eltunesi_ido", "2.5");
Cvarok[1] = register_cvar("tulelo_dollar", "3");
Cvarok[2] = register_cvar("bolt_gravitacio", "0.6");
Cvarok[3] = register_cvar("bolt_sebesseg", "320.0");
Cvarok[4] = register_cvar("bolt_noclip_ido", "5.0");
Cvarok[5] = register_cvar("kezdo_ido", "10");
Cvarok[6] = register_cvar("stayonfeet_bot", "1");
Cvarok[7] = register_cvar("deszka_szinek", "1");
PalyaBeallitasok();
if(get_pcvar_num(Cvarok[6]) == 1)
{
BotKeszitese();
}
}
register_dictionary("stayonfeet.txt");
}
public Kepessegek(id)
{
if(is_user_alive(id))
{
if(Gravitacio[id] == 1)
set_user_gravity(id, Float:get_pcvar_float(Cvarok[2]));
if(Sebesseg[id] == 1)
set_user_maxspeed(id, get_pcvar_float(Cvarok[3]));
}
}
public Bolt(id)
{
static String[64];
formatex(String, charsmax(String), "%L", LANG_SERVER, "BOLTCIM", Dollar[id]);
new menu = menu_create(String, "BoltMenu" );
formatex(String, charsmax(String), "%L", LANG_SERVER, "BOLT1");
menu_additem(menu, String, "1");
formatex(String, charsmax(String), "%L", LANG_SERVER, "BOLT2");
menu_additem(menu, String, "2");
formatex(String, charsmax(String), "%L", LANG_SERVER, "BOLT3");
menu_additem(menu, String, "3");
formatex(String, charsmax(String), "%L", LANG_SERVER, "BOLT4");
menu_setprop(menu, MPROP_EXITNAME, String);
menu_display(id, menu);
}
public BoltMenu(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return;
}
new data[9], name[64], Gomb;
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data),
name, charsmax(name), callback);
Gomb = str_to_num(data);
if(Gomb == 1)
{
if(Dollar[id] >= 3)
{
Gravitacio[id] = 1;
set_user_gravity(id, Float:get_pcvar_float(Cvarok[2]));
Dollar[id] -= 3;
PenzEvent(id);
set_dhudmessage(0, 255, 255, -1.0, 0.70, 0, 6.0, 3.0);
show_dhudmessage(id, "%L", LANG_SERVER, "SIKERESVASARLAS");
}
else
{
set_dhudmessage(255, 42, 0, -1.0, 0.70, 0, 6.0, 3.0);
show_dhudmessage(id, "%L", LANG_SERVER, "NINCSELEGDOLLAROD");
}
}
if(Gomb == 2)
{
if(Dollar[id] >= 3)
{
Sebesseg[id] = 1;
set_user_maxspeed(id, get_pcvar_float(Cvarok[3]));
Dollar[id] -= 3;
PenzEvent(id);
set_dhudmessage(0, 255, 255, -1.0, 0.70, 0, 6.0, 3.0);
show_dhudmessage(id, "%L", LANG_SERVER, "SIKERESVASARLAS");
}
else
{
set_dhudmessage(255, 42, 0, -1.0, 0.70, 0, 6.0, 3.0);
show_dhudmessage(id, "%L", LANG_SERVER, "NINCSELEGDOLLAROD");
}
}
if(Gomb == 3)
{
if(Dollar[id] >= 6)
{
remove_task(id);
set_task(get_pcvar_float(Cvarok[4]), "NoClipKi", id);
set_user_noclip(id, 1);
Dollar[id] -= 6;
PenzEvent(id);
set_dhudmessage(0, 255, 255, -1.0, 0.70, 0, 6.0, 3.0);
show_dhudmessage(id,"%L", LANG_SERVER, "SIKERESVASARLAS");
}
else
{
set_dhudmessage(255, 42, 0, -1.0, 0.70, 0, 6.0, 3.0);
show_dhudmessage(id, "%L", LANG_SERVER, "NINCSELEGDOLLAROD");
}
}
}
public NoClipKi(id)
{
set_user_noclip(id, 0);
}
public PenzEvent(id)
{
set_pdata_int(id, 115, 0) ;
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("Money"), _, id);
write_long(Dollar[id]);
write_byte(1);
message_end();
}
public PalyaBeallitasok()
{
new Egbolt[32];
format(Egbolt, charsmax(Egbolt), SkyBox[random(sizeof(SkyBox))]);
server_cmd("sv_skyname %s", Egbolt);
log_amx("||------------------------------||");
log_amx("||-Stay On Feet! Author: DeRoiD-||");
log_amx("||------Steam: deroidocska------||");
log_amx("||------------------------------||");
if(!fopen(FajlUt, "r"))
{
new Uzenet[32];
format(Uzenet, charsmax(Uzenet),"Not found: %s", FajlUt);
set_fail_state(Uzenet);
return;
}
new Fajl = fopen(FajlUt, "rt");
new Sor[256], Lekeres[2][32], PalyaNev[32];
while(!feof(Fajl))
{
fgets(Fajl, Sor, 255);
if(Sor[0] == ';' || strlen(Sor) < 2)
continue;
parse(Sor, Lekeres[0], 31, Lekeres[1], 31);
get_mapname(PalyaNev, 31);
if(equal(Lekeres[0], PalyaNev))
{
DeszkaSzam = str_to_num(Lekeres[1]);
break;
}
}
fclose(Fajl);
DeszkakBetoltese();
}
public CsatlakozasTiltas(id)
{
if(Beallt[id] == 1 && Bekapcsolva == 1)
{
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
public MenuTiltas()
{
return PLUGIN_HANDLED;
}
public BotKeszitese() {
Bot = engfunc(EngFunc_CreateFakeClient, "Stay On Feet!");
dllfunc(MetaFunc_CallGameEntity, "player", Bot);
set_pev(Bot, pev_flags, FL_CLIENT);
set_pev(Bot, pev_model, "");
set_pev(Bot, pev_viewmodel2, "");
set_pev(Bot, pev_modelindex, 0);
set_pev(Bot, pev_renderfx, kRenderFxNone);
set_pev(Bot, pev_rendermode, kRenderTransAlpha);
set_pev(Bot, pev_renderamt, 0.0);
cs_set_user_team(Bot, CS_TEAM_T);
}
public UjraInditas()
{
KorNullazas();
set_pcvar_num(get_cvar_pointer("sv_restart"), 1);
new Jatekosok[32], JatekosSzam, id;
get_players(Jatekosok, JatekosSzam, "c");
for(new i; i < JatekosSzam; i++)
{
id = Jatekosok[i];
PenzEvent(id);
}
}
public Ellenorzes()
{
if(Elok[1] > 1 && !Jatek && Start)
{
UjraInditas();
}
}
public Hud()
{
new Jatekosok[32], JatekosSzam, id;
get_players(Jatekosok, JatekosSzam, "c");
for(new i; i < JatekosSzam; i++)
{
id = Jatekosok[i];
set_hudmessage(255, 255, 255, -1.0, 0.05, 0, 1.0, 2.1);
show_hudmessage(id, "%L", LANG_SERVER, "HUD", Elok[0], Elok[1], DeszkaSzam-EltuntDeszkak);
PenzEvent(id);
}
}
public UjraEledes(id)
{
if(is_user_alive(id) && !is_user_bot(id) && Bekapcsolva == 1)
{
if(cs_get_user_team(id) == CS_TEAM_T)
cs_set_user_team(id, CS_TEAM_CT);
if(!Jatek)
{
El[id] = 1;
Elok[0]++;
Elok[1]++;
PenzEvent(id);
}
else
{
set_dhudmessage(255, 255, 255, 0.70, 0.80, 0, 6.0, 3.0);
show_dhudmessage(id, "%L", LANG_SERVER, "JATEKVAN");
user_silentkill(id);
}
}
return PLUGIN_HANDLED;
}
public Sebzes(victim, inflictor, attacker, Float:damage)
{
if(!is_user_alive(attacker) || !is_user_connected(attacker) || attacker < 1 || attacker > 32 || Bekapcsolva == 0)
return HAM_IGNORED;
if(Bekapcsolva == 1)
return HAM_SUPERCEDE;
return HAM_IGNORED;
}
public client_connect(id)
{
El[id] = 0;
}
public client_putinserver(id)
{
if(is_user_bot(id) || Bekapcsolva == 0)
return PLUGIN_HANDLED;
Beallt[id] = 0;
Dollar[id] = 0;
Gravitacio[id] = 0;
Sebesseg[id] = 0;
set_task(0.1, "Beallitas", id);
cs_set_user_money(id, 0);
return PLUGIN_HANDLED;
}
public Beallitas(id)
{
engclient_cmd(id, "jointeam", "2");
engclient_cmd(id, "joinclass", "5");
Beallt[id] = 1;
}
public client_disconnect(id)
{
if(El[id] == 1)
{
El[id] = 0;
Elok[0]--;
Elok[1]--;
}
}
public DeszkakBetoltese()
{
new Szam, DeszkaSzinSzam = -1;
for(new bSzam; bSzam < DeszkaSzam; bSzam++)
{
Szam++;
DeszkaSzinSzam++;
if(DeszkaSzinSzam >= sizeof(DeszkaSzinek))
{
DeszkaSzinSzam = 0;
}
new DeszkaNeve[64], Deszka, Float:DeszkaSzin[3], SzinLekeres[3][16];
parse(DeszkaSzinek[DeszkaSzinSzam], SzinLekeres[0], 4, SzinLekeres[1], 4, SzinLekeres[2], 4);
if(get_pcvar_num(Cvarok[7]) == 1)
{
DeszkaSzin[0] = str_to_float(SzinLekeres[0]);
DeszkaSzin[1] = str_to_float(SzinLekeres[1]);
DeszkaSzin[2] = str_to_float(SzinLekeres[2]);
}
else if(get_pcvar_num(Cvarok[7]) == 0)
{
DeszkaSzin[0] = random_float(1.0, 255.0);
DeszkaSzin[1] = random_float(1.0, 255.0);
DeszkaSzin[2] = random_float(1.0, 255.0);
}
format(DeszkaNeve, 63, "d%d", Szam);
Deszka = find_ent_by_tname(-1, DeszkaNeve);
set_pev(Deszka, pev_solid, SOLID_BSP);
set_pev(Deszka, pev_rendermode, kRenderTransColor);
set_pev(Deszka, pev_rendercolor, Float: DeszkaSzin[0], DeszkaSzin[1], DeszkaSzin[2]);
set_pev(Deszka, pev_renderamt, Float:{ 150.0 });
}
}
public PadloErintes(Padlo, id)
{
if(!is_user_alive(id))
return FMRES_IGNORED;
new FunkcioNev[32];
pev(Padlo, pev_classname, FunkcioNev, 31);
if(equali(FunkcioNev, "trigger_hurt"))
{
new Nev[32];
get_user_name(id, Nev, charsmax(Nev));
set_dhudmessage(255, 255, 255, 0.70, 0.80, 0, 6.0, 3.0);
show_dhudmessage(0, "%L", LANG_SERVER, "LEESSIK", Nev);
emit_sound(id, CHAN_WEAPON, HalalEffekt[random(sizeof(HalalEffekt))], 1.0, ATTN_NORM, 0, PITCH_NORM);
Elok[0]--;
El[id] = 0;
PenzEvent(id);
}
return FMRES_IGNORED;
}
public DeszkakUjratoltese()
{
new Szam;
for(new bSzam; bSzam < DeszkaSzam; bSzam++)
{
Szam++;
new DeszkaNeve[64], Deszka,Float:DeszkaSzin[3];
DeszkaSzin[0] = random_float(1.0, 255.0);
DeszkaSzin[1] = random_float(1.0, 255.0);
DeszkaSzin[2] = random_float(1.0, 255.0);
format(DeszkaNeve, 63, "d%d", Szam);
Deszka = find_ent_by_tname(-1, DeszkaNeve);
set_pev(Deszka, pev_solid, SOLID_BSP);
set_pev(Deszka, pev_rendermode, kRenderTransColor);
set_pev(Deszka, pev_renderamt, Float:{ 150.0 });
}
}
public KorNullazas()
{
remove_task(DeszkaId);
remove_task(DeszkaId+1);
remove_task(DeszkaId+2);
remove_task(DeszkaId+3);
Jatek = false;
Masodperc = 0;
EltuntDeszkak = 0;
Elok[0] = 0;
Elok[1] = 0;
DeszkakUjratoltese();
DeszkakBlokk();
new Jatekosok[32], JatekosSzam, id;
get_players(Jatekosok, JatekosSzam, "c");
for(new i; i < JatekosSzam; i++)
{
id = Jatekosok[i];
Gravitacio[id] = 0;
Sebesseg[id] = 0;
}
}
public KorKezdes()
{
Jatek = false;
Start = true;
Masodperc = get_pcvar_num(Cvarok[5]);
new Jatekosok[32], JatekosSzam;
get_players(Jatekosok, JatekosSzam, "c");
if(JatekosSzam > 1)
{
Start = false;
Szamlalo();
}
else
{
set_dhudmessage(0, 255, 0, -1.0, 0.20, 0, 6.0, 5.0);
show_dhudmessage(0, "%L", LANG_SERVER, "NINCSELEGJATEKOS");
}
}
public Szamlalo()
{
if(Masodperc > 0)
{
Masodperc--;
set_task(1.0, "Szamlalo", DeszkaId+2);
client_print(0, print_center, "%L", LANG_SERVER, "KEZDOUZENET", Masodperc);
}
else
{
Jatek = true;
remove_task(DeszkaId);
remove_task(DeszkaId+1);
remove_task(DeszkaId+2);
remove_task(DeszkaId+3);
set_task(0.1, "Eltunes", DeszkaId+3);
set_task(1.0, "Hud", DeszkaId+1, _, _, "b");
}
}
public DeszkakBlokk()
{
new Szam;
for(new bSzam; bSzam < DeszkaSzam; bSzam++)
{
Szam++;
format(ElozoDeszka[Szam], 31, "0");
}
}
public Eltunes()
{
new Szam = random_num(1, DeszkaSzam);
if(!equal(ElozoDeszka[Szam], "1") && DeszkaSzam-1 > EltuntDeszkak && Jatek && !Start)
{
new DeszkaNeve[64], Deszka;
format(DeszkaNeve, 63, "d%d", Szam);
Deszka = find_ent_by_tname(-1, DeszkaNeve);
set_pev(Deszka, pev_solid, SOLID_NOT);
set_pev(Deszka, pev_renderamt, Float:{ 0.0 });
format(ElozoDeszka[Szam], 31, "1");
EltuntDeszkak++;
set_task(get_pcvar_float(Cvarok[0]), "Eltunes", DeszkaId+3);
emit_sound(Deszka, CHAN_WEAPON, EltunesiEffekt[random(sizeof(EltunesiEffekt))], 1.0, ATTN_NORM, 0, PITCH_NORM);
}
else if(DeszkaSzam-1 > EltuntDeszkak && !Start)
{
set_task(0.0, "Eltunes", DeszkaId+3);
}
else
{
Jatek = false;
new Tulelok[256], TulelokSzama;
new Jatekosok[32], JatekosSzam, id;
get_players(Jatekosok, JatekosSzam, "c");
for(new i; i < JatekosSzam; i++)
{
id = Jatekosok[i];
if(!is_user_alive(id) || !is_user_connected(id))
continue;
TulelokSzama++;
new Nev[32];
get_user_name(id, Nev, charsmax(Nev));
format(Nev, charsmax(Nev), "%s ", Nev);
add(Tulelok, 255, Nev);
user_silentkill(id);
set_user_frags(id, get_user_frags(id)+1);
cs_set_user_deaths(id, cs_get_user_deaths(id)-1);
Dollar[id] += get_pcvar_num(Cvarok[1]);
PenzEvent(id);
}
if(TulelokSzama > 0)
{
set_dhudmessage(0, 255, 0, -1.0, 0.20, 0, 6.0, 6.0);
show_dhudmessage(0, "%L", LANG_SERVER, "TULELOK", Tulelok);
}
else
{
set_dhudmessage(0, 255, 0, -1.0, 0.20, 0, 6.0, 6.0);
show_dhudmessage(0, "%L", LANG_SERVER, "NINCSTULELOK");
}
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
*/