Witam , szybko i na temat jak usunąć / zmienić aby admin nie mógł moderować bs_limiter.amxx ?
Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Guest Message by DevFuse

[KOSZ] BS_Limiter
Temat rozp. sauxecido, 30.12.2014 16:13
3 odpowiedzi w tym temacie
#1
Napisano 30.12.2014 16:13
#2
Napisano 30.12.2014 16:39
jak prosisz o edycję to zawsze dodawaj sma
#3
Napisano 30.12.2014 18:55
#include <amxmodx> #include <amxmisc> #include <engine> #include <cstrike> #include <csx> #define MAXBSNUM 10 //maksymalna ilosc BS'ow na mapie #define ADMIN_ACCESS ADMIN_BAN //wymagana flaga dostepu new const PLUGIN[] = "BS Limiter" new g_msg_statusicon new sline //sprite new BsList[MAXBSNUM], num //bs'y new ctnum, prev_num //ct new pcCtMin //pcvar new mapname[32] new g_BsName[32], g_BsNum = -1 //dane bs'a public plugin_init() { register_plugin(PLUGIN, "1.1.1", "Pavulon") pcCtMin = register_cvar("bsl_ctmin", "4") //minimalna liczba graczy by grac na wszystkie BS'y register_clcmd("bsl_menu", "menuGlowne") //menu register_clcmd("bsl_name", "bsl_name") g_msg_statusicon = get_user_msgid("StatusIcon") register_message(g_msg_statusicon, "Check_Icon") //ikonka c4 register_event("TeamInfo", "Check_Team", "a") //zmiana team'u set_task(1.0, "check_bs") } public ReadFile() //wczytujemy config { new cfgfile[64] get_configsdir(cfgfile, 63) format(cfgfile, 63, "%s/bs_limiter.ini", cfgfile) if (!file_exists(cfgfile)) { log_amx("[BSL] Nie mozna otworzyc pliku %s. Plik nie istnieje", cfgfile) return } g_BsNum = -1 copy(g_BsName, 31, "") new mapa[32], ent[4], bs[32], i, linia[70], len while (read_file(cfgfile, i++, linia, 69, len)) { if(linia[0]!=';') { copy(mapa, 31, "") copy(ent, 31, "") copy(bs, 31, "") parse(linia, mapa, 31, ent, 3, bs, 31) if (equal(mapa, mapname)) { remove_quotes(bs) if (strlen(ent)>0) { g_BsNum = str_to_num(ent) copy(g_BsName, 31, bs) } return } } } } public SaveFile(param1, param2[32]) //zapisujemy config { new cfgfile[64] get_configsdir(cfgfile, 63) format(cfgfile, 63, "%s/bs_limiter.ini", cfgfile) if (!file_exists(cfgfile)) { log_amx("[BSL] Nie mozna zapisac pliku %s. Plik nie istnieje", cfgfile) return } new tmp[70] formatex(tmp, 69, "%s %d ^"%s^"", mapname, param1, param2) new mapa[32], ent[4], bs[32], i, linia[70], len while (read_file(cfgfile, i++, linia, 69, len)) { if(linia[0]!=';') { parse(linia, mapa, 31, ent, 3, bs[31]) if (equal(mapa, mapname)) { write_file(cfgfile, tmp, i-1) return } } } write_file(cfgfile, tmp, -1) } public Check_Team() { ctnum = count_ct() new team[3], pnum = get_pcvar_num(pcCtMin)-1 read_data(2, team, 2); if (ctnum==pnum && ctnum!=prev_num) { set_hudmessage(255, 255, 0, -1.0, 0.3, 0, 3.0, 3.0, _, _, 3) show_hudmessage(0, "Limit BS'ow wlaczony!! Wymagana ilosc graczy w druzynie CT do wylaczenia limitu to %d !!", get_pcvar_num(pcCtMin)) } prev_num = pnum } public check_bs() { get_mapname(mapname, 31) if (contain(mapname, "de_")==-1) pause("a") ReadFile() num = 0 new ent = -1 while ((ent = find_ent_by_class(ent, "func_bomb_target"))) BsList[num++] = ent while ((ent = find_ent_by_class(ent, "info_bomb_target"))) BsList[num++] = ent if (num==0) pause("a") AddMenuItem("BS Limiter Menu", "bsl_menu", ADMIN_ACCESS, PLUGIN) } public menuGlowne(id) { if (!(get_user_flags(id)&ADMIN_ACCESS)) { console_print(id, "[BSL] Nie masz dostepu do tej funkcji") return PLUGIN_HANDLED } if (g_BsNum>=0) { set_task(0.2, "LineToBs", id) } new mGlowne = menu_create("BS Limiter", "cbGlowne") new GlowneCb = menu_makecallback("mcbGlowne") new tmp[32] menu_additem(mGlowne, "\yUstaw nazwe:", _, ADMIN_ACCESS, GlowneCb) if (strlen(g_BsName)>0) formatex(tmp, 31, "\r%s", g_BsName) else copy(tmp, 31, "") menu_additem(mGlowne, tmp, _, ADMIN_ACCESS, GlowneCb) menu_additem(mGlowne, "\yWybierz BS:", _, ADMIN_ACCESS, GlowneCb) if (g_BsNum>=0) formatex(tmp, 31, "\r[%d] %d", g_BsNum, BsList[g_BsNum]) else copy(tmp, 31, "") menu_additem(mGlowne, tmp, _, ADMIN_ACCESS, GlowneCb) menu_additem(mGlowne, "\yZapisz PLIK", _, ADMIN_ACCESS, GlowneCb) menu_setprop(mGlowne, MPROP_EXITNAME, "WYJSCIE") menu_display(id, mGlowne, 0) return PLUGIN_HANDLED } public mcbGlowne(id, menu, item) { if(1==item || item==3) return ITEM_DISABLED return ITEM_ENABLED } public cbGlowne(id, menu, item) { switch(item) { case 0: { client_cmd(id, "messagemode ^"bsl_name^"") } case 2: { menuLista(id) } case 4: { SaveFile(g_BsNum, g_BsName) } case MENU_EXIT: { menu_destroy(menu) return PLUGIN_HANDLED } } menu_destroy(menu) return PLUGIN_HANDLED } public menuLista(id) { new mLista = menu_create("Lista BS'ow", "cbLista") new ListaCb = menu_makecallback("mcbLista") menu_additem(mLista, "\yWybierz BS:", _, ADMIN_ACCESS, ListaCb) new tmp[32], strent[4] for (new i=0; i<num; i++) { formatex(tmp, 31, "%s[%d] %d", (i==g_BsNum)?"\r":"\y", i, BsList[i]) num_to_str(BsList[i], strent, 3) menu_additem(mLista, tmp, strent, ADMIN_ACCESS, ListaCb) } menu_setprop(mLista, MPROP_EXITNAME, "WYJSCIE") if (g_BsNum>=0) { set_task(0.2, "LineToBs", id) } menu_display(id, mLista, 0) } public mcbLista(id, menu, item) { return ITEM_ENABLED } public cbLista(id, menu, item) { if (item==MENU_EXIT) { menu_destroy(menu) return PLUGIN_HANDLED } else if (item==0){ menuGlowne(id) } else { new acc, info[32], name[32], cb menu_item_getinfo(menu, item, acc, info, 31, name, 32, cb) g_BsNum = item-1 set_task(0.2, "LineToBs", id) menuLista(id) } menu_destroy(menu) return PLUGIN_HANDLED } public bsl_name(id) { if (!(get_user_flags(id)&ADMIN_ACCESS)) { console_print(id, "[BSL] Nie masz dostepu do tej funkcji") return PLUGIN_HANDLED } new name[32] read_argv (1, name, 31) remove_quotes(name) if (strlen(name)>0) copy(g_BsName, 31, name) menuGlowne(id) return PLUGIN_HANDLED } public bomb_planting(id) { if (ctnum<get_pcvar_num(pcCtMin) && in_right_bs(id)<=0) { client_cmd(id, "-attack") cs_set_user_plant(id, 0) set_task(5.0, "reset_planting", id) set_hudmessage(255, 255, 0, -1.0, 0.3, 0, 2.5, 5.0, _, _, 3) show_hudmessage(id, "Poniewaz jest malo graczy gramy tylko na %s^nJestes na niewlasciwym BS'ie, idz na drugi.", (strlen(g_BsName)<=0)?"jeden BS":g_BsName) } } public reset_planting(id) { if (is_user_alive(id) && user_has_weapon(id, CSW_C4)) cs_set_user_plant(id) } public Check_Icon(msgid, msgDest, id) { if (!get_msg_arg_int(1)) return new icon[3] get_msg_arg_string(2, icon, 2) if (equal(icon, "c4")) if (ctnum<get_pcvar_num(pcCtMin) && in_right_bs(id)<0) { set_msg_arg_int(3, ARG_BYTE, 255) set_msg_arg_int(4, ARG_BYTE, 0) } } stock in_right_bs(id) { if (g_BsNum == -1) return 1 static Float:origin[3] entity_get_vector(id, EV_VEC_origin, origin) new ent = -1, i while ((ent = find_ent_in_sphere(ent, origin, 30.0))) for (i=0; i<num; i++) if (ent == BsList[i]) if (i == g_BsNum) return 1 else return -1 return 0 } stock count_ct() { new players[32], num, ct get_players(players, num) for(new i; i<num; i++) { if (cs_get_user_team(players[i]) == CS_TEAM_CT) ct++ } return ct } public LineToBs(id) { if (!is_user_connected(id)) return new bs = BsList[g_BsNum] new Float:float_min[3], Float:float_max[3], Float:float_pos[3] entity_get_vector(bs, EV_VEC_absmin, float_min) entity_get_vector(bs, EV_VEC_absmax, float_max) entity_get_vector(id, EV_VEC_origin, float_pos) new bsmin[3], bsmax[3], bspos[3], pos[3] for(new i=0;i<3;i++) { bsmin[i] = floatround(float_min[i]) bsmax[i] = floatround(float_max[i]) bspos[i] = floatround((float_min[i]+float_max[i])/2) pos[i] = floatround(float_pos[i]) } Line(id, pos[0], pos[1], pos[2], bspos[0], bspos[1], bspos[2]) Line(id, bsmin[0], bsmin[1], bsmin[2], bsmin[0], bsmin[1], bsmax[2]) Line(id, bsmin[0], bsmin[1], bsmin[2], bsmin[0], bsmax[1], bsmin[2]) Line(id, bsmin[0], bsmin[1], bsmin[2], bsmax[0], bsmin[1], bsmin[2]) Line(id, bsmax[0], bsmax[1], bsmax[2], bsmax[0], bsmax[1], bsmin[2]) Line(id, bsmax[0], bsmax[1], bsmax[2], bsmax[0], bsmin[1], bsmax[2]) Line(id, bsmax[0], bsmax[1], bsmax[2], bsmin[0], bsmax[1], bsmax[2]) Line(id, bsmax[0], bsmax[1], bsmin[2], bsmin[0], bsmax[1], bsmin[2]) Line(id, bsmax[0], bsmax[1], bsmin[2], bsmax[0], bsmin[1], bsmin[2]) Line(id, bsmax[0], bsmin[1], bsmin[2], bsmax[0], bsmin[1], bsmax[2]) Line(id, bsmin[0], bsmin[1], bsmax[2], bsmax[0], bsmin[1], bsmax[2]) Line(id, bsmin[0], bsmin[1], bsmax[2], bsmin[0], bsmax[1], bsmax[2]) Line(id, bsmin[0], bsmax[1], bsmax[2], bsmin[0], bsmax[1], bsmin[2]) if (task_exists(id)) remove_task(id) new mid, keys get_user_menu(id, mid, keys) if (mid>0) set_task(0.2, "LineToBs", id) } public Line(id, n0, n1, n2, x0, x1, x2) { message_begin(MSG_ONE, SVC_TEMPENTITY, _, id) write_byte(TE_BEAMPOINTS) write_coord(n0) write_coord(n1) write_coord(n2) write_coord(x0) write_coord(x1) write_coord(x2) write_short(sline) write_byte(1) write_byte(5) write_byte(10) write_byte(3) write_byte(0) write_byte(0) write_byte(255) write_byte(0) write_byte(255) write_byte(5) message_end() } public plugin_precache() { sline = precache_model("sprites/dot.spr") }
#4
Napisano 31.12.2014 06:41
Nazywaj tematy zgodnie z ich treścią.
Napisz ponownie temat nazywając go tak, aby każdy wiedział o co chodzi.
Jednoznacznie określ problematykę tematu, wyróżniając go spośród reszty.
Nie dodawaj zbędnych informacji, znaków, ani emotikon w nazwie tematu.
Ten temat w ciągu 24 godzin zostanie przeniesiony do kosza.
Napisz ponownie temat nazywając go tak, aby każdy wiedział o co chodzi.
Jednoznacznie określ problematykę tematu, wyróżniając go spośród reszty.
Nie dodawaj zbędnych informacji, znaków, ani emotikon w nazwie tematu.
Ten temat w ciągu 24 godzin zostanie przeniesiony do kosza.
Chcąc napisać do mnie prywatną wiadomość, wpierw zapoznaj się ze stroną "O mnie" w moim profilu użytkownika [ radim ] !
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych