hlmod.hu
https://hlmod.hu/

BGS SGS
https://hlmod.hu/viewtopic.php?f=29&t=31344
Oldal: 1 / 1

Szerző:  konfigos312 [ 2022.08.17. 22:35 ]
Hozzászólás témája:  BGS SGS

Sziasztok.
Olyan problémám lenne hogy BGS re illetve SGS re létezik valami védelem?
Ha igen akkor hogy tudnám meg oldani hogy ezeket tiltson de ne keljen mást miatta nélkülözni?
A gyors késre illetve az ejtőernyőre meg a gugulásra gondoltam.
Köszönöm szépen előre is a segítséget.

Szerző:  kovakovi2000 [ 2022.08.22. 08:58 ]
Hozzászólás témája:  Re: BGS SGS

Kód:
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <hamsandwich>

#define _sens 40.0
#define _block 0.25
#define SPEEDLIMIT 300.0

new jumpnum[33] = 0
new bool:dojump[33] = false
new Float:doduck[33] = 0.0
new Float:BlockUntil[33] = 0.0

new Float:NewVelocity[33][3];
new Float:VerticalVelocity[33];
new Float:speed[33];
new bool:g_Alive[33];
new bool:last_FL_ONGROUND[33];

public plugin_init()
{
   //Original code source unknown - Blocking added by Kova
   register_plugin("MultiJumpBGSBLock","2.3","Kova")
   register_cvar("amx_maxjumps","1")
   RegisterHam(Ham_Spawn, "player", "hamPlayerSpawn", 1);
   register_event("DeathMsg", "eventPlayerDeath", "a");
}

public hamPlayerSpawn(id)
{
    if(!is_user_alive(id))
      return;
 
    g_Alive[id] = true;
}

public eventPlayerDeath()
{
  g_Alive[read_data(2)] = false;
}

public client_putinserver(id)
{
   jumpnum[id] = 0
   dojump[id] = false
   doduck[id] = 0.0
   BlockUntil[id] = 0.0
   last_FL_ONGROUND[id] = true;
}

public client_disconnected(id)
{
   jumpnum[id] = 0
   dojump[id] = false
   doduck[id] = 0.0
   BlockUntil[id] = 0.0
   g_Alive[id] = false;
   last_FL_ONGROUND[id] = true;
}

public client_PreThink(id)
{
   if(!g_Alive[id])
      return PLUGIN_CONTINUE
   
   new nbut = get_user_button(id)
   new obut = get_user_oldbutton(id)

   if(get_entity_flags(id) & FL_ONGROUND)
   {
      if(last_FL_ONGROUND[id] == false)
         SpeedTester(id);
      last_FL_ONGROUND[id] = true;
      if((nbut & IN_DUCK) && !(obut & IN_DUCK))
      {
         doduck[id] = get_gametime() + 0.05;
      }
   }

   if(!(get_entity_flags(id) & FL_ONGROUND))
   {
      last_FL_ONGROUND[id] = false;
      if((nbut & IN_JUMP) && !(obut & IN_JUMP))
      {
         if(jumpnum[id] < get_cvar_num("amx_maxjumps"))
         {
            dojump[id] = true
            jumpnum[id]++
            return PLUGIN_CONTINUE
         }
      }
   }
   if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
   {
      jumpnum[id] = 0
      return PLUGIN_CONTINUE
   }
   return PLUGIN_CONTINUE
}

public client_PostThink(id)
{
   if(!g_Alive[id])
      return PLUGIN_CONTINUE

   if(get_gametime() < doduck[id] && fm_distance_to_floor(id) > 0.0)
      BlockUntil[id] = get_gametime() + _block;
      
   if(dojump[id] == true)
   {
      if(BlockUntil[id] > get_gametime())
      {
         dojump[id] = false;
         jumpnum[id]--
         return PLUGIN_CONTINUE;
      }

      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)
      dojump[id] = false
      return PLUGIN_CONTINUE
   }
   return PLUGIN_CONTINUE
}   

public SpeedTester(id)
{
  get_user_velocity(id, NewVelocity[id]);
  VerticalVelocity[id] = NewVelocity[id][2];
  NewVelocity[id][2] = 0.0;
  speed[id] = vector_length(NewVelocity[id]);
  if(speed[id] > SPEEDLIMIT)
  {
    NewVelocity[id][0] = NewVelocity[id][0] * (SPEEDLIMIT / speed[id]);
    NewVelocity[id][1] = NewVelocity[id][1] * (SPEEDLIMIT / speed[id]);
    NewVelocity[id][2] = VerticalVelocity[id];
    set_user_velocity(id, NewVelocity[id]);
  }
}

stock Float:fm_distance_to_floor(index, ignoremonsters = 1)
{
   new Float:start[3], Float:dest[3], Float:end[3];
   pev(index, pev_origin, start);
   dest[0] = start[0];
   dest[1] = start[1];
   dest[2] = -8191.0;

   engfunc(EngFunc_TraceLine, start, dest, ignoremonsters, index, 0);
   get_tr2(0, TR_vecEndPos, end);

   pev(index, pev_absmin, start);
   new Float:ret = start[2] - end[2];

   return ret > 0 ? ret : 0.0;
}


Ez egy multijump plugin. Ebbe benne van a BGS tiltása, amit azzal ér el, hogy guggolás után _block (0.25mp-ig) nem lehet ugrani a levegőben. (Ha valaki nagyon profi akkor lehet, hogy tud BSGS-t)
Továbbá egy rész ami kicsit idegesítő, de hasznos sebesség korlát ami akkor lép életbe amikor leérkezel a földre, így nem tudják kihasználni a tixo-t gyorsulásra (GS/SGS). (Ugrásból ha felgyorsulsz és leérkezel, olyan mit ha megakadnál valamiben és azért idegesítő kicsit)

GS - ground strafe (tixo + strafe)
SGS - stand-up ground strafe (tixo + guggolás letartás és és felengedés + strafe)
BGS - bhop ground strafe (tixo + multi jump + strafe)
BSGS - bhop stand-up ground strafe (tixo + guggolás és multijump majd felengedés + strafe)

Szerző:  konfigos312 [ 2022.08.22. 21:24 ]
Hozzászólás témája:  Re: BGS SGS

Köszi.
de találtam mást meg oldást is.
game.cfg be
Kód:
mp_unduck_method 1
re és azota nem találkoztam bgs el

Oldal: 1 / 1 Minden időpont UTC+02:00 időzóna szerinti
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/