#include <amxmodx>
#include <colorchat>
#include <engine>
#include <hamsandwich>
#include <fun>
#include <fakemeta>
#include <sqlx>
new const PLUGIN[] = "Deathrun MOD"
new const VERSION[] = "1.0"
new const AUTHOR[] = "exodus"
//---------------------------------------
//Beállítások
//---------------------------------------
new const PREFIX[] = "Deathrun MOD"
new const C_PREFIX[] = "[Információ]"
#define MAX 2 //Összes skin tömbjénák száma
new const SQLINFO[][] = { "mysqlgame.clans.hu", "roland123456", "TEWa7e3eTyqYSEP", "roland123456" };
//---------------------------------------
//---------------------------------------
//Tömbök
//---------------------------------------
new O_Skin[33][MAX], O_Fegyver[MAX], Skin[33][5], SMS[33], kulcs[33], lada[2][33], doles[33];
new Kapcsolo[33], Szint[33], EXP[33], Masodpercek[33];
new Handle:g_SqlTuple;
new name[33][32];
//---------------------------------------
new const m_USP[][] =
{
{ "models/exodus_deathrun/v_usp.mdl" },
{ "models/exodus_deathrun/v_usp2.mdl" },
{ "models/exodus_deathrun/v_usp3.mdl" },
{ "models/exodus_deathrun/v_usp4.mdl" },
{ "models/exodus_deathrun/v_usp5.mdl" }
};
new const m_KNIFE[][] =
{
{ "models/exodus_deathrun/acab_defi.mdl" }
};
new const Fegyverek[5][] =
{
{ "Spitfire USP" },
{ "Tűz USP" },
{ "Terepmintás USP" },
{ "Ezüst USP" },
{ "Katonai USP" }
};
new const l_nevek[][] =
{
{ "Szaros Láda" },
{ "Szarosabb Láda" }
};
public plugin_init()
{
register_plugin(PLUGIN,VERSION,AUTHOR);
register_impulse(201, "Fomenu")
register_clcmd("say /add", "m_Addolas")
RegisterHam(Ham_Spawn,"player","m_Spawn",1);
register_event("DeathMsg", "m_Halal", "a");
register_event("CurWeapon", "Fegyver", "be", "1=1");
set_task(1.0, "AutoCheck",_,_,_,"b");
}
public AutoCheck()
{
new p[32],n;
get_players(p,n,"ch");
for(new i=0;i<n;i++)
{
new id = p[i];
InfoHud(id);
}
}
public plugin_precache()
{
for(new i;i < sizeof(m_KNIFE); i++)
{
precache_model(m_KNIFE[i]);
}
for(new i;i < sizeof(m_USP); i++)
{
precache_model(m_USP[i]);
}
}
public m_Addolas(id)
{
for(new i;i < MAX; i++)
O_Skin[i][id]++;
for(new i;i < MAX; i++)
O_Fegyver[i]++;
ColorChat(id, GREEN, "%s^1Addoltál magadnak", C_PREFIX);
}
public Fomenu(id)
{
new String[121];
formatex(String, charsmax(String), "[%s] \r- \dFőmenü^n\wSzint: \r%d \d| \wEXP: \r%d/100%% \d| \wSMS Pont \r%d", PREFIX, Szint[id], EXP[id], SMS[id]);
new menu = menu_create(String, "h_Fomenu");
menu_additem(menu, "Raktár", "1", 0);
menu_additem(menu, "Lomtár", "2", 0);
menu_additem(menu, "Ládanyitás", "4", 0);
menu_additem(menu, "Beállítások", "3", 0);
menu_display(id, menu, 0);
return PLUGIN_HANDLED;
}
public h_Fomenu(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return;
}
new data[9], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
new key = str_to_num(data);
switch(key)
{
case 1: Raktar(id);
case 2: Lomtar(id);
case 3: Beallitasok(id);
case 4: Ladanyitas(id);
}
}
public Ladanyitas(id)
{
new String[121];
formatex(String, charsmax(String), "[%s] \r- \dLádaNyitás^n\wKulcs: \d[\r%d DB\d]", PREFIX, kulcs[id]);
new menu = menu_create(String, "h_ladanyitas");
for(new i;i < sizeof(l_nevek); i++)
{
new Sor[6]; num_to_str(i, Sor, 5);
formatex(String, charsmax(String), "%s \d[\r%d DB\d]", l_nevek[i][0], lada[i][id]);
menu_additem(menu, String, Sor);
}
menu_display(id, menu, 0);
}
public h_ladanyitas(id, menu, item){
if(item == MENU_EXIT)
{
menu_destroy(menu);
return;
}
new data[9], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
new key = str_to_num(data);
if(lada[key][id] >= 1 && kulcs[id] >= 1)
{
lada[key][id] --;
kulcs[id] --;
adjalvmit(id);
}
else
{
Ladanyitas(id);
ColorChat(id, GREEN, "%s ^1Nincs ládád vagy kulcsod", C_PREFIX);
}
Ladanyitas(id);
}
public adjalvmit(id)
{
new FegyverID = random_num(0,MAX);
O_Skin[FegyverID][id]++;
ColorChat(id, GREEN, "%s^1Nyitottál egy ^4%s^1-t", C_PREFIX, Fegyverek[FegyverID]);
}
public Raktar(id)
{
new cim[121];
formatex(cim, charsmax(cim), "[%s] \r- \dRaktár", PREFIX);
new menu = menu_create(cim, "h_Raktar");
for(new i;i < sizeof(Fegyverek); i++)
{
if(O_Skin[i][id] > 0)
{
new Sor[6]; num_to_str(i, Sor, 5);
formatex(cim, charsmax(cim), "%s [\y%d DB\w] [\yÖssz: %dDB\w]", Fegyverek[i][0], O_Skin[i][id], O_Fegyver[i]);
menu_additem(menu, cim, Sor);
}
}
menu_display(id, menu, 0);
}
public h_Raktar(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return;
}
new data[9], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
new key = str_to_num(data);
switch(key)
{
case 0: Skin[0][id] = 1;
case 1: Skin[0][id] = 2;
}
}
public Fegyver(id)
{
new weapon = get_user_weapon(id);
for(new i;i < sizeof(m_USP); i++)
{
if(Skin[0][id] == i && weapon == CSW_USP && Kapcsolo[id] == 1)
{
set_pev(id, pev_viewmodel2, m_USP[i]);
}
}
for(new i;i < sizeof(m_KNIFE); i++)
{
if(Skin[1][id] == i && weapon == CSW_KNIFE && Kapcsolo[id] == 1)
{
set_pev(id, pev_viewmodel2, m_KNIFE[i]);
}
}
}
public Beallitasok(id)
{
new cim[121];
format(cim, charsmax(cim), "[%s] \r- \dBeállítások", PREFIX);
new menu = menu_create(cim, "h_Beallitasok");
menu_additem(menu, Kapcsolo[id] == 1 ? "Skinek: \rBE \y| \wKI":"Skinek: \wBE \y| \rKI", "1",0);
menu_display(id, menu, 0);
}
public h_Beallitasok(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return;
}
new data[9], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
new key = str_to_num(data);
switch(key)
{
case 1:
{
if(Kapcsolo[id] == 1)
{
Kapcsolo[id] = 0;
}
else
{
Kapcsolo[id] = 1;
}
Beallitasok(id);
}
}
}
public Lomtar(id)
{
new cim[121];
formatex(cim, charsmax(cim), "[%s] \r- \dLomtár", PREFIX);
new menu = menu_create(cim, "h_Lomtar");
for(new i;i < sizeof(Fegyverek); i++)
{
if(O_Skin[i][id] > 0)
{
new Sor[6]; num_to_str(i, Sor, 5);
formatex(cim, charsmax(cim), "%s \y[%d DB] [Össz: %d]", Fegyverek[i][0], O_Skin[i][id], O_Fegyver[i]);
menu_additem(menu, cim, Sor);
}
}
menu_display(id, menu, 0);
}
public h_Lomtar(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return;
}
new data[9], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
new key = str_to_num(data);
O_Skin[key][id]--;
O_Fegyver[key]--;
ColorChat(id, GREEN, "%s^1Sikeresen Törölted ezt: ^4%s", C_PREFIX, Fegyverek[key][0]);
Lomtar(id);
}
public InfoHud(id)
{
new Target = pev(id, pev_iuser1) == 4 ? pev(id, pev_iuser2) : id;
if(is_user_alive(id))
{
new iMasodperc, iPerc, iOra, Nev[32];
get_user_name(id, Nev, 31);
iMasodperc = Masodpercek[id] + get_user_time(id);
iPerc = iMasodperc / 60;
iOra = iPerc / 60;
iMasodperc = iMasodperc - iPerc * 60;
iPerc = iPerc - iOra * 60;
set_hudmessage(255, 255, 255, 0.01, 0.15, 0, 6.0, 1.1, 0.0, 0.0, -1);
show_hudmessage(id, "Üdv %s! ^n^nSzint: %d$^nSMS Pont: %dP^nJátszott idő: %d óra %d perc %d mp", Nev, Szint[id], SMS[id], iOra, iPerc, iMasodperc);
}
else
{
new iMasodperc, iPerc, iOra;
iMasodperc = Masodpercek[Target] + get_user_time(Target);
iPerc = iMasodperc / 60;
iOra = iPerc / 60;
iMasodperc = iMasodperc - iPerc * 60;
iPerc = iPerc - iOra * 60;
set_hudmessage(255, 255, 255, 0.01, 0.15, 0, 6.0, 1.1, 0.0, 0.0, -1);
show_hudmessage(id, "Nézett játékos adatai: ^nSzint: %d$^nSMS Pont: %dP^nJátszott idő: %d óra %d perc %d mp",Szint[Target],SMS[Target],iOra,iPerc,iMasodperc);
}
}
public m_Halal()
{
new Gyilkos = read_data(1);
new Aldozat = read_data(2);
new expID_1 = random_num(1,20);
new expID_2 = random_num(1,16);
new expID_3 = random_num(1,13);
new expID_4 = random_num(1,10);
new expID_5 = random_num(1,6);
if(Gyilkos == Aldozat)
return PLUGIN_HANDLED;
doles[Gyilkos]++;
if(Szint[Gyilkos] == 0)
{
Szint[Gyilkos]++;
}
if(Szint[Gyilkos] <= 5 && Szint[Gyilkos] >= 1)
{
EXP[Gyilkos] += expID_1;
}
if(Szint[Gyilkos] <= 10 && Szint[Gyilkos] >= 6)
{
EXP[Gyilkos] += expID_2;
}
if(Szint[Gyilkos] <= 18 && Szint[Gyilkos] >= 11)
{
EXP[Gyilkos] += expID_3;
}
if(Szint[Gyilkos] <= 25 && Szint[Gyilkos] >= 19)
{
EXP[Gyilkos] += expID_4;
}
if(Szint[Gyilkos] <= 40 && Szint[Gyilkos] >= 26)
{
EXP[Gyilkos] += expID_5;
}
if(EXP[Gyilkos] >= 100)
{
Szint[Gyilkos]++;
EXP[Gyilkos] = 0;
}
dropell(Gyilkos);
return PLUGIN_HANDLED;
}
public dropell(id)
{
new LadaID = random_num(0,1);
if(doles[id] >= 5)
{
switch(random_num(0,1))
{
case 0:
{
lada[LadaID][id]++;
ColorChat(id, GREEN, "%s^1Találtál egy ^4%s^1-t", C_PREFIX, l_nevek[LadaID]);
doles[id] = 0;
}
case 1:
{
kulcs[id]++;
ColorChat(id, GREEN, "%s^1Találtál egy ^4Kulcsot", C_PREFIX);
doles[id] = 0;
}
}
}
}
public m_Spawn(id)
{
if(!is_user_alive(id))
{
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
public client_disconnect(id)
{
if(!is_user_bot(id))
{
Update(id);
}
Kapcsolo[id] = 0;
Szint[id] = 0;
Masodpercek[id] = 0;
EXP[id] = 0;
for(new i;i < MAX; i++)
O_Skin[i][id] = 0;
for(new i;i < 2; i++)
Skin[i][id] = 0;
copy(name[id], charsmax(name[]), "");
}
public client_putinserver(id)
{
if(!is_user_bot(id))
{
get_user_name(id, name[id], charsmax(name));
Load(id);
}
Kapcsolo[id] = 1;
}
public plugin_cfg()
{
g_SqlTuple = SQL_MakeDbTuple(SQLINFO[0], SQLINFO[1], SQLINFO[2], SQLINFO[3]);
static Query[10048];
new Len;
Len += formatex(Query[Len], charsmax(Query), "CREATE TABLE IF NOT EXISTS `exodus_deathrun`");
Len += formatex(Query[Len], charsmax(Query)-Len, "(`Nev` varchar(32) NOT NULL, ");
Len += formatex(Query[Len], charsmax(Query)-Len, "`Szint` int(11) NOT NULL,");
Len += formatex(Query[Len], charsmax(Query)-Len, "`EXP` int(11) NOT NULL,");
Len += formatex(Query[Len], charsmax(Query)-Len, "`Ido` int(11) NOT NULL,");
for(new i;i < MAX; i++)
Len += formatex(Query[Len], charsmax(Query)-Len, "`F_%d` int(11) NOT NULL,", i);
for(new i;i < MAX; i++)
Len += formatex(Query[Len], charsmax(Query)-Len, "`oF_%d` int(11) NOT NULL,", i);
for(new i;i < 2; i++)
Len += formatex(Query[Len], charsmax(Query)-Len, "`S_%d` int(11) NOT NULL,", i);
Len += formatex(Query[Len], charsmax(Query)-Len, "`SMS` int(11) NOT NULL, `id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY)");
SQL_ThreadQuery(g_SqlTuple, "createTableThread", Query);
}
public Load(id) {
static Query[10048];
new Data[1];
Data[0] = id;
formatex(Query, charsmax(Query), "SELECT * FROM `exodus_deathrun` WHERE Nev = ^"%s^";", name[id]);
SQL_ThreadQuery(g_SqlTuple, "QuerySelectData", Query, Data, 1);
}
public QuerySelectData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) {
log_amx("%s", Error);
return;
}
else {
new id = Data[0];
if(SQL_NumRows(Query) > 0)
{
Szint[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "Szint"));
SMS[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "SMS"));
EXP[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "EXP"));
Masodpercek[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "Ido"));
for(new i;i < MAX; i++)
{
new String[64];
formatex(String, charsmax(String), "F_%d", i);
O_Skin[i][id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, String));
}
for(new i;i < MAX; i++)
{
new String[64];
formatex(String, charsmax(String), "oF_%d", i);
O_Fegyver[i] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, String));
}
for(new i;i < 2; i++)
{
new String[64];
formatex(String, charsmax(String), "S_%d", i);
Skin[i][id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, String));
}
}
else
{
Save(id);
}
}
}
public Save(id)
{
static Query[256];
formatex(Query, charsmax(Query), "INSERT INTO `exodus_deathrun` (`Nev`) VALUES (^"%s^");", name[id]);
SQL_ThreadQuery(g_SqlTuple, "QuerySetData", Query);
}
public Update(id)
{
static Query[10048];
new Len;
Len += formatex(Query[Len], charsmax(Query), "UPDATE `exodus_deathrun` SET Szint = ^"%i^", ",Szint[id]);
Len += formatex(Query[Len], charsmax(Query)-Len, "Ido = ^"%i^", ", Masodpercek[id]+get_user_time(id));
Len += formatex(Query[Len], charsmax(Query)-Len, "EXP = ^"%i^", ", EXP[id]);
for(new i;i < MAX; i++)
Len += formatex(Query[Len], charsmax(Query)-Len, "F_%d = ^"%i^", ", i, O_Skin[i][id]);
for(new i;i < MAX; i++)
Len += formatex(Query[Len], charsmax(Query)-Len, "oF_%d = ^"%i^", ", i, O_Fegyver[i]);
for(new i;i < 2; i++)
Len += formatex(Query[Len], charsmax(Query)-Len, "S_%d = ^"%i^", ", i, Skin[i][id]);
Len += formatex(Query[Len], charsmax(Query)-Len, "SMS = ^"%i^" WHERE Nev = ^"%s^";", SMS[id], name[id]);
SQL_ThreadQuery(g_SqlTuple, "QuerySetData", Query);
}
public createTableThread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
if(FailState == TQUERY_CONNECT_FAILED)
set_fail_state("[HIBA*] NEM TUDTAM CSATLAKOZNI AZ ADATBAZISHOZ!");
else if(FailState == TQUERY_QUERY_FAILED)
set_fail_state("Query Error");
if(Errcode)
log_amx("[HIBA*] HIBAT DOBTAM: %s",Error);
}
public QuerySetData(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime) {
if(FailState == TQUERY_CONNECT_FAILED || FailState == TQUERY_QUERY_FAILED) {
log_amx("%s", Error);
return;
}
}
public plugin_end()
{
SQL_FreeHandle(g_SqlTuple);
}