/*[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 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 #include #include #include #include #include #include //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[4][32] new Handle:g_SqlTuple //Skinezendő fegyverek new const Weapons[][] = { "weapon_p228", "weapon_scout", "weapon_xm1014", "weapon_mac10", "weapon_aug", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550", "weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249", "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_deagle", "weapon_sg552", "weapon_ak47", "weapon_knife", "weapon_p90" } //Egyéb skinezendő dolgok new const Others[][] = { "weapon_hegrenade", "weapon_smokegrenade", "weapon_c4", "weapon_flashbang" } //Alap skinek new const DefaultSkins[][] = { {"weapon_p228", "models/g_offen/v_p228.mdl"}, {"weapon_scout", "models/g_offen/v_scout.mdl"}, {"weapon_xm1014", "models/g_offen/v_xm1014.mdl"}, {"weapon_mac10", "models/g_offen/v_mac10.mdl"}, {"weapon_aug", "models/g_offen/v_aug.mdl"}, {"weapon_elite", "models/g_offen/v_elite.mdl"}, {"weapon_fiveseven", "models/g_offen/v_fiveseven.mdl"}, {"weapon_ump45", "models/g_offen/v_ump45.mdl"}, {"weapon_galil", "models/g_offen/v_galil.mdl"}, {"weapon_famas", "models/g_offen/v_famas.mdl"}, {"weapon_usp", "models/g_offen/v_usp.mdl"}, {"weapon_glock18", "models/g_offen/v_glock18.mdl"}, {"weapon_awp", "models/g_offen/v_awp.mdl"}, {"weapon_mp5navy", "models/g_offen/v_mp5navy.mdl"}, {"weapon_m249", "models/g_offen/v_m249.mdl"}, {"weapon_m3", "models/g_offen/v_m3.mdl"}, {"weapon_m4a1", "models/g_offen/v_m4a1.mdl"}, {"weapon_tmp", "models/g_offen/v_tmp.mdl"}, {"weapon_g3sg1", "models/g_offen/v_g3sg1.mdl"}, {"weapon_deagle", "models/g_offen/v_deagle.mdl"}, {"weapon_sg552", "models/g_offen/v_sg552.mdl"}, {"weapon_ak47", "models/g_offen/vak47.mdl"}, {"weapon_knife", "models/g_offen/v_knife.mdl"}, {"weapon_p90", "models/g_offen/v_p90.mdl"}, {"weapon_sg550", "models/g_offen/v_sg550.mdl"}, {"weapon_hegrenade", "models/g_offen/v_hegrenade.mdl"}, {"weapon_smokegrenade", "models/g_offen/v_smokegrenade.mdl"}, {"weapon_c4", "models/g_offen/v_c4.mdl"}, {"weapon_flashbang", "models/g_offen/v_flashbang.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_Prefix, 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 0) { for(new i; 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 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) ColorChat(id, NORMAL, "^4[%s]^1 Nincs elég ^4%s Kulcsod^1!", Prefix, tmp_Skins[Name]) else ColorChat(id, NORMAL, "^4[%s]^1 Nincs elég ^4%s Ládád^1!", Prefix, tmp_Skins[Name]) } 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 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) ColorChat(id, NORMAL, "^4[%s]^1 Eldobtál egy ^3%s ^1skint!", Prefix, 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), "\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 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), "\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= 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(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) ColorChat(target[id], NORMAL, "^4[%s]^1 Kaptál ^3%d ^4%s^1-t!", Prefix, num, tmp_Skins[Name]) ColorChat(id, NORMAL, "^4[%s]^1 Elküldtél ^3%d ^4%s^1-t!", Prefix, num, tmp_Skins[Name]) Update_SQL(id) Update_SQL(target[id]) } else { ArrayGetArray(Skins, i, tmp_Skins) ColorChat(id, NORMAL, "^4[%s]^1 Nincs ennyi^4%s^1-ed!", Prefix, tmp_Skins[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) { 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) ColorChat(0, NORMAL, "^4[%s] ^3%s ^1kirakott egy ^4%s^1-t a piacra ^3%d ^4arany^1ért!", Prefix, name[id], tmp_Skins[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 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), "\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= Market_Things[userId][Value] && Market_Things[userId][Stuff]) { Market_Things[userId][Stuff] = false ArrayGetArray(Skins, Market_Things[userId][Put_out], tmp_Skins) ColorChat(id, NORMAL, "^4[%s] ^1Vettél egy ^3%s^1-t ^4%s^1-től ^3%d ^4arany^1ért!", Prefix, tmp_Skins[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], 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) ColorChat(attacker, NORMAL, "^4[%s] ^1Találtál egy ^3%s Kulcsot^1!", Prefix, 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) ColorChat(attacker, NORMAL, "^4[%s] ^1Találtál egy ^3%s Ládát^1!", Prefix, 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= 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