/*
*
* 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


Dodatki SourceMod



Temat jest zamknięty









