/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <sqlx>
#include <ColorChat>
#define PLUGIN "PontRendszer"
#define VERSION "1.0"
#define AUTHOR "mforce"
#define PREFIX ""
#pragma tabsize 0
#pragma semicolon 1
new Host[] = "";
new User[] = "";
new Pass[] = "";
new Db[] = "";
new TABLE[] = "pont_rendszer";
new Handle:g_SqlTuple;
new g_Error[512];
new fegyo[33], pont[33], oles[33];
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_clcmd("say /pontok","ShowMenu");
register_clcmd("say_team /pontok","ShowMenu");
register_clcmd("say /menu","ShowMenu");
register_clcmd("say_team /menu","ShowMenu");
register_clcmd("say /kes","ShowMenu");
register_clcmd("say_team /kes","ShowMenu");
register_clcmd("say /pont", "kerdezes");
set_task(1.0, "MySql_Init");
register_event("CurWeapon", "fegyver_valtas", "be", "1=1");
register_event("DeathMsg", "halal", "a");
}
public MySql_Init()
{
g_SqlTuple = SQL_MakeDbTuple(Host,User,Pass,Db);
new ErrorCode,Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,charsmax(g_Error));
if(SqlConnection == Empty_Handle)
set_fail_state(g_Error);
new Handle:Queries;
Queries = SQL_PrepareQuery(SqlConnection,"CREATE TABLE IF NOT EXISTS %s \
(nev varchar(32), steamid varchar(64), pont INT(11),oles INT(11))", TABLE);
if(!SQL_Execute(Queries))
{
SQL_QueryError(Queries,g_Error,charsmax(g_Error));
set_fail_state(g_Error);
}
SQL_FreeHandle(Queries);
SQL_FreeHandle(SqlConnection);
}
public plugin_end()
{
if (g_SqlTuple) SQL_FreeHandle(g_SqlTuple);
return;
}
public betoltes(id)
{
new SteamId[32], szNev[32], szTemp[512];
get_user_name(id, szNev, charsmax(szNev));
get_user_authid(id, SteamId, charsmax(SteamId));
new Data[1];
Data[0] = id;
format(szTemp,charsmax(szTemp),"SELECT * FROM `%s` \
WHERE (`%s`.`nev` = '%s')", TABLE, TABLE, szNev); //kiválasztjuk a játékost a pontrendszer táblából a neve alapján
SQL_ThreadQuery(g_SqlTuple,"register_client",szTemp,Data,1);
}
public register_client(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
if(FailState == TQUERY_CONNECT_FAILED)
{
log_amx("Kapcsolodas sikertelen. [%d] %s", Errcode, Error);
}
else if(FailState == TQUERY_QUERY_FAILED)
{
log_amx("A QUERY betoltese sikertelen.[%d] %s", Errcode, Error);
}
new id;
id = Data[0];
if(SQL_NumResults(Query) < 1)
{
new SteamId[32], szNev[32];
get_user_name(id, szNev, charsmax(szNev));
get_user_authid(id, SteamId, charsmax(SteamId));
new szTemp[1024];
format(szTemp,charsmax(szTemp),"INSERT INTO `%s` \
( `nev` , `steamid`, `pont` , `oles`) \
VALUES \
('%s','%s','0','0');", TABLE,szNev,SteamId); //ha a játékos neve nem található a táblában akkor létrehozunk neki egy új sort a nevével és a pont értékét beállítjük 0 ra
SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp);
}
else
{
pont[id] = SQL_ReadResult(Query, 1);
oles[id] = SQL_ReadResult(Query, 2);
}
return PLUGIN_HANDLED;
}
public mentes(id)
{
new SteamId[32], szNev[32], szTemp[1024];
get_user_name(id, szNev, charsmax(szNev));
get_user_authid(id, SteamId, charsmax(SteamId));
format(szTemp,charsmax(szTemp),"UPDATE `%s` SET \
(`pont`,`oles` = '%i') \
WHERE `%s`.`nev` = '%s';",TABLE,pont[id],oles[id], szNev, SteamId); //frissítjük az adatokat tehát a pontrendszer táblán belüli pont sorba beírjuk a játékos jelenlegi pontját ott ahol a név megegyezik a játékos nevével
SQL_ThreadQuery(g_SqlTuple,"IgnoreHandle",szTemp);
}
public IgnoreHandle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)
{
SQL_FreeHandle(Query);
return PLUGIN_HANDLED;
}
public client_putinserver(id)
{
betoltes(id);
}
public client_disconnect(id)
{
mentes(id);
}
//10 darab modelt rakokbe egyszer!!
public plugin_precache()
{
precache_model("models/Only_kes/bak/v_knife.mdl");
precache_model("models/Only_kes/chinese/v_knife.mdl");
precache_model("models/Only_kes/clean/v_knife.mdl");//idáig volt az eredeti
precache_model("models/Only_kes/omni/v_knife.mdl");
precache_model("models/Only_kes/tron/v_knife.mdl");
precache_model("models/Only_kes/wc/v_knife.mdl");
precache_model("models/Only_kes/fish/v_knife.mdl");
precache_model("models/Only_kes/bastard/bastard.mdl");
precache_model("models/Only_kes/cerveny/cerveny.mdl");
precache_model("models/Only_kes/City/City.mdl");//10 darab
}
//10 darab modelt rakokbe egyszer!!
public fegyver_valtas(id)
{
new fegyver = get_user_weapon(id);
if(fegyo[id] == 1 && fegyver == CSW_KNIFE)
{
set_pev(id, pev_viewmodel2, "models/Only_kes/bak/v_knife.mdl");
}
else if(fegyo[id] == 2 && fegyver == CSW_KNIFE)
{
set_pev(id, pev_viewmodel2, "models/Only_kes/chinese/v_knife.mdl");
}
else if(fegyo[id] == 3 && fegyver == CSW_KNIFE)
{
set_pev(id, pev_viewmodel2, "models/Only_kes/clean/v_knife.mdl"); //idáig az eredeti
}
else if(fegyo[id] == 4 && fegyver == CSW_KNIFE)
{
set_pev(id, pev_viewmodel2, "models/Only_kes/omin/v_knife.mdl");
}
else if(fegyo[id] == 5 && fegyver == CSW_KNIFE)
{
set_pev(id, pev_viewmodel2, "models/Only_kes/tron/v_knife.mdl");
}
else if(fegyo[id] == 6 && fegyver == CSW_KNIFE)
{
set_pev(id, pev_viewmodel2, "models/Only_kes/wc/v_knife.mdl");
}
else if(fegyo[id] == 7 && fegyver == CSW_KNIFE)
{
set_pev(id, pev_viewmodel2, "models/Only_kes/fish/v_knife.mdl");
}
else if(fegyo[id] == 8 && fegyver == CSW_KNIFE)
{
set_pev(id, pev_viewmodel2, "models/Only_kes/bastard/bastard.mdl");
}
else if(fegyo[id] == 9 && fegyver == CSW_KNIFE)
{
set_pev(id, pev_viewmodel2, "models/Only_kes/cerveny/cerveny.mdl");
}
else if(fegyo[id] == 10 && fegyver == CSW_KNIFE)
{
set_pev(id, pev_viewmodel2, "models/Only_kes/City/City.mdl");
}
}
public halal()
{
new killer = read_data(1);
new victim = read_data(2);
new kteam = get_user_team(killer);
new vteam = get_user_team(victim);
if(killer != victim && kteam != vteam)
{
pont[killer] ++;
ChatColor(killer, "^4[%s]^1 Kaptál^3 1 pontot^1 az ölésért!", PREFIX);
}
}
//10 darabot rakokbe
public ShowMenu(id)
{
new menucim[128], menukapcs[11][128];
formatex(menucim, charsmax(menucim), "\r[%s] \wKĂ©s menĂĽ ^nPontok: \y%i", PREFIX, pont[id]);
formatex(menukapcs[0], charsmax(menukapcs[]), "%s", fegyo[id] == 0 ? "Alap kés \y|AKTIV|":"Alap kés");
formatex(menukapcs[1], charsmax(menukapcs[]), "%s", fegyo[id] == 1 ? "Elsö kés \y|AKTIV|":"Elsö kés \r|100| Pont");
formatex(menukapcs[2], charsmax(menukapcs[]), "%s", fegyo[id] == 2 ? "Második kés \y|AKTIV|":"Második kés \r|200| Pont");
formatex(menukapcs[3], charsmax(menukapcs[]), "%s", fegyo[id] == 3 ? "Harmadik kés \y|AKTIV|":"Harmadik kés \r|300| Pont"); //idáig az eredeti
formatex(menukapcs[4], charsmax(menukapcs[]), "%s", fegyo[id] == 4 ? "Negyedik kés \y|AKTIV|":"Negyedik kés \r|400| Pont");
formatex(menukapcs[5], charsmax(menukapcs[]), "%s", fegyo[id] == 5 ? "Ötödik kés \y|AKTIV|":"Ötödik kés \r|500| Pont");
formatex(menukapcs[6], charsmax(menukapcs[]), "%s", fegyo[id] == 6 ? "Hatodik kés \y|AKTIV|":"Hatodik kés \r|600| Pont");
formatex(menukapcs[7], charsmax(menukapcs[]), "%s", fegyo[id] == 7 ? "Hetedik kés \y|AKTIV|":"Hetedik kés \r|700| Pont");
formatex(menukapcs[8], charsmax(menukapcs[]), "%s", fegyo[id] == 8 ? "Nyolcadik kés \y|AKTIV|":"Nyolcadik kés \r|800| Pont");
formatex(menukapcs[9], charsmax(menukapcs[]), "%s", fegyo[id] == 9 ? "Kilencedik kés \y|AKTIV|":"Kilencedik kés \r|900| Pont");
formatex(menukapcs[10], charsmax(menukapcs[]), "%s", fegyo[id] == 10 ? "Tizedik kés \y|AKTIV|":"Tizedik kés \r|1000| Pont");
new menu = menu_create( menucim, "mh_MyMenu");
menu_additem(menu, menukapcs[0], "0", 0);
menu_additem(menu, menukapcs[1], "1", 0);
menu_additem(menu, menukapcs[2], "2", 0);
menu_additem(menu, menukapcs[3], "3", 0);
menu_additem(menu, menukapcs[4], "4", 0);
menu_additem(menu, menukapcs[5], "5", 0);
menu_additem(menu, menukapcs[6], "6", 0);
menu_additem(menu, menukapcs[7], "7", 0);
menu_additem(menu, menukapcs[8], "8", 0);
menu_additem(menu, menukapcs[9], "9", 0);
menu_additem(menu, menukapcs[10], "10", 0);
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_setprop(menu, MPROP_BACKNAME, "Vissza");
menu_setprop(menu, MPROP_NEXTNAME, "Elöre");
menu_setprop(menu, MPROP_EXITNAME, "Kilépés");
menu_display(id, menu, 0);
return PLUGIN_HANDLED;
}
public mh_MyMenu(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new command[64], name[64], access, callback;
menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);
switch(item)
{
case 0:
{
fegyo[id] = 0;
ColorChat(0, GREEN, "^4[%s]^1 Megkaptad az^3 ALAP^1 kést!", PREFIX);
}
case 1:
{
if(pont[id] >= 100)
{
fegyo[id] = 1;
// ha le akarod vonni azt a 100pontot, akkor ide pont[id] -= 100;
ColorChat(0, GREEN, "^4[%s]^1 Megkaptad az^3 ELSÖ^1 kést!", PREFIX);
}
else
{
ColorChat(0, GREEN, "^4[%s]^1 Sajnos nincs elég pontod...", PREFIX);
}
}
case 2:
{
if(pont[id] >= 200)
{
fegyo[id] = 2;
ColorChat(0, GREEN, "^4[%s]^1 Megkaptad a^3 MĂSODIK^1 kĂ©st!", PREFIX);
}
else
{
ColorChat(0, GREEN, "^4[%s]^1 Sajnos nincs elég pontod...", PREFIX);
}
}
case 3:
{
if(pont[id] >= 300)
{
fegyo[id] = 3;
ColorChat(0, GREEN, "^4[%s]^1 Megkaptad a^3 HARMADIK^1 kést!", PREFIX);
}
else
{
ColorChat(0, GREEN, "^4[%s]^1 Sajnos nincs elég pontod...", PREFIX);
}//idáig az eredeti
}
case 4:
{
if(pont[id] >= 400)
{
fegyo[id] = 4;
ColorChat(0, GREEN, "^4[%s]^1 Megkaptad a^3 NEGYEDIK^1 kést!", PREFIX);
}
else
{
ColorChat(0, GREEN, "^4[%s]^1 Sajnos nincs elég pontod...", PREFIX);
}
}
case 5:
{
if(pont[id] >= 500)
{
fegyo[id] = 5;
ColorChat(0, GREEN, "^4[%s]^1 Megkaptad a^3 ÖTöDIK^1 kést!", PREFIX);
}
else
{
ColorChat(0, GREEN, "^4[%s]^1 Sajnos nincs elég pontod...", PREFIX);
}
}
case 6:
{
if(pont[id] >= 600)
{
fegyo[id] = 6;
ColorChat(0, GREEN, "^4[%s]^1 Megkaptad a^3 HATODIK^1 kést!", PREFIX);
}
else
{
ColorChat(0, GREEN, "^4[%s]^1 Sajnos nincs elég pontod...", PREFIX);
}
}
case 7:
{
if(pont[id] >= 700)
{
fegyo[id] = 7;
ColorChat(0, GREEN, "^4[%s]^1 Megkaptad a^3 HETEDIK^1 kést!", PREFIX);
}
else
{
ColorChat(0, GREEN, "^4[%s]^1 Sajnos nincs elég pontod...", PREFIX);
}
}
case 8:
{
if(pont[id] >= 800)
{
fegyo[id] = 8;
ColorChat(0, GREEN, "^4[%s]^1 Megkaptad a^3 NYOLCADIK^1 kést!", PREFIX);
}
else
{
ColorChat(0, GREEN, "^4[%s]^1 Sajnos nincs elég pontod...", PREFIX);
}
}
case 9:
{
if(pont[id] >= 900)
{
fegyo[id] = 9;
ColorChat(0, GREEN, "^4[%s]^1 Megkaptad a^3 KILENCEDIK^1 kést!", PREFIX);
}
else
{
ColorChat(0, GREEN, "^4[%s]^1 Sajnos nincs elég pontod...", PREFIX);
}
}
case 10:
{
if(pont[id] >= 1000)
{
fegyo[id] = 10;
ColorChat(0, GREEN, "^4[%s]^1 Megkaptad a^3 TIZEDIK^1 kést!", PREFIX);
}
else
{
ColorChat(0, GREEN, "^4[%s]^1 Sajnos nincs elég pontod...", PREFIX);
}
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
stock ChatColor(const id, const input[], any:...)
{
new count = 1, players[32];
static msg[191];
vformat(msg, 190, input, 3);
replace_all(msg, 190, "!g", "^4"); // Green Color
replace_all(msg, 190, "!y", "^1"); // Default Color
replace_all(msg, 190, "!team", "^3"); // Team Color
replace_all(msg, 190, "!team2", "^0"); // Team2 Color
if (id) players[0] = id; else get_players(players, count, "ch");
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}
public kerdezes(id)
{
ColorChat(id, GREEN,"[%s] ^1Neked %d pontod van!", oles[id]);
}