Code: Select all
#include <amxmodx>#include <amxmisc>#include <engine>#include <hamsandwich>#include <fun>#include <cstrike> #define MaxPlayers 32 new const Float: g_flCoords[][] = { {0.50, 0.40}, {0.56, 0.44}, {0.60, 0.50}, {0.56, 0.56}, {0.50, 0.60}, {0.44, 0.56}, {0.40, 0.50}, {0.44, 0.44}} new bool: DoJump[33] = false new bool: Status[33][6] new bool: Bullet_Damagenew bool: Multi_Jumpnew bool: Vampire new PlayerPos[MaxPlayers + 1] new JumpNUM[33] = 0 new g_MaxPlayers public plugin_init(){ register_plugin("[CP] Server Menu", "1.0", "xS The Moon") register_cvar("cpsm_advert", "1") register_cvar("cpsm_advert_time", "20.0") register_cvar("cpsm_health_kill", "10") register_cvar("cpsm_health_hs", "15") register_cvar("cpsm_maxjumps", "1") register_clcmd("say /cp", "Main_Server_Menu") if (get_cvar_num("cpsm_advert")) { set_task(get_cvar_float("cpsm_advert_time"), "CPSM_Adv_Message", 0, _, _, "b") } register_event("DeathMsg", "Ev_DeathMsg", "a") register_event("Damage", "Ev_Damage", "b", "2>0", "3=0") RegisterHam(Ham_Killed, "player", "Ham_KilledSpawn", 1) g_MaxPlayers = get_maxplayers()} public client_connect(id){ DoJump[id] = false JumpNUM[id] = 0} public Ev_DeathMsg(){ new attacker = read_data(1) new Health new HP_Add if (Vampire) { if ((read_data(3) == 1) && (read_data(5) == 0)) { HP_Add = get_cvar_num("cpsm_health_hs") } else { HP_Add = get_cvar_num("cpsm_health_kill") } Health = get_user_health(attacker) Health += HP_Add set_user_health(attacker, Health) set_hudmessage(0, 255, 0, -1.0, 0.15, 0, 1.0, 1.0, 0.1, 0.1, -1) show_hudmessage(attacker, "Healed +%d HP", HP_Add) message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, attacker) write_short(1<<10) write_short(1<<10) write_short(0x0000) write_byte(0) write_byte(0) write_byte(200) write_byte(75) message_end() }} public Ev_Damage(victim){ if (read_data(4) || read_data(5) || read_data(6)) { new id = get_user_attacker(victim) if ((1 <= id <= g_MaxPlayers) && is_user_connected(id)) { if (Bullet_Damage) { new iPos = ++PlayerPos[id] if (iPos == sizeof(g_flCoords)) { iPos = PlayerPos[id] = 0 } set_hudmessage(0, 100, 200, Float:g_flCoords[iPos][0], Float:g_flCoords[iPos][1], 0, 0.1, 2.5, 0.02, 0.02, -1) show_hudmessage(id, "%d", read_data(2)) } } }} public CPSM_Adv_Message(id){ print_color(id, "/y[/gCP/y] /ctrServerio Meniu/y: /gNoredamas atidaryti rasyk /y//ctrcp")} public Main_Server_Menu(id){ if (get_user_flags(id) & ADMIN_LEVEL_H) { new menu = menu_create("\d[\rCP\d] \yServerio Meniu\d:", "Server_Menu") new szMsg1[60] new szMsg2[60] new szMsg3[60] new szMsg4[60] new szMsg5[60] new szMsg6[60] format(szMsg1, 59, "\d[\rCP\d] \w3rd Person View. \yStatusas\d: \r%s.", Status[id][0] ? "\w[\yON\w]" : "\w[\rOFF\w]") format(szMsg2, 59, "\d[\rCP\d] \wBullet Damage. \yStatusas\d: \r%s.", Status[id][1] ? "\w[\yON\w]" : "\w[\rOFF\w]") format(szMsg3, 59, "\d[\rCP\d] \wMulti Jump. \yStatusas\d: \r%s.", Status[id][2] ? "\w[\yON\w]" : "\w[\rOFF\w]") format(szMsg4, 59, "\d[\rCP\d] \wM4A1 + Deagle. \yStatusas\d: \r%s.", Status[id][3] ? "\w[\yON\w]" : "\w[\rOFF\w]") format(szMsg5, 59, "\d[\rCP\d] \wAk47 + Deagle. \yStatusas\d: \r%s.", Status[id][4] ? "\w[\yON\w]" : "\w[\rOFF\w]") format(szMsg6, 59, "\d[\rCP\d] \wHP Uz Kill. \yStatusas\d: \r%s.", Status[id][5] ? "\w[\yON\w]" : "\w[\rOFF\w]") menu_additem(menu, szMsg1, "1", 0) menu_additem(menu, szMsg2, "2", 0) menu_additem(menu, szMsg3, "3", 0) menu_additem(menu, szMsg4, "4", 0) menu_additem(menu, szMsg5, "5", 0) menu_additem(menu, szMsg6, "6", 0) menu_setprop(menu, MPROP_EXIT, MEXIT_ALL) menu_display(id, menu, 0) } else { print_color(id, "/y[/gCP/y] /ctrControl Panel /gtik V.I.P'ams ir ADMIN'ams.") return }}public Server_Menu(id, menu, item){ if (item == MENU_EXIT) { menu_destroy(menu) return PLUGIN_HANDLED } if (item == 0) { if (Status[id][0]) { Status[id][0] = false set_view(id, CAMERA_NONE) } else { Status[id][0] = true set_view(id, CAMERA_3RDPERSON) } } if (item == 1) { if (Status[id][1]) { Status[id][1] = false Bullet_Damage = false } else { Status[id][1] = true Bullet_Damage = true } } if (item == 2) { if (Status[id][2]) { Status[id][2] = false Multi_Jump = false } else { Status[id][2] = true Multi_Jump = true } } if (item == 3) { if (Status[id][3]) { Status[id][3] = false } else if (Status[id][4] == true) { Status[id][3] = false } else { Status[id][3] = true give_item(id, "weapon_m4a1") cs_set_user_bpammo(id, CSW_M4A1, 200) give_item(id, "weapon_deagle") cs_set_user_bpammo(id, CSW_DEAGLE, 200) } } if (item == 4) { if (Status[id][4]) { Status[id][4] = false } else if (Status[id][3] == true) { Status[id][4] = false } else { Status[id][4] = true give_item(id, "weapon_ak47") cs_set_user_bpammo(id, CSW_AK47, 200) give_item(id, "weapon_deagle") cs_set_user_bpammo(id, CSW_DEAGLE, 200) } } if (item == 5) { if (Status[id][5]) { Status[id][5] = false Vampire = false } else { Status[id][5] = true Vampire = true } } Main_Server_Menu(id) return PLUGIN_HANDLED} public client_PreThink(id){ if (!is_user_alive(id)) return PLUGIN_CONTINUE new nbut = get_user_button(id) new obut = get_user_oldbutton(id) if (Multi_Jump) { if ((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP)) { if (JumpNUM[id] < get_cvar_num("cpsm_maxjumps")) { DoJump[id] = true JumpNUM[id]++ return PLUGIN_CONTINUE } } if ((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND)) { JumpNUM[id] = 0 return PLUGIN_CONTINUE } } return PLUGIN_CONTINUE} public client_PostThink(id){ if (!is_user_alive(id)) return PLUGIN_CONTINUE if (DoJump[id] == true) { new Float: velocity[3] entity_get_vector(id, EV_VEC_velocity, velocity) velocity[2] = random_float(265.0, 285.0) entity_set_vector(id, EV_VEC_velocity, velocity) DoJump[id] = false return PLUGIN_CONTINUE } return PLUGIN_CONTINUE} stock print_color(const id, const input[], any:...){ new count = 1, players[32] static msg[191] vformat(msg,190,input,3) replace_all(msg,190,"/g","^4");// green txt replace_all(msg,190,"/y","^1");// orange txt replace_all(msg,190,"/ctr","^3");// team txt replace_all(msg,190,"/w","^2");// team txt if (id) players[0] = id; else get_players(players,count,"ch") for (new i=0;i<count;i++) if (is_user_connected(players[i])) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]) write_byte(players[i]) write_string(msg) message_end() }}
Atsiprašau, kad redaguoju kito žmogaus kodą, nežinau ar tai leistina, bet čia tik vardan mokymosi scriptint.
Na problema, kaip ir sakiau, jei mirštu, ar išmetu ginklus, ant naujo roundo neduoda, nors ir nustatyta [ON].
Taip pat, būtų neprošal sužinoti kur dėti strip_user_weapons, kad ant naujo round nebūtų susidvigubinę ginklai.