Daca tu vezi aici ca este doar pentru CT eu ma impusc (vorbesc foarte serios).YONTU wrote:
- versiunea pe bani | Afiseaza codul
// Includes #include <amxmodx> #include <hamsandwich> #include <cstrike> #include <fakemeta> #include <fun> #include <nvault> // Register Plugin new const PLUGIN_NAME[] = "Level Up Items", PLUGIN_VERSION[] = "1.0", PLUGIN_AUTHOR[] = "YONTU"; #define MAX_LEVEL_DAMAGE 10 #define MAX_LEVEL_HEALTH 10 #define MAX_LEVEL_ARMOR 10 #define TOTAL_LEVELS (MAX_LEVEL_DAMAGE + MAX_LEVEL_HEALTH + MAX_LEVEL_ARMOR) / 3 #define is_user_valid(%1) (1 <= %1 <= 32) #define DMG_HEGRENADE (1<<24) new const Tag[] = "[Upgrade]"; new const SoundLevelUp[] = "misc/levelup.wav"; enum e_Item { HEALTH = 0, ARMOR, DAMAGE } enum e_data { AmmoPacks = 0, Power, } new g_UserLevel[e_Item][33]; new g_HostName[64], cvar_hostname, g_Vault; new menu, menu_callback, text_menu[128], text_item[e_Item][128]; new const g_PlayerData[TOTAL_LEVELS + 1][e_Item][e_data] = { /* Ammo Health Ammo Armor Ammo Dmg */ { { 0, 100 }, { 0, 100 }, { 0, 100 } }, // NU modifica nimic pe linia asta { { 20, 110 }, { 20, 110 }, { 20, 110 } }, // Level 1 { { 30, 120 }, { 30, 120 }, { 30, 120 } }, // Level 2 { { 40, 130 }, { 40, 130 }, { 40, 130 } }, // Level 3 { { 50, 140 }, { 50, 140 }, { 50, 140 } }, // Level 4 { { 60, 150 }, { 120, 150 }, { 60, 150 } }, // Level 5 { { 70, 160 }, { 130, 160 }, { 70, 160 } }, // Level 6 { { 80, 170 }, { 140, 170 }, { 80, 170 } }, // Level 7 { { 90, 180 }, { 200, 180 }, { 90, 180 } }, // Level 8 { { 100, 190 }, { 500, 190 }, { 100, 190 } }, // Level 9 { { 150, 200 }, { 150, 200 }, { 150, 200 } } // Level 10 /* Ammo Health Ammo Armor Ammo Dmg */ } public plugin_init() { register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR); register_cvar("upgrade_lvl_", PLUGIN_VERSION, FCVAR_SPONLY|FCVAR_SERVER); set_cvar_string("upgrade_lvl_", PLUGIN_VERSION); register_message(get_user_msgid("Health"), "msg_Health"); register_forward(FM_ClientUserInfoChanged, "fw_ChangeName"); RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn", 1); RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage"); register_clcmd("say /level", "ClShowLevel"); register_clcmd("say_team /level", "ClShowLevel"); register_clcmd("say /reset", "ClResetAll"); register_clcmd("say_team /reset", "ClResetAll"); register_clcmd("say /upgrade", "OpenUpgradeMenu"); register_clcmd("say_team /upgrade", "OpenUpgradeMenu"); cvar_hostname = get_cvar_pointer("hostname"); g_Vault = nvault_open("UpgradeLevelMod-by-YONTU"); if(g_Vault == INVALID_HANDLE) set_fail_state("Eroare la deschiderea bazei de date din foldeurul data/vault."); } public plugin_precache() precache_sound(SoundLevelUp); public plugin_end() nvault_close(g_Vault); public plugin_cfg() { get_pcvar_string(cvar_hostname, g_HostName, charsmax(g_HostName)); } public client_putinserver(id) { LoadUserExperience(id); } public client_disconnect(id) { SaveUserExperience(id); } // thx ConnorMcLeod public fw_ChangeName(id) { static const name[] = "name"; static szOldName[32], szNewName[32]; pev(id, pev_netname, szOldName, charsmax(szOldName)); if(szOldName[0]) { get_user_info(id, name, szNewName, charsmax(szNewName)); if(!equal(szOldName, szNewName)) { set_user_info(id, name, szOldName); ColorChat(id, "!3%s!1 Este!4 INTERZISA!1 schimbarea numelui pe server.", Tag); return FMRES_HANDLED; } } return FMRES_IGNORED; } public fw_PlayerSpawn(id) { if(!is_user_alive(id)) return PLUGIN_HANDLED; if(g_UserLevel[HEALTH][id] == 0) CheckUserLevel(id, HEALTH, MAX_LEVEL_HEALTH); if(g_UserLevel[ARMOR][id] == 0) CheckUserLevel(id, ARMOR, MAX_LEVEL_ARMOR); if(g_UserLevel[DAMAGE][id] == 0) CheckUserLevel(id, DAMAGE, MAX_LEVEL_DAMAGE); set_task(1.0, "set_user_items", id); return PLUGIN_CONTINUE; } public fw_TakeDamage(victim, inflictor, attacker, Float:fDamage, iDmgType) { if(is_user_valid(attacker) && is_user_alive(attacker) && victim != attacker) { if(iDmgType & DMG_HEGRENADE) return HAM_IGNORED; fDamage += g_PlayerData[g_UserLevel[DAMAGE][attacker]][DAMAGE][Power] * 1.0; SetHamParamFloat(4, fDamage); return HAM_HANDLED; } return HAM_IGNORED; } public msg_Health(msgid, dest, id) { static health; health = get_msg_arg_int(1); if(health > 255) { set_msg_arg_int(1, ARG_BYTE, 255); } return PLUGIN_CONTINUE; } public ClShowLevel(id) { if(is_user_connected(id)) { ColorChat(id, "!1%s!4 Health!1 Level: !3%d!1/!3%d!1 |!4 Health!1 Amount:!3 %d!1 | Next Money:!4 %d", Tag, g_UserLevel[HEALTH][id], MAX_LEVEL_HEALTH, g_PlayerData[g_UserLevel[HEALTH][id]][HEALTH][Power], g_PlayerData[g_UserLevel[HEALTH][id]][HEALTH][AmmoPacks]); ColorChat(id, "!1%s!4 Armor!1 Level: !3%d!1/!3%d!1 |!4 Armor!1 Amount:!3 %d!1 | Next Money:!4 %d", Tag, g_UserLevel[ARMOR][id], MAX_LEVEL_ARMOR, g_PlayerData[g_UserLevel[ARMOR][id]][ARMOR][Power], g_PlayerData[g_UserLevel[ARMOR][id]][ARMOR][AmmoPacks]); ColorChat(id, "!1%s!4 Damage!1 Level: !3%d!1/!3%d!1 | Incrase!4 Damage!1: +!3%d!1 | Next Money:!4 %d", Tag, g_UserLevel[DAMAGE][id], MAX_LEVEL_DAMAGE, g_PlayerData[g_UserLevel[DAMAGE][id]][DAMAGE][Power], g_PlayerData[g_UserLevel[DAMAGE][id]][DAMAGE][AmmoPacks]); } return PLUGIN_CONTINUE; } public ClResetAll(id) { if(!is_user_connected(id)) return PLUGIN_HANDLED; formatex(text_menu, charsmax(text_menu), "Reset Menu (All levels on 0)^n\y%s", g_HostName); menu = menu_create(text_menu, "Menu2Handler"); menu_additem(menu, "Health", "1", 0); menu_additem(menu, "Armor", "2", 0); menu_additem(menu, "Damage", "3", 0); menu_setprop(menu, MPROP_EXIT, MEXIT_ALL); menu_display(id, menu, 0); return PLUGIN_CONTINUE; } public Menu2Handler(id, menu, item) { if(!is_user_connected(id) || item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } new item_access, callback, name[32], data[6]; menu_item_getinfo(menu, item, item_access, data, charsmax(data), name, charsmax(name), callback); new key = str_to_num(data); switch(key) { case 1: { g_UserLevel[HEALTH][id] = 1; ColorChat(id, "!4%s!1 I reset your!3 health!1 level on 0. Good Luck!", Tag); } case 2: { g_UserLevel[ARMOR][id] = 1; ColorChat(id, "!4%s!1 I reset your!3 armor!1 level on 0. Good Luck!", Tag); } case 3: { g_UserLevel[DAMAGE][id] = 1; ColorChat(id, "!4%s!1 I reset your!3 damage!1 level on 0. Good Luck!", Tag); } } menu_destroy(menu); return PLUGIN_HANDLED; } public OpenUpgradeMenu(id) { if(!is_user_connected(id)) return PLUGIN_HANDLED; if(g_UserLevel[HEALTH][id] == MAX_LEVEL_HEALTH && g_UserLevel[ARMOR][id] == MAX_LEVEL_ARMOR && g_UserLevel[DAMAGE][id] == MAX_LEVEL_DAMAGE) { ColorChat(id, "!4%s!1 Ai deja!3 level maxim!1 la toate puterile.", Tag); return PLUGIN_HANDLED; } formatex(text_menu, charsmax(text_menu), "Upgrade Menu | Money:\r %d\d$^n\y%s", cs_get_user_money(id), g_HostName); menu = menu_create(text_menu, "MenuHandler"); menu_callback = menu_makecallback("CallBackMenu"); if(g_UserLevel[HEALTH][id] != MAX_LEVEL_HEALTH) { formatex(text_item[HEALTH], charsmax(text_item[]), "%sUpgrade my health [Level\r %d%s] [\r%d%s$]", g_PlayerData[g_UserLevel[HEALTH][id]][HEALTH][AmmoPacks] > cs_get_user_money(id) ? "\d" : "", g_UserLevel[HEALTH][id], g_PlayerData[g_UserLevel[HEALTH][id]][HEALTH][AmmoPacks] > cs_get_user_money(id) ? "\d" : "", g_PlayerData[g_UserLevel[HEALTH][id]][HEALTH][AmmoPacks], g_PlayerData[g_UserLevel[HEALTH][id]][HEALTH][AmmoPacks] > cs_get_user_money(id) ? "\d" : ""); } else { formatex(text_item[HEALTH], charsmax(text_item[]), "\dUpgrade my health [Max Level]"); } menu_additem(menu, text_item[HEALTH], "1", 0, menu_callback); if(g_UserLevel[ARMOR][id] != MAX_LEVEL_ARMOR) { formatex(text_item[ARMOR], charsmax(text_item[]), "%sUpgrade my armor [Level\r %d%s] [\r%d%s$]", g_PlayerData[g_UserLevel[ARMOR][id]][ARMOR][AmmoPacks] > cs_get_user_money(id) ? "\d" : "", g_UserLevel[ARMOR][id], g_PlayerData[g_UserLevel[ARMOR][id]][ARMOR][AmmoPacks] > cs_get_user_money(id) ? "\d" : "", g_PlayerData[g_UserLevel[ARMOR][id]][ARMOR][AmmoPacks], g_PlayerData[g_UserLevel[ARMOR][id]][ARMOR][AmmoPacks] > cs_get_user_money(id) ? "\d" : ""); } else { formatex(text_item[ARMOR], charsmax(text_item[]), "\dUpgrade my armor [Max Level]"); } menu_additem(menu, text_item[ARMOR], "2", 0, menu_callback); if(g_UserLevel[DAMAGE][id] != MAX_LEVEL_DAMAGE) { formatex(text_item[DAMAGE], charsmax(text_item[]), "%sUpgrade my damages [Level\r %d%s] [\r%d%s$]", g_PlayerData[g_UserLevel[DAMAGE][id]][DAMAGE][AmmoPacks] > cs_get_user_money(id) ? "\d" : "", g_UserLevel[DAMAGE][id], g_PlayerData[g_UserLevel[DAMAGE][id]][DAMAGE][AmmoPacks] > cs_get_user_money(id) ? "\d" : "", g_PlayerData[g_UserLevel[DAMAGE][id]][DAMAGE][AmmoPacks], g_PlayerData[g_UserLevel[DAMAGE][id]][DAMAGE][AmmoPacks] > cs_get_user_money(id) ? "\d" : ""); } else { formatex(text_item[DAMAGE], charsmax(text_item[]), "\dUpgrade my damages [Max Level]"); } menu_additem(menu, text_item[DAMAGE], "3", 0, menu_callback); menu_setprop(menu, MPROP_EXIT, MEXIT_ALL); menu_display(id, menu, 0); return PLUGIN_CONTINUE; } public MenuHandler(id, menu, item) { if(!is_user_connected(id) || item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } new item_access, callback, name[32], data[6]; menu_item_getinfo(menu, item, item_access, data, charsmax(data), name, charsmax(name), callback); new key = str_to_num(data); switch(key) { case 1: CheckUserLevel(id, HEALTH, MAX_LEVEL_HEALTH); case 2: CheckUserLevel(id, ARMOR, MAX_LEVEL_ARMOR); case 3: CheckUserLevel(id, DAMAGE, MAX_LEVEL_DAMAGE); } menu_destroy(menu); return PLUGIN_HANDLED; } public CallBackMenu(id, menu, item) { new data[6], name[64], access, CallBack; menu_item_getinfo(menu, item, access, data, charsmax(data), name, charsmax(name), CallBack); switch(data[0]) { case '1': { if(cs_get_user_money(id) < 0 || g_PlayerData[g_UserLevel[HEALTH][id]][HEALTH][AmmoPacks] > cs_get_user_money(id) || g_UserLevel[HEALTH][id] == MAX_LEVEL_HEALTH) return ITEM_DISABLED; } case '2': { if(cs_get_user_money(id) < 0 || g_PlayerData[g_UserLevel[ARMOR][id]][ARMOR][AmmoPacks] > cs_get_user_money(id) || g_UserLevel[ARMOR][id] == MAX_LEVEL_ARMOR) return ITEM_DISABLED; } case '3': { if(cs_get_user_money(id) < 0 || g_PlayerData[g_UserLevel[DAMAGE][id]][DAMAGE][AmmoPacks] > cs_get_user_money(id) || g_UserLevel[DAMAGE][id] == MAX_LEVEL_DAMAGE) return ITEM_DISABLED; } } return ITEM_ENABLED; } public CheckUserLevel(id, e_Item:item, max_level) { if(!is_user_connected(id)) return PLUGIN_HANDLED; if(g_UserLevel[item][id] < max_level) { if(cs_get_user_money(id) >= g_PlayerData[g_UserLevel[item][id]][item][AmmoPacks]) { cs_set_user_money(id, max(0, cs_get_user_money(id) - g_PlayerData[g_UserLevel[item][id]][item][AmmoPacks])); g_UserLevel[item][id]++; if(g_UserLevel[item][id] != 1) { emit_sound(id, CHAN_AUTO, SoundLevelUp, 1.0, ATTN_NORM, 0, PITCH_NORM); new g_Color[3]; g_Color[0] = get_color_level(id, 0, item); // r g_Color[1] = get_color_level(id, 1, item); // g g_Color[2] = get_color_level(id, 2, item); // b MakeFadeScreen(id, 1.5, g_Color[2], g_Color[1], g_Color[0], random_num(100, 200)); new string[11]; switch(item) { case HEALTH: formatex(string, charsmax(string), "on HEALTH"); case ARMOR: formatex(string, charsmax(string), "on ARMOR"); case DAMAGE: formatex(string, charsmax(string), "on DAMAGE"); } ColorChat(id, "!3%s!1 Congratulations, you've !4leveled up!3 %s!1. Current level:!3 %d!1 !", Tag, string, g_UserLevel[item][id]); if(g_UserLevel[item][id] < max_level) ColorChat(id, "!3%s!1 Next Money (needed):!4 %d!1 !", Tag, g_PlayerData[g_UserLevel[item][id]][item][AmmoPacks]); } } } return PLUGIN_HANDLED; } stock MakeFadeScreen(id, const Float:Seconds, const Red, const Green, const Blue, const Alpha) { static g_MsgScreenFade = 0; if(!g_MsgScreenFade) g_MsgScreenFade = get_user_msgid("ScreenFade"); message_begin(MSG_ONE, g_MsgScreenFade, _, id); write_short(floatround(4096.0 * Seconds, floatround_round)); write_short(floatround(4096.0 * Seconds, floatround_round)); write_short(0x0000); write_byte(Red); write_byte(Green); write_byte(Blue); write_byte(Alpha); message_end(); } public get_color_level(id, number, e_Item:item) { new g_Color[3]; switch(g_UserLevel[item][id]) { case 1: g_Color = { 248, 172, 58 }; case 2: g_Color = { 0, 255, 128 }; case 3: g_Color = { 170, 255, 127 }; case 4: g_Color = { 155, 240, 70 }; case 5: g_Color = { 255, 255, 0 }; case 6: g_Color = { 255, 127, 85 }; case 7: g_Color = { 0, 212, 255 }; case 8: g_Color = { 70, 70, 240 }; case 9: g_Color = { 170, 0, 255 }; case 10: g_Color = { 255, 255, 0 }; default: g_Color = { 200, 200, 0 }; } return g_Color[number]; } public SaveUserExperience(id) { new szVaultKey[64], szVaultData[256], szName[32]; get_user_name(id, szName, charsmax(szName)); format(szVaultKey, charsmax(szVaultKey), "%s", szName); format(szVaultData, charsmax(szVaultData), "%i#%i#%i#", g_UserLevel[HEALTH][id], g_UserLevel[ARMOR][id], g_UserLevel[DAMAGE][id]); nvault_set(g_Vault, szVaultKey, szVaultData); return PLUGIN_HANDLED; } public LoadUserExperience(id) { new szVaultKey[64], szVaultData[256], szName[32], level[e_Item][33]; get_user_name(id, szName, charsmax(szName)); format(szVaultKey, charsmax(szVaultKey), "%s", szName); format(szVaultData, charsmax(szVaultData), "%i#%i#%i#", g_UserLevel[HEALTH][id], g_UserLevel[ARMOR][id], g_UserLevel[DAMAGE][id]); nvault_get(g_Vault, szVaultKey, szVaultData, charsmax(szVaultData)); replace_all(szVaultData, charsmax(szVaultData), "#", " "); parse(szVaultData, level[HEALTH], charsmax(level[]), level[ARMOR], charsmax(level[]), level[DAMAGE], charsmax(level[])); g_UserLevel[HEALTH][id] = str_to_num(level[HEALTH]); g_UserLevel[ARMOR][id] = str_to_num(level[ARMOR]); g_UserLevel[DAMAGE][id] = str_to_num(level[DAMAGE]); return PLUGIN_HANDLED; } // STOCK'S public set_user_items(id) { if(!is_user_alive(id)) return; // HEALTH set_user_health(id, clamp(g_PlayerData[g_UserLevel[HEALTH][id]][HEALTH][Power], 10, 1000)); // ARMOR new CsArmorType:ArmorType = CS_ARMOR_VESTHELM; cs_set_user_armor(id, clamp(g_PlayerData[g_UserLevel[ARMOR][id]][ARMOR][Power], 0, 1000), ArmorType); } 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(); } } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1048\\ f0\\ fs16 \n\\ par } */
PS:
Daca astea le-ai pus asa:
Code: Select all
public plugin_precache()
precache_sound(SoundLevelUp);
public plugin_end()
nvault_close(g_Vault);
Astea de le-ai pus asa?:
Code: Select all
public plugin_cfg()
{
get_pcvar_string(cvar_hostname, g_HostName, charsmax(g_HostName));
}
public client_putinserver(id)
{
LoadUserExperience(id);
}
public client_disconnect(id)
{
SaveUserExperience(id);
}
Si de ce nu le-ai pus asa?:
Code: Select all
public plugin_cfg()
get_pcvar_string(cvar_hostname, g_HostName, charsmax(g_HostName));
public client_putinserver(id)
LoadUserExperience(id);
public client_disconnect(id)
SaveUserExperience(id);