引用 | 編輯
龍心
2017-09-15 11:30 |
樓主
▼ |
||
x0
圖 1. 【插件資訊】 插件來源:網路資源轉載提供會員參考 使用指令:自行修改編譯及參考http://bbs.mychat.tw/reads.php?tid=1004025 安裝路徑:自行修改編譯及參考http://bbs.mychat.tw/reads.php?tid=1004025 【插件介紹】 複製程式 new bool:g_job[33]; new bool:g_fast[33]; new bool:g_slow[33]; new bool:g_normal[33]; new bool:g_hp[33]; new bool:addhp[33]; new bool:ok[33]; new g_msg; new g_beamSpr; new job_name[5][0]; 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; } public __fatal_ham_error(Ham:id, HamError:err, String:reason[]) { !!! Removed Phi if (func != -1 && callfunc_begin_i(func, -1) == 1) { callfunc_push_int(id); callfunc_push_int(err); callfunc_push_str(reason, false); if (callfunc_end() == 1) { fail = 0; } } if (fail) { set_fail_state(reason); } return 0; } xs_vec_add(Float:in1[], Float:in2[], Float:out[]) { out[0] = in1[0] + in2[0]; out[1] = in1[1] + in2[1]; out[2] = in1[2] + in2[2]; return 0; } xs_vec_mul_scalar(Float:vec[], Float:scalar, Float:out[]) { out[0] = vec[0] * scalar; out[1] = vec[1] * scalar; out[2] = vec[2] * scalar; return 0; } Menu_Setting(menu) { menu_setprop(menu, 3, 40); menu_setprop(menu, 2, 80); menu_setprop(menu, 4, 120); return 0; } client_printc(id, String:string[]) { new msg[191]; new players[32]; new count = 1; format(msg, 190, string, 3); replace_all(msg, 190, "\g", "\4"); replace_all(msg, 190, "\y", "\1"); replace_all(msg, 190, "\t", "\3"); if (id) { players[0] = id; } else { get_players(players, count, "ch", ""); } new index = 0; new i = 0; while (i < count) { index = players[i]; message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), 256, index); write_byte(index); write_string(msg); message_end(); i++; } return 0; } public plugin_init() { RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn", 1); register_clcmd("say /choose_job", "ChooseMenu", -1, "", -1); register_forward(FM_PlayerPreThink, "Player_PreThink", 0); return 0; } public plugin_precache() { g_msg = CreateHudSyncObj(0); g_beamSpr = precache_model("sprites/zbeam4.spr"); return 0; } public fw_PlayerSpawn(id) { set_task(0.00, "Reload", id + 10000, "", 0, "", 0); client_printc(id, "\g[提示] \t如果未能選擇兵種,可打指令/choose_job來開啟選單。"); client_printc(id, "\g[提示] \t當醫療兵瞄準隊友加血時,請不要到處跑,以免為醫療兵帶來煩惱。"); new var1 = Heap_4; var1[0] = 3356; if (get_user_team(id, var1, 0) == 1) { set_user_rendering(id, 19, 255, 0, 0, 0, 15); } new var2 = Heap_4; var2[0] = 3356; if (get_user_team(id, var2, 0) == 2) { set_user_rendering(id, 19, 0, 0, 255, 0, 15); } return 0; } public Reload(id) { id += -10000; strip_user_weapons(id); give_item(id, "weapon_knife"); g_job[id] = 0; g_fast[id] = 0; g_slow[id] = 0; g_normal[id] = 1; ChooseMenu(id); return 0; } public Player_PreThink(id) { if (!is_user_connected(id)) { return 1; } if (!is_user_alive(id)) { return 1; } static button; button = pev(id, pev_button); new target = 0; new len = 0; get_user_aiming(id, target, len, 9999); new name[32]; get_user_name(target, name, 31); new player1[3]; new player2[3]; get_user_origin(id, player1, 0); get_user_origin(id, player2, 3); new distance = get_distance(player1, player2); if (g_hp[id][0][0]) { if (distance < 201) { if (is_user_connected(target) && is_user_alive(target)) { new var4 = Heap_4; var4[0] = 3356; if (get_user_team(id, var4, 0) == 1) { new var5 = Heap_4; var5[0] = 3356; if (get_user_team(target, var5, 0) == 1) { set_hudmessage(0, 255, 255, -1.00, 0.55, 0, 1.00, 0.50, 0.10, 0.20, -1); ShowSyncHudMsg(id, g_msg, 3416, name, get_user_health(target)); if (button & 32) { if (100 > get_user_health(target)) { if (!addhp[id][0][0]) { addhp[id] = 1; set_task(0.20, "addhp_F", id + 10000, "", 0, "", 0); static Float:origin2[3]; static Float:origin1[3]; fm_get_aim_vector(id, 40, origin1, origin2); new var6 = origin1[2]; new var2; if (pev(id, pev_flags) & 16384) { var2 = 3.00/*1077936128*/; } else { var2 = -7.00/*-1059061760*/; } var6 = var6[0] + var2; show_tracer_effect(origin1, origin2); } } } } } new var7 = Heap_4; var7[0] = 3356; if (get_user_team(id, var7, 0) == 2) { new var8 = Heap_4; var8[0] = 3356; if (get_user_team(target, var8, 0) == 2) { set_hudmessage(0, 255, 255, -1.00, 0.55, 0, 1.00, 0.50, 0.10, 0.20, -1); ShowSyncHudMsg(id, g_msg, 3576, name, get_user_health(target)); if (button & 32) { if (100 > get_user_health(target)) { if (!addhp[id][0][0]) { addhp[id] = 1; set_task(0.20, "addhp_F", id + 10000, "", 0, "", 0); static Float:origin2[3]; static Float:origin1[3]; fm_get_aim_vector(id, 40, origin1, origin2); new var9 = origin1[2]; new var3; if (pev(id, pev_flags) & 16384) { var3 = 3.00/*1077936128*/; } else { var3 = -7.00/*-1059061760*/; } var9 = var9[0] + var3; show_tracer_effect(origin1, origin2); ok[id] = 1; } } } } } } } } if (g_hp[id][0][0]) { set_user_maxspeed(id, 300.00); } if (g_fast[id][0][0]) { set_user_maxspeed(id, 300.00); } if (g_normal[id][0][0]) { set_user_maxspeed(id, 250.00); } if (g_slow[id][0][0]) { set_user_maxspeed(id, 200.00); } return 1; } public addhp_F(id) { id += -10000; new target = 0; new len = 0; get_user_aiming(id, target, len, 9999); ok[id] = 0; new var1 = Heap_4; var1[0] = 3356; if (get_user_team(id, var1, 0) == 1) { new var2 = Heap_4; var2[0] = 3356; if (get_user_team(target, var2, 0) == 1) { if (get_user_health(target) == 99) { set_user_health(target, get_user_health(target) + 1); } set_user_health(target, get_user_health(target) + 2); } } new var3 = Heap_4; var3[0] = 3356; if (get_user_team(id, var3, 0) == 2) { if (get_user_health(target) == 99) { set_user_health(target, get_user_health(target) + 1); } set_user_health(target, get_user_health(target) + 2); } addhp[id] = 0; return 0; } fm_get_aim_vector(index, forward_distance, Float:forward_origin[3], Float:view_end_origin[3]) { new Float:start[3]; new Float:view_ofs[3]; pev(index, pev_origin, start); pev(index, pev_view_ofs, view_ofs); xs_vec_add(start, view_ofs, start); new Float:vector[3]; new Float:temp[3]; pev(index, pev_v_angle, vector); engfunc(EngFunc_MakeVectors, vector); global_get(glb_v_forward, vector); xs_vec_mul_scalar(vector, float(forward_distance), temp); xs_vec_add(start, temp, forward_origin); new Float:dest[3]; xs_vec_mul_scalar(vector, 9999.00, temp); xs_vec_add(start, temp, dest); engfunc(EngFunc_TraceLine, start, dest, 0, index, 0); get_tr2(0, TR_vecEndPos, view_end_origin); return 1; } show_tracer_effect(Float:start_point[3], Float:end_point[3]) { message_begin(MSG_BROADCAST, SVC_TEMPENTITY, 256, 0); write_byte(0); engfunc(EngFunc_WriteCoord, start_point); engfunc(EngFunc_WriteCoord, start_point[1]); engfunc(EngFunc_WriteCoord, start_point[2]); engfunc(EngFunc_WriteCoord, end_point); engfunc(EngFunc_WriteCoord, end_point[1]); engfunc(EngFunc_WriteCoord, end_point[2]); write_short(g_beamSpr); write_byte(0); write_byte(1); write_byte(10); write_byte(10); write_byte(0); write_byte(0); write_byte(245); write_byte(255); write_byte(255); write_byte(0); message_end(); return 0; } public ChooseMenu(id) { if (g_job[id][0][0]) { client_printc(id, "\g[兵種系統] \t你已經選擇了兵種。"); return 1; } new menu = menu_create(3924, "ChooseMenu_Handler", 0); new i = 0; while (i < 5) { menu_additem(menu, job_name[i][0][0], "", 0, -1); i++; } Menu_Setting(menu); menu_display(id, menu, 0); return 1; } public ChooseMenu_Handler(id, menu, item) { if (item == -3) { menu_destroy(menu); return 1; } switch (item) { case 0: { give_item(id, "weapon_mp5navy"); cs_set_user_bpammo(id, CSW_MP5NAVY, 120); g_job[id] = 1; g_fast[id] = 1; g_normal[id] = 0; } case 1: { give_item(id, "weapon_ak47"); cs_set_user_bpammo(id, CSW_AK47, 90); g_job[id] = 1; } case 2: { give_item(id, "weapon_m4a1"); cs_set_user_bpammo(id, CSW_M4A1, 90); g_job[id] = 1; } case 3: { give_item(id, "weapon_awp"); cs_set_user_bpammo(id, CSW_AWP, 30); g_job[id] = 1; g_slow[id] = 1; g_normal[id] = 0; } case 4: { give_item(id, "weapon_knife"); g_job[id] = 1; g_hp[id] = 1; g_normal[id] = 0; client_printc(id, "\g[兵種系統] \t你已經選擇了醫療兵,瞄準隊友按 E 回復血量(上限100血)。"); } default: { } } return 1; } x0
|
引用 | 編輯
csisgoodgame
2017-10-19 19:15 |
1樓
▲ ▼ |
所以你修改了哪裡?
這個東西是不能編譯成功的,發文前先看好自己的文章到底完不完整。 x1 |
引用 | 編輯
龍心
2017-10-19 20:19 |
2樓
▲ ▼ |
志在供大家參考不開源插件的寫法,何況已經註明需要自行修改方編譯,插件來源於網路資源轉載提供會員參考,回覆前先看清楚文章內容。
x0 |