/* * * Author: Cheesy Peteza * Date: 22-Apr-2004 (updated 2-March-2005) * * * Description: Enable bunny hopping in Counter-Strike. * * Cvars: * bh_enabled 1 to enable this plugin, 0 to disable. * bh_autojump If set to 1 players just need to hold down jump to bunny hop (no skill required) * bh_showusage If set to 1 it will inform joining players that bunny hopping has been enabled * and how to use it if bh_autojump enabled. * * Requirements: AMXModX 0.16 or greater * * */ #include <amxmodx> #include <engine> #define FL_WATERJUMP (1<<11) // player jumping out of water #define FL_ONGROUND (1<<9) // At rest / on the ground public plugin_init() { register_plugin("Super Bunny Hopper", "1.2", "Cheesy Peteza") register_cvar("sbhopper_version", "1.2", FCVAR_SERVER) register_cvar("bh_enabled", "1") register_cvar("bh_autojump", "1") register_cvar("bh_showusage", "1") } public client_PreThink(id) { if (!get_cvar_num("bh_enabled")) return PLUGIN_CONTINUE entity_set_float(id, EV_FL_fuser2, 0.0) // Disable slow down after jumping if (!get_cvar_num("bh_autojump")) return PLUGIN_CONTINUE // Code from CBasePlayer::Jump (player.cpp) Make a player jump automatically if (entity_get_int(id, EV_INT_button) & 2) { // If holding jump 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) // Play the Jump Animation } return PLUGIN_CONTINUE } public client_authorized(id) set_task(30.0, "showUsage", id) public showUsage(id) { if ( !get_cvar_num("bh_enabled") || !get_cvar_num("bh_showusage") ) return PLUGIN_HANDLED if ( !get_cvar_num("bh_autojump") ) { client_print(id, print_chat, "[AMX] Bunny hopping is enabled on this server. You will not slow down after jumping.") } else { client_print(id, print_chat, "[AMX] Auto bunny hopping is enabled on this server. Just hold down jump to bunny hop.") } return PLUGIN_HANDLED }
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.
|
[ROZWIĄZANE] Jak ustawić auto bh tylko dla flagi t?
Najlepsza odpowiedź GwynBleidD, 19.05.2013 14:35
get_user_flags(id) & 524288 == 524288
Kto wymyślił taki bezsensowny i kompletnie nieczytelny zapis? Gdy przyjdzie to zmienić na inną flagę lub sprawdzić jaka flaga jest potrzebna, będziemy przeliczać wartość na binarną i liczyć który bit jest zaświecony, aby określić jaka to flaga? Dużo czytelniejszym zapisem jest:
get_user_flags(id) & ADMIN_LEVEL_H == ADMIN_LEVEL_H
Jeśli potrzebujemy sprawdzić kilka flag na raz, można to zrobić tak:
get_user_flags(id) & (ADMIN_LEVEL_H|ADMIN_LEVEL_C) == (ADMIN_LEVEL_H|ADMIN_LEVEL_C)
I od razu widać jaka to flaga... A na optymalności ABSOLUTNIE NIC nie tracimy, kod jest przeliczany na odpowiednią wartość na poziomie kompilacji (jeśli włączona jest optymalizacja, a domyślnie jest ona włączona) i w efekcie oba sposoby dają dokładnie taki sam efekt...
A co do kodu, wystarczy dodać warunek:
if(get_user_flags(id) & ADMIN_LEVEL_H != ADMIN_LEVEL_H) return PLUGIN_CONTINUE;
na początku PreThinka i funkcji wywoływanej przez task.
Przejdź do postu#1
Napisano 19.05.2013 13:22
#2
Napisano 19.05.2013 13:27
#include <amxmodx>#include <engine>#define FL_ONGROUND (1<<9)#define FL_WATERJUMP (1<<11)forward amxbans_admin_connect(id);new bool:g_Vip[33];public plugin_init(){register_plugin("VIP Ultimate", "12.3.0.2", "benio101 & speedkill");}public client_authorized(id){if(get_user_flags(id) & 524288 == 524288){client_authorized_vip(id);}}public client_authorized_vip(id){g_Vip[id]=true;}public client_disconnect(id){if(g_Vip[id]){client_disconnect_vip(id);}}public client_disconnect_vip(id){g_Vip[id]=false;}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);}
Generator vip
#3
Napisano 19.05.2013 13:36
Generator vip... Dzięki, że piszesz Do zamknięcia
#4
Napisano 19.05.2013 14:35 Najlepsza odpowiedź
get_user_flags(id) & 524288 == 524288
Kto wymyślił taki bezsensowny i kompletnie nieczytelny zapis? Gdy przyjdzie to zmienić na inną flagę lub sprawdzić jaka flaga jest potrzebna, będziemy przeliczać wartość na binarną i liczyć który bit jest zaświecony, aby określić jaka to flaga? Dużo czytelniejszym zapisem jest:
get_user_flags(id) & ADMIN_LEVEL_H == ADMIN_LEVEL_H
Jeśli potrzebujemy sprawdzić kilka flag na raz, można to zrobić tak:
get_user_flags(id) & (ADMIN_LEVEL_H|ADMIN_LEVEL_C) == (ADMIN_LEVEL_H|ADMIN_LEVEL_C)
I od razu widać jaka to flaga... A na optymalności ABSOLUTNIE NIC nie tracimy, kod jest przeliczany na odpowiednią wartość na poziomie kompilacji (jeśli włączona jest optymalizacja, a domyślnie jest ona włączona) i w efekcie oba sposoby dają dokładnie taki sam efekt...
A co do kodu, wystarczy dodać warunek:
if(get_user_flags(id) & ADMIN_LEVEL_H != ADMIN_LEVEL_H) return PLUGIN_CONTINUE;
na początku PreThinka i funkcji wywoływanej przez task.
Użytkownik GwynBleidD edytował ten post 19.05.2013 14:37
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych