#include #include #include #include #include new const g_iMaxAmmo[31]={0,52,0,90,1,32,1,100,90,1,120,100,100,90,90,90,100,120,30,120,200,32,90,120,90,2,35,90,90,0,100}; new const g_iMaxClip[31] = { -1, 13, -1, 10, 1, 7, 1, 30, 30, 1, 30, 20, 25, 30, 35, 25, 12, 20, 10, 30, 100, 8, 30, 30, 20, 2, 7, 30, 30, -1, 50 }; new g_iOddajId[33]; new bool:g_bDostalPrzedmiot[33]; new bool:g_bDajPerk[33]; public plugin_init() { register_plugin("COD: Shop", "1.0", "d0naciak"); register_clcmd("say /sklep", "cmd_Sklep"); register_clcmd("say /wymien", "cmd_ZamienPerk"); register_clcmd("say /oddaj", "cmd_OddajPerk"); register_event("ResetHUD", "ev_ResetHUD", "abe"); } public ev_ResetHUD(id) g_bDostalPrzedmiot[id] = false; public cod_perk_changed(id, iPerkId) { g_bDostalPrzedmiot[id] = false; if(g_bDajPerk[id]) { g_bDajPerk[id] = false; return COD_CONTINUE; } if(!iPerkId) return COD_CONTINUE; new szPerkName[32]; cod_get_perk_name(iPerkId, szPerkName, 31); if(szPerkName[0] == '+') return COD_CONTINUE; if(contain(szPerkName, "Szkoleniowca") != -1) replace(szPerkName, 31, " Szkoleniowca", ""); else if(contain(szPerkName, "Zawodowca") != -1) replace(szPerkName, 31, " Zawodowca", ""); else if(contain(szPerkName, "Elity") != -1) replace(szPerkName, 31, " Elity", ""); else return COD_CONTINUE; cod_set_user_perk(id, cod_get_perkid(szPerkName)); return COD_STOP; } public cmd_Sklep(id) { new iMenu = menu_create("Sklep yNoCheatsd.eu", "Sklep_Handler"); if(is_user_vip(id)) { menu_additem(iMenu, "Doswiadczenie d[Od 1Lvl] y[5 000$]"); menu_additem(iMenu, "Doswiadczenie d[Od 10Lvl] y[5 000$]"); menu_additem(iMenu, "Doswiadczenie d[Od 30Lvl] y[5 000$]"); menu_additem(iMenu, "Perk d[Od 1Lvl] y[6 000]"); menu_additem(iMenu, "Ulepsz perk d[Od 10Lvl] y[1 250$]"); menu_additem(iMenu, "Amunicja d[Od 1Lvl] y[50$]"); menu_additem(iMenu, "Magazynki d[Od 1Lvl] y[120$]"); } else { menu_additem(iMenu, "Doswiadczenie d[Od 1Lvl] y[10 000$]"); menu_additem(iMenu, "Doswiadczenie d[Od 10Lvl] y[10 000$]"); menu_additem(iMenu, "Doswiadczenie d[Od 30Lvl] y[10 000$]"); menu_additem(iMenu, "Perk d[Od 10Lvl] y[12 000$]"); menu_additem(iMenu, "Ulepsz perk d[Od 1Lvl] y[2 500$]"); menu_additem(iMenu, "Amunicja d[Od 1Lvl] y[100$]"); menu_additem(iMenu, "Magazynki d[Od 1Lvl] y[240$]"); } menu_display(id, iMenu); return PLUGIN_HANDLED; } public Sklep_Handler(id, iMenu, iItem) { if(!is_user_connected(id)) return PLUGIN_CONTINUE; new iKasa = cs_get_user_money(id); new iPoziom = cod_get_user_level(id); new iDzielnik = is_user_vip(id) ? 2 : 1; switch(iItem) { case 0: { if(iKasa >= 10000 / iDzielnik) { new iDodatkowyExp = random_num(1, 50); cod_set_user_xp(id, cod_get_user_xp(id) + iDodatkowyExp); ColorChat(id, GREEN, "[COD:SHOP]^x01 Kupiles ^x03+%d^x01XP!", iDodatkowyExp); cs_set_user_money(id, iKasa - 10000/ iDzielnik); } else { ColorChat(id, GREEN, "[COD:SHOP]^x01 Za malo hajsu!"); } } case 1: { if(iPoziom >= 10) { if(iKasa >= 10000 / iDzielnik) { new iDodatkowyExp = random_num(50, 250); cod_set_user_xp(id, cod_get_user_xp(id) + iDodatkowyExp); ColorChat(id, GREEN, "[COD:SHOP]^x01 Kupiles ^x03+%d^x01XP!", iDodatkowyExp); cs_set_user_money(id, iKasa - 10000 / iDzielnik); } else { ColorChat(id, GREEN, "[COD:SHOP]^x01 Za malo hajsu!"); } } else { ColorChat(id, GREEN, "[COD:SHOP]^x01 Zbyt maly poziom!"); } } case 2: { if(iPoziom >= 30) { if(iKasa >= 10000 / iDzielnik) { new iDodatkowyExp = random_num(250, 500); cod_set_user_xp(id, cod_get_user_xp(id) + iDodatkowyExp); ColorChat(id, GREEN, "[COD:SHOP]^x01 Kupiles ^x03+%d^x01XP!", iDodatkowyExp); cs_set_user_money(id, iKasa - 10000 / iDzielnik); } else { ColorChat(id, GREEN, "[COD:SHOP]^x01 Za malo hajsu!"); } } else { ColorChat(id, GREEN, "[COD:SHOP]^x01 Zbyt maly poziom!"); } } case 3: { if(iKasa >= 12000 / iDzielnik) { cod_set_user_perk(id, -1); ColorChat(id, GREEN, "[COD:SHOP]^x01 Kupiles ^x03losowy perk^x01!"); cs_set_user_money(id, iKasa - 12000 / iDzielnik); } else { ColorChat(id, GREEN, "[COD:SHOP]^x01 Za malo hajsu!"); } } case 4: { if(iPoziom >= 10) { if(iKasa >= 2500 / iDzielnik) { new iPerkId = UlepszPerk(id); if(iPerkId) { new szNazwaPerku[32]; cod_get_perk_name(iPerkId, szNazwaPerku, 31); ColorChat(id, GREEN, "[COD:SHOP]^x01 Kupiles ^x03ulepszenie perku^x01!"); ColorChat(id, GREEN, "[COD:SHOP]^x01 Ulepszono na:^x03 %s", szNazwaPerku); cs_set_user_money(id, iKasa - 2500 / iDzielnik); } } else { ColorChat(id, GREEN, "[COD:SHOP]^x01 Za malo hajsu!"); } } else { ColorChat(id, GREEN, "[COD:SHOP]^x01 Zbyt maly poziom!"); } } case 5: { if(is_user_alive(id)) { if(iKasa >= 100 / iDzielnik) { new iWeapon = get_user_weapon(id); if(g_iMaxClip[iWeapon] != -1) set_user_clip(id, g_iMaxClip[iWeapon]); ColorChat(id, GREEN, "[COD:SHOP]^x01 Kupiles ^x03amunicje^x01!"); cs_set_user_money(id, iKasa - 100 / iDzielnik); } else { ColorChat(id, GREEN, "[COD:SHOP]^x01 Za malo hajsu!"); } } } case 6: { if(is_user_alive(id)) { if(iKasa >= 240 / iDzielnik) { new iWeapons[32], iWeaponsNum; get_user_weapons(id, iWeapons, iWeaponsNum); for(new i = 0; i <= iWeaponsNum; i++) if(g_iMaxAmmo[iWeapons[i]] > 0) cs_set_user_bpammo(id, iWeapons[i], g_iMaxAmmo[iWeapons[i]]); ColorChat(id, GREEN, "[COD:SHOP]^x01 Kupiles ^x03magazynki^x01!"); cs_set_user_money(id, iKasa - 240 / iDzielnik); } else { ColorChat(id, GREEN, "[COD:SHOP]^x01 Za malo hajsu!"); } } } } menu_destroy(iMenu); return PLUGIN_CONTINUE; } public cmd_ZamienPerk(id) { new nazwa[64], perk[64], item[128]; new menu = menu_create("Zamien sie perkiem", "ZamienPerk_Handle"); new cb = menu_makecallback("ZamienPerk_Callback"); for(new i=0, n=0; i<=32; i++) { if(!is_user_connected(i)) continue; g_iOddajId[n++] = i; get_user_name(i, nazwa, 63) cod_get_perk_name(cod_get_user_perk(i), perk, 63); formatex(item, 127, "%s y- %s", nazwa, perk); menu_additem(menu, item, "0", 0, cb); } menu_display(id, menu); } public ZamienPerk_Handle(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_CONTINUE; } if(!is_user_connected(g_iOddajId[item])){ client_print(id, print_chat, "Nie odnaleziono zadanego gracza."); return PLUGIN_CONTINUE; } if(g_bDostalPrzedmiot[g_iOddajId[item]]){ client_print(id, print_chat, "Wybrany gracz musi poczekac 1 runde."); return PLUGIN_CONTINUE; } if(g_bDostalPrzedmiot[id]){ client_print(id, print_chat, "Musisz poczekac 1 runde."); return PLUGIN_CONTINUE; } if(!cod_get_user_perk(g_iOddajId[item])){ client_print(id, print_chat, "Wybrany gracz nie mam zadnego perka."); return PLUGIN_CONTINUE; } if(!cod_get_user_perk(id)){ client_print(id, print_chat, "Nie masz zadnego perka."); return PLUGIN_CONTINUE; } new nazwa_menu[128], nick[64], perk[64]; get_user_name(id, nick, charsmax(nick)) cod_get_perk_name(cod_get_user_perk(id), perk, 63); formatex(nazwa_menu, charsmax(nazwa_menu), "Wymien sie perkiem %s z %s:", perk, nick) new menu2 = menu_create(nazwa_menu, "menu_wymien"); menu_additem(menu2, "Tak", nick); menu_addblank(menu2, 0) menu_additem(menu2, "Nie", nick); menu_setprop(menu2, MPROP_EXITNAME, "Wyjdz"); menu_display(g_iOddajId[item], menu2); return PLUGIN_CONTINUE; } public menu_wymien(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_CONTINUE; } new access, callback, data[64]; menu_item_getinfo(menu, item, access, data, charsmax(data), _, _, callback); new id2 = get_user_index(data) switch(item) { case 0: { new perk_oddajacego = cod_get_user_perk(id2) new perk_dajacego = cod_get_user_perk(id) cod_set_user_perk(id2, perk_dajacego); cod_set_user_perk(id, perk_oddajacego); g_bDajPerk[id] = true; g_bDajPerk[id2] = true; g_bDostalPrzedmiot[id2] = true; g_bDostalPrzedmiot[id] = true; new nazwa_dajacego[64]; get_user_name(id, nazwa_dajacego, charsmax(nazwa_dajacego)) client_print(id, print_chat, "Wymieniles sie perkiem z %s.", data); client_print(id2, print_chat, "Wymieniles sie perkiem z %s.", nazwa_dajacego) } case 1: client_print(id2, print_chat, "Wybrany gracz nie zgodzil sie na wymiane perka.") } return PLUGIN_CONTINUE; } public cmd_OddajPerk(id) { new nazwa[64]; new menu = menu_create("Przekazywanie Perku", "OddajPerk_Handle"); new cb = menu_makecallback("OddajPerk_Callback"); for(new i=0, n=0; i<=32; i++) { if(!is_user_connected(i)) continue; g_iOddajId[n++] = i; get_user_name(i, nazwa, 63) menu_additem(menu, nazwa, "0", 0, cb); } menu_setprop(menu,MPROP_NUMBER_COLOR,"y"); menu_setprop(menu, MPROP_EXITNAME, "Wyjdz"); menu_display(id, menu); } public OddajPerk_Handle(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_CONTINUE; } if(!is_user_connected(g_iOddajId[item])) { client_print(id, print_chat, "Nie odnaleziono zadanego gracza."); return PLUGIN_CONTINUE; } if(g_bDostalPrzedmiot[id]) { client_print(id, print_chat, "Musisz poczekac 1 runde."); return PLUGIN_CONTINUE; } new wartosc_perku_dajacego; new perk_dajacego = cod_get_user_perk(id, wartosc_perku_dajacego); if(!perk_dajacego) { client_print(id, print_chat, "Nie masz zadnego perku."); return PLUGIN_CONTINUE; } new nazwa_dajacego[64]; new nazwa_otrzymujacego[64]; get_user_name(id, nazwa_dajacego, 63) get_user_name(g_iOddajId[item], nazwa_otrzymujacego, 63) g_bDajPerk[g_iOddajId[item]] = true; g_bDostalPrzedmiot[g_iOddajId[item]] = true; cod_set_user_perk(g_iOddajId[item], perk_dajacego, wartosc_perku_dajacego, 0); client_print(id, print_chat, "Przekazales perk graczowi %s.", nazwa_otrzymujacego); client_print(g_iOddajId[item], print_chat, "Dostales perk od gracza %s.", nazwa_dajacego); cod_set_user_perk(id, 0); return PLUGIN_CONTINUE; } public OddajPerk_Callback(id, menu, item) { if(g_iOddajId[item] == id || !cod_get_user_class(g_iOddajId[item]) || cod_get_user_perk(g_iOddajId[item])) return ITEM_DISABLED; return ITEM_ENABLED; } public ZamienPerk_Callback(id, menu, item) { if(g_iOddajId[item] == id || !cod_get_user_class(g_iOddajId[item]) || !cod_get_user_perk(g_iOddajId[item])) return ITEM_DISABLED; return ITEM_ENABLED; } public UlepszPerk(id) { new iPerkId = cod_get_user_perk(id); if(!iPerkId) return 0; new szNazwaPerku[32]; cod_get_perk_name(iPerkId, szNazwaPerku, 31); if(szNazwaPerku[0] == '+') { ColorChat(id, GREEN, "[COD:SHOP]^x01 Tego perka nie da sie ulepszac!"); return 0; } if(contain(szNazwaPerku, "Szkoleniowca") != -1) { replace(szNazwaPerku, 31, "Szkoleniowca", "Zawodowca"); } else if(contain(szNazwaPerku, "Zawodowca") != -1) { replace(szNazwaPerku, 31, "Zawodowca", "Elity"); } else if(contain(szNazwaPerku, "Elity") == -1) { format(szNazwaPerku, 31, "%s Szkoleniowca", szNazwaPerku); } else { ColorChat(id, GREEN, "[COD:SHOP]^x01 Posiadasz najwyzszy poziom ulepszenia!"); return 0; } iPerkId = cod_get_perkid(szNazwaPerku); g_bDajPerk[id] = true; cod_set_user_perk(id, iPerkId, -1, 0); return iPerkId; } stock is_user_vip(id) { if(get_user_flags(id) & ADMIN_LEVEL_H) return 1; return 0; } stock set_user_clip(id, ammo) { new weaponname[32], weaponid = -1, weapon = get_user_weapon(id, _, _); get_weaponname(weapon, weaponname, 31); while ((weaponid = engfunc(EngFunc_FindEntityByString, weaponid, "classname", weaponname)) != 0) if (pev(weaponid, pev_owner) == id) { set_pdata_int(weaponid, 51, ammo, 4); return weaponid; } return 0; }