szukam najskuteczniejszej blokady granatów...
tytusek
10.07.2015
Witam szukam najskuteczniejszego plugina czyli żeby nie dało się wyjąć granata na freezetime oraz przed freezetime i do blokady granatów na 10 sekund po rozpoczęciu nowej rundy oraz żeby nie obciążał zbytnio servera
do tej pory korzystałem z pluginu
#pragma semicolon 0
#include <amxmisc>
#include <fakemeta>
#define PLUGIN "Nowy Plugin"
#define VERSION "1.0"
#define AUTHOR "Sn!ff3r"
new bool:mozna = true;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_forward(FM_PlayerPreThink, "PlayerPreThink")
register_forward(FM_UpdateClientData, "UpdateClientData_Post", 1)
register_event("HLTV", "Nowa_Runda", "a", "1=0", "2=0")
}
public Nowa_Runda()
{
mozna = false;
set_task(15.0,"odblokuj",666)
}
public odblokuj(){
mozna = true;
}
public PlayerPreThink(id)
{
if(!is_user_alive(id) || mozna){
return FMRES_IGNORED
}
if(get_user_weapon(id) != CSW_HEGRENADE){
return FMRES_IGNORED
}
set_pev(id, pev_button, pev(id,pev_button) & ~IN_ATTACK)
set_pev(id, pev_button, pev(id,pev_button) & ~IN_ATTACK2)
return FMRES_HANDLED
}
public UpdateClientData_Post(id, sendweapons, cd_handle)
{
if(!is_user_alive(id) || mozna){
return FMRES_IGNORED
}
if(get_user_weapon(id) != CSW_HEGRENADE){
return FMRES_IGNORED
}
set_cd(cd_handle, CD_ID, 0)
return FMRES_HANDLED
}
działa dobrze ale obciąża serva przez PlayerPreThink
Użytkownik tytusek edytował ten post 10.07.2015 15:31
Linux'
10.07.2015
Najskuteczniejszy typ blokady to ten ktory uzywales, blokuje on calkowicie caly klawisz nie bugujac animacji broni itp. Scal to z jakims innym pluginem w ktorym uzywasz prethinka/cmdstart to wszystko bedzie sie wywolywac za jednym razem.
tytusek
10.07.2015
Najskuteczniejszy typ blokady to ten ktory uzywales, blokuje on calkowicie caly klawisz nie bugujac animacji broni itp. Scal to z jakims innym pluginem w ktorym uzywasz prethinka/cmdstart to wszystko bedzie sie wywolywac za jednym razem.
wiem własnie że to najskuteczniejszy sposób ale obciąża mi to serva i szukam czegoś podobniejszego tylko optymalnego
Asiap
10.07.2015
#include <amxmodx> #include <hamsandwich> #include <fakemeta> forward grenade_throw(id, iGrenade, iWeapon); new Float:g_fThrowTime[33]; public plugin_init() { RegisterHam(Ham_Item_Deploy, "weapon_hegrenade", "GrenadeDeploy", 1); RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_hegrenade", "GrenadeAttack"); } public GrenadeDeploy(ent) { new id = get_pdata_cbase(ent, 41, 4); new Float:fWaitTime = g_fThrowTime[id] - get_gametime(); if(fWaitTime > 0.0) { client_print(id, print_center, "Zaczekaj %.0f sekund", fWaitTime); set_pdata_float(ent, 46, fWaitTime, 4); } } public GrenadeAttack(ent) { new id = get_pdata_cbase(ent, 41, 4); new Float:fWaitTime = g_fThrowTime[id] - get_gametime(); if(fWaitTime > 0.0) { client_print(id, print_center, "Zaczekaj %.0f sekund", fWaitTime); set_pdata_float(ent, 46, fWaitTime, 4); return HAM_SUPERCEDE; } return HAM_IGNORED; } public grenade_throw(id, iGrenade, iWeapon) { if(iWeapon == CSW_HEGRENADE) { g_fThrowTime[id] = get_gametime() + 15.0; // czas blokady w sekundach } }
Rivit
11.07.2015
tytusek
11.09.2015
#include <amxmodx> #include <hamsandwich> #include <fakemeta> forward grenade_throw(id, iGrenade, iWeapon); new Float:g_fThrowTime[33]; public plugin_init() { RegisterHam(Ham_Item_Deploy, "weapon_hegrenade", "GrenadeDeploy", 1); RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_hegrenade", "GrenadeAttack"); } public GrenadeDeploy(ent) { new id = get_pdata_cbase(ent, 41, 4); new Float:fWaitTime = g_fThrowTime[id] - get_gametime(); if(fWaitTime > 0.0) { client_print(id, print_center, "Zaczekaj %.0f sekund", fWaitTime); set_pdata_float(ent, 46, fWaitTime, 4); } } public GrenadeAttack(ent) { new id = get_pdata_cbase(ent, 41, 4); new Float:fWaitTime = g_fThrowTime[id] - get_gametime(); if(fWaitTime > 0.0) { client_print(id, print_center, "Zaczekaj %.0f sekund", fWaitTime); set_pdata_float(ent, 46, fWaitTime, 4); return HAM_SUPERCEDE; } return HAM_IGNORED; } public grenade_throw(id, iGrenade, iWeapon) { if(iWeapon == CSW_HEGRENADE) { g_fThrowTime[id] = get_gametime() + 15.0; // czas blokady w sekundach } }
odkop wiem
ale plugin nie działa
WeBsteR
11.09.2015
Sposób z mojego serwera:
#include <amxmodx> #include <hamsandwich> new const g_szGrenadeNames[][] = { "weapon_hegrenade", "weapon_smokegrenade", "weapon_flashbang" }; new Float:g_fStartTime public plugin_init() { register_plugin("Blokada Granatow", "v1.0", "Webster") register_logevent("Round_Start", 2, "1=Round_Start") for(new i=0; i<sizeof(g_szGrenadeNames); i++) { register_clcmd(g_szGrenadeNames[i], "BlockGrenade") RegisterHam(Ham_Weapon_PrimaryAttack, g_szGrenadeNames[i], "fwd_PrimaryAttack") } } public Round_Start() g_fStartTime = get_gametime() public fwd_PrimaryAttack(this) { if(get_gametime() - g_fStartTime > 15.0) return HAM_IGNORED return HAM_SUPERCEDE } public BlockGrenade(id) { if(get_gametime() - g_fStartTime > 15.0) return PLUGIN_CONTINUE return PLUGIN_HANDLED }
Może się przyda