Modificare shop
Posted: 10 Jan 2019, 13:28
by L1oN98
Salut, stie cineva sa adauge "Special Knife" in shop si meniul cu knife?
https://imgur.com/a/1I4OYNG
https://imgur.com/a/TGPLjpf
Special Knife sa fie initial in lista de la /knife, dar dezactivat gen:
Odata achizitionat "Special Knife" sa sa salveze pe nick, iar in meniul de la /knife sa sa afiseze normal cu alb, cum e in poza de mai jos:
https://imgur.com/a/TGPLjpf
Sa aiba urmatoarele beneficii:
-400 Speed
-400 Gravity
Am cerut ajutorul unor scripteri de pe forum, ori au reusit dar multe buguri si nu au stiut sa le rezolve ori nu au stiut deloc
Plugin pentru /shop:
Plugin pentru /Knife:
https://imgur.com/a/1I4OYNG
https://imgur.com/a/TGPLjpf
Special Knife sa fie initial in lista de la /knife, dar dezactivat gen:
Code: Select all
6. Special Knife (OFF) - (si sa fie cu gri, adica dezactivat, sa se vada bine ca nu poti sa-l iei)
https://imgur.com/a/TGPLjpf
Code: Select all
6. Special Knife (ON)
-400 Speed
-400 Gravity
Am cerut ajutorul unor scripteri de pe forum, ori au reusit dar multe buguri si nu au stiut sa le rezolve ori nu au stiut deloc
Plugin pentru /shop:
- | Afiseaza codul
/* Am cautat foarte mult un plugin sa fie cel putin asemanator cu ce vreau eu dar nu am gasit(am cautat pana si la rusi) Vreau sa functioneze pe un sistem de credite cu urmatoarea structura: /shop Code: 1. +100HP - 1credit 2. Random weapon - 1credit 3. Surpriza -1credit -Nr de credite din shop le modific eu -Pentru "Random weapon" sa fie ales aleator o arma. (dintre ak47,AWP,m4a1) -Pentru "Surpriza" sa fie aleator ales dintre (100% invizibilitate, +2credite, AWP, speed 1000, 5HE, GOD MODE 5sec) (Pentru invizibilitate si speed sa functioneze doar o runda) Creditele sa se faca pe kill si 1credit la 1h jucata. Am pluginurile de register nick si orejucate pe server. */ #include <amxmodx> #include <amxmisc> #include <fun> #include <cstrike> #include <dhudmessage> #include <fakemeta> #include <nvault> #define PLUGIN_VERSION "1.0" #define MAX_PLAYERS 32 #define TASK_GM 2199 #define TASK_TIMP 1298 // -------------------------------------------- // ------------- DE EDITAT --------------- // -------------------------------------------- #define HP 100 #define VITEZA 700 #define CREDITE_KILL 1 #define TAG "[~ ~ S H O P ~ ~]" #define TIMP_SECUNDE 3600 // la cate secunde sa primesti X credite #define CREDITE_TIMP 10 // cate credite primesti dupa ce trec secundele // -------------------------------------------- // ------------- DE EDITAT --------------- // -------------------------------------------- new meniu; new callback; new bar; new credite[MAX_PLAYERS+1]; new bool:viteza[MAX_PLAYERS+1]; new bool:invizibilitate[MAX_PLAYERS+1]; new bool:godmode[MAX_PLAYERS+1]; new bool:am_ales[MAX_PLAYERS+1]; new vault; enum datas_ { str[32], info, cost }; /* prima coloana: numele itemului a doua coloana: cantitatea din item ultima coloana: costul itemului sa zicem ca X este un numar. Daca in numele itemului se afla X, pe acesta trebuie sa il inlocuiesti cu simbolul '#'. X reprezinta cantitatea din acel item. Mai jos ai exemplu. pluginul creaza automat meniul si itemele, numele itemelor si cantitatatea itemelor se inlocuiesc automat, tu trebuie sa modifici mai jos matricea dupa bunul plac daca in item nu se afla nicio cantitate, la a doua coloana scrii -1 */ new const data_meniu[][datas_] = { // nume // cantitate // cost { "+#HP", HP, 1}, { "Arma random", -1, 1}, { "Surpriza !!!", -1, 1} }; public plugin_init() { register_plugin("Shop", PLUGIN_VERSION, "YONTU"); register_event("HLTV", "event_newround", "a", "1=0", "2=0"); register_event("CurWeapon", "event_CurWeapon", "be", "1=1"); register_clcmd("say /shop", "cmd_shop"); register_clcmd("say_team /shop", "cmd_shop"); register_clcmd("drop", "cmd_use_power"); register_concmd("amx_credite", "cmd_credite", ADMIN_IMMUNITY, "<tinta/@all> <credite>"); bar = get_user_msgid("BarTime"); vault = nvault_open("credite"); if(vault == INVALID_HANDLE) set_fail_state("Eroare la deschiderea bazei de date din foldeurul data/vault."); } public plugin_end() { nvault_close(vault); } public salveaza_credite(id) { new vaultdata[64]; format(vaultdata, charsmax(vaultdata), "%i#", credite[id]); new nume[32]; get_user_name(id, nume, charsmax(nume)); nvault_set(vault, nume, vaultdata); } public incarca_credite(id) { new vaultdata[64], temp[MAX_PLAYERS+1]; format(vaultdata, charsmax(vaultdata), "%i#", credite[id]); new nume[32]; get_user_name(id, nume, charsmax(nume)); nvault_get(vault, nume, vaultdata, charsmax(vaultdata)); replace_all(vaultdata, charsmax(vaultdata), "#", " "); parse(vaultdata, temp, charsmax(temp)); credite[id] = str_to_num(temp); } public cmd_use_power(id) { if(is_user_alive(id) && godmode[id]) { set_dhudmessage(255, 255, 0, -1.0, 0.78, 0, _, 2.0); show_dhudmessage(id, "ESTI I N V I N C I B I L"); set_user_godmode(id, true); godmode[id] = false; ShakeScreen(id, 2.0); message_begin(MSG_ONE_UNRELIABLE, bar, .player=id) write_short(5); message_end(); set_task(5.0, "opreste_godmode", id + TASK_GM); return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; } public opreste_godmode(id) { id -= TASK_GM; set_dhudmessage(20, 255, 0, -1.0, 0.78, 0, _, 2.0); show_dhudmessage(id, "Nu mai esti invincibil..."); ColorChat(id, "!4%s!1 Nu mai esti invincibil. Puterea ti-a expirat.", TAG); set_user_godmode(id, false); ShakeScreen(id, 2.0); } public event_newround() { arrayset(am_ales, false, charsmax(am_ales)); arrayset(viteza, false, charsmax(viteza)); arrayset(godmode, false, charsmax(godmode)); new i, players[MAX_PLAYERS], num, id; get_players(players, num); for(i = 0; i < num; i++) { id = players; if(!is_user_alive(id)) continue; if(invizibilitate[id]) { invizibilitate[id] = false; set_user_rendering(id); } if(task_exists(id + TASK_GM)) remove_task(id + TASK_GM); } } public event_CurWeapon(id) { if(is_user_alive(id)) { if(get_user_maxspeed(id) != 1.0 && viteza[id] == true) { set_user_maxspeed(id, float(VITEZA)); } } return PLUGIN_CONTINUE; } public client_death(killer, victim, wpnindex, hitplace, tk) { if(!is_user_alive(killer)) return; if(killer == victim) return; credite[killer] += CREDITE_KILL; salveaza_credite(killer); if(viteza[killer]) viteza[killer] = false; if(godmode[killer]) godmode[killer] = false; if(invizibilitate[killer]) { invizibilitate[killer] = false; set_user_rendering(killer); } } public client_putinserver(id) { am_ales[id] = false; viteza[id] = false; invizibilitate[id] = false; godmode[id] = false; incarca_credite(id); set_task(float(TIMP_SECUNDE), "primeste_credite", id + TASK_TIMP); } public primeste_credite(taskid) { static id; id = taskid - TASK_TIMP; credite[id] += CREDITE_TIMP; ColorChat(id, "!4%s!1 Ai primit !4%d!1 credite pentru ca ai jucat!4 %d!1 minute.", TAG, CREDITE_TIMP, TIMP_SECUNDE/60); set_task(float(TIMP_SECUNDE), "primeste_credite", id + TASK_TIMP); } public client_disconnected(id) { if(task_exists(id + TASK_GM)) remove_task(id + TASK_GM); if(task_exists(id + TASK_TIMP)) remove_task(id + TASK_TIMP); salveaza_credite(id); } public hook_shop(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } if(!is_user_alive(id)) return ITEM_DISABLED; if(am_ales[id]) return ITEM_DISABLED; if(credite[id] < data_meniu[item][cost]) return ITEM_DISABLED; return ITEM_ENABLED; } public shop_handler(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } switch(item) { case 0: { set_user_health(id, get_user_health(id) + HP); am_ales[id] = true; ColorChat(id, "!4%s!1 Ai cumparat cu!3 %d!1 credit%s!4 %d HP!1.", TAG, data_meniu[item][cost], data_meniu[item][cost] == 1 ? "": "e", HP); } case 1: { ColorChat(id, "!4%s!1 Ai cumparat cu!3 %d!1 credit%s o arma random.", TAG, data_meniu[item][cost], data_meniu[item][cost] == 1 ? "": "e"); switch(random_num(0, 2)) { case 0: { give_item(id, "weapon_ak47"); cs_set_user_bpammo(id, CSW_AK47, 90); ColorChat(id, "!4%s!1 Arma este!3 AK-47", TAG); } case 1: { give_item(id, "weapon_awp"); cs_set_user_bpammo(id, CSW_AWP, 30); ColorChat(id, "!4%s!1 Arma este!3 AWP", TAG); } case 2: { give_item(id, "weapon_m4a1"); cs_set_user_bpammo(id, CSW_M4A1, 90); ColorChat(id, "!4%s!1 Arma este!3 M4A1", TAG); } } am_ales[id] = true; } case 2: // (100% invizibilitate, +2credite, AWP, speed 1000, 5HE, GOD MODE 5sec) { ColorChat(id, "!4%s!1 Ai cumparat cu!3 %d!1 credit%s!4 o surpriza.", TAG, data_meniu[item][cost], data_meniu[item][cost] == 1 ? "": "e"); switch(random_num(0, 5)) { case 0: { invizibilitate[id] = true; set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 25); ColorChat(id, "!4%s!1 TAAADAAAM. Esti!3 i n v i z i b i l!1.", TAG); ShakeScreen(id, 2.0); } case 1: { credite[id] += 2; ColorChat(id, "!4%s!1 Bingooo !!! Ai castigat in plus!3 2 credite!1.", TAG); } case 2: { give_item(id, "weapon_awp"); cs_set_user_bpammo(id, CSW_AWP, 30); ColorChat(id, "!4%s!3 AWP-ul!1 este surpriza! *Cand pun ochiul in luneta curat tot de pe planeta.*", TAG); } case 3: { viteza[id] = true; set_user_maxspeed(id, float(VITEZA)); ColorChat(id, "!4%s!1 Sa fii tu oare!4 Speedy Gonzales!1??? Ai sansa acum sa-l intreci!! Ai devenit!3 ultra-rapid!1.", TAG); ShakeScreen(id, 2.0); } case 4: { if(!user_has_weapon(id, CSW_HEGRENADE)) { give_item(id, "weapon_hegrenade"); } cs_set_user_bpammo(id, CSW_HEGRENADE, 5); ColorChat(id, "!4%s!1 Ti se zice mai nou spaima-bombelor. Ti-am facut plinul cu!3 5 HE-uri!1.", TAG); } case 5: { godmode[id] = true; new nume[32]; get_user_name(id, nume, charsmax(nume)); ColorChat(0, "!4[]!1 ATENTIE ATENTIE !!!!3 %s!1 a avut norocul sa devina invincibil.", TAG, nume); ColorChat(id, "!4%s!1 Ai castigat!3 godmode!1. Apasta tasta!4 G!1 sa iti activezi puterea.", TAG); set_dhudmessage(20, 255, 0, -1.0, 0.78, 0, _, 2.0); show_dhudmessage(id, "Fa-te invincibil prin apasarea tastei G."); } } am_ales[id] = true; } } credite[id] -= data_meniu[item][cost]; menu_destroy(menu); return PLUGIN_HANDLED; } public cmd_shop(id) { static text[128], tasta[2], str_to_rpl[5], i; formatex(text, charsmax(text), "Meniu Shop | Creditele tale:\r %d\w", credite[id]); meniu = menu_create(text, "shop_handler"); callback = menu_makecallback("hook_shop"); for(i = 0; i < sizeof data_meniu; i++) { if(data_meniu[info] != -1) { num_to_str(data_meniu[info], str_to_rpl, charsmax(str_to_rpl)); copy(text, charsmax(text), data_meniu[str]); replace(text, charsmax(text), "#", str_to_rpl); formatex(text, charsmax(text), "%s -\r %d\w credit%s", text, data_meniu[cost], data_meniu[cost] == 1 ? "" : "e"); } else { formatex(text, charsmax(text), "%s -\r %d\w credit%s", data_meniu[str], data_meniu[cost], data_meniu[cost] == 1 ? "" : "e"); } tasta[0] = i; tasta[1] = 0; menu_additem(meniu, text, tasta, _, callback); } menu_setprop(meniu, MPROP_EXIT, MEXIT_ALL); menu_display(id, meniu); return PLUGIN_CONTINUE; } public cmd_credite(id, level, cid) { if(!cmd_access(id, level, cid, 3)) return PLUGIN_HANDLED; new nume[32], cantitate[13]; read_argv(1, nume, charsmax(nume)); read_argv(2, cantitate, charsmax(cantitate)); new credite_ = str_to_num(cantitate); if(credite_ <= 0) { client_cmd(id, "echo Numarul de credite trebuie sa fie mai mare decat 0."); return PLUGIN_HANDLED; } new nume_admin[32]; get_user_name(id, nume_admin, charsmax(nume_admin)); if( nume[ 0 ] == '@' ) { switch( nume[ 1 ] ) { case 'A': { if( equal( nume, "@ALL" ) ) { new iPlayers[ 32 ], iPlayersNum get_players( iPlayers, iPlayersNum, "ch" ); if( iPlayersNum == 0 ) { client_cmd( id, "echo NU se afla niciun jucator pe server !" ); return 1; } for( new i = 0; i < iPlayersNum ; i++ ) { credite[ iPlayers[ i ] ] += credite_; salveaza_credite(iPlayers[ i ]); } ColorChat(0, "!4%s!1 Adminul!4 %s!1 le-a dat!4 %i!1 credit%s tuturor!4 Jucatorilor!1 !",TAG, nume_admin, credite_, credite_ == 1 ? "" : "e" ); return 1; } } } } new player = cmd_target(id, nume, 8); if(!player || !is_user_connected(id)) { client_cmd(id, "echo Jucatorul %s nu a fost gasit sau nu este conectat!", nume); return PLUGIN_HANDLED; } credite[player] += credite_; salveaza_credite(player); new nume_jucator[32]; get_user_name(player, nume_jucator, charsmax(nume_jucator)); ColorChat(0, "!4%s!1 Adminul!4 %s!1 i-a dat!3 %d!1 credit%s lui!3 %s!1.", TAG, nume_admin, credite_, credite_ == 1 ? "" : "e", nume_jucator); return PLUGIN_HANDLED; } public ShakeScreen(id, const Float:iSeconds) { static g_msg_SS = 0; if(!g_msg_SS) g_msg_SS = get_user_msgid("ScreenShake"); message_begin(MSG_ONE, g_msg_SS, _, id); write_short(floatround(4096.0 * iSeconds, floatround_round)); write_short(floatround(4096.0 * iSeconds, floatround_round)); write_short(1<<13); message_end(); } stock ColorChat(id, String[], any:...) { static szMesage[192]; vformat(szMesage, charsmax(szMesage), String, 3); replace_all(szMesage, charsmax(szMesage), "!1", "^1"); replace_all(szMesage, charsmax(szMesage), "!3", "^3"); replace_all(szMesage, charsmax(szMesage), "!4", "^4"); static g_msg_SayText = 0; if(!g_msg_SayText) g_msg_SayText = get_user_msgid("SayText"); new Players[32], iNum = 1, i; if(id) Players[0] = id; else get_players(Players, iNum, "ch"); for(--iNum; iNum >= 0; iNum--) { i = Players[iNum]; message_begin(MSG_ONE_UNRELIABLE, g_msg_SayText, _, i); write_byte(i); write_string(szMesage); message_end(); } }
Plugin pentru /Knife:
- | Afiseaza codul
#include <amxmodx> #include <amxmisc> #include <engine> #include <vault> #include <fun> #include <fakemeta> #define PLUGIN "Knife Mod+" #define VERSION "1.0" #define AUTHOR "spunko,drastiq" #define MAXPLAYERS 32 #define TASK_INTERVAL 4.0 #define MAX_HEALTH 255 #define m_pLastItem 375 #define m_pLastKnifeItem 370 new knife_model[33] new g_Menu new g_pVisiblity; new CVAR_HIGHSPEED new CVAR_LOWSPEED new CVAR_LOWGRAV new CVAR_NORMGRAV new CVAR_HEALTH_ADD new CVAR_HEALTH_MAX new CVAR_DAMAGE public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_event( "Damage", "event_damage", "be" ) register_event("CurWeapon","EventCurWeapon","be","1=1") g_Menu = register_menuid("Knife Mod") register_menucmd(g_Menu, 1023, "knifemenu") register_clcmd("say /knife", "display_knife") CVAR_HIGHSPEED = register_cvar("km_highspeed","340") CVAR_LOWSPEED = register_cvar("km_lowspeed","170") CVAR_HEALTH_ADD = register_cvar("km_addhealth", "3") CVAR_HEALTH_MAX = register_cvar("km_maxhealth", "75") CVAR_DAMAGE = register_cvar("km_damage", "2") CVAR_LOWGRAV = register_cvar("km_lowgravity" , "400") CVAR_NORMGRAV = get_cvar_pointer("sv_gravity") g_pVisiblity = register_cvar( "km_invis", "150" ); // 255 = clearly visible } public plugin_precache() { precache_model("models/knife-mod/v_Tactic.mdl") precache_model("models/knife-mod/p_Tactic.mdl") precache_model("models/knife-mod/v_OneKill.mdl") precache_model("models/knife-mod/p_OneKill.mdl") precache_model("models/knife-mod/v_Cobra.mdl") precache_model("models/knife-mod/p_Cobra.mdl") precache_model("models/knife-mod/v_hulk.mdl") precache_model("models/knife-mod/v_knifeN.mdl") precache_model("models/p_knife.mdl") precache_model("models/knife-mod/v_claw.mdl") } public display_knife(id) { // Codes makes it so only the dead can pick a knife. if (is_user_alive(id) == 0){ client_print(id, print_chat, "Nu poti alege un cutit cat timp esti mort!") return PLUGIN_CONTINUE } else client_print(id, print_chat, "Alege un cutit!") new menuBody[512] add(menuBody, 511, "\r Knife Mod^n^n") add(menuBody, 511, "\r1. \wOneKill \y(DMG Marit/Viteza redusa!)^n") add(menuBody, 511, "\r2. \wCobra \y(Nu se aud pasii!)^n") add(menuBody, 511, "\r3. \wTactic \y(Viteza marita!)^n") add(menuBody, 511, "\r4. \wHulk \y(Gravitatie!)^n") add(menuBody, 511, "\r5. \wGrizzly (Normal) \y(Regenerare HP!)^n^n^n") add(menuBody, 511, "\w0. Exit^n") new keys = ( 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<9 ) show_menu(id, keys, menuBody, -1, "Knife Mod") return PLUGIN_HANDLED } public knifemenu(id, key) { switch(key) { case 0: SetKnife(id , 4) case 1: SetKnife(id , 2) case 2: SetKnife(id , 3) case 3: SetKnife(id , 1) case 4: SetKnife(id , 0) default: return PLUGIN_HANDLED } SaveData(id) return PLUGIN_HANDLED } public SetKnife(id , Knife) { knife_model[id] = Knife new Clip, Ammo, Weapon = get_user_weapon(id, Clip, Ammo) if ( Weapon != CSW_KNIFE ) return PLUGIN_HANDLED new vModel[56],pModel[56] switch(Knife) { case 0: { format(vModel,55,"models/knife-mod/v_knifeN.mdl") format(pModel,55,"models/p_knife.mdl") } case 1: { format(vModel,55,"models/knife-mod/v_hulk.mdl") } case 2: { format(vModel,55,"models/knife-mod/v_Cobra.mdl") format(pModel,55,"models/knife-mod/p_Cobra.mdl") } case 3: { format(vModel,55,"models/knife-mod/v_Tactic.mdl") format(pModel,55,"models/knife-mod/p_Tactic.mdl") } case 4: { format(vModel,55,"models/knife-mod/v_OneKill.mdl") format(pModel,55,"models/knife-mod/p_OneKill.mdl") } } entity_set_string(id, EV_SZ_viewmodel, vModel) entity_set_string(id, EV_SZ_weaponmodel, pModel) return PLUGIN_HANDLED; } public event_damage(id) { new victim_id = id; if( !is_user_connected( victim_id ) ) return PLUGIN_CONTINUE new dmg_take = read_data( 2 ); new dmgtype = read_data( 3 ); new Float:multiplier = get_pcvar_float(CVAR_DAMAGE); new Float:damage = dmg_take * multiplier; new health = get_user_health( victim_id ); new iWeapID, attacker_id = get_user_attacker( victim_id, iWeapID ); if( !is_user_connected( attacker_id ) || !is_user_alive( victim_id ) ) { return PLUGIN_HANDLED } if( iWeapID == CSW_KNIFE && knife_model[attacker_id] == 4 ) { if( floatround(damage) >= health ) { if( victim_id == attacker_id ) { return PLUGIN_CONTINUE }else{ log_kill( attacker_id, victim_id, "knife", 0 ); } return PLUGIN_CONTINUE }else { if( victim_id == attacker_id ) return PLUGIN_CONTINUE fakedamage( victim_id, "weapon_knife", damage, dmgtype ); } } return PLUGIN_CONTINUE } public EventCurWeapon(id) { new Weapon = read_data(2) // Set Knife Model SetKnife(id, knife_model[id]) // Task Options if(knife_model[id] == 0 && !task_exists(id) && Weapon == CSW_KNIFE) set_task(TASK_INTERVAL , "task_healing",id,_,_,"b") else if(task_exists(id)) remove_task(id) // Abilities set_user_footsteps(id , ( (knife_model[id] == 2 && Weapon == CSW_KNIFE) ? 1 : 0) ) new Float:Gravity = ((knife_model[id] == 1 && Weapon == CSW_KNIFE)? get_pcvar_float(CVAR_LOWGRAV) : get_pcvar_float(CVAR_NORMGRAV)) / 800.0 set_user_gravity(id , Gravity) // Speed new Float:Speed if(Weapon != CSW_KNIFE || knife_model[id] < 3) return PLUGIN_CONTINUE else if(knife_model[id] == 3) Speed = get_pcvar_float(CVAR_HIGHSPEED) else if(knife_model[id] == 4) Speed = get_pcvar_float(CVAR_LOWSPEED) set_user_maxspeed(id, Speed) } stock log_kill(killer, victim, weapon[],headshot) { user_silentkill( victim ); message_begin( MSG_ALL, get_user_msgid( "DeathMsg" ), {0,0,0}, 0 ); write_byte( killer ); write_byte( victim ); write_byte( headshot ); write_string( weapon ); message_end(); new kfrags = get_user_frags( killer ); set_user_frags( killer, kfrags++ ); new vfrags = get_user_frags( victim ); set_user_frags( victim, vfrags++ ); return PLUGIN_CONTINUE } public task_healing(id) { new addhealth = get_pcvar_num(CVAR_HEALTH_ADD) if (!addhealth) return new maxhealth = get_pcvar_num(CVAR_HEALTH_MAX) if (maxhealth > MAX_HEALTH) { set_pcvar_num(CVAR_HEALTH_MAX, MAX_HEALTH) maxhealth = MAX_HEALTH } new health = get_user_health(id) if (is_user_alive(id) && (health < maxhealth)) { set_user_health(id, health + addhealth) set_hudmessage(0, 255, 0, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.1, 4) show_hudmessage(id,"<< !!HP-ul CRESTE!! >>") message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id) write_short(1<<10) write_short(1<<10) write_short(0x0000) write_byte(0) write_byte(200) write_byte(0) write_byte(75) message_end() } else { if (is_user_alive(id) && (health > maxhealth)) remove_task(id) } } public client_disconnect(id) { if(task_exists(id)) remove_task(id) } public client_authorized(id) { LoadData(id) } SaveData(id) { new authid[32] get_user_authid(id, authid, 31) new vaultkey[64] new vaultdata[64] format(vaultkey, 63, "KMOD_%s", authid) format(vaultdata, 63, "%d", knife_model[id]) set_vaultdata(vaultkey, vaultdata) } LoadData(id) { new authid[32] get_user_authid(id,authid,31) new vaultkey[64], vaultdata[64] format(vaultkey, 63, "KMOD_%s", authid) get_vaultdata(vaultkey, vaultdata, 63) knife_model[id] = str_to_num(vaultdata) }