#include <amxmodx>
#include <nvault>
#define PLUGIN "FragVerseny ize"
#define VERSION "1.0"
#define AUTHOR "6almasok"
/* Átírta ~ mforce @ hlmod.hu
( bekóláztam és nem tudtam aludni )
Teszt pls én még soha nem használtam a plugint, de az a sok minusz tömb, meg -200 sor magáért beszél xD
Szövegeket nem néztem át, tehát csak kódvezetés lett javítva átnézés alapján. */
new oles[33], kezdesido[32], befejido[32], bool:fragverse, bool:vege, x_tempid, vault, Hudbj
new const hudmessages[][] = {
"A fragverseny veget ert^nHelyezesek:",
"Jelenleg fragverseny van, tart:",
"Egy admin leallitotta a fragversenyt!^nNincs nyertes!",
"Fragverseny elkezdodik"
}
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /fragverseny", "verseny")
register_clcmd("KEZDES_IDO", "kezd_kuld")
register_clcmd("VEGETERESI_IDO", "befej_kuld")
register_clcmd("Indok", "players_nullazo")
register_event("DeathMsg", "death", "a")
vault = nvault_open("frag_verseny")
Hudbj = CreateHudSyncObj()
}
public death() {
if(fragverse) {
new killer = read_data(1)
new victim = read_data(2)
if(killer != victim)
oles[killer]++
}
}
public verseny(id) {
if(get_user_flags(id) & ADMIN_RCON) {
new cim[128]
new Idoo[10];
get_time("%H:%M:%S", Idoo, charsmax(Idoo))
format(cim, charsmax(cim), "Fragverseny Beallitasok^n\rIdo: \d%s", Idoo)
new menu = menu_create(cim, "ido_menu_h" )
if(!fragverse) {
format(cim, charsmax(cim),"\wKezdesi Ido: [\d%s\w] \y(Pl.: 18:00)", kezdesido)
menu_additem(menu, cim, "0",0)
format(cim, charsmax(cim),"\wVegeteresi Ido: [\d%s\w] \y(Pl.: 20:00)", befejido)
menu_additem(menu, cim, "1",0)
menu_additem(menu, "\dFragverseny Inditasa","2", 0)
menu_additem(menu, "\rBEALLITASOK!","3", 0)
}
else {
format(cim, charsmax(cim), "\wJelenleg megy a fragverseny! (%s-%s-ig)", kezdesido, befejido)
menu_additem(menu, cim, "0",0)
menu_additem(menu, "\rBEALLITASOK!", "3", 0)
}
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_setprop(menu, MPROP_EXIT, "Kilepes");
menu_display(id, menu, 0);
}
else ChatColor(id, "^4Nincs jogod hozzá, ne is próbálkozz! Vili?!")
}
public ido_menu_h(id, menu, item) {
switch(item) {
case 0: {
if(!fragverse) client_cmd(id, "messagemode KEZDES_IDO");
else verseny(id);
}
case 1: {
if(!fragverse) client_cmd(id, "messagemode VEGETERESI_IDO");
else verseny(id);
}
case 2: {
if(strlen(befejido) > 0 && strlen(kezdesido) > 0) {
if(!fragverse) {
idozonacheck()
ChatColor(id, "^1Elinditottad a szamlalot, ha annyi lesz az ido amennyit beutottel akkor elindul a fragverseny!")
}
}
else {
ChatColor(id, "^1Nem adtad meg a kezdesi es a befejezesi idot!")
verseny(id)
}
}
case 3: beallitasok(id)
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public beallitasok(id) {
new cim[121]
format(cim, charsmax(cim), "\yFragverseny \dbeallitasok")
new menu = menu_create(cim, "beallit_menu_h")
if(fragverse) menu_additem(menu, "Fragverseny Leallitasa", "0", 0);
menu_additem(menu, "Nullazo Menu", "1", 0)
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_setprop(menu, MPROP_EXIT, "Kilepes");
menu_display(id, menu, 0);
}
public beallit_menu_h(id, menu, item) {
switch(item) {
case 0: rakerdezes(id)
case 1: nullazomen(id)
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public nullazomen(id) {
new cim[121]
format(cim, charsmax(cim), "\yValassz Nullazasi Lehetoseget!")
new menu = menu_create(cim, "nulllehet_menu_h" )
menu_additem(menu, "\wOsszes Oles Nullazasa", "0", 0)
menu_additem(menu, "\wKivalasztott Jatekos Oleseinek Nullazasa", "1", 0)
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_setprop(menu, MPROP_EXIT, "Kilepes");
menu_display(id, menu, 0);
}
public nulllehet_menu_h(id, menu, item) {
switch(item) {
case 0: {
new p[32], n
get_players(p, n, "c")
for(new i; i < n; i++) {
oles[p[i]] = 0
ChatColor(0, "^1Az osszes jatekos olese ^3Nullazva^1 lett egy ^4ADMIN ^1altal!")
}
}
case 1: nullazomenu(id)
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public nullazomenu(id) {
new cim[121]; format(cim, charsmax(cim), "\wKinek szeretned nullazni az Oleset?");
new menu = menu_create(cim, "players_kills_handler" )
new players[32], pnum, tempid;
new szName[32], szUserId[32];
get_players( players, pnum, "c" );
for(new i; i<pnum; i++) {
tempid = players[i];
get_user_name(tempid, szName, charsmax(szName));
formatex(szUserId, charsmax(szUserId), "%d", get_user_userid(tempid));
menu_additem(menu, szName, szUserId, 0);
}
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_setprop(menu, MPROP_BACKNAME, "Vissza");
menu_setprop(menu, MPROP_NEXTNAME, "Következő");
menu_setprop(menu, MPROP_EXITNAME, "Kilépés");
menu_display(id, menu, 0);
}
public players_kills_handler(id, menu, item) {
if(item == MENU_EXIT) {
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new szData[6], szName[64];
new _access, item_callback;
menu_item_getinfo(menu, item, _access, szData, charsmax(szData), szName, charsmax(szName), item_callback);
new userid = str_to_num(szData);
x_tempid = find_player("k", userid);
client_cmd(id, "messagemode Indok");
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public players_nullazo(id) {
new uzenet[32], kuldoneve[32], kaponeve[32]
read_args(uzenet, charsmax(uzenet))
remove_quotes(uzenet)
get_user_name(id, kuldoneve, charsmax(kuldoneve))
get_user_name(x_tempid, kaponeve, charsmax(kaponeve))
oles[x_tempid] = 0
ChatColor(0, "^4[Frag-V]^3 %s^1 lenullazta ^3%s ^1oleseit! ^1Indok: ^4%s", kuldoneve, kaponeve, uzenet)
}
public rakerdezes(id) {
new cim[121]
format(cim, charsmax(cim), "\rBiztosan leakarod allitani a Fragversenyt?")
new menu = menu_create(cim, "rakerd_menu_h" )
menu_additem(menu, "Igen", "0",0)
menu_additem(menu, "Nem", "1",0)
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_setprop(menu, MPROP_EXIT, "Kilepes");
menu_display(id, menu, 0);
}
public rakerd_menu_h(id, menu, item) {
switch(item) {
case 0: {
if(fragverse) {
fragverse = false
set_hudmessage(255, 0, 0, -1.0, 0.15, 2, 6.0, 15.0)
show_hudmessage(0, hudmessages[2])
}
}
case 1: verseny(id)
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public idozonacheck() {
new Idoo[10]
get_time("%H:%M", Idoo, charsmax(Idoo))
if(!fragverse) {
set_hudmessage(0, 255, 0, -1.0, 0.10, 0, 1.0, 1.0)
show_hudmessage(0, "%s %s-kor...", hudmessages[3], kezdesido)
}
if(equal(Idoo, kezdesido)) {
server_cmd("sv_restart 1")
fragverse = true
alegjobbak()
}
else if(equal(Idoo, befejido)) {
fragverse = false
vege = true
alegjobbak()
}
if(!vege) set_task(1.0, "idozonacheck");
}
public alegjobbak() {
new players[32], num;
get_players(players, num, "c");
SortCustom1D(players, num, "sors_legelso")
new top1 = players[0]
new top2 = players[1]
new top3 = players[2]
new top1neve[32], top2neve[32], top3neve[32];
get_user_name(top1, top1neve, charsmax(top1neve))
get_user_name(top2, top2neve, charsmax(top2neve))
get_user_name(top3, top3neve, charsmax(top3neve))
if(vege) {
set_hudmessage(0, 255, 0, -1.0, 0.05, 0, 6.0, 30.0)
switch(num) {
case 1: ShowSyncHudMsg(0, Hudbj, "%s^n1. %s", hudmessages[0], top1neve);
case 2: ShowSyncHudMsg(0, Hudbj, "%s^n1. %s || 2. %s", hudmessages[0], top1neve, top2neve);
case 3: ShowSyncHudMsg(0, Hudbj, "%s^n1. %s || 2. %s || 3. %s", hudmessages[0], top1neve, top2neve, top3neve);
}
vege = false
}
else {
set_hudmessage(0, 85, 255, -1.0, 0.05, 0, 6.0, 1.0)
switch(num) {
case 1: ShowSyncHudMsg(0, Hudbj, "%s %s-%s^n ^n1. %s KILL's: %d",hudmessages[1],kezdesido,befejido,top1neve, oles[top1])
case 2: ShowSyncHudMsg(0, Hudbj, "%s %s-%s^n ^n1. %s KILL's: %d || 2. %s KILL's: %d",hudmessages[1],kezdesido,befejido, top1neve, oles[top1], top2neve, oles[top2])
case 3: ShowSyncHudMsg(0, Hudbj, "%s %s-%s^n ^n1. %s KILL's: %d || 2. %s KILL's: %d || 3. %s KILL's :%d",hudmessages[1],kezdesido,befejido, top1neve, oles[top1], top2neve, oles[top2],top3neve, oles[top3])
}
set_task(1.0, "alegjobbak")
}
}
public sors_legelso(id1, id2) {
if(oles[id1] > oles[id2])
return -1;
else
return 1;
return 0;
}
public kezd_kuld(id) {
read_args(kezdesido, charsmax(kezdesido))
remove_quotes(kezdesido)
new hossz = strlen(kezdesido)
new Ido[10];
get_time("%H:%M", Ido, charsmax(Ido))
if(!equal(Ido,kezdesido)) {
if(hossz != 5) {
ChatColor(id, "^1Helytelen karakter ^4formatum!")
client_cmd(id, "messagemode KEZDES_IDO")
}
else verseny(id);
}
else ChatColor(id, "^4A kezdesi ido nem lehet annyi mint ami a JELENLEGI ido!");
}
public befej_kuld(id) {
read_args(befejido, charsmax(befejido))
remove_quotes(befejido)
new hossz = strlen(befejido)
new Ido[10];
get_time("%H:%M", Ido, charsmax(Ido))
if(!equal(Ido,befejido)) {
if(hossz != 5) {
ChatColor(id, "^1Helytelen karakter ^4formatum!")
client_cmd(id, "messagemode VEGETERESI_IDO")
}
else verseny(id);
}
else ChatColor(id, "^4A befejezesi ido nem lehet annyi mint ami a JELENLEGI ido!")
}
public mentes(id) {
new vaultkey[64],vaultdata[256], name[32]
get_user_name(id, name, charsmax(name))
formatex(vaultkey,charsmax(vaultkey),"%s-FRAG", name)
formatex(vaultdata,charsmax(vaultdata),"%i", oles[id])
nvault_set(vault,vaultkey,vaultdata)
}
public betoltes(id) {
new vaultkey[64],vaultdata[256], name[32], m_o[32]
get_user_name(id, name, charsmax(name))
formatex(vaultkey,charsmax(vaultkey),"%s-FRAG", name)
formatex(vaultdata,255,"%i",oles[id])
if(nvault_get(vault,vaultkey,vaultdata,charsmax(vaultdata))) {
parse(vaultdata, m_o, charsmax(m_o))
oles[id] = str_to_num(m_o)
}
}
public client_disconnect(id) {
if(fragverse) {
mentes(id)
}
oles[id] = 0;
}
public client_authorized(id) {
if(fragverse) {
betoltes(id)
}
}
stock ChatColor(const id, const szMessage[], any:...) {
static pnum, players[32], szMsg[190], IdMsg;
vformat(szMsg, charsmax(szMsg), szMessage, 3);
if(!IdMsg) IdMsg = get_user_msgid("SayText");
if(id) {
if(!is_user_connected(id)) return;
players[0] = id;
pnum = 1;
}
else get_players(players, pnum, "ch");
for(new i; i < pnum; i++) {
message_begin(MSG_ONE, IdMsg, .player = players[i]);
write_byte(players[i]);
write_string(szMsg);
message_end();
}
}