#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <fvault>
#define PLUGIN "Skincsomag Rendszer"
#define VERSION "1.0"
#define AUTHOR "mforce"
// Beállítások
#define PREFIX "ProKillers"
// Ha regisztrációs rendszert használsz, akkor érdemes névre menteni SteamID helyett. Ehhez vedd ki a //-t a # elől.
//#define NEVRE_MENTES
#define OLES_PONT (1)
#define FEJLOVES_PONT (2)
#define ROZSDAS_PONT (100)
#define BRONZ_PONT (200)
#define EZUST_PONT (350)
#define ARANY_PONT (500)
// Beállítások vége
new const g_vaultName[] = "skincsomag_rendszer";
new pont[33], csomag[33];
new iSteamID[33][32];
new g_iCelpont[33]
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_cvar("skincsomag_rendszer", AUTHOR, FCVAR_SERVER | FCVAR_SPONLY);
register_clcmd("say /menu", "ShowMenu")
register_clcmd("say /pontadas", "AdasMenu")
register_concmd("amx_pontok", "admin_pontok", ADMIN_KICK," <Jatekos neve> - Kiirja a jatekos pontjait.");
register_event("DeathMsg", "halal", "a")
register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
register_clcmd("PONT_ADDOLAS", "PontAdas")
set_task(172.0, "pontrendszerfut", 0, _, _, "b");
}
new const fegyverek[][] = {
"models/skincsomag/rozsdas/p_ak47.mdl", // 0. elem
"models/skincsomag/rozsdas/v_ak47.mdl", // 1
"models/skincsomag/rozsdas/p_m4a1.mdl", // 2
"models/skincsomag/rozsdas/v_m4a1.mdl", // 3
"models/skincsomag/rozsdas/p_awp.mdl", // 4
"models/skincsomag/rozsdas/v_awp.mdl", // 5
"models/skincsomag/rozsdas/p_deagle.mdl", // 6
"models/skincsomag/rozsdas/v_deagle.mdl", // 7
"models/skincsomag/rozsdas/p_famas.mdl", // 8
"models/skincsomag/rozsdas/v_famas.mdl", // 9
"models/skincsomag/rozsdas/p_m3.mdl", // 10
"models/skincsomag/rozsdas/v_m3.mdl", // 11
"models/skincsomag/rozsdas/p_mp5navy.mdl", // 12
"models/skincsomag/rozsdas/v_mp5navy.mdl", // 13
"models/skincsomag/rozsdas/p_c4.mdl", // 14
"models/skincsomag/rozsdas/v_c4.mdl", // 15
"models/skincsomag/rozsdas/p_scout.mdl", // 16
"models/skincsomag/rozsdas/v_scout.mdl", // 17
"models/skincsomag/bronz/p_ak47.mdl", // 18. elem
"models/skincsomag/bronz/v_ak47.mdl", // 19
"models/skincsomag/bronz/p_m4a1.mdl", // 20
"models/skincsomag/bronz/v_m4a1.mdl", // 21
"models/skincsomag/bronz/p_awp.mdl", // 22
"models/skincsomag/bronz/v_awp.mdl", // 23
"models/skincsomag/bronz/p_deagle.mdl", // 24
"models/skincsomag/bronz/v_deagle.mdl", // 25
"models/skincsomag/bronz/p_famas.mdl", // 26
"models/skincsomag/bronz/v_famas.mdl", // 27
"models/skincsomag/bronz/p_m3.mdl", // 28
"models/skincsomag/bronz/v_m3.mdl", // 29
"models/skincsomag/bronz/p_mp5navy.mdl", // 30
"models/skincsomag/bronz/v_mp5navy.mdl", // 31
"models/skincsomag/bronz/p_c4.mdl", // 32
"models/skincsomag/bronz/v_c4.mdl", // 33
"models/skincsomag/bronz/p_scout.mdl", // 34
"models/skincsomag/bronz/v_scout.mdl", // 35
"models/skincsomag/ezust/p_ak47.mdl", // 36. elem
"models/skincsomag/ezust/v_ak47.mdl", // 37
"models/skincsomag/ezust/p_m4a1.mdl", // 38
"models/skincsomag/ezust/v_m4a1.mdl", // 39
"models/skincsomag/ezust/p_awp.mdl", // 40
"models/skincsomag/ezust/v_awp.mdl", // 41
"models/skincsomag/ezust/p_deagle.mdl", // 42
"models/skincsomag/ezust/v_deagle.mdl", // 43
"models/skincsomag/ezust/p_famas.mdl", // 44
"models/skincsomag/ezust/v_famas.mdl", // 45
"models/skincsomag/ezust/p_m3.mdl", // 46
"models/skincsomag/ezust/v_m3.mdl", // 47
"models/skincsomag/ezust/p_mp5navy.mdl", // 48
"models/skincsomag/ezust/v_mp5navy.mdl", // 49
"models/skincsomag/ezust/p_c4.mdl", // 50
"models/skincsomag/ezust/v_c4.mdl", // 51
"models/skincsomag/ezust/p_scout.mdl", // 52
"models/skincsomag/ezust/v_scout.mdl", // 53
"models/skincsomag/arany/p_ak47.mdl", // 54. elem
"models/skincsomag/arany/v_ak47.mdl", // 55
"models/skincsomag/arany/p_m4a1.mdl", // 56
"models/skincsomag/arany/v_m4a1.mdl", // 57
"models/skincsomag/arany/p_awp.mdl", // 58
"models/skincsomag/arany/v_awp.mdl", // 59
"models/skincsomag/arany/p_deagle.mdl", // 60
"models/skincsomag/arany/v_deagle.mdl", // 61
"models/skincsomag/arany/p_famas.mdl", // 62
"models/skincsomag/arany/v_famas.mdl", // 63
"models/skincsomag/arany/p_m3.mdl", // 64
"models/skincsomag/arany/v_m3.mdl", // 65
"models/skincsomag/arany/p_mp5navy.mdl", // 66
"models/skincsomag/arany/v_mp5navy.mdl", // 67
"models/skincsomag/arany/p_c4.mdl", // 68
"models/skincsomag/arany/v_c4.mdl", // 69
"models/skincsomag/arany/p_scout.mdl", // 70
"models/skincsomag/arany/v_scout.mdl" // 71
};
public Event_CurWeapon(id) {
new weap = get_user_weapon(id)
if(csomag[id] == 1) {
if(weap == CSW_AK47) {
set_pev(id, pev_weaponmodel2, fegyverek[0])
set_pev(id, pev_viewmodel2, fegyverek[1])
}
else if(weap == CSW_M4A1) {
set_pev(id, pev_weaponmodel2, fegyverek[2])
set_pev(id, pev_viewmodel2, fegyverek[3])
}
else if(weap == CSW_AWP) {
set_pev(id, pev_weaponmodel2, fegyverek[4])
set_pev(id, pev_viewmodel2, fegyverek[5])
}
else if(weap == CSW_DEAGLE) {
set_pev(id, pev_weaponmodel2, fegyverek[6])
set_pev(id, pev_viewmodel2, fegyverek[7])
}
else if(weap == CSW_FAMAS) {
set_pev(id, pev_weaponmodel2, fegyverek[8])
set_pev(id, pev_viewmodel2, fegyverek[9])
}
else if(weap == CSW_M3) {
set_pev(id, pev_weaponmodel2, fegyverek[10])
set_pev(id, pev_viewmodel2, fegyverek[11])
}
else if(weap == CSW_MP5NAVY) {
set_pev(id, pev_weaponmodel2, fegyverek[12])
set_pev(id, pev_viewmodel2, fegyverek[13])
}
else if(weap == CSW_C4) {
set_pev(id, pev_weaponmodel2, fegyverek[14])
set_pev(id, pev_viewmodel2, fegyverek[15])
}
else if(weap == CSW_SCOUT) {
set_pev(id, pev_weaponmodel2, fegyverek[16])
set_pev(id, pev_viewmodel2, fegyverek[17])
}
}
else if(csomag[id] == 2) {
if(weap == CSW_AK47) {
set_pev(id, pev_weaponmodel2, fegyverek[18])
set_pev(id, pev_viewmodel2, fegyverek[19])
}
else if(weap == CSW_M4A1) {
set_pev(id, pev_weaponmodel2, fegyverek[20])
set_pev(id, pev_viewmodel2, fegyverek[21])
}
else if(weap == CSW_AWP) {
set_pev(id, pev_weaponmodel2, fegyverek[22])
set_pev(id, pev_viewmodel2, fegyverek[23])
}
else if(weap == CSW_DEAGLE) {
set_pev(id, pev_weaponmodel2, fegyverek[24])
set_pev(id, pev_viewmodel2, fegyverek[25])
}
else if(weap == CSW_FAMAS) {
set_pev(id, pev_weaponmodel2, fegyverek[26])
set_pev(id, pev_viewmodel2, fegyverek[27])
}
else if(weap == CSW_M3) {
set_pev(id, pev_weaponmodel2, fegyverek[28])
set_pev(id, pev_viewmodel2, fegyverek[29])
}
else if(weap == CSW_MP5NAVY) {
set_pev(id, pev_weaponmodel2, fegyverek[30])
set_pev(id, pev_viewmodel2, fegyverek[31])
}
else if(weap == CSW_C4) {
set_pev(id, pev_weaponmodel2, fegyverek[32])
set_pev(id, pev_viewmodel2, fegyverek[33])
}
else if(weap == CSW_SCOUT) {
set_pev(id, pev_weaponmodel2, fegyverek[34])
set_pev(id, pev_viewmodel2, fegyverek[35])
}
}
else if(csomag[id] == 3) {
if(weap == CSW_AK47) {
set_pev(id, pev_weaponmodel2, fegyverek[36])
set_pev(id, pev_viewmodel2, fegyverek[37])
}
else if(weap == CSW_M4A1) {
set_pev(id, pev_weaponmodel2, fegyverek[38])
set_pev(id, pev_viewmodel2, fegyverek[39])
}
else if(weap == CSW_AWP) {
set_pev(id, pev_weaponmodel2, fegyverek[40])
set_pev(id, pev_viewmodel2, fegyverek[41])
}
else if(weap == CSW_DEAGLE) {
set_pev(id, pev_weaponmodel2, fegyverek[42])
set_pev(id, pev_viewmodel2, fegyverek[43])
}
else if(weap == CSW_FAMAS) {
set_pev(id, pev_weaponmodel2, fegyverek[44])
set_pev(id, pev_viewmodel2, fegyverek[45])
}
else if(weap == CSW_M3) {
set_pev(id, pev_weaponmodel2, fegyverek[46])
set_pev(id, pev_viewmodel2, fegyverek[47])
}
else if(weap == CSW_MP5NAVY) {
set_pev(id, pev_weaponmodel2, fegyverek[48])
set_pev(id, pev_viewmodel2, fegyverek[49])
}
else if(weap == CSW_C4) {
set_pev(id, pev_weaponmodel2, fegyverek[50])
set_pev(id, pev_viewmodel2, fegyverek[51])
}
else if(weap == CSW_SCOUT) {
set_pev(id, pev_weaponmodel2, fegyverek[52])
set_pev(id, pev_viewmodel2, fegyverek[53])
}
}
else if(csomag[id] == 4) {
if(weap == CSW_AK47) {
set_pev(id, pev_weaponmodel2, fegyverek[54])
set_pev(id, pev_viewmodel2, fegyverek[55])
}
else if(weap == CSW_M4A1) {
set_pev(id, pev_weaponmodel2, fegyverek[56])
set_pev(id, pev_viewmodel2, fegyverek[57])
}
else if(weap == CSW_AWP) {
set_pev(id, pev_weaponmodel2, fegyverek[58])
set_pev(id, pev_viewmodel2, fegyverek[59])
}
else if(weap == CSW_DEAGLE) {
set_pev(id, pev_weaponmodel2, fegyverek[60])
set_pev(id, pev_viewmodel2, fegyverek[61])
}
else if(weap == CSW_FAMAS) {
set_pev(id, pev_weaponmodel2, fegyverek[62])
set_pev(id, pev_viewmodel2, fegyverek[63])
}
else if(weap == CSW_M3) {
set_pev(id, pev_weaponmodel2, fegyverek[64])
set_pev(id, pev_viewmodel2, fegyverek[65])
}
else if(weap == CSW_MP5NAVY) {
set_pev(id, pev_weaponmodel2, fegyverek[66])
set_pev(id, pev_viewmodel2, fegyverek[67])
}
else if(weap == CSW_C4) {
set_pev(id, pev_weaponmodel2, fegyverek[68])
set_pev(id, pev_viewmodel2, fegyverek[69])
}
else if(weap == CSW_SCOUT) {
set_pev(id, pev_weaponmodel2, fegyverek[70])
set_pev(id, pev_viewmodel2, fegyverek[71])
}
}
}
public plugin_precache() {
for(new i; i<sizeof(fegyverek);i++)
{
precache_model(fegyverek[i]);
}
}
public halal() {
new killer = read_data(1)
new victim = read_data(2)
new kteam = get_user_team(killer)
new vteam = get_user_team(victim)
if(killer != victim && kteam != vteam && read_data(3)) {
pont[killer] += FEJLOVES_PONT
set_hudmessage(0, 255, 0, -0.9, 0.15, 0, 6.0, 1.0);
show_hudmessage(killer, "+%i Pont", FEJLOVES_PONT);
}
else if(killer != victim && kteam != vteam) {
pont[killer] += OLES_PONT
set_hudmessage(0, 255, 0, -0.9, 0.15, 0, 6.0, 1.0);
show_hudmessage(killer, "+%i Pont", OLES_PONT);
}
}
public pontrendszerfut() print_color(0, "!g[%s]!y Szerverünkön !tSkincsomag Rendszer!y fut, írd be: !t/menu", PREFIX)
public ShowMenu(id) {
new temp[128];
formatex(temp, charsmax(temp), "\r[%s] \wSkincsomag Rendszer ^nPontok: \y%d", PREFIX, pont[id]);
new menu = menu_create(temp, "mh_MyMenu");
formatex(temp, charsmax(temp), "Alap Skinek %s", csomag[id] == 0 ? "\y|AKTÍV|":"");
menu_additem(menu, temp, "0", 0);
if(pont[id] >= ROZSDAS_PONT) {
formatex(temp, charsmax(temp), "Rozsdás Skinek %s", csomag[id] == 1 ? "\y|AKTÍV|":"\r|Elérhető|");
menu_additem(menu, temp, "1", 0);
}
else {
formatex(temp, charsmax(temp), "Rozsdás Skinek \r|%i| Pont", ROZSDAS_PONT);
menu_additem(menu, temp, "1", 0);
}
if(pont[id] >= BRONZ_PONT) {
formatex(temp, charsmax(temp), "Bronz Skinek %s", csomag[id] == 2 ? "\y|AKTÍV|":"\r|Elérhető|");
menu_additem(menu, temp, "2", 0);
}
else {
formatex(temp, charsmax(temp), "Bronz Skinek \r|%i| Pont", BRONZ_PONT);
menu_additem(menu, temp, "2", 0);
}
if(pont[id] >= EZUST_PONT) {
formatex(temp, charsmax(temp), "Ezüst Skinek %s", csomag[id] == 3 ? "\y|AKTÍV|":"\r|Elérhető|");
menu_additem(menu, temp, "3", 0);
}
else {
formatex(temp, charsmax(temp), "Ezüst Skinek \r|%i| Pont", EZUST_PONT);
menu_additem(menu, temp, "3", 0);
}
if(pont[id] >= ARANY_PONT) {
formatex(temp, charsmax(temp), "Arany Skinek %s", csomag[id] == 4 ? "\y|AKTÍV|":"\r|Elérhető|");
menu_additem(menu, temp, "4", 0);
}
else {
formatex(temp, charsmax(temp), "Arany Skinek \r|%i| Pont", ARANY_PONT);
menu_additem(menu, temp, "4", 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 mh_MyMenu(id, menu, item) {
if(item == MENU_EXIT)
{
menu_cancel(id);
return PLUGIN_HANDLED;
}
new command[6], name[64], access, callback;
menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);
switch(item)
{
case 0: {
if(csomag[id] == 0) print_color(id, "!g[%s]!y Neked már aktív ez a csomag.", PREFIX)
else {
csomag[id] = 0;
print_color(id, "!g[%s]!y Sikeresen aktiváltad a csomagot.", PREFIX)
}
}
case 1: {
if(csomag[id] == 1) print_color(id, "!g[%s]!y Neked már aktív ez a csomag.", PREFIX)
else if(csomag[id] != 1 && pont[id] >= ROZSDAS_PONT) {
csomag[id] = 1;
print_color(id, "!g[%s]!y Sikeresen aktiváltad a csomagot.", PREFIX)
}
else if(csomag[id] != 1 && pont[id] < ROZSDAS_PONT) print_color(id, "!g[%s]!y Nincs elég pontod az aktiváláshoz.", PREFIX)
}
case 2: {
if(csomag[id] == 2) print_color(id, "!g[%s]!y Neked már aktív ez a csomag.", PREFIX)
else if(csomag[id] != 2 && pont[id] >= BRONZ_PONT) {
csomag[id] = 2;
print_color(id, "!g[%s]!y Sikeresen aktiváltad a csomagot.", PREFIX)
}
else if(csomag[id] != 2 && pont[id] < BRONZ_PONT) print_color(id, "!g[%s]!y Nincs elég pontod az aktiváláshoz.", PREFIX)
}
case 3: {
if(csomag[id] == 3) print_color(id, "!g[%s]!y Neked már aktív ez a csomag.", PREFIX)
else if(csomag[id] != 3 && pont[id] >= EZUST_PONT) {
csomag[id] = 3;
print_color(id, "!g[%s]!y Sikeresen aktiváltad a csomagot.", PREFIX)
}
else if(csomag[id] != 3 && pont[id] < EZUST_PONT) print_color(id, "!g[%s]!y Nincs elég pontod az aktiváláshoz.", PREFIX)
}
case 4: {
if(csomag[id] == 4) print_color(id, "!g[%s]!y Neked már aktív ez a csomag.", PREFIX)
else if(csomag[id] != 4 && pont[id] >= ARANY_PONT) {
csomag[id] = 4;
print_color(id, "!g[%s]!y Sikeresen aktiváltad a csomagot.", PREFIX)
}
else if(csomag[id] != 4 && pont[id] < ARANY_PONT) print_color(id, "!g[%s]!y Nincs elég pontod az aktiváláshoz.", PREFIX)
}
}
return PLUGIN_HANDLED;
}
public admin_pontok(id,level,cid) {
if(!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED;
static arg[32];
read_argv(1, arg, 31);
new player = cmd_target(id, arg, 2);
if(!player)
return PLUGIN_HANDLED;
static name[32];
get_user_name(player, name, charsmax(name));
console_print(id, "--------------------(#Skincsomag Rendszer#)--------------------");
console_print(id, "%s pontjai: %i pont.", name, pont[player]);
console_print(id, "-----------------------------------------------------------------");
return PLUGIN_HANDLED;
}
public client_putinserver(id) {
if (is_user_bot(id)) return;
else {
#if defined NEVRE_MENTES
get_user_name(id, iSteamID[id], charsmax(iSteamID));
#else
get_user_authid(id, iSteamID[id], charsmax(iSteamID));
if (containi(iSteamID[id], "_ID_LAN") != -1 || containi(iSteamID[id], "HLTV") != -1) get_user_ip(id, iSteamID[id], charsmax(iSteamID), 1);
#endif
pont[id] = 0;
csomag[id] = 0;
Load(id);
}
}
public client_disconnect(id) {
if (is_user_bot(id)) return;
else Save(id);
}
Load(id) {
new szData[64]
new szKey[40]
formatex(szKey , 39, "%s" , iSteamID[id])
if(fvault_get_data(g_vaultName, szKey, szData, 31))
{
new iSpacePos = contain(szData, " ")
if(iSpacePos > -1)
{
new fpont[32], fcsomag[3];
parse(szData , fpont, 31, fcsomag, 2)
pont[id] = str_to_num(fpont)
csomag[id] = str_to_num(fcsomag)
}
}
}
Save(id) {
new szData[64]
new szKey[40]
formatex(szKey, 39, "%s", iSteamID[id])
formatex(szData, 34, "%i %i", pont[id], csomag[id])
fvault_set_data(g_vaultName, szKey, szData)
}
public AdasMenu(id)
{
if(get_user_flags(id) & ADMIN_IMMUNITY)
{
new menu = menu_create("Válaszd ki kinek szeretnél adni pontot!", "AdasKezelo")
new szTempid[32]
for(new celpont; celpont <= 32; celpont++) {
if(is_user_connected(celpont) && celpont != id && !is_user_bot(celpont)) {
new szJatekosok[60]
get_user_name(celpont, szJatekosok, charsmax(szJatekosok))
num_to_str(celpont, szTempid, charsmax(szTempid))
menu_additem(menu, szJatekosok, szTempid, 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)
}
else
{
print_color(id, "!g[%s]!y Ehhez nincs hozzáférésed!", PREFIX)
}
return PLUGIN_HANDLED;
}
public AdasKezelo(id, menu, item) {
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new access, info[6], name[64], callback
menu_item_getinfo(menu, item, access, info, 5, name, 63, callback)
g_iCelpont[id] = str_to_num(info)
if(!is_user_connected(g_iCelpont[id])) {
print_color(id, "!g[%s]!y Sajnos lecsatlakozott a kiválasztott játékos!", PREFIX)
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
client_cmd(id, "messagemode PONT_ADDOLAS")
menu_destroy(menu)
return PLUGIN_CONTINUE
}
public PontAdas(id) {
new adat[192], szam
read_args(adat, charsmax(adat))
szam = str_to_num(adat)
if(szam) {
pont[g_iCelpont[id]] += szam
return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
stock print_color(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4")
replace_all(msg, 190, "!y", "^1")
replace_all(msg, 190, "!t", "^3")
if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i])
write_string(msg)
message_end()
}
}
}
return PLUGIN_HANDLED
}