Mam pytanie już próbuje od 2 godzin dodać BH do supervipa i nic proszę o pomoc co robię źle
#include <amxmodx> #include <amxmisc> #include <cstrike> #include <colorchat> #include <fakemeta> #include <fakemeta_util> #include <hamsandwich> #include <engine> #define FL_WATERJUMP (1<<11) #define FL_ONGROUND (1<<9) #define autobhopkeys (1<<0)|(1<<1) new const gszPrefix[] = "[VIP]^x01" new const VIP_FLAG[] = "t" //Flaga Vipa new const SVIP_FLAG[] = "n" //Flaga SVipa //new const STRAZNIK_FLAG[] = "r" //Flaga SVipa new const g_Prefix[] = "Vip Chat" new static PrecacheModels[][] = { "models/vip_zwykly_ultra/p_baseball.mdl", "models/vip_zwykly_ultra/v_baseball.mdl", "models/super_vip_ultra/p_lom.mdl", "models/super_vip_ultra/v_lom.mdl" } new const MDL_P_PALKA[] = "models/vip_zwykly_ultra/p_baseball.mdl"; new const MDL_V_PALKA[] = "models/vip_zwykly_ultra/v_baseball.mdl"; new const MDL_P_LOM[] = "models/super_vip_ultra/p_lom.mdl"; new const MDL_V_LOM[] = "models/super_vip_ultra/v_lom.mdl"; new Podskok_VIP[33], Podskok_SVIP[33], UserSpam[33], MamFlageVipa[33], MamFlageSvipa[33] new GetMaxPlayers, PodskokiGr, SPodskokiGr, g_Hudmsg new bool:bhop_enabled[33]; public plugin_precache() { static MDL; for(MDL=0; MDL<sizeof PrecacheModels; MDL++) engfunc(EngFunc_PrecacheModel, PrecacheModels[MDL]); } public plugin_init(){ register_plugin("VIP & SuperVIP", "a", "Author") register_logevent("Nowa_Runda", 2, "1=Round_Start") register_forward(FM_CmdStart, "StartRealCMD") register_event("CurWeapon", "event_modele", "be", "1=1") RegisterHam(Ham_TakeDamage, "player", "player_damage") register_clcmd("say /vgcsfghip", "mShowvip") register_clcmd("say /sfhjfsgjsthvip", "mShowsvip") register_clcmd("say /vips", "pokaz_vip_menu") register_clcmd("say /vipy", "pokaz_vip_menu") register_clcmd("say_team", "VipChat"); PodskokiGr = register_cvar("vip_max_podskokow", "1") SPodskokiGr = register_cvar("svip_max_podskokow", "2") register_message(get_user_msgid("ScoreAttrib"), "Message_ScoreAttrib") GetMaxPlayers = get_maxplayers() register_message(get_user_msgid("SayText"),"handleSayText") g_Hudmsg=CreateHudSyncObj() register_event("Damage", "damage", "b", "2!0", "3=0", "4!0"); return 0 } public plugin_end() remove_task(616) public client_putinserver(id) { UserSpam[id] = 0 } public client_connect(id) { new Name[33]; get_user_name(id, Name, 32) UserSpam[id] = 0 if(has_flag(id, VIP_FLAG)) { set_hudmessage(255, 0, 0, 0.01, 0.4, 0, 5.0) show_hudmessage(0, "Wchodzi VIP: %s", Name) return HAM_HANDLED } else if(has_flag(id, SVIP_FLAG)) { set_hudmessage(0, 255, 0, 0.01, 0.4, 0, 5.0) show_hudmessage(0, "Wchodzi SVIP: %s", Name) } return HAM_HANDLED } public client_disconnect(id) { new Name[33]; get_user_name(id, Name, 32) if(has_flag(id, VIP_FLAG)) { set_hudmessage(255, 0, 0, 0.01, 0.4, 0, 5.0) show_hudmessage(0, "Wychodzi VIP: %s", Name) return HAM_HANDLED } else if(has_flag(id, SVIP_FLAG)) { set_hudmessage(0, 255, 0, 0.01, 0.4, 0, 5.0) show_hudmessage(0, "Wychodzi SVIP: %s", Name) } return HAM_HANDLED } public Nowa_Runda() { for(new id = 1; id <= GetMaxPlayers; id++) { if(is_user_admin(id) && is_user_connected(id) && is_user_alive(id)) { new nick[32]; get_user_name(id, nick, 31) if(has_flag(id, VIP_FLAG)) { fm_set_user_health(id, get_user_health(id) + 50) fm_set_user_armor(id, 100) fm_set_nofootsteps(id, 1) ColorChat(id, GREEN, "%s^x03 %s^x01 Dostales(as) darmowy ekwipunek dla^x03 VIP^x01'a!", gszPrefix, nick) } else if(has_flag(id, SVIP_FLAG)) { fm_set_user_health(id, get_user_health(id) + 100) fm_set_user_armor(id, 100) fm_set_nofootsteps(id, 1) bhop_enabled[id] = true; ColorChat(id, GREEN, "%s^x03 %s^x01 Dostales(as) darmowy ekwipunek dla^x03 SVIP^x01'a!", gszPrefix, nick) } } } return HAM_HANDLED } public event_modele(id) { switch(get_user_weapon(id)) { case CSW_KNIFE: { switch(get_user_team(id)) { case 1: { if(has_flag(id, VIP_FLAG)) { entity_set_string(id, EV_SZ_viewmodel, MDL_V_PALKA); entity_set_string(id, EV_SZ_weaponmodel, MDL_P_PALKA); return HAM_HANDLED; } else if (has_flag(id, SVIP_FLAG)) { entity_set_string(id, EV_SZ_viewmodel, MDL_V_LOM); entity_set_string(id, EV_SZ_weaponmodel, MDL_P_LOM); return HAM_HANDLED; } } } } } return HAM_HANDLED; } public player_damage(this, idinflictor, idattacker, Float:damage, damagebits) { if(!is_user_connected(this) || !is_user_connected(idinflictor)) return HAM_IGNORED; if(idattacker != 0 && has_flag(idattacker, VIP_FLAG) && is_user_alive(idattacker) && get_user_team(idattacker) != get_user_team(this)) { if(get_user_weapon(idattacker) == CSW_KNIFE) { SetHamParamFloat(4, damage*1.6); return HAM_HANDLED; } } else if(idattacker != 0 && has_flag(idattacker, SVIP_FLAG) && is_user_alive(idattacker) && get_user_team(idattacker) != get_user_team(this)) { if(get_user_weapon(idattacker) == CSW_KNIFE) { SetHamParamFloat(4, damage*2.4); return HAM_HANDLED; } } return HAM_IGNORED; } public StartRealCMD(id, uc_handle) { if(is_user_alive(id) && is_user_connected(id) && is_user_admin(id)) { new button = get_uc(uc_handle, UC_Buttons) new oldbutton = get_user_oldbutton(id) new flags = get_entity_flags(id) if(has_flag(id, VIP_FLAG)) { if(((button & IN_JUMP) && !(flags & FL_ONGROUND) && !(oldbutton & IN_JUMP) && Podskok_VIP[id] > 0)) { Podskok_VIP[id]-- 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) } else if(flags & FL_ONGROUND) Podskok_VIP[id] = get_pcvar_num(PodskokiGr) } if(has_flag(id, SVIP_FLAG)) { if(((button & IN_JUMP) && !(flags & FL_ONGROUND) && !(oldbutton & IN_JUMP) && Podskok_SVIP[id] > 0)) { Podskok_SVIP[id]-- 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) } else if(flags & FL_ONGROUND) Podskok_SVIP[id] = get_pcvar_num(SPodskokiGr) } } else return FMRES_IGNORED return 0 } public mShowvip(id) { if(!is_user_connected(id)) return PLUGIN_HANDLED; if(is_user_connected(id)) { new menu_vipinfo = menu_create("\rCo otrzymuje VIP?", "menu_vip"); menu_setprop(menu_vipinfo, MPROP_TITLE, "Co otrzymuje VIP?^n- Losowo od 40 do 60hp + kamizelke na start!^n- Dodatkowy Skok^n- Baseball (50% wiecej zadawanych obrazen)^n- Darmowe granaty^n- Bonusy w Ruletce^n- I Wiele wiecej!"); menu_additem(menu_vipinfo, "Zobacz pelny opis VIP"); menu_additem(menu_vipinfo, "Jak kupic VIP? - Poradnik"); menu_additem(menu_vipinfo, "Lista VIP Online"); menu_setprop(menu_vipinfo, MPROP_BACKNAME, "Poprzednia strona"); menu_setprop(menu_vipinfo, MPROP_NEXTNAME, "Nastepna strona"); menu_setprop(menu_vipinfo, MPROP_EXITNAME, "Wyjdz"); menu_setprop(menu_vipinfo, MPROP_EXIT, MEXIT_ALL); menu_display(id, menu_vipinfo); return PLUGIN_HANDLED; } return PLUGIN_HANDLED; } public menu_vip(id, menu, item) { if(!is_user_connected(id) || !is_user_alive(id)) return PLUGIN_HANDLED; if(item != MENU_EXIT && item != MENU_BACK && item != MENU_MORE) { switch(item) { case 0: show_motd(id, "vip.txt", "Informacje o Vipie") case 1: show_motd(id, "jakvip.txt", "Jak Kupic VIPa?") case 2: pokaz_vip_menu(id) case 9: return PLUGIN_HANDLED; } } return PLUGIN_HANDLED; } public mShowsvip(id) { if(!is_user_connected(id)) return PLUGIN_HANDLED; if(is_user_connected(id)) { new menu_server = menu_create("\rCo otrzymuje SuperVIP?", "menu_svip"); menu_setprop(menu_server, MPROP_TITLE, "Co otrzymuje SuperVIP?^n- Losowo od 190 do 210hp + Kamizelke na start!^n-Trzy skoki^n- Lom (3x wiecej zadawanych obrazen)^n- Granaty^n- Bonusy w Ruletce^n- I Wiele wiecej!"); menu_additem(menu_server, "Zobacz pelny opis SuperVIP"); menu_additem(menu_server, "Jak kupic SuperVIP? - Poradnik"); menu_additem(menu_server, "Lista VIP Online"); menu_setprop(menu_server, MPROP_BACKNAME, "Poprzednia strona"); menu_setprop(menu_server, MPROP_NEXTNAME, "Nastepna strona"); menu_setprop(menu_server, MPROP_EXITNAME, "Wyjdz"); menu_setprop(menu_server, MPROP_EXIT, MEXIT_ALL); menu_display(id, menu_server); return PLUGIN_HANDLED; } return PLUGIN_HANDLED; } public menu_svip(id, menu, item) { if(!is_user_connected(id) || !is_user_alive(id)) return PLUGIN_HANDLED; if(item != MENU_EXIT && item != MENU_BACK && item != MENU_MORE) { switch(item) { case 0: show_motd(id, "svip.txt", "Informacje o SVipie") case 1: show_motd(id, "jakvip.txt", "Jak Kupic VIPa?") case 2: pokaz_vip_menu(id) case 9: return PLUGIN_HANDLED; } } return PLUGIN_HANDLED; } public pokaz_vip_menu(id) { new key[128], info[8], Name[33] new OnlMenu = menu_create("\yLista VIP Online", "SelectVIPOnline") for(new i = 1; i <= GetMaxPlayers; i++) { if(is_user_connected(i) && is_user_admin(i) && !is_user_bot(i) && !is_user_hltv(i)) { MamFlageVipa[i] = 0 MamFlageSvipa[i] = 0 if(has_flag(i, VIP_FLAG)) { MamFlageSvipa[i] = 6 MamFlageVipa[i] = 9 } else if(has_flag(i, SVIP_FLAG)) { MamFlageSvipa[i] = 5 MamFlageVipa[i] = 8 } if(MamFlageSvipa[i] == 6 && MamFlageVipa[i] == 9 ) { get_user_name(i, Name, 32) formatex(info, 7, "%d", i) formatex(key, 127, "\r%s \d[\yVIP\d]", Name) menu_additem(OnlMenu, key, info) } else if(MamFlageSvipa[i] == 5 && MamFlageVipa[i] == 8 ) { get_user_name(i, Name, 32) formatex(info, 7, "%d", i) formatex(key, 127, "\r%s \d[\ySuperVIP\d]", Name) menu_additem(OnlMenu, key, info) } } } menu_setprop(OnlMenu, MPROP_NUMBER_COLOR, "\w") menu_setprop(OnlMenu, MPROP_BACKNAME, "\yPoprzednia strona") menu_setprop(OnlMenu, MPROP_NEXTNAME, "\yNastepna strona") menu_setprop(OnlMenu, MPROP_EXITNAME, "\rWyjscie") menu_setprop(OnlMenu, MPROP_EXIT, MEXIT_ALL) menu_display(id, OnlMenu, 0) return 1 } public SelectVIPOnline(id, OnlMenu, item) { new konto, info[8], name[63], callback menu_item_getinfo(OnlMenu, item, konto, info, 7, name, 63, callback) new GetID = str_to_num(info) if(item == MENU_EXIT) { ColorChat(id, GREEN, "%s Menu^x04 VIP Online^x01 zamkniete.", gszPrefix) menu_destroy(OnlMenu) return HAM_HANDLED } else if((item == MENU_MORE) || (item == MENU_BACK)) return 0 else { new SteamID[35]; get_user_authid(GetID, SteamID, 34) new Name[33]; get_user_name(GetID, Name, 32) if(is_user_connected(GetID)) { ColorChat(id, GREEN, "%s Nick:^x03 %s^x01 Steam:^x03 %s^x01 IP:^x03 (Ukryte)^x01 Zyje:^x03 %s", gszPrefix, Name, (has_user_steam(GetID) ? SteamID : "Brak"), (is_user_alive(GetID) ? "Tak" : "Nie")) AntySpam(id) pokaz_vip_menu(id) } else { ColorChat(id, GREEN, "%s Gracz o nicku:^x03 %s^x01 wyszedl z serwera!", gszPrefix, Name) pokaz_vip_menu(id) } } return HAM_HANDLED } public AntySpam(id) { UserSpam[id]++ set_task(1.0, "KickOff", id+320) if(UserSpam[id] > 4) { new nick[32]; get_user_name(id, nick, 31) server_cmd("kick %s **** Przestan spamowac! ****", nick) for(new i=1; i<=10; i++) console_print(id, "**** Przestan spamowac! ****") } return 0 } public Message_ScoreAttrib() { if(is_user_admin(get_msg_arg_int(1))) set_msg_arg_int(2, ARG_BYTE, is_user_alive(get_msg_arg_int(1)) ? (1<<2) : (1<<0)) } public handleSayText(msgId,msgDest,msgEnt){ new id = get_msg_arg_int(1); if(is_user_connected(id) && has_flag(id, VIP_FLAG)){ new szTmp[256],szTmp2[256]; get_msg_arg_string(2,szTmp, charsmax(szTmp)) new szPrefix[64] = "^x04[VIP]"; if(!equal(szTmp,"#Cstrike_Chat_All")){ add(szTmp2,charsmax(szTmp2),szPrefix); add(szTmp2,charsmax(szTmp2)," "); add(szTmp2,charsmax(szTmp2),szTmp); } else{ add(szTmp2,charsmax(szTmp2),szPrefix); add(szTmp2,charsmax(szTmp2),"^x03 %s1^x01 : %s2"); } set_msg_arg_string(2,szTmp2); } else if(is_user_connected(id) && has_flag(id, SVIP_FLAG)){ new szTmp[256],szTmp2[256]; get_msg_arg_string(2,szTmp, charsmax(szTmp)) new szPrefix[64] = "^x04[SuperVIP]"; if(!equal(szTmp,"#Cstrike_Chat_All")){ add(szTmp2,charsmax(szTmp2),szPrefix); add(szTmp2,charsmax(szTmp2)," "); add(szTmp2,charsmax(szTmp2),szTmp); } else{ add(szTmp2,charsmax(szTmp2),szPrefix); add(szTmp2,charsmax(szTmp2),"^x03 %s1^x01 : %s2"); } set_msg_arg_string(2,szTmp2); } return PLUGIN_CONTINUE; } public VipChat(id){ if(has_flag(id, "ts")){ new g_Msg[256], g_Text[256]; read_args(g_Msg,charsmax(g_Msg)); remove_quotes(g_Msg); if(g_Msg[0] == '*' && g_Msg[1]){ new g_Name[64]; get_user_name(id,g_Name,charsmax(g_Name)); formatex(g_Text,charsmax(g_Text),"^x01(%s) ^x03%s : ^x04%s",g_Prefix, g_Name, g_Msg[1]); for(new i=1;i<33;i++){ if(is_user_connected(i) && has_flag(i, "ts")) ColorChat(i, GREEN, "%s", g_Text); } return PLUGIN_HANDLED_MAIN; } } return PLUGIN_CONTINUE; } // Bullet Damage public damage(id){ new attacker=get_user_attacker(id); new damage=read_data(2); if(has_flag(id, "ts")){ set_hudmessage(255, 0, 0, 0.45, 0.50, 2, 0.1, 4.0, 0.1, 0.1, -1); ShowSyncHudMsg(id, g_Hudmsg, "%i^n", damage); } if(is_user_connected(attacker) && has_flag(attacker, "ts")){ set_hudmessage(0, 100, 200, -1.0, 0.55, 2, 0.1, 4.0, 0.02, 0.02, -1); ShowSyncHudMsg(attacker, g_Hudmsg, "%i^n", damage); } } public client_PreThinkVip(id){ entity_set_float(id, EV_FL_fuser2, 0.0); if(entity_get_int(id, EV_INT_button) & 2){ new flags = entity_get_int(id, EV_INT_flags); if(flags & FL_WATERJUMP || entity_get_int(id, EV_INT_waterlevel) >= 2 || !(flags & FL_ONGROUND)){ return PLUGIN_CONTINUE; } new Float:velocity[3]; entity_get_vector(id, EV_VEC_velocity, velocity); velocity[2] += 250.0; entity_set_vector(id, EV_VEC_velocity, velocity); entity_set_int(id, EV_INT_gaitsequence, 6); } return PLUGIN_CONTINUE; } public forward_FM_PlayerPreThink(id) { if(bhop_enabled[id] == true) { entity_set_float(id, EV_FL_fuser2, 0.0) if (entity_get_int(id, EV_INT_button) & 2) { new flags = entity_get_int(id, EV_INT_flags) if (flags & FL_WATERJUMP) return PLUGIN_CONTINUE if ( entity_get_int(id, EV_INT_waterlevel) >= 2 ) return PLUGIN_CONTINUE if ( !(flags & FL_ONGROUND) ) return PLUGIN_CONTINUE new Float:velocity[3] entity_get_vector(id, EV_VEC_velocity, velocity) velocity[2] += 250.0 entity_set_vector(id, EV_VEC_velocity, velocity) entity_set_int(id, EV_INT_gaitsequence, 6) } } return PLUGIN_CONTINUE } public KickOff(id) { id -= 320 UserSpam[id] = 0 if(task_exists(id+320)) remove_task(id+320) return HAM_HANDLED } stock bool:has_user_steam(id) { new AuthID[32]; get_user_authid(id, AuthID, 31) return containi(AuthID, ":") != -1 ? true : false } stock fm_get_nofootsteps(index) return pev(index, pev_flTimeStepSound) == 999 ? true : false stock fm_set_nofootsteps(index, nofootsteps = 0) set_pev(index, pev_flTimeStepSound, nofootsteps ? 999 : 400)