引用 | 編輯
龍心
2017-09-06 23:03 |
樓主
|
||
x0
圖 1. 【插件資訊】 插件來源:網路資源轉載提供會員參考 http://bbs.mychat.tw/reads.php?tid=986261 使用指令:自行編譯及參考 http://bbs.mychat.tw/reads.php?tid=986261 安裝路徑:addons\amxmodx\plugins 【插件介紹】 複製程式 new g_vault; new g_msg; new g_points[33]; new g_xp[33]; new g_lv[33]; new CKXB; new CKPB; new TKXB; new TKPB; new RequiredXP[10001]; replace_all(String:string[], len, String:what[], String:with[]) { new pos = 0; new var1 = contain(string, what); pos = var1; if (var1 == -1) { return 0; } new total = 0; new with_len = strlen(with); new diff = strlen(what) - with_len; new total_len = strlen(string); new temp_pos = 0; while (replace(string[pos], len - pos, what, with)) { pos = with_len + pos; total_len -= diff; if (pos >= total_len) { return total; } else { temp_pos = contain(string[pos], what); if (temp_pos == -1) { return total; } else { pos = temp_pos + pos; total++; } return total; } return total; } return total; } cmd_access(id, level, cid, num) { !!! Removed Phi new has_access = 0; new var1; if (is_dedicated_server()) { var1 = 0; } else { var1 = 1; } if (var1 == id) { has_access = 1; } else { if (level == 16777216) { if (is_user_admin(id)) { has_access = 1; } } if (level & get_user_flags(id, 0)) { has_access = 1; } if (level) { } else { has_access = 1; } } if (has_access) { if (num > read_argc()) { new hcmd[32]; new hinfo[128]; new hflag = 0; get_concmd(cid, hcmd, 31, hflag, hinfo, 127, level, -1); console_print(id, "%L: %s %s", id, "USAGE", hcmd, hinfo); return 0; } return 1; } console_print(id, "%L", id, "NO_ACC_COM"); return 0; } cmd_target(id, String:arg[], flags) { !!! Removed Phi new player = find_player("bl", arg); if (player) { if (find_player("blj", arg) != player) { console_print(id, "%L", id, "MORE_CL_MATCHT"); return 0; } } else { if (var4 && arg[0] == 35 && arg[1]) { player = find_player("k", str_to_num(arg[1])); } } if (!player) { console_print(id, "%L", id, "CL_NOT_FOUND"); return 0; } if (flags & 1) { if (get_user_flags(player, 0) & 1 && flags & 2) { new imname[32]; get_user_name(player, imname, 31); console_print(id, "%L", id, "CLIENT_IMM", imname); return 0; } } if (flags & 4) { if (!is_user_alive(player)) { new imname[32]; get_user_name(player, imname, 31); console_print(id, "%L", id, "CANT_PERF_DEAD", imname); return 0; } } if (flags & 8) { if (is_user_bot(player)) { new imname[32]; get_user_name(player, imname, 31); console_print(id, "%L", id, "CANT_PERF_BOT", imname); return 0; } } return player; } public plugin_init() { register_cvar("Rcolour", "100", 0, 0.00); register_cvar("Gcolour", "0", 0, 0.00); register_cvar("Bcolour", "200", 0, 0.00); register_plugin("lv_system", "1.0", "Crazy_Eric"); register_clcmd("cy_xp", "cmd_xp", 4096, "Usage: cy_xp <name> <+/-/=> <amount>"); register_clcmd("cy_point", "cmd_point", 4096, "Usage: cy_point <name> <+/-/=> <amount>"); register_clcmd("cy_lv", "cmd_lv", 4096, "Usage: cy_lv <name> <+/-/=> <amount>"); CKXB = register_cvar("CT_KillXPBonus", "15", 0, 0.00); CKPB = register_cvar("CT_KillPointsBonus", "10", 0, 0.00); TKXB = register_cvar("T_KillXPBonus", "25", 0, 0.00); TKPB = register_cvar("T_KillPointsBonus", "10", 0, 0.00); register_clcmd("say /save", "Save", -1, ""); register_forward(FM_PlayerPreThink, "prethink", 0); g_msg = CreateHudSyncObj(0); g_vault = nvault_open("XPSystem"); register_event("DeathMsg", "Death", "a", ""); set_task(0.50, "ShowHud", 0, "", 0, "b", 0); new a = 0; a = 0; while (a < 10001) { RequiredXP[a] = a + 1 * a + 1 * 100; a++; } return 0; } public prethink(id) { new var2 = g_lv[id][0][0]; new var1; if (10000 >= var2) { new var3 = g_xp[id][0][0]; if (RequiredXP[g_lv[id][0][0]][0][0] <= var3) { new var4 = g_lv; var4[id]++; client_printcolor(id, "/g【等級系統】恭喜你的等級升級"); var1 = var4; } var1 = var3; } else { var1 = var2; } return 0; } public cmd_xp(id, level, cid) { new name[15]; new symbol[5]; new amount[50]; if (!cmd_access(id, level, cid, 4)) { return 1; } read_argv(1, name, 14); read_argv(2, symbol, 4); read_argv(3, amount, 14); new target = cmd_target(id, name, 2); if (!target) { client_print(id, print_console, "Player not found"); return 1; } if (!(strcmp(symbol, "+", 0))) { new var1 = g_xp[target]; var1 = str_to_num(amount) + var1[0][0]; } if (!(strcmp(symbol, "-", 0))) { new var2 = g_xp[target]; var2 = var2[0][0] - str_to_num(amount); } if (!(strcmp(symbol, "=", 0))) { g_xp[target] = str_to_num(amount); } return 1; } public cmd_point(id, level, cid) { new name[15]; new symbol[5]; new amount[50]; if (!cmd_access(id, level, cid, 4)) { return 1; } read_argv(1, name, 14); read_argv(2, symbol, 4); read_argv(3, amount, 14); new target = cmd_target(id, name, 2); if (!target) { client_print(id, print_console, "Player not found"); return 1; } if (!(strcmp(symbol, "+", 0))) { new var1 = g_points[target]; var1 = str_to_num(amount) + var1[0][0]; } if (!(strcmp(symbol, "-", 0))) { new var2 = g_points[target]; var2 = var2[0][0] - str_to_num(amount); } if (!(strcmp(symbol, "=", 0))) { g_points[target] = str_to_num(amount); } return 1; } public cmd_lv(id, level, cid) { !!! Removed Phi new name[15]; new symbol[5]; new amount[50]; if (!cmd_access(id, level, cid, 4)) { return 1; } read_argv(1, name, 14); read_argv(2, symbol, 4); read_argv(3, amount, 14); new target = cmd_target(id, name, 2); if (!target) { client_print(id, print_console, "Player not found"); return 1; } if (!(strcmp(symbol, "+", 0))) { new var1 = g_xp[target]; var1 = RequiredXP[str_to_num(amount) + g_lv[target][0][0] - 1][0][0] - RequiredXP[g_lv[target][0][0] - 1][0][0] + var1[0][0]; } if (!(strcmp(symbol, "-", 0))) { new var2 = g_xp[target]; var2 = var2[0][0] - RequiredXP[g_lv[target][0][0] - 1][0][0] - RequiredXP[g_lv[target][0][0] - str_to_num(amount) - 1][0][0]; new var3 = g_lv[target]; var3 = var3[0][0] - str_to_num(amount); } if (!(strcmp(symbol, "=", 0))) { if (str_to_num(amount)) { g_xp[target] = RequiredXP[str_to_num(amount) - 1][0][0]; g_lv[target] = str_to_num(amount); } g_xp[target] = 0; g_lv[target] = 0; } return 1; } public Death() { new attacker = read_data(1); new victim = read_data(2); if (victim != attacker) { if (cs_get_user_team(attacker, 0) == 2) { new var1 = g_xp[attacker]; var1 = get_pcvar_num(CKXB) + var1[0][0]; new var2 = g_points[attacker]; var2 = get_pcvar_num(CKPB) + var2[0][0]; } if (cs_get_user_team(attacker, 0) == 1) { new var3 = g_xp[attacker]; var3 = get_pcvar_num(TKXB) + var3[0][0]; new var4 = g_points[attacker]; var4 = get_pcvar_num(TKPB) + var4[0][0]; } Save(attacker); } return 0; } public plugin_natives() { register_native("get_user_points", "native_get_user_points", 1); register_native("set_user_points", "native_set_user_points", 1); register_native("get_user_level", "native_get_user_level", 1); register_native("set_user_level", "native_set_user_level", 1); register_native("get_user_xp", "native_get_user_xp", 1); register_native("set_user_xp", "native_set_user_xp", 1); return 0; } public native_get_user_xp(id) { return g_xp[id][0][0]; } public native_set_user_xp(id, amount) { g_xp[id] = amount; return 0; } public native_get_user_level(id) { return g_lv[id][0][0]; } public native_set_user_level(id, amount) { g_lv[id] = amount; return 0; } public native_get_user_points(id) { return g_points[id][0][0]; } public native_set_user_points(id, amount) { g_points[id] = amount; return 0; } public ShowHud() { new id = 0; while (id <= 31) { new name[33][33]; name[0] = 43672; get_user_name(id, name[id], 32); new r = get_cvar_num("Rcolour"); new g = get_cvar_num("Gcolour"); new b = get_cvar_num("Bcolour"); set_hudmessage(0, 255, 0, 0.40, 0.75, 0, 0.00, 999999.00, 0.10, 0.20, 4); ShowSyncHudMsg(id, g_msg, 43900, name[id], g_lv[id], get_user_health(id), g_points[id], g_xp[id], RequiredXP[g_lv[id][0][0]]); id++; } return 0; } public Save(id) { new name[33]; new vaultkey[64]; new vaultdata[512]; client_print(id, print_chat, ""); get_user_name(id, name, 32); format(vaultkey, 63, "%s-Mod", name); format(vaultdata, 511, "%i#%i#%i#%i#", g_lv[id], g_xp[id], g_points[id]); nvault_set(g_vault, vaultkey, vaultdata); return 0; } public Load(id) { new name[33]; new vaultkey[64]; new vaultdata[512]; new LV[33]; new XP[33]; new Points[33]; get_user_name(id, name, 32); format(vaultkey, 63, "%s-Mod", name); format(vaultdata, 511, "%i#%i#%i#%i#", g_lv[id], g_xp[id], g_points[id]); nvault_get(g_vault, vaultkey, vaultdata, 511); replace_all(vaultdata, 511, "#", " "); parse(vaultdata, LV, 32, XP, 32, Points, 32); g_lv[id] = str_to_num(LV); g_xp[id] = str_to_num(XP); g_points[id] = str_to_num(Points); return 0; } public client_putinserver(id) { Load(id); return 0; } public client_disconnect(id) { Save(id); return 0; } client_printcolor(id, String:input[]) { new count = 1; new players[32]; static msg[1024]; vformat(msg, 1023, input, 3); replace_all(msg, 1023, "/g", "\4"); replace_all(msg, 1023, "/y", "\1"); replace_all(msg, 1023, "/ctr", "\3"); if (id) { players[0] = id; } else { get_players(players, count, "ch", ""); } new i = 0; while (i < count) { if (is_user_connected(players[i])) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), 48588, players[i]); write_byte(players[i]); write_string(""); message_end(); i++; } i++; } return 0; } x0
|