#include <amxmodx> #include <colorchat> #include <cstrike> #include <engine> #include <fakemeta> #include <fun> #include <hamsandwich> #define FL_ONGROUND (1<<9) #define FL_WATERJUMP (1<<11) forward amxbans_admin_connect(id); new Array:g_Array, bool:g_Vip[33], gRound=0, maxPlayers, menu, menu_callback_handler, skoki[33], weapon_id; new const g_Langcmd[][]={"say /vips","say_team /vips","say /vipy","say_team /vipy"}; public plugin_init(){ register_plugin("VIP Ultimate", "12.1.0.2", "benio101 & speedkill"); register_logevent("RoundEnd", 2, "1=Round_End"); register_forward(FM_CmdStart, "CmdStartPre"); RegisterHam(Ham_Spawn, "player", "SpawnedEventPre", 1); register_event("HLTV", "event_new_round", "a", "1=0", "2=0"); register_logevent("GameCommencing", 2, "1=Game_Commencing"); g_Array=ArrayCreate(64,32); for(new i;i<sizeof g_Langcmd;i++){ register_clcmd(g_Langcmd[i], "ShowVips"); } register_clcmd("say /vip", "ShowMotd"); } public client_authorized(id){ if(get_user_flags(id) & 524288 == 524288){ client_authorized_vip(id); } } public client_authorized_vip(id){ g_Vip[id]=true; new g_Name[64]; get_user_name(id,g_Name,charsmax(g_Name)); new g_Size = ArraySize(g_Array); new szName[64]; for(new i = 0; i < g_Size; i++){ ArrayGetString(g_Array, i, szName, charsmax(szName)); if(equal(g_Name, szName)){ return 0; } } ArrayPushString(g_Array,g_Name); return PLUGIN_CONTINUE; } public client_disconnect(id){ if(g_Vip[id]){ client_disconnect_vip(id); } } public client_disconnect_vip(id){ g_Vip[id]=false; new Name[64]; get_user_name(id,Name,charsmax(Name)); new g_Size = ArraySize(g_Array); new g_Name[64]; for(new i = 0; i < g_Size; i++){ ArrayGetString(g_Array, i, g_Name, charsmax(g_Name)); if(equal(g_Name,Name)){ ArrayDeleteItem(g_Array,i); break; } } } public menu_1_handler(id){ set_user_gravity(id, 600.0/800.0); } public plugin_cfg(){ maxPlayers=get_maxplayers(); } public RoundEnd(){ for(new i=1; i<=maxPlayers; ++i){ if(is_user_alive(i)){ set_user_gravity(i, 1.0); } } for(new i=1; i<=maxPlayers; ++i){ skoki[i]=-1; } for(new i=1; i<=maxPlayers; ++i){ if(is_user_alive(i)){ set_user_rendering(i, kRenderFxNone, 255, 255, 255, kRenderNormal, 16); } } } public CmdStartPre(id, uc_handle){ if(g_Vip[id]){ if(is_user_alive(id)){ CmdStartPreVip(id, uc_handle); } } } public CmdStartPreVip(id, uc_handle){ new flags = pev(id, pev_flags); if((get_uc(uc_handle, UC_Buttons) & IN_JUMP) && !(flags & FL_ONGROUND) && !(pev(id, pev_oldbuttons) & IN_JUMP) && skoki[id]>0){ --skoki[id]; new Float:velocity[3]; pev(id, pev_velocity,velocity); velocity[2] = random_float(265.0,285.0); set_pev(id,pev_velocity,velocity); } else if(flags & FL_ONGROUND && skoki[id]!=-1){ skoki[id] = 1; } } public SpawnedEventPreVip(id){ skoki[id]=-1; set_user_rendering(id, kRenderFxNone, 0,0,0, kRenderTransAlpha, 0); set_user_rendering(id, kRenderFxGlowShell, 0, 255, 0, kRenderNormal, 25); show_vip_menu(id); } public menu_2_handler(id){ skoki[id]=1; } public SpawnedEventPre(id){ if(g_Vip[id]){ if(is_user_alive(id)){ SpawnedEventPreVip(id); } } } public menu_4_handler(id){ set_user_rendering(id, kRenderFxNone, 0,0,0, kRenderTransAlpha, 0); } public menu_3_handler(id){ set_user_rendering(id, kRenderFxGlowShell, 0, 255, 0, kRenderNormal, 25); } public menu_5_handler(id){ set_user_health(id, get_user_health(id)+75); } public menu_7_handler(id){ new fbnum=(user_has_weapon(id,CSW_FLASHBANG)?cs_get_user_bpammo(id,CSW_FLASHBANG):0); give_item(id, "weapon_flashbang"); ++fbnum; new sgnum=(user_has_weapon(id,CSW_SMOKEGRENADE)?cs_get_user_bpammo(id,CSW_SMOKEGRENADE):0); give_item(id, "weapon_smokegrenade"); ++sgnum; } public menu_6_handler(id){ if(get_pdata_cbase(id, 369)==-1){ give_item(id, "weapon_deagle"); give_item(id, "ammo_50ae"); weapon_id=find_ent_by_owner(-1, "weapon_deagle", id); if(weapon_id)cs_set_weapon_ammo(weapon_id, 1); cs_set_user_bpammo(id, CSW_DEAGLE, 0); } } public show_vip_menu(id){ menu=menu_create("\rMenu VIPa","menu_handler"); menu_callback_handler=menu_makecallback("menu_callback"); new bool:active=false, num=-1; menu_additem(menu,"\d(\w10000\y$\d) \wWyzszy skok","",0,menu_callback_handler); if(menu_callback(id, menu, ++num)==ITEM_ENABLED){ active=true; } menu_additem(menu,"\d(\w10000\y$\d) \wPodwojny skok","",0,menu_callback_handler); if(menu_callback(id, menu, ++num)==ITEM_ENABLED){ active=true; } menu_additem(menu,"\d(\w15000\y$\d) \wFreeDay","",0,menu_callback_handler); if(menu_callback(id, menu, ++num)==ITEM_ENABLED){ active=true; } menu_additem(menu,"\d(\w16000\y$\d) \wDuszek","",0,menu_callback_handler); if(menu_callback(id, menu, ++num)==ITEM_ENABLED){ active=true; } menu_additem(menu,"\d(\w15000\y$\d) \wDodatkowe 75 HP","",0,menu_callback_handler); if(menu_callback(id, menu, ++num)==ITEM_ENABLED){ active=true; } menu_additem(menu,"\d(\w12000\y$\d) \wDeagle z 1 nabojem","",0,menu_callback_handler); if(menu_callback(id, menu, ++num)==ITEM_ENABLED){ active=true; } menu_additem(menu,"\d(\w9000\y$\d) \wFlash + smoke","",0,menu_callback_handler); if(menu_callback(id, menu, ++num)==ITEM_ENABLED){ active=true; } if(active){ menu_setprop(menu,MPROP_EXITNAME,"Wyjscie"); menu_setprop(menu,MPROP_TITLE,"\yMenu Vipa"); menu_setprop(menu,MPROP_NUMBER_COLOR,"\r"); menu_display(id, menu); } else { menu_destroy(menu); } } public event_new_round(){ ++gRound; } public GameCommencing(){ gRound=0; } public menu_callback(id, menu, item){ if(cs_get_user_money(id)>=10000){ if(gRound<=1){ if(gRound>=1){ if(get_user_team(id)==1){ if(is_user_alive(id)){ if(item==0){ return ITEM_ENABLED; } if(item==1){ return ITEM_ENABLED; } } } } } } if(cs_get_user_money(id)>=15000){ if(gRound<=1){ if(gRound>=1){ if(get_user_team(id)==1){ if(is_user_alive(id)){ if(item==2){ return ITEM_ENABLED; } if(item==4){ return ITEM_ENABLED; } } } } } } if(cs_get_user_money(id)>=16000){ if(gRound<=1){ if(gRound>=1){ if(get_user_team(id)==1){ if(is_user_alive(id)){ if(item==3){ return ITEM_ENABLED; } } } } } } if(cs_get_user_money(id)>=12000){ if(gRound<=1){ if(gRound>=1){ if(get_user_team(id)==1){ if(is_user_alive(id)){ if(item==5){ return ITEM_ENABLED; } } } } } } if(cs_get_user_money(id)>=9000){ if(gRound<=1){ if(gRound>=1){ if(get_user_team(id)==1){ if(is_user_alive(id)){ if(item==6){ return ITEM_ENABLED; } } } } } } return ITEM_DISABLED; } public menu_handler(id, menu, item){ if(cs_get_user_money(id)>=10000){ if(gRound<=1){ if(gRound>=1){ if(get_user_team(id)==1){ if(is_user_alive(id)){ if(item==0){ menu_1_handler(id); cs_set_user_money(id, cs_get_user_money(id)-10000, 1); } if(item==1){ menu_2_handler(id); cs_set_user_money(id, cs_get_user_money(id)-10000, 1); } } } } } } if(cs_get_user_money(id)>=15000){ if(gRound<=1){ if(gRound>=1){ if(get_user_team(id)==1){ if(is_user_alive(id)){ if(item==2){ menu_3_handler(id); cs_set_user_money(id, cs_get_user_money(id)-15000, 1); } if(item==4){ menu_5_handler(id); cs_set_user_money(id, cs_get_user_money(id)-15000, 1); } } } } } } if(cs_get_user_money(id)>=16000){ if(gRound<=1){ if(gRound>=1){ if(get_user_team(id)==1){ if(is_user_alive(id)){ if(item==3){ menu_4_handler(id); cs_set_user_money(id, cs_get_user_money(id)-16000, 1); } } } } } } if(cs_get_user_money(id)>=12000){ if(gRound<=1){ if(gRound>=1){ if(get_user_team(id)==1){ if(is_user_alive(id)){ if(item==5){ menu_6_handler(id); cs_set_user_money(id, cs_get_user_money(id)-12000, 1); } } } } } } if(cs_get_user_money(id)>=9000){ if(gRound<=1){ if(gRound>=1){ if(get_user_team(id)==1){ if(is_user_alive(id)){ if(item==6){ menu_7_handler(id); cs_set_user_money(id, cs_get_user_money(id)-9000, 1); } } } } } } menu_destroy(menu); return PLUGIN_HANDLED; } public ShowVips(id){ new g_Name[64],g_Message[192]; new g_Size=ArraySize(g_Array); for(new i = 0; i < g_Size; i++){ ArrayGetString(g_Array, i, g_Name, charsmax(g_Name)); add(g_Message, charsmax(g_Message), g_Name); if(i == g_Size - 1){ add(g_Message, charsmax(g_Message), "."); } else{ add(g_Message, charsmax(g_Message), ", "); } } ColorChat(id,GREEN,"^x03Vipy ^x04na ^x03serwerze: ^x04%s", g_Message); return PLUGIN_CONTINUE; } public client_infochanged(id){ if(g_Vip[id]){ new szName[64]; get_user_info(id,"name",szName,charsmax(szName)); new Name[64]; get_user_name(id,Name,charsmax(Name)); if(!equal(szName,Name)){ ArrayPushString(g_Array,szName); new g_Size=ArraySize(g_Array); new g_Name[64]; for(new i = 0; i < g_Size; i++){ ArrayGetString(g_Array, i, g_Name, charsmax(g_Name)); if(equal(g_Name,Name)){ ArrayDeleteItem(g_Array,i); break; } } } } } public plugin_end(){ ArrayDestroy(g_Array); } public ShowMotd(id){ show_motd(id, "vip.txt", "Informacje o vipie"); } public client_PreThink(id){ if(g_Vip[id] && is_user_alive(id)){ client_PreThinkVip(id); } } 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 amxbans_admin_connect(id){ client_authorized(id); }
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

Problem z VIP'em
Temat rozp. Anakonda016, 04.04.2013 07:04
1 odpowiedź w tym temacie
#1
Napisano 04.04.2013 07:04
Witam. Zrobiłem w Generatorze, Vipa. Gdy wpisuje /vip to pokazuje tylko ten motd, ale mam wszystkie flagi nawet tą na którą sobie dałem czyli Custom Level H. Tutaj macie kod i mysle, że ktos mi pomoże. Czekam na odpowiedź.
#2
Napisano 04.04.2013 16:16
Przepraszam za post pod postem, ale nie mogę edytowac.
Pomoże może tutaj mi ktos? Bardzo to jest ważne
Pomoże może tutaj mi ktos? Bardzo to jest ważne

Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych