/*[Bugok]: *Amíg nem választod ki a raktárban az 1. skint, nem mutatja a többit
*/
/*[Tennivalók]: *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 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!
*Köszönet mforce-nak a CS:GO-s gránát hangok pluginért.
*Szükséges .zip fájl linkje: https://www.dropbox.com/s/e9t2waz9lqud3u1/csgo.zip?dl=0
*/
/*[Changelog]
v2.0.1 - SQL adatok külső fájlból való olvasása
v2.0.0 - Skinek és ládák .ini fájlból való betöltése. Mellékelt alap skinek. CS:GO-s gránát hangok. Mentésben elírás javítása.
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>
//Prefix
new const gMenuPrefix[] = "\w[.:*[\rDarK*_*DemonS]*:.\w]";
new const gChatPrefix[] = "[.:*[DarK*_*DemonS]*:.]";
//Köszönet mforce-nak (Fegyver lekérés, rádió hangok.)
const m_pPlayer = 41
const XO_WEAPON = 4
#define get_weapon_owner(%1) get_pdata_cbase(%1, m_pPlayer, XO_WEAPON)
const MSGARG_SENDER_ID = 2;
const MSGARG_SENDER_NAME = 4;
const MSGARG_PRINT_RADIO = 5;
const MSGARG_AUDIO_CODE = 2;
#define MAX_SOUND_PATH_LENGTH 32
#define MAX_SOUNDS 4 // 4 + 4 + 4 = 12
// default audio file format: WAVE(PCM), 8-bit, 22.05 KHz, Mono
// converted: WAVE(PCM), 16-bit, 24.0 KHz, Mono
new const g_szSmokeSounds[MAX_SOUNDS][MAX_SOUND_PATH_LENGTH] = {
"radio/custom/smoke01.wav",
"radio/custom/smoke02.wav",
"radio/custom/smoke03.wav",
"radio/custom/smoke04.wav"
}
new const g_szFlashSounds[MAX_SOUNDS][MAX_SOUND_PATH_LENGTH] = {
"radio/custom/flashbang01.wav",
"radio/custom/flashbang02.wav",
"radio/custom/flashbang03.wav",
"radio/custom/flashbang04.wav"
}
new const g_szHegrenSounds[MAX_SOUNDS][MAX_SOUND_PATH_LENGTH] = {
"radio/custom/grenade01.wav",
"radio/custom/grenade02.wav",
"radio/custom/grenade03.wav",
"radio/custom/grenade04.wav"
}
new const Author[] = {"LyleChriss"}
new const Version[] = {"2.0.1"}
new const Plugin[] = {"CS:GO Mod"}
//SQL
new const SQL_INFO[][] = {
"mysql8.srkhost.eu",
"",
"",
""
}
new Handle:g_SqlTuple
enum _:eDefault
{
EntName[32],
Model[121]
};
//Skinezendő fegyverek
new const weapons[][] = {
"weapon_m4a1",
"weapon_ak47",
"weapon_awp",
"weapon_scout",
"weapon_famas",
"weapon_galil",
"weapon_aug",
"weapon_m3",
"weapon_xm1014",
"weapon_knife",
"weapon_deagle",
"weapon_usp",
"weapon_glock18"
}
//Egyéb skinezendő dolgok
new const Others[][] = {
"weapon_hegrenade",
"weapon_smokegrenade",
"weapon_c4",
"weapon_flashbang"
}
//Alap skinek
new const DefaultSkins[][eDefault] = {
{"weapon_m4a1", "models/v_m4a1.mdl"},
{"weapon_ak47", "models/v_ak47.mdl"},
{"weapon_awp", "models/v_awp.mdl"},
{"weapon_scout", "models/v_scout.mdl"},
{"weapon_aug", "models/v_aug.mdl"},
{"weapon_galil", "models/v_galil.mdl"},
{"weapon_aug", "models/v_aug.mdl"},
{"weapon_m3", "models/v_m3.mdl"},
{"weapon_xm1014", "models/v_xm1014.mdl"},
{"weapon_knife", "models/v_knife.mdl"},
{"weapon_deagle", "models/v_deagle.mdl"},
{"weapon_usp", "models/v_usp.mdl"},
{"weapon_glock18", "models/v_glock18.mdl"}
}
//Ideiglenes tömb a skineknek
enum _:DATA
{
EntName[32],
Drop_from,
Rarity,
InSQL[32],
Name[32],
Model[64]
}
new tmp_Skins[DATA]
//Dinamikus tömb a skineknek és ládáknak
new Array:Skins, Array:Cases
//Birtokol cuccok
new Array:Owned[33], Array:OwnedKeys[33], Array:OwnedCases[33]
//Kiválasztott skin
new chosen[33][sizeof(weapons)]
//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]
//Cvarok
new cvar_KeyDrop, cvar_CaseDrop
//new Prefix[32]
//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")
//Cvarok
cvar_KeyDrop = register_cvar("csgo_keydrop", "7.0")
cvar_CaseDrop = register_cvar("csgo_casedrop", "25.0")
//Gránát cuccmók
//register_message(get_user_msgid("SendAudio"), "Message_SendAudio");
register_message(get_user_msgid("TextMsg"), "Message_TextMsg");
//get_cvar_string("amx_sql_host", SQL_INFO[0], charsmax(SQL_INFO[]))
//get_cvar_string("amx_sql_user", SQL_INFO[1], charsmax(SQL_INFO[]))
//get_cvar_string("amx_sql_pass", SQL_INFO[2], charsmax(SQL_INFO[]))
//get_cvar_string("amx_sql_db", SQL_INFO[3], charsmax(SQL_INFO[]))
}
/*==========PRECACHE==========*/
public plugin_precache()
{
Skins = ArrayCreate(DATA)
Cases = ArrayCreate(DATA)
for(new i; i<34; i++)
{
Owned[i] = ArrayCreate()
OwnedCases[i] = ArrayCreate()
OwnedKeys[i] = ArrayCreate()
}
new Buffer[256], pFile = fopen("addons/amxmodx/configs/g_offen.ini", "rt")
if(pFile)
{
while(!feof(pFile))
{
fgets(pFile, Buffer, charsmax(Buffer))
if(Buffer[0] && Buffer[0] != ';' || Buffer[0] && Buffer[0] != '/' && Buffer[1] != '/')
{
parse(Buffer, tmp_Skins[EntName], charsmax(tmp_Skins[EntName]), tmp_Skins[Drop_from], charsmax(tmp_Skins[Drop_from]), tmp_Skins[Rarity], charsmax(tmp_Skins[Rarity]), tmp_Skins[InSQL], charsmax(tmp_Skins[InSQL]), tmp_Skins[Name], charsmax(tmp_Skins[Name]), tmp_Skins[Model], charsmax(tmp_Skins[Model]))
if(equal(tmp_Skins[EntName], "lada"))
ArrayPushArray(Cases, tmp_Skins)
else
ArrayPushArray(Skins, tmp_Skins)
}
}
fclose(pFile)
}
else fprintf(pFile, ";^"entitásnév^" ^"Láda ID^" ^"Ritkaság^" ^"Neve az SQL-ben^" ^"Neve a játékbanv^" ^"modell^"^n;Példa egy AK skinre^n;^"weapon_ak47^" ^"0^" ^"1^" ^"elso_ak^" ^"AK47 | Első skin^" ^"models/g_offen/v_ak47_1.mdl^"^n;Példa egy ládára^n;^"lada^" ^"^" ^"^" ^"elso_lada^" ^"Operation Wildfire^" ^"^"^n");
for(new i; i<sizeof(DefaultSkins);i++)
precache_model(DefaultSkins[i][Model])
for(new i; i<ArraySize(Skins);i++)
{
ArrayGetArray(Skins, i, tmp_Skins)
precache_model(tmp_Skins[Model])
}
//Gránát hangok
for(new i; i< MAX_SOUNDS; i++)
{
precache_sound(g_szSmokeSounds[i])
precache_sound(g_szFlashSounds[i])
precache_sound(g_szHegrenSounds[i])
}
}
/*==========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<ArraySize(Skins);i++)
{
ArrayGetArray(Skins, i, tmp_Skins)
Len += formatex(Query[Len], charsmax(Query)-Len, ", \`%s\` int(11) NOT NULL", tmp_Skins[InSQL])
}
for(new i; i<ArraySize(Cases);i++)
{
ArrayGetArray(Cases, i, tmp_Skins)
Len += formatex(Query[Len], charsmax(Query)-Len, ", \`%s\` int(11) NOT NULL, \`%s_k\` int(11) NOT NULL", tmp_Skins[InSQL], tmp_Skins[InSQL])
}
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_disconnected(id)
{
if(!is_user_bot(id) && !is_user_hltv(id))
Update_SQL(id)
ArrayClear(Owned[id])
ArrayClear(OwnedKeys[id])
ArrayClear(OwnedCases[id])
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];
new kname[32], stg
if(SQL_NumRows(Query) > 0)
{
for(new i; i<ArraySize(Skins);i++)
{
ArrayGetArray(Skins, i, tmp_Skins)
stg = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, tmp_Skins[InSQL]))
ArrayPushCell(Owned[id], stg)
}
for(new i; i<ArraySize(Cases);i++)
{
ArrayGetArray(Cases, i, tmp_Skins)
formatex(kname, charsmax(kname), "%s_k", tmp_Skins[InSQL])
stg = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, kname))
ArrayPushCell(OwnedKeys[id], stg)
stg = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, tmp_Skins[InSQL]))
ArrayPushCell(OwnedCases[id], stg)
}
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<ArraySize(Skins);i++)
{
ArrayGetArray(Skins, i, tmp_Skins)
Len += formatex(Query[Len], charsmax(Query)-Len, ", \`%s\`", tmp_Skins[InSQL])
}
for(new i; i<ArraySize(Cases); i++)
{
ArrayGetArray(Cases, i, tmp_Skins)
Len += formatex(Query[Len], charsmax(Query)-Len, ", \`%s\`, \`%s_k\`", tmp_Skins[InSQL], tmp_Skins[InSQL])
}
Len += formatex(Query[Len], charsmax(Query)-Len, ", \`gold\`) VALUES (^"%s^", ^"%s^"", authid[id], name[id])
for(new i;i<ArraySize(Skins);i++)
{
Len += formatex(Query[Len], charsmax(Query)-Len, ", ^"0^"")
}
for(new i; i<ArraySize(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<ArraySize(Skins);i++)
{
ArrayGetArray(Skins, i, tmp_Skins)
Len += formatex(Query[Len], charsmax(Query)-Len, ", \`%s\` = %d", tmp_Skins[InSQL], ArrayGetCell(Owned[id], i))
}
for(new i;i<ArraySize(Cases);i++)
{
ArrayGetArray(Skins, i, tmp_Skins)
Len += formatex(Query[Len], charsmax(Query)-Len, ", \`%s\` = %d, \`%s_k\` = %d", tmp_Skins[InSQL], ArrayGetCell(OwnedCases[id], i), tmp_Skins[InSQL], ArrayGetCell(OwnedKeys[id], i))
}
Len += formatex(Query[Len], charsmax(Query)-Len, ", \`gold\` = %d WHERE \`authid\` = ^"%s^";", arany[id], authid[id])
SQL_ThreadQuery(g_SqlTuple, "QuerySetData", Query)
}
public plugin_end()
{
SQL_FreeHandle(g_SqlTuple)
for(new i; i<34; i++)
{
ArrayDestroy(Owned[i])
ArrayDestroy(OwnedCases[i])
ArrayDestroy(OwnedKeys[i])
}
ArrayDestroy(Skins)
ArrayDestroy(Cases)
}
/*==========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), "%s \y[ \rFőmenü \y]", gMenuPrefix);
new menu = menu_create(txt, "FoMenu_h")
menu_additem(menu, "\r[\wRaktár\r]", "", 0)
menu_additem(menu, "\r[\wLáda nyitás\r]", "", 0)
menu_additem(menu, "\r[\wLomtár\r]", "", 0)
menu_additem(menu, "\r[\wKüldés\r]", "", 0)
menu_additem(menu, "\r[\wPiac\r]", "", 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), "%s \y[ \rRaktár \y]", gMenuPrefix);
new menu = menu_create(txt, "Raktar_h")
for(new i; i<ArraySize(Skins);i++)
{
if(ArrayGetCell(Owned[id], i) > 0)
{
ArrayGetArray(Skins, i, tmp_Skins)
num_to_str(i, num, charsmax(num))
formatex(txt, charsmax(txt), "%s [%d DB]", tmp_Skins[Name], ArrayGetCell(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++)
{
ArrayGetArray(Skins, i, tmp_Skins)
if(equal(tmp_Skins[EntName], weapons[i]) != -1)
{
chosen[id][i] = key+1
client_print_color(id, print_team_default, "^4[%s]^1 Kiválasztottad a(z) ^3%s ^1skint!", gChatPrefix, tmp_Skins[Name])
break;
}
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
public Lada_M(id)
{
new txt[128]
formatex(txt, charsmax(txt), "%s \y[ \rLáda nyitás \y]", gMenuPrefix);
new menu = menu_create(txt, "Lada_h")
for(new i; i<ArraySize(Cases);i++)
{
ArrayGetArray(Skins, i, tmp_Skins)
formatex(txt, charsmax(txt), "%s [%d DB] | [%d DB Kulcs]", tmp_Skins[Name], ArrayGetCell(OwnedCases[id], i), ArrayGetCell(OwnedKeys[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(ArrayGetCell(OwnedKeys[id], item) > 0 && ArrayGetCell(OwnedCases[id], item) > 0)
{
ArraySetCell(OwnedKeys[id], item, ArrayGetCell(OwnedKeys[id], item)-1)
ArraySetCell(OwnedCases[id], item, ArrayGetCell(OwnedCases[id], item)-1)
weapon_drop(id, item)
}
else
{
ArrayGetArray(Skins, item, tmp_Skins)
if(ArrayGetCell(OwnedKeys[id], item) == 0)
client_print_color(id, print_team_default, "^4[%s]^1 Nincs elég ^4%s Kulcsod^1!", gChatPrefix, tmp_Skins[Name])
else
client_print_color(id, print_team_default, "^4[%s]^1 Nincs elég ^4%s Ládád^1!", gChatPrefix, tmp_Skins[Name])
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
public Lomtar_M(id)
{
new txt[128], num[8]
formatex(txt, charsmax(txt), "%s \y[ \rLomtár \y]", gMenuPrefix);
new menu = menu_create(txt, "Lomtar_h")
for(new i; i<ArraySize(Skins);i++)
{
if(ArrayGetCell(Owned[id], i) > 0)
{
ArrayGetArray(Skins, i, tmp_Skins)
num_to_str(i, num, charsmax(num))
formatex(txt, charsmax(txt), "%s [%d DB]", tmp_Skins[Name], ArrayGetCell(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)
ArraySetCell(Owned[id], key, ArrayGetCell(Owned[id], key)-1)
ArrayGetArray(Skins, key, tmp_Skins)
client_print_color(id, print_team_default, "^4[%s]^1 Eldobtál egy ^3%s ^1skint!", gChatPrefix, tmp_Skins[Name])
Update_SQL(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
public Kuldes_M(id)
{
new txt[128], num[8]
formatex(txt, charsmax(txt), "%s\y[ \rKüldés \y]", gMenuPrefix);
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<ArraySize(Skins);i++)
{
if(ArrayGetCell(Owned[id], i) > 0)
{
ArrayGetArray(Skins, i, tmp_Skins)
num_to_str(i, num, charsmax(num))
formatex(txt, charsmax(txt), "%s [%d DB]", tmp_Skins[Name], ArrayGetCell(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), "%s\y[ \rVálassz játékost! \y]", gMenuPrefix);
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]))
{
client_print_color(id, print_team_default, "^4[%s]^1 Sajnálom, lecsatlakozott akit kiválasztottál!", gChatPrefix)
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
client_print_color(target[id], print_team_default, "^4[%s]^1 Kaptál ^3%d^1 ^4arany^1at!", gChatPrefix, num)
client_print_color(id, print_team_default, "^4[%s]^1 Elküldtél ^3%d^1 ^4arany^1at!", gChatPrefix, num)
Update_SQL(id)
Update_SQL(target[id])
}
else
client_print_color(id, print_team_default, "^4[%s]^1 Nincs elég ^4arany^1ad!", gChatPrefix)
}
else
{
new i = str_to_num(send[id])
if(ArrayGetCell(Owned[id], i) >= num)
{
ArraySetCell(Owned[target[id]], i, ArrayGetCell(Owned[target[id]], i)+1)
ArraySetCell(Owned[id], i, ArrayGetCell(Owned[id], i)-1)
ArrayGetArray(Skins, i, tmp_Skins)
client_print_color(target[id], print_team_default, "^4[%s]^1 Kaptál ^3%d ^4%s^1-t!", gChatPrefix, num, tmp_Skins[Name])
client_print_color(id, print_team_default, "^4[%s]^1 Elküldtél ^3%d ^4%s^1-t!", gChatPrefix, num, tmp_Skins[Name])
Update_SQL(id)
Update_SQL(target[id])
}
else
{
ArrayGetArray(Skins, i, tmp_Skins)
client_print_color(id, print_team_default, "^4[%s]^1 Nincs ennyi^4%s^1-ed!", gChatPrefix, tmp_Skins[Name])
}
}
}
else
client_print_color(id, print_team_default, "^4[%s]^1 A megadott szöveg (%s) nem csak számokat tartalmazott! Érvénytelen!", gChatPrefix, txt)
return PLUGIN_CONTINUE;
}
public Piac_M(id)
{
new txt[128]
formatex(txt, charsmax(txt), "%s \y[ \rPiac \y]", gMenuPrefix);
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), "%s \y[ \rPiac eladás \y]", gMenuPrefix);
new menu = menu_create(txt, "Eladas_h")
if(!Market_Things[id][Stuff])
{
if(Market_Things[id][Put_out] != -1)
{
ArrayGetArray(Skins, Market_Things[id][Put_out], tmp_Skins)
formatex(txt, charsmax(txt), "%s", tmp_Skins[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
ArraySetCell(Owned[id], Market_Things[id][Put_out], ArrayGetCell(Owned[id], Market_Things[id][Put_out])+1)
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
ArraySetCell(Owned[id], Market_Things[id][Put_out], ArrayGetCell(Owned[id], Market_Things[id][Put_out])-1)
copy(weapon, charsmax(weapon), weapon_now(id))
if(weapon[0]) weapon_set_default(id, weapon)
ArrayGetArray(Skins, Market_Things[id][Put_out], tmp_Skins)
client_print_color(0, print_team_default, "^4[%s] ^3%s ^1kirakott egy ^4%s^1-t a piacra ^3%d ^4arany^1ért!", gChatPrefix, name[id], tmp_Skins[Name], Market_Things[id][Value])
}
else
{
client_print_color(0, print_team_default, "^4[%s] ^1Nem választottál ki semmit!", gChatPrefix)
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)
{
client_print_color(0, print_team_default, "^4[%s] ^1Nem tudsz eladni ^3500 ^4arany^1 alatt!", gChatPrefix)
Eladas_M(id)
}
else
{
Market_Things[id][Value] = num
Eladas_M(id)
}
}
public TargyValaszt(id)
{
new txt[128], num[8]
formatex(txt, charsmax(txt), "%s \dVálaszd ki a tárgyat! \y]", Plugin, Version)
new menu = menu_create(txt, "TargyValaszt_h")
for(new i;i<ArraySize(Skins);i++)
{
if(ArrayGetCell(Owned[id], i) > 0)
{
ArrayGetArray(Skins, i, tmp_Skins)
num_to_str(i, num, charsmax(num))
formatex(txt, charsmax(txt), "%s (%d DB)", tmp_Skins[Name], ArrayGetCell(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), "%s\y[ \rPiac vásárlás \y]", gMenuPrefix);
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])
{
ArrayGetArray(Skins, Market_Things[players[i]][Put_out], tmp_Skins)
formatex(userID, charsmax(userID), "%d", get_user_userid(players[i]))
formatex(txt, charsmax(txt), "%s (Eladó: %s | Ára: %d)", tmp_Skins[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
ArrayGetArray(Skins, Market_Things[userId][Put_out], tmp_Skins)
client_print_color(id, print_team_default, "^4[%s] ^1Vettél egy ^3%s^1-t ^4%s^1-től ^3%d ^4arany^1ért!", gChatPrefix, tmp_Skins[Name], name[userId], Market_Things[userId][Value])
client_print_color(userID, print_team_default, "^4[%s] ^4%s^1 vett tőled ^3%s^1-t ^3%d ^4arany^1ért!", gChatPrefix, name[id], tmp_Skins[Name], Market_Things[userId][Value])
arany[userId] += Market_Things[userId][Value]
arany[id] -= Market_Things[userId][Value]
Market_Things[userId][Value] = 0
ArraySetCell(Owned[userId], Market_Things[userId][Put_out], ArrayGetCell(Owned[userId], Market_Things[userId][Put_out])-1)
ArraySetCell(Owned[id], Market_Things[userId][Put_out], ArrayGetCell(Owned[id], Market_Things[userId][Put_out])+1)
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 <= get_pcvar_float(cvar_KeyDrop))
{
new drp = random_num(0, ArraySize(Cases)-1)
ArraySetCell(OwnedKeys[attacker], drp, ArrayGetCell(OwnedKeys[attacker], drp)+1)
ArrayGetArray(Cases, drp, tmp_Skins)
client_print_color(attacker, print_team_default, "^4[%s] ^1Találtál egy ^3%s Kulcsot^1!", gChatPrefix, tmp_Skins[Name])
}
else if(num <= get_pcvar_float(cvar_CaseDrop))
{
new drp = random_num(0, ArraySize(Cases)-1)
ArraySetCell(OwnedCases[attacker], drp, ArrayGetCell(OwnedCases[attacker], drp)+1)
ArrayGetArray(Cases, drp, tmp_Skins)
client_print_color(attacker, print_team_default, "^4[%s] ^1Találtál egy ^3%s Ládát^1!", gChatPrefix, tmp_Skins[Name])
}
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))
for(new i; i<sizeof(weapons);i++)
{
if(chosen[id][i] == 0)
{
for(new j; j<sizeof(DefaultSkins);j++)
{
if(equal(DefaultSkins[j][EntName], wpn))
{
set_pev(id, pev_viewmodel2, DefaultSkins[j][Model])
return HAM_IGNORED;
}
}
}
else
{
for(new j; j<ArraySize(Skins);j++)
{
ArrayGetArray(Skins, j, tmp_Skins)
if(equal(tmp_Skins[EntName], wpn) != -1 && chosen[id][i] == j+1)
{
set_pev(id, pev_viewmodel2, tmp_Skins[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))
for(new i = 25; i<sizeof(DefaultSkins);i++)
{
if(equal(DefaultSkins[i][EntName], wpn))
{
set_pev(id, pev_viewmodel2, DefaultSkins[i][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 && ArrayGetCell(Owned[id], Market_Things[id][Put_out]) < 2)
return wpn;
}
wpn[0] = EOS
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<ArraySize(Skins); i++)
{
ArrayGetArray(Skins, i, tmp_Skins)
if(tmp_Skins[Rarity] == how_rare && tmp_Skins[Drop_from] == num)
{
skins[count] = i
count++
}
}
new dropped = random_num(0, count)
ArraySetCell(Owned[id], skins[dropped], ArrayGetCell(Owned[id], skins[dropped])+1)
ArrayGetArray(Skins, skins[dropped], tmp_Skins)
client_print_color(id, print_team_default, "^4[%s]^1 Egy ^3%s ^1skint nyitottál!", gChatPrefix, tmp_Skins[Name])
}
/*==========CS:GO-S GRÁNÁT HANGOK==========*/
public Message_TextMsg(iMsgId, iMsgType, iMsgEnt) {
if(get_msg_arg_int(1) != MSGARG_PRINT_RADIO)
return PLUGIN_CONTINUE;
static szMsg[32]; get_msg_arg_string(MSGARG_PRINT_RADIO, szMsg, charsmax(szMsg));
if(equal(szMsg, "#Fire_in_the_hole")) {
static Sender[4], SenderName[32], szSound[MAX_SOUND_PATH_LENGTH], SenderId;
get_msg_arg_string(MSGARG_SENDER_ID, Sender, charsmax(Sender));
get_msg_arg_string(MSGARG_SENDER_NAME, SenderName, charsmax(SenderName));
SenderId = str_to_num(Sender);
switch(get_user_weapon(SenderId)) {
case CSW_HEGRENADE: szSound = g_szHegrenSounds[random(sizeof(g_szHegrenSounds))];
case CSW_SMOKEGRENADE: szSound = g_szSmokeSounds[random(sizeof(g_szSmokeSounds))];
case CSW_FLASHBANG: szSound = g_szFlashSounds[random(sizeof(g_szFlashSounds))];
default: return PLUGIN_CONTINUE;
}
emit_sound(SenderId, CHAN_VOICE, szSound, VOL_NORM, ATTN_STATIC, 0, PITCH_NORM);
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}