/*[Bugok]: *Amíg nem választod ki a raktárban az 1. skint, nem mutatja a többit
*/
/*[Tennivalók]: *CS:GO-s gránát hangok berakása.
*Tec-9, PP-Bizon, és egyéb fegyverek berakása
*Offline piac elkészítése
*Natívok készítése külső pluginokhoz (kérésre megcsinálok bármilyet)
*Offline piac
*/
/*[Megjegyzések]: *A teszteléshez használt skinek, ládák és kulcsok lecserélendőek!
*A ládák droppolását nem tudtam elég behatóan tesztelni a kevés skin miatt. Ha hibás, jelezzétek!
*A plugin nincs ékezetesítve!
*/
/*[Changelog]
v1.0.5 - Minimális teljesítményjavítás via mforce
v1.0.4 - Összetettebb dropp rendszer
v1.0.3 - Minden ládának saját kulcs
v1.0.2 - Több láda
v1.0.1 - SQL mentés és még pár bug javítása
v1.0.0 - Alap ötlet
*/
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <engine>
#include <fakemeta>
#include <sqlx>
#include <colorchat>
//Köszönet mforce-nak a definiálásokért :)
const m_pPlayer = 41
const XO_WEAPON = 4
#define get_weapon_owner(%1) get_pdata_cbase(%1, m_pPlayer, XO_WEAPON)
new const Author[] = {"LyleChriss"}
new const Version[] = {"1.0.5"}
new const Plugin[] = {"CS:GO Mod"}
new const Prefix[] = {"CS:GO"}
//Droppok
#define CASE_DROP 25.0 //Láda dropp (Alap: 25%)
#define KEY_DROP 7.0 //Kulcs dropp (Alap 7%)
//SQL
new const SQL_INFO[][] = {
"127.0.0.1",
"SH24765_default",
"hHaTf1RsrPiy78",
"SH24765_default"
}
new Handle:g_SqlTuple
//Fegyverek, amiket skinezni akarsz
new const Weapons[][] = {
"weapon_ak47",
"weapon_m4a1"
}
//Egyéb dolgok, amiket skinezel
new const Others[][] = {
"weapon_smokegrenade",
"weapon_c4"
}
enum _:DATA
{
Drop_from,
Rarity,
InSQL[32],
Name[32],
Model[64]
}
/*Fegyver ritkasága [CS:GO-s színekkel jellemezve]:
0 - Szürke
1 - Világos kék
2 - Kék
3 - Lila
4 - Pink
5 - Piros
6 - Arany [Késeknek]*/
//Az első szám azt jelzi, hogy a Cases conts hanyadik sorában lévő ládából legyen droppolva a skin
//Megszerezhető fegyver skinek
new const Skins[][DATA] = {
//Ládája, Ritkaság, Neve az SQL táblában, Neve a játékban, models/modell.mdl
{0, 0, "vanquish_ak", "AK47 | Vanquish", "models/g_offen/ak47_1.mdl"},
{0, 1, "guardian_m4", "M4A1 | Guardian", "models/g_offen/m4a1_1.mdl"},
{0, 2, "vanquish2_ak", "AK47 | Vanquish2", "models/g_offen/ak47_1.mdl"},
{1, 3, "vanquish3_ak", "AK47 | Vanquish3", "models/g_offen/ak47_1.mdl"},
{1, 4, "vanquish4_ak", "AK47 | Vanquish4", "models/g_offen/ak47_1.mdl"},
{1, 5, "vanquish5_ak", "AK47 | Vanquish5", "models/g_offen/ak47_1.mdl"}
}
//Alap skinek
/*new const Default_Skins[][DATA] = {
//Nulla, Nulla, Üresen hagyni, fegyver neve, models/modell.mdl
{0, 0, "", "AK47", "models/g_offen/v_ak47.mdl"},
{0, 0, "", "M4A1", "models/g_offen/v_m4a1.mdl"}
}*/
//Egyéb modellek
new const Other_Skins[][DATA] = {
//Nulla, Nulla, Üresen hagyni, fegyver neve, modells/modell.mdl
{0, 0, "", "Smokegrenade", "models/g_offen/v_smokegrenade.mdl"},
{0, 0, "", "C4", "models/g_offen/v_c4.mdl"}
}
enum _:CASE_DATA
{
CaseInSQL[32],
CaseName[32],
KeyInSQL[32],
KeyName[32]
}
new const Cases[][CASE_DATA] = {
//Neve az SQL táblában, Neve a játékban, kulcs neve az SQL-ben, kulcs neve a játékban
{"falchion", "Falchion Case", "falchion_k", "Falchion Case Key"},
{"winter", "Winter Offensive Case", "winter_k", "Winter Offensive Case Key"}
}
//Birtokolt cuccok, kiválasztott skinek
new owned[33][sizeof(Skins)]
new chosen[33][sizeof(Weapons)]
new cases[33][sizeof(Cases)]
new keys[33][sizeof(Cases)]
//Arany
new arany[33]
//Küldés menü
new send[33][8], target[33]
//Piac
enum _:Market
{
bool:Stuff,
Put_out,
Value
}
new Market_Things[33][Market]
//Egyéb
new name[33][32], authid[33][32]
public plugin_init() {
register_plugin(Plugin, Version, Author)
register_cvar("public_csgo", Version, FCVAR_SERVER | FCVAR_SPONLY)
//Fegyver modellcserék
for(new i; i<sizeof(Weapons); i++)
RegisterHam(Ham_Item_Deploy, Weapons[i], "ItemDeploy_Weapon", 1)
for(new i; i<sizeof(Others);i++)
RegisterHam(Ham_Item_Deploy, Others[i], "ItemDeploy_Other", 1)
//Menü parancsok
register_impulse(201, "FoMenu")
register_clcmd("say /fomenu", "FoMenu")
register_clcmd("say_team /fomenu", "FoMenu")
register_clcmd("say /menu", "FoMenu")
register_clcmd("say_team /menu", "FoMenu")
//Say módok
register_clcmd("DARAB", "Kuldes")
register_clcmd("ARANY", "Ellenorzes")
//Halál
register_event("DeathMsg", "eDeathMsg", "a")
}
/*==========PRECACHE==========*/
public plugin_precache()
{
for(new i; i<sizeof(Skins);i++)
precache_model(Skins[i][Model])
/*for(new i; i<sizeof(Default_Skins);i++)
precache_model(Default_Skins[i][Model])*/
for(new i; i<sizeof(Other_Skins);i++)
precache_model(Other_Skins[i][Model])
}
/*==========SQL MENTÉS==========*/
//Ne piszkáld, tökéletes!
public plugin_cfg()
{
static Query[5120], Len
g_SqlTuple = SQL_MakeDbTuple(SQL_INFO[0],SQL_INFO[1],SQL_INFO[2],SQL_INFO[3])
Len += formatex(Query[Len], charsmax(Query), "CREATE TABLE IF NOT EXISTS `g_offen` (`authid` varchar(32) NOT NULL, `username` varchar(32) NOT NULL")
for(new i; i<sizeof(Skins);i++)
{
Len += formatex(Query[Len], charsmax(Query)-Len, ", `%s` int(11) NOT NULL", Skins[i][InSQL])
}
for(new i; i<sizeof(Cases);i++)
{
Len += formatex(Query[Len], charsmax(Query)-Len, ", `%s` int(11) NOT NULL, `%s` int(11) NOT NULL", Cases[i][CaseInSQL], Cases[i][KeyInSQL])
}
Len += formatex(Query[Len], charsmax(Query)-Len, ", `gold` int(11) NOT NULL, `id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY)")
SQL_ThreadQuery(g_SqlTuple,"createTableThread", Query)
}
public createTableThread(FailState, Handle:Query, Error[], Errcode, Data[], DataSize, Float:Queuetime)
{
if(FailState == TQUERY_CONNECT_FAILED)
set_fail_state("Nem lehet csatlakozni az adatbazishoz.")
else if(FailState == TQUERY_QUERY_FAILED)
set_fail_state("Query Error")
if(Errcode)
log_amx("Hiba: %s",Error)
}
public client_putinserver(id)
{
if(!is_user_bot(id) && !is_user_hltv(id))
{
get_user_name(id, name[id], charsmax(name))
get_user_authid(id, authid[id], charsmax(authid))
if(contain(authid[id], "_ID_LAN") != -1) get_user_ip(id, authid[id], charsmax(authid), 1)
Load_SQL(id)
}
}
public client_disconnect(id)
{
if(!is_user_bot(id) && !is_user_hltv(id))
Update_SQL(id)
arrayset(owned[id], 0, sizeof(Skins))
arrayset(cases[id], 0, sizeof(Cases))
arrayset(keys[id], 0, sizeof(Cases))
arrayset(chosen[id], 0, sizeof(Weapons))
authid[id][0] = EOS;
name[id][0] = EOS;
}
public client_infochanged(id)
{
if(!is_user_connected(id))
return PLUGIN_HANDLED
get_user_info(id, "name", name[id], charsmax(name[]))
return PLUGIN_CONTINUE
}
public Load_SQL(id)
{
static Query[5120], Data[1]; Data[0] = id
formatex(Query, charsmax(Query), "SELECT * FROM `g_offen` WHERE authid = ^"%s^";", authid[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)
{
for(new i; i<sizeof(Skins);i++)
{
owned[id][i] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, Skins[i][InSQL]))
}
for(new i; i<sizeof(Cases);i++)
{
keys[id][i] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, Cases[i][KeyInSQL]))
}
for(new i; i<sizeof(Cases);i++)
{
cases[id][i] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, Cases[i][CaseInSQL]))
}
arany[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "gold"))
}
else
{
Save_SQL(id)
}
}
}
public Save_SQL(id)
{
static Query[5120], Len
Len += formatex(Query[Len], charsmax(Query), "INSERT INTO `g_offen` (`authid`, `username`")
for(new i; i<sizeof(Skins);i++)
{
Len += formatex(Query[Len], charsmax(Query)-Len, ", `%s`", Skins[i][InSQL])
}
for(new i; i<sizeof(Cases); i++)
{
Len += formatex(Query[Len], charsmax(Query)-Len, ", `%s`, `%s`", Cases[i][CaseInSQL], Cases[i][KeyInSQL])
}
Len += formatex(Query[Len], charsmax(Query)-Len, ", `gold`) VALUES (^"%s^", ^"%s^"", authid[id], name[id])
for(new i;i<sizeof(Skins);i++)
{
Len += formatex(Query[Len], charsmax(Query)-Len, ", ^"0^"")
}
for(new i; i<sizeof(Cases); i++)
{
Len += formatex(Query[Len], charsmax(Query)-Len, ", ^"0^", ^"0^"")
}
Len += formatex(Query[Len], charsmax(Query)-Len, ", ^"0^");")
SQL_ThreadQuery(g_SqlTuple, "QuerySetData", Query)
}
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 Update_SQL(id)
{
static Query[5120], Len
Len += formatex(Query[Len], charsmax(Query), "UPDATE `g_offen` SET `username` = ^"%s^"", name[id])
for(new i;i<sizeof(Skins);i++)
{
Len += formatex(Query[Len], charsmax(Query)-Len, ", `%s` = %d", Skins[i][InSQL], owned[id][i])
}
for(new i;i<sizeof(Cases);i++)
{
Len += formatex(Query[Len], charsmax(Query)-Len, ", `%s` = %d, `%s` = %d", Cases[i][CaseInSQL], cases[id][i], Cases[i][KeyInSQL], keys[id][i])
}
Len += formatex(Query[Len], charsmax(Query)-Len, ", `gold` = %d WHERE `authid` = ^"%s^";", keys[id], arany[id], authid[id])
SQL_ThreadQuery(g_SqlTuple, "QuerySetData", Query)
}
public plugin_end() SQL_FreeHandle(g_SqlTuple)
/*==========MENÜK==========*/
//Tökéletes, de ha akarsz, belenyúlsz.
//Javaslom, hogy csak a menük neveit módosítsd, a ciklusokba és handlerekbe ne nyúlj bele.
public FoMenu(id)
{
new txt[128]
formatex(txt, charsmax(txt), "\r%s\w%s^nby \y%s^nFőMenü", Plugin, Version, Author)
new menu = menu_create(txt, "FoMenu_h")
menu_additem(menu, "Raktár", "", 0)
menu_additem(menu, "Láda nyitás", "", 0)
menu_additem(menu, "Lomtár", "", 0)
menu_additem(menu, "Küldés", "", 0)
menu_additem(menu, "Piac", "", 0)
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_setprop(menu, MPROP_EXITNAME, "Kilépés")
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
public FoMenu_h(id, menu, item)
{
switch(item)
{
case 0:Raktar_M(id)
case 1:Lada_M(id)
case 2:Lomtar_M(id)
case 3:Kuldes_M(id)
case 4:Piac_M(id)
case MENU_EXIT:{
menu_destroy(menu)
return PLUGIN_HANDLED
}
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
public Raktar_M(id)
{
new txt[128], num[8]
formatex(txt, charsmax(txt), "\r%s\w%s^nRaktár", Plugin, Version)
new menu = menu_create(txt, "Raktar_h")
for(new i; i<sizeof(Skins);i++)
{
if(owned[id][i] > 0)
{
num_to_str(i, num, charsmax(num))
formatex(txt, charsmax(txt), "%s [%d DB]", Skins[i][Name], owned[id][i])
menu_additem(menu, txt, num, 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 Raktar_h(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new data[9], access, callback, szName[64]
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback)
new key = str_to_num(data)
for(new i; i<sizeof(Weapons);i++)
{
copy(szName, charsmax(szName), Weapons[i])
replace(szName, charsmax(szName), "weapon_", "")
if(containi(Skins[key][Name], szName) != -1)
{
chosen[id][i] = key+1
ColorChat(id, NORMAL, "^4[%s]^1 Kiválasztottad a(z) ^3%s ^1skint!", Prefix, Skins[key][Name])
break;
}
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
public Lada_M(id)
{
new txt[128]
formatex(txt, charsmax(txt), "\r%s\w%s^nLáda nyitás", Plugin, Version)
new menu = menu_create(txt, "Lada_h")
for(new i; i<sizeof(Cases);i++)
{
formatex(txt, charsmax(txt), "%s [%d DB] | [%d DB Kulcs]", Cases[i][CaseName], cases[id][i], keys[id][i])
menu_additem(menu, txt, "", 0)
}
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_setprop(menu, MPROP_EXITNAME, "Kilépés")
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
public Lada_h(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
if(keys[id][item] > 0 && cases[id][item] > 0)
{
keys[id][item]--
cases[id][item]--
weapon_drop(id, item)
}
else
{
if(keys[id][item] == 0)
ColorChat(id, NORMAL, "^4[%s]^1 Nincs elég ^4%s^1-ed!", Prefix, Cases[item][KeyName])
else
ColorChat(id, NORMAL, "^4[%s]^1 Nincs elég ^4%s^1-d!", Prefix, Cases[item][CaseName])
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
public Lomtar_M(id)
{
new txt[128], num[8]
formatex(txt, charsmax(txt), "\r%s\w%s^nLomtár", Plugin, Version)
new menu = menu_create(txt, "Lomtar_h")
for(new i; i<sizeof(Skins);i++)
{
if(owned[id][i] > 0)
{
num_to_str(i, num, charsmax(num))
formatex(txt, charsmax(txt), "%s [%d DB]", Skins[i][Name], owned[id][i])
menu_additem(menu, txt, num, 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 Lomtar_h(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new data[9], access, callback, szName[64]
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback)
new key = str_to_num(data)
owned[id][key]--
ColorChat(id, NORMAL, "^4[%s]^1 Eldobtál egy ^3%s ^1skint!", Prefix, Skins[key][Name])
Update_SQL(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
public Kuldes_M(id)
{
new txt[128], num[8]
formatex(txt, charsmax(txt), "\r%s\w%s^nKüldés", Plugin, Version)
new menu = menu_create(txt, "Kuldes_h")
formatex(txt, charsmax(txt), "Arany: %d", arany[id])
menu_additem(menu, txt, "Arany", 0)
for(new i; i<sizeof(Skins);i++)
{
if(owned[id][i] > 0)
{
num_to_str(i, num, charsmax(num))
formatex(txt, charsmax(txt), "%s [%d DB]", Skins[i][Name], owned[id][i])
menu_additem(menu, txt, num, 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 Kuldes_h(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new data[9], access, callback, szName[64]
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback)
copy(send[id], charsmax(send[]), data)
JatekosValaszt(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
public JatekosValaszt(id)
{
new txt[128], userID[32]
formatex(txt, charsmax(txt), "\r%s\w%s^nVálassz játékost!", Plugin, Version)
new menu = menu_create(txt, "JatekosValaszt_h")
new players[32], pnum
get_players(players, pnum, "c")
for(new i; i<pnum; i++)
{
if(!is_user_connected(players[i]))
continue;
formatex(userID, charsmax(userID), "%d", get_user_userid(players[i]))
menu_additem(menu, name[players[i]], userID, 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 JatekosValaszt_h(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new data[9], access, callback, szName[64]
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback)
new userID = str_to_num(data)
target[id] = find_player("k", userID)
if(!is_user_connected(target[id]))
{
ColorChat(id, NORMAL, "^4[%s]^1 Sajnálom, lecsatlakozott akit kiválasztottál!", Prefix)
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
client_cmd(id, "messagemode DARAB");
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public Kuldes(id)
{
new txt[128], num
read_args(txt, charsmax(txt))
remove_quotes(txt)
if(is_str_num(txt))
{
num = str_to_num(txt)
if(equal(send[id], "Arany"))
{
if(arany[id] >= num)
{
arany[target[id]] += num
arany[id] -= num
ColorChat(target[id], NORMAL, "^4[%s]^1 Kaptál ^3%d^1 ^4arany^1at!", Prefix, num)
ColorChat(id, NORMAL, "^4[%s]^1 Elküldtél ^3%d^1 ^4arany^1at!", Prefix, num)
Update_SQL(id)
Update_SQL(target[id])
}
else
ColorChat(id, NORMAL, "^4[%s]^1 Nincs elég ^4arany^1ad!", Prefix)
}
else
{
new i = str_to_num(send[id])
if(owned[id][i] >= num)
{
owned[target[id]][i] += num
owned[id][i] -= num
ColorChat(target[id], NORMAL, "^4[%s]^1 Kaptál ^3%d ^4%s^1-t!", Prefix, num, Skins[i][Name])
ColorChat(id, NORMAL, "^4[%s]^1 Elküldtél ^3%d ^4%s^1-t!", Prefix, num, Skins[i][Name])
Update_SQL(id)
Update_SQL(target[id])
}
else
ColorChat(id, NORMAL, "^4[%s]^1 Nincs ennyi^4%s^1-ed!", Prefix, Skins[i][Name])
}
}
else
ColorChat(id, NORMAL, "^4[%s]^1 A megadott szöveg (%s) nem csak számokat tartalmazott! Érvénytelen!", Prefix, txt)
return PLUGIN_CONTINUE;
}
public Piac_M(id)
{
new txt[128]
formatex(txt, charsmax(txt), "\r%s\w%s^nPiac", Plugin, Version)
new menu = menu_create(txt, "Piac_h")
menu_additem(menu, "Eladás", "", 0)
menu_additem(menu, "Vásárlás", "", 0)
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_setprop(menu, MPROP_EXITNAME, "Kilépés")
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
public Piac_h(id, menu, item)
{
switch(item)
{
case 0: Eladas_M(id)
case 1: Vasarlas_M(id)
case MENU_EXIT:{
menu_destroy(menu)
return PLUGIN_HANDLED
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public Eladas_M(id)
{
new txt[128]
formatex(txt, charsmax(txt), "\r%s\w%s^nPiac eladás", Plugin, Version)
new menu = menu_create(txt, "Eladas_h")
if(!Market_Things[id][Stuff])
{
if(Market_Things[id][Put_out] != -1)
{
formatex(txt, charsmax(txt), "%s", Skins[Market_Things[id][Put_out]][Name])
menu_additem(menu, txt, "0", 0)
}
else
menu_additem(menu, "Válaszd ki a tárgyat!", "", 0)
formatex(txt, charsmax(txt), "Ár: %d arany", Market_Things[id][Value])
menu_additem(menu, txt, "1", 0)
if(Market_Things[id][Value])
menu_additem(menu, "Mehet a Piacra!", "2", 0)
}
else
{
if(Market_Things[id][Value])
menu_additem(menu, "Ajánlat visszavonása", "-1", 0)
}
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_setprop(menu, MPROP_EXITNAME, "Kilépés")
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
public Eladas_h(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[9], szName[64], access, callback, weapon[32]
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback)
new key = str_to_num(data)
switch(key)
{
case -1:
{
Market_Things[id][Value] = 0
Market_Things[id][Stuff] = false
owned[id][Market_Things[id][Put_out]]++
Market_Things[id][Put_out] = -1
}
case 0:
{
TargyValaszt(id)
}
case 1:
{
client_cmd(id, "messagemode ARANY")
}
case 2:
{
if(Market_Things[id][Put_out] != -1)
{
Market_Things[id][Stuff] = true
owned[id][Market_Things[id][Put_out]]--
copy(weapon, charsmax(weapon), weapon_now(id))
if(weapon[0]) weapon_set_default(id, weapon)
ColorChat(0, NORMAL, "^4[%s] ^3%s ^1kirakott egy ^4%s^1-t a piacra ^3%d ^4arany^1ért!", Prefix, name[id], Skins[Market_Things[id][Put_out]][Name], Market_Things[id][Value])
}
else
{
ColorChat(0, NORMAL, "^4[%s] ^1Nem választottál ki semmit!", Prefix)
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
}
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
public Ellenorzes(id)
{
new num, txt[32]
read_args(txt, charsmax(txt))
remove_quotes(txt)
num = str_to_num(txt)
if(strlen(txt) > 7)
{
client_cmd(id, "messagemode ARANY")
}
else if(num < 500)
{
ColorChat(0, NORMAL, "^4[%s] ^1Nem tudsz eladni ^3500 ^4arany^1 alattt!", Prefix)
Eladas_M(id)
}
else
{
Market_Things[id][Value] = num
Eladas_M(id)
}
}
public TargyValaszt(id)
{
new txt[128], num[8]
formatex(txt, charsmax(txt), "\r%s\w%s^nVálaszd ki a tárgyat!", Plugin, Version)
new menu = menu_create(txt, "TargyValaszt_h")
for(new i;i<sizeof(Skins);i++)
{
if(owned[id][i] > 0)
{
num_to_str(i, num, charsmax(num))
formatex(txt, charsmax(txt), "%s (%d DB)", Skins[i][Name], owned[id][i])
menu_additem(menu, txt, num, 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 TargyValaszt_h(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[9], szName[64], access, callback
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback)
new key = str_to_num(data)
Market_Things[id][Put_out] = key
Eladas_M(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
public Vasarlas_M(id)
{
new txt[128], userID[32]
formatex(txt, charsmax(txt), "\r%s\w%s^nPiac vásárlás", Plugin, Version)
new menu = menu_create(txt, "Vasarlas_h")
new players[32], pnum
get_players(players, pnum, "c")
for(new i; i<pnum;i++)
{
if(Market_Things[players[i]][Stuff])
{
formatex(userID, charsmax(userID), "%d", get_user_userid(players[i]))
formatex(txt, charsmax(txt), "%s (Eladó: %s | Ára: %d)", Skins[Market_Things[players[i]][Put_out]][Name], Market_Things[players[i]][Value])
menu_additem(menu, txt, userID, 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 Vasarlas_h(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED
}
new data[6] ,szName[64],access,callback
new name[32]
menu_item_getinfo(menu, item, access, data, charsmax(data), szName, charsmax(szName), callback)
new userID = str_to_num(data)
new userId = find_player("k", userID)
if(arany[id] >= Market_Things[userId][Value] && Market_Things[userId][Stuff])
{
Market_Things[userId][Stuff] = false
ColorChat(id, NORMAL, "^4[%s] ^1Vettél egy ^3%s^1-t ^4%s^1-től ^3%d ^4arany^1ért!", Prefix, Skins[Market_Things[userId][Put_out]][Name], name[userId], Market_Things[userId][Value])
ColorChat(userID, NORMAL, "^4[%s] ^4%s^1 vett tőled ^3%s^1-t ^3%d ^4arany^1ért!", Prefix, name[id], Skins[Market_Things[userId][Put_out]][Name], Market_Things[userId][Value])
arany[userId] += Market_Things[userId][Value]
arany[id] -= Market_Things[userId][Value]
Market_Things[userId][Value] = 0
owned[id][Market_Things[userId][Put_out]] ++
owned[userId][Market_Things[userId][Put_out]] --
Market_Things[id][Put_out] = -1
Update_SQL(userID)
Update_SQL(id)
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
/*==========DROPP==========*/
//Jól droppol, az esélyt a plugin elején állítod.
public eDeathMsg()
{
new attacker = read_data(1)
if(attacker != read_data(2) && is_user_alive(attacker))
{
set_hudmessage(random(255), random(255), random(255), -1.0, 0.20, 0, 6.0, 12.0)
if(read_data(3))
{
new mennyiseg = random_num(100, 200)
arany[attacker] += mennyiseg
show_hudmessage(attacker, "[ +%d Arany ]", mennyiseg)
}
else
{
new mennyiseg = random_num(50, 100)
arany[attacker] += mennyiseg
show_hudmessage(attacker, "[ +%d Arany ]", mennyiseg)
}
new Float:num = random_float(0.0, 100.0)
if(num <= KEY_DROP)
{
new drp = random_num(0, sizeof(Cases)-1)
keys[attacker][drp]++
ColorChat(attacker, NORMAL, "^4[%s] ^1Találtál egy ^3%s^1-t!", Prefix, Cases[drp][KeyName])
}
else if(num <= KEY_DROP+CASE_DROP)
{
new drp = random_num(0, sizeof(Cases)-1)
cases[attacker][drp]++
ColorChat(attacker, NORMAL, "^4[%s] ^1Találtál egy ^3%s^1-t!", Prefix, Cases[drp][CaseName])
}
Update_SQL(attacker)
}
return PLUGIN_HANDLED
}
/*==========SKIN CSERE==========*/
//Nem belenyúlni, mert könnyen összekavarodnak a dolgok!!!!
public ItemDeploy_Weapon(ent)
{
if(ent <=0)
return HAM_IGNORED;
new id = get_weapon_owner(ent)
new wpn[32]; pev(ent, pev_classname, wpn, charsmax(wpn))
replace(wpn, charsmax(wpn), "weapon_", "")
for(new i; i<sizeof(Weapons);i++)
{
if(chosen[id][i] == 0)
{
/*for(new j; j<sizeof(Default_Skins);j++)
{
if(containi(Default_Skins[j][Name], wpn) != -1)
{
set_pev(id, pev_viewmodel2, Default_Skins[j][Model])
return HAM_IGNORED;
}
}*/
return HAM_IGNORED;
}
else
{
for(new j; j<sizeof(Skins);j++)
{
if(containi(Skins[j][Name], wpn) != -1 && chosen[id][i] == j+1)
{
set_pev(id, pev_viewmodel2, Skins[j][Model])
return HAM_IGNORED;
}
}
}
}
return HAM_IGNORED;
}
public ItemDeploy_Other(ent)
{
if(ent <=0)
return HAM_IGNORED;
new id = get_weapon_owner(ent)
new wpn[32]; pev(ent, pev_classname, wpn, charsmax(wpn))
replace(wpn, charsmax(wpn), "weapon_", "")
for(new i; i<sizeof(Others);i++)
{
for(new j; j<sizeof(Other_Skins);j++)
{
if(containi(Other_Skins[j][Name], wpn) != -1)
{
set_pev(id, pev_viewmodel2, Other_Skins[j][Model])
return HAM_IGNORED;
}
}
}
return HAM_IGNORED;
}
/*==========STOCKOK==========*/
//Nem piszkálni!
stock weapon_set_default(id, weapon[])
{
for(new i; i<sizeof(Weapons);i++)
{
if(containi(Weapons[i], weapon) != -1)
{
chosen[id][i] = 0
return 1
}
}
return 0
}
stock weapon_now(id)
{
new wpn[32]; get_weaponname(get_user_weapon(id), wpn, charsmax(wpn))
replace(wpn, charsmax(wpn), "weapon_", "")
for(new i; i<sizeof(Weapons);i++)
{
if(chosen[id][i] == Market_Things[id][Put_out]+1 && owned[id][Market_Things[id][Put_out]] < 2)
return wpn;
}
copy(wpn, charsmax(wpn), "")
return wpn;
}
stock weapon_drop(id, num)
{
new Float:rarity = random_float(0.0, 100.0)
new how_rare, count, skins[16]
if(rarity < 35.0) how_rare = 0
else if(rarity >= 35.0 && rarity < 50.0) how_rare = 1
else if(rarity >= 50.0 && rarity < 65.0) how_rare = 2
else if(rarity >= 65.0 && rarity < 80.0) how_rare = 3
else if(rarity >= 80.0 && rarity < 92.5) how_rare = 4
else if(rarity >= 92.5 && rarity < 97.5) how_rare = 5
else if(rarity >= 97.5 && rarity <= 100.0) how_rare = 6
for(new i; i<sizeof(Skins);i++)
{
if(Skins[i][Rarity] == how_rare && Skins[i][Drop_from] == num)
{
skins[count] = i
count++
}
}
new dropped = random_num(0, count)
owned[id][skins[dropped]]++
ColorChat(id, NORMAL, "^4[%s]^1 Egy ^3%s ^1skint nyitottál!", Prefix, Skins[skins[dropped]][Name])
}