Właśnie ogarniałem to i teraz musi działać
/* Plugin generated by AMXX-Studio */ #include amxmodx #include codmod #include nvault #include fun #include dhudmessage #include fakemeta #include hamsandwich #define PLUGIN "Prestiz System" #define VERSION "1.0" #define AUTHOR "Edit by KreC!K" #define POKAZ_PRESTIZ 5354 native cod_get_user_coins(id); native cod_set_user_coins(id, wartosc); #define KOSZT 500 //Ile ma kosztowac klasa ? (Domyslnie: 50 monet) new prestiz[33]; new SyncHudObj; new nick[33][64]; new bool:blokada; new vault; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_event("ResetHUD", "ResetHUD", "abe"); register_event("DeathMsg", "DeathMsg", "a"); RegisterHam(Ham_Spawn, "player", "sprawdzaj", 1); RegisterHam(Ham_Spawn, "player", "SpawnedEventPre", 1); RegisterHam(Ham_TakeDamage, "player", "TakeDamage"); register_event("HLTV", "BlokadaStart", "a", "1=0", "2=0"); register_clcmd("say /prestize", "Opis"); register_clcmd("say /prestiz", "zapytaj"); SyncHudObj = CreateHudSyncObj(); vault = nvault_open("Prestize"); set_task(120.0, "taskAnnouncement", 2562345, "", 0, "b"); } public client_connect(id) { get_user_name(id, nick[id], 63); Wczytaj(id); } public client_disconnect(id) { Zapisz(id); } public BlokadaStart() { blokada = true; set_task(30.0,"Odblokuj"); } public Odblokuj() blokada = false; public Zapisz(id) { new vaultkey[64], vaultdata[256]; format(vaultkey, 63, "%s-PLAYER", nick[id]); format(vaultdata, 255, "%i", prestiz[id]); nvault_set(vault, vaultkey, vaultdata); return 0; } public Wczytaj(id) { new vaultkey[64], vaultdata[256]; format(vaultkey, 63, "%s-PLAYER", nick[id]); format(vaultdata, 255, "%i", prestiz[id]); nvault_get(vault, vaultkey, vaultdata, 255); replace_all(vaultdata, 255, "#", " "); new reb[32]; parse(vaultdata, reb, 31); prestiz[id] =str_to_num(reb); return 0; } public zapytaj(id) { if(blokada) return PLUGIN_CONTINUE; new menu = menu_create("\wChcesz wejsc w prestiz?", "Menu_handler"); menu_additem(menu, "\yTak, chce! \w(Otrzymasz dodatkowe bonusy, zabierzemy za nie 500 Monet)"); menu_additem(menu, "\yNie, dzięki"); menu_display(id, menu); return PLUGIN_CONTINUE; } public Menu_handler(id, menu, item) { if(!is_user_connected(id)) return PLUGIN_CONTINUE; if(cod_get_user_coins(id) < KOSZT) { client_print(id, print_center, "Nie masz 500 Monet!") return PLUGIN_CONTINUE; } if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_CONTINUE; } switch(item) { case 0: { na pewno(id); } case 1: { client_print(id, print_center, "Nie, to nie."); } } return PLUGIN_CONTINUE; } public na pewno(id) { new menu = menu_create("\rCzy na pewno chcesz dac az 500 Monet?", "napewno_handler"); menu_additem(menu, "\yTak, bierz je i daj dodatkowe bonusy"); menu_additem(menu, "\yAlbo nie - czekaj, jednak nie, zostaje przy swoich monetach"); menu_display(id, menu); } public napewno_handler(id, menu, item) { if(!is_user_connected(id)) return PLUGIN_CONTINUE; if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_CONTINUE; } switch(item) { case 0: { cod_set_user_coins(id, cod_get_user_coins(id)-KOSZT); prestiz[id]++; Zapisz(id); set_dhudmessage(0, 255, 0, -1.0, 0.0, 2, 3.0, 5.0); show_dhudmessage(0, "%s Awansowal na %i Poziom Prestizu", nick[id], prestiz[id]) } case 1: { client_print(id, print_center, "Nie, to nie."); } } return PLUGIN_CONTINUE; } public PokazPrestiz(id) { id -= POKAZ_PRESTIZ; if(!is_user_alive(id)) { remove_task(id+POKAZ_PRESTIZ); return; } set_hudmessage(0, 255, 0, 1.0, 0.1, 2, 5.0, 10.0, 0.2, 0.2, -1); ShowSyncHudMsg(id, SyncHudObj, "[Prestiz: %i]", prestiz[id]); } public ResetHUD(id) { if(!task_exists(id+POKAZ_PRESTIZ)) set_task(0.1, "PokazPrestiz", id+POKAZ_PRESTIZ, _, _, "b"); } public sprawdzaj(id) { if(!is_user_alive(id) || !is_user_connected(id)) return PLUGIN_CONTINUE; if(prestiz[id] >= 4) set_user_rendering(id,kRenderFxGlowShell,0,0,0 ,kRenderTransAlpha, 90); return PLUGIN_CONTINUE } public DeathMsg(){ new killer=read_data(1); new victim=read_data(2); if(is_user_alive(killer) && prestiz[killer] >= 1 && get_user_team(killer) != get_user_team(victim)){ cod_set_user_xp(killer, cod_get_user_xp(killer)+15); } } public SpawnedEventPre(id){ if(prestiz[id]>=2){ if(is_user_alive(id)){ SpawnedEventPreVip(id); } } } public SpawnedEventPreVip(id){ set_user_health(id, get_user_health(id) +35) } public TakeDamage(this, inflictor, attacker, Float:damage) { if(is_user_alive(this) && prestiz[this] >= 3) { damage *= 0.9; SetHamParamFloat(4, damage); } if(is_user_alive(attacker) && prestiz[attacker] >= 5) { damage *= 1.2; SetHamParamFloat(4, damage); } } public Opis(id) show_menu(id, 1023, "\wSystem Prestizu ^n^n\rPrestiz 1: \y+15 EXP'a za fraga.^n\rPrestiz 2: \y+35 startowego HP.^n\rPrestiz 3: \yRedukcja obrazen o 10%.^n\rPrestiz 4: \yRedukcja widocznosci [90/255]^n\rPrestiz 5: \yWieksze obrazenia o 20%^n", -1, "Opis"); public taskAnnouncement() { client_print(0, print_chat, "Wpisz w say /prestize aby dowiedziec sie wiecej"); }
cod_set_user_xp(id, 0);
On resetuje do 1 lvl'a przy każdym prestiżu
Poprawiłem na:
cod_set_user_coins(id, cod_get_user_coins(id)-KOSZT);
i czytając z natywu i z #define ile ma zabrać także nie powinno już być problemu