#include #include #include #include #include #include #define NAZWA "Punkty Chwaly" #define WERSJA "0.1" #define AUTOR "MAGNET" #define PREFIX "Punkty_Chwaly" #define POKAZ_HUD 1234 #define ACCESS_FLAG ADMIN_IMMUNITY new punkty_chwaly[33]; new zdrowie[33]; new obrazenia[33]; new grawitacja[33]; new szybkosc[33]; new niewidzialnosc[33]; new punkty_chwaly_vault[33]; new zdrowie_vault[33]; new obrazenia_vault[33]; new grawitacja_vault[33]; new szybkosc_vault[33]; new niewidzialnosc_vault[33]; new g_Vault; public plugin_init() { register_plugin(NAZWA, WERSJA, AUTOR); g_Vault=nvault_open("PunktyChwaly") register_event("DeathMsg", "DeathMsg", "a") RegisterHam(Ham_TakeDamage, "player", "Statystyka_Obrazenia"); RegisterHam(Ham_Spawn, "player", "Respawn", 1); register_clcmd("say /pch", "Przydziel_Punkty_Chwaly"); register_concmd("dodaj_punkty", "Dodaj_Punkty_Chwaly", ACCESS_FLAG, " "); } public Respawn(id) { if(!task_exists(id+POKAZ_HUD)) set_task(0.1, "PokazInformacje", id+POKAZ_HUD, _, _, "b"); Zaladuj_Moce(id); ZapiszDane(id); if(punkty_chwaly[id] > 99) Przydziel_Punkty_Chwaly(id); return PLUGIN_CONTINUE; } public DeathMsg() { new kid = read_data(1) //zabojca new vid = read_data(2) // ofiara punkty_chwaly[kid]++; ZapiszDane(kid); if(random_num(1,3) == 1 && punkty_chwaly[vid] > 0) { client_print(vid, print_chat, "[%s] Utraciles jeden Punkt Chwaly!", PREFIX); punkty_chwaly[vid]--; ZapiszDane(vid); } } public client_authorized(id) { WczytajDane(id); } public client_disconnect(id) { ZapiszDane(id); UsunUmiejetnosci(id); } public UsunUmiejetnosci(id) { punkty_chwaly[id] = 0; obrazenia[id] = 0; zdrowie[id] = 0; grawitacja[id] = 0; szybkosc[id] = 0; niewidzialnosc[id] = 0; } public ZapiszDane(id) { new name[32]; get_user_name(id,name,32); new vaultkey[64], vaultdata[256]; format(vaultkey, 63, "%s-PunktyChwaly", name); format(vaultdata, 255, "%i#%i#%i#%i#%i#%i", punkty_chwaly[id], obrazenia[id], zdrowie[id], grawitacja[id], szybkosc[id], niewidzialnosc[id]); nvault_set(g_Vault, vaultkey, vaultdata); return PLUGIN_CONTINUE; } public WczytajDane(id) { new name[32]; get_user_name(id,name,32); new vaultkey[64], vaultdata[256]; format(vaultkey, 63, "%s-PunktyChwaly", name); //format(vaultdata, 255, "%i#%i#%i#%i#%i#%i", punkty_chwaly[id], obrazenia[id], zdrowie[id], grawitacja[id], szybkosc[id], niewidzialnosc[id]); nvault_get(g_Vault, vaultkey, vaultdata, 255); replace_all(vaultdata, 255, "#", " "); new punkty_chwaly_vault[33], obrazenia_vault[33], zdrowie_vault[33], grawitacja_vault[33], szybkosc_vault[33], niewidzialnosc_vault[33]; parse(vaultdata, punkty_chwaly_vault, 31, obrazenia_vault, 31, zdrowie_vault, 31, grawitacja_vault, 31, szybkosc_vault, 31, niewidzialnosc_vault, 31); punkty_chwaly[id] = str_to_num(punkty_chwaly_vault); obrazenia[id]= str_to_num(obrazenia_vault); zdrowie[id] = str_to_num(zdrowie_vault); grawitacja[id]= str_to_num(grawitacja_vault); szybkosc[id]= str_to_num(szybkosc_vault); niewidzialnosc[id]= str_to_num(niewidzialnosc_vault); return PLUGIN_CONTINUE; } public Statystyka_Obrazenia(victim, inflictor, attacker, Float:dmg, dmgbits) { if(!is_user_connected(victim) || !is_user_connected(attacker)) return HAM_IGNORED; SetHamParamFloat(4, dmg + obrazenia[attacker]); return HAM_IGNORED; } public Statystyka_Zdrowie(id) { set_user_health(id, get_user_health(id) + (zdrowie[id]*2)) } public Statystyka_Grawitacja(id) { set_user_gravity(id, 1.0 - (grawitacja[id]/4)) } public Statystyka_Szybkosc(id) { set_user_maxspeed(id, 1.0 + (szybkosc[id]/25)) } public Statystyka_Niewidzialnosc(id) { set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderNormal,255 - (niewidzialnosc[id]*15)) } public Zaladuj_Moce(id) { Statystyka_Obrazenia(id), Statystyka_Zdrowie(id), Statystyka_Grawitacja(id), Statystyka_Szybkosc(id), Statystyka_Niewidzialnosc(id); } public Przydziel_Punkty_Chwaly(id) { new menu = menu_create("Punkty Chwaly", "Przydziel_Punkty_Chwaly_Handler"); menu_additem(menu, "Punkty Chwaly: %i^n^nObrazenia - %i", punkty_chwaly[id], obrazenia[id]); menu_additem(menu, "Zdrowie - %i", zdrowie[id]); menu_additem(menu, "Grawitacja - %i", grawitacja[id]); menu_additem(menu, "Szybkosc - %i", szybkosc[id]); menu_additem(menu, "Niewidzialnosc - %i", niewidzialnosc[id]); menu_setprop(menu, MPROP_EXITNAME, "Wyjdz^nyPunkty Chwaly by rMAGNET"); menu_display(id, menu) } public Przydziel_Punkty_Chwaly_Handler(id, menu, item) { if(!is_user_alive(id)) return PLUGIN_HANDLED; if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } if (punkty_chwaly[id] <= 1) { client_print(id, print_chat, "[%s] Masz za malo Punktow Chwaly!", PREFIX); return PLUGIN_HANDLED } switch(item) { case 0: { if(zdrowie[id] < 10) { zdrowie[id]++; punkty_chwaly[id]-=100; } else client_print(id, print_chat, "[%s] Statystyka Zdrowie rozwinieta maksymalnie", PREFIX); } case 1: { if(obrazenia[id] < 10) { obrazenia[id]++; punkty_chwaly[id]-=100; } else client_print(id, print_chat, "[%s] Statystyka Obrazenia rozwinieta maksymalnie", PREFIX); } case 2: { if(grawitacja[id] < 10) { grawitacja[id]++; punkty_chwaly[id]-=100; } else client_print(id, print_chat, "[%s] Statystyka Grawitacja rozwinieta maksymalnie", PREFIX); } case 3: { if(szybkosc[id] < 10) { szybkosc[id]++; punkty_chwaly[id]-=100; } else client_print(id, print_chat, "[%s] Statystyka Szybkosc rozwinieta maksymalnie", PREFIX); } case 4: { if(niewidzialnosc[id] < 10) { niewidzialnosc[id]++; punkty_chwaly[id]-=100; } else client_print(id, print_chat, "[%s] Statystyka Szybkosc rozwinieta maksymalnie", PREFIX); } } if(punkty_chwaly[id] > 99) Przydziel_Punkty_Chwaly(id); return PLUGIN_CONTINUE; } public PokazInformacje(id) { id -= POKAZ_HUD; if(!is_user_connected(id)) { remove_task(id+POKAZ_HUD); return PLUGIN_CONTINUE; } if(!is_user_alive(id)) return PLUGIN_HANDLED; set_hudmessage(0, 255, 0, 1.0, 1.5, 0, 0.0, 0.3, 0.0, 0.0); show_hudmessage(id, "[Punkty Chwaly - %i]", punkty_chwaly[id]) return PLUGIN_CONTINUE; } public Dodaj_Punkty_Chwaly(id, level, cid) { if(!cmd_access(id, level, cid, 2)) return PLUGIN_CONTINUE; new arg[33]; read_argv(1, arg, 32); new target = cmd_target(id, arg, CMDTARGET_ALLOW_SELF); if(!is_user_connected(target)) return PLUGIN_CONTINUE; read_argv(2, arg, 32); remove_quotes(arg); new ilosc = str_to_num(arg); punkty_chwaly[target]+=ilosc-1 client_print(id, print_chat, "Przyznano %i Punktow Chwaly dla gracza %d", ilosc, get_user_name[target]) return PLUGIN_CONTINUE; }