Skocz do zawartości

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.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

[ROZWIĄZANE] Dodanie podsadzania się


  • Zamknięty Temat jest zamknięty
6 odpowiedzi w tym temacie

#1 I am the one who knocks.

    Zaawansowany

  • Użytkownik

Reputacja: 5
Nowy

  • Postów:133
  • Imię:Krystian
  • Lokalizacja:Albuquerque
Offline

Napisano 29.07.2018 13:32

Witam, otóż mam prośbę czy można by było dodać to tego pluginu możliwość podsadzania sie?

 

#include <amxmodx>
#include <fakemeta>

#pragma semicolon 1

#define DISTANCE 120

new g_iTeam[33];
new bool:g_bSolid[33];
new bool:g_bHasSemiclip[33];
new Float:g_fOrigin[33][3];

new bool:g_bSemiclipEnabled;

new g_iForwardId[3];
new g_iMaxPlayers;
new g_iCvar[3];

public plugin_init( )
{
    register_plugin( "(Team-)Semiclip", "1.2", "SchlumPF*" );
    
    g_iCvar[0] = register_cvar( "semiclip_enabled", "1" );
    g_iCvar[1] = register_cvar( "semiclip_teamclip", "1" );
    g_iCvar[2] = register_cvar( "semiclip_transparancy", "1" );
    
    register_forward( FM_ClientCommand, "fwdClientCommand" );
    
    if( get_pcvar_num( g_iCvar[0] ) )
    {
        g_iForwardId[0] = register_forward( FM_PlayerPreThink, "fwdPlayerPreThink" );
        g_iForwardId[1] = register_forward( FM_PlayerPostThink, "fwdPlayerPostThink" );
        g_iForwardId[2] = register_forward( FM_AddToFullPack, "fwdAddToFullPack_Post", 1 );
        
        g_bSemiclipEnabled = true;
    }
    else
        g_bSemiclipEnabled = false;
    
    g_iMaxPlayers = get_maxplayers( );
}

public fwdPlayerPreThink( plr )
{
    static id, last_think;

    if( last_think > plr )
    {
        for( id = 1 ; id <= g_iMaxPlayers ; id++ )
        {
            if( is_user_alive( id ) )
            {
                if( get_pcvar_num( g_iCvar[1] ) )
                    g_iTeam[id] = get_user_team( id );
                
                g_bSolid[id] = pev( id, pev_solid ) == SOLID_SLIDEBOX ? true : false;
                pev( id, pev_origin, g_fOrigin[id] );
            }
            else
                g_bSolid[id] = false;
        }
    }

    last_think = plr;

    if( g_bSolid[plr] )
    {
        for( id = 1 ; id <= g_iMaxPlayers ; id++ )
        {
            if( g_bSolid[id] && get_distance_f( g_fOrigin[plr], g_fOrigin[id] ) <= DISTANCE && id != plr )
            {
                if( get_pcvar_num( g_iCvar[1] ) && g_iTeam[plr] != g_iTeam[id] )
                    return FMRES_IGNORED;
    
                set_pev( id, pev_solid, SOLID_NOT );
                g_bHasSemiclip[id] = true;
            }
        }
    }

    return FMRES_IGNORED;
}

public fwdPlayerPostThink( plr )
{
    static id;

    for( id = 1 ; id <= g_iMaxPlayers ; id++ )
    {
        if( g_bHasSemiclip[id] )
        {
            set_pev( id, pev_solid, SOLID_SLIDEBOX );
            g_bHasSemiclip[id] = false;
        }
    }
}

public fwdAddToFullPack_Post( es_handle, e, ent, host, hostflags, player, pset )
{
    if( player )
    {
        if( g_bSolid[host] && g_bSolid[ent] && get_distance_f( g_fOrigin[host], g_fOrigin[ent] ) <= DISTANCE )
        {
            if( get_pcvar_num( g_iCvar[1] ) && g_iTeam[host] != g_iTeam[ent] )
                return FMRES_IGNORED;
                
            set_es( es_handle, ES_Solid, SOLID_NOT ); // makes semiclip flawless
            
            if( get_pcvar_num( g_iCvar[2] ) == 1 )
            {
                set_es( es_handle, ES_RenderMode, kRenderTransAlpha );
                set_es( es_handle, ES_RenderAmt, 85 );
            }
            else if( get_pcvar_num( g_iCvar[2] ) == 2 )
            {
                set_es( es_handle, ES_Effects, EF_NODRAW );
                set_es( es_handle, ES_Solid, SOLID_NOT );
            }
        }
    }
    
    return FMRES_IGNORED;
}

// is there a better way to detect changings of g_iCvar[0]?
public fwdClientCommand( plr )
{
    // use the forwards just when needed, for good performance
    if( !get_pcvar_num( g_iCvar[0] ) && g_bSemiclipEnabled )
    {
        unregister_forward( FM_PlayerPreThink, g_iForwardId[0] );
        unregister_forward( FM_PlayerPostThink, g_iForwardId[1] );
        unregister_forward( FM_AddToFullPack, g_iForwardId[2], 1 );
        
        g_bSemiclipEnabled = false;
    }
    else if( get_pcvar_num( g_iCvar[0] ) && !g_bSemiclipEnabled )
    {
        g_iForwardId[0] = register_forward( FM_PlayerPreThink, "fwdPlayerPreThink" );
        g_iForwardId[1] = register_forward( FM_PlayerPostThink, "fwdPlayerPostThink" );
        g_iForwardId[2] = register_forward( FM_AddToFullPack, "fwdAddToFullPack_Post", 1 );
        
        g_bSemiclipEnabled = true;
    }
}

  • +
  • -
  • 0

#2 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 584
Godlike

  • Postów:12 053
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 29.07.2018 14:13

Użyj https://forums.allie...ad.php?t=250891
  • +
  • -
  • 1

#3 vanillah

    nie wiem

  • Użytkownik

Reputacja: 125
Zaawansowany

  • Postów:324
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 29.07.2018 17:38

^nie jestem pewny w 100% czy to rozwiazanie co podales zadziala na rehldsie

ktos wie cos o tym wiecej?

 

*edit: do rehldsa jest takie cos jak resemiclip: https://github.com/rehlds/resemiclip


Użytkownik vanillah edytował ten post 29.07.2018 17:42

  • +
  • -
  • 0

Wykonam pluginy, paczki (amxx) kontakt GG: 32263742, Steam: https://steamcommuni...om/id/vankillah

Multi-Head.pl


#4 I am the one who knocks.

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 5
Nowy

  • Postów:133
  • Imię:Krystian
  • Lokalizacja:Albuquerque
Offline

Napisano 29.07.2018 17:54

^nie jestem pewny w 100% czy to rozwiazanie co podales zadziala na rehldsie

ktos wie cos o tym wiecej?

 

*edit: do rehldsa jest takie cos jak resemiclip: https://github.com/rehlds/resemiclip

Tam tez dziala przenikanie?


  • +
  • -
  • 0

#5 wariat aka pro

    Wszechwidzący

  • Zbanowany

Reputacja: 3
Nowy

  • Postów:235
  • GG:
  • Imię:mat
Offline

Napisano 29.07.2018 19:43

#include <amxmodx>
#include <fakemeta>

#pragma semicolon 1

#define DISTANCE 120

new g_iTeam[33];
new bool:g_bSolid[33];
new bool:g_bHasSemiclip[33];
new bool:g_bInSemiclip[33];
new Float:g_fOrigin[33][3];

new bool:g_bSemiclipEnabled;

new g_iForwardId[3];
new g_iMaxPlayers;
new g_iCvar[3];

public plugin_init( )
{
	register_plugin( "(Team-)Semiclip", "1.2", "SchlumPF*" );
	
	register_clcmd("+przenikanie", "CommandOn");
	register_clcmd("-przenikanie", "CommandOff");
	
	g_iCvar[0] = register_cvar( "semiclip_enabled", "1" );
	g_iCvar[1] = register_cvar( "semiclip_teamclip", "1" );
	g_iCvar[2] = register_cvar( "semiclip_transparancy", "0" );
	
	register_forward( FM_ClientCommand, "fwdClientCommand" );
	
	if( get_pcvar_num( g_iCvar[0] ) )
	{
		g_iForwardId[0] = register_forward( FM_PlayerPreThink, "fwdPlayerPreThink" );
		g_iForwardId[1] = register_forward( FM_PlayerPostThink, "fwdPlayerPostThink" );
		g_iForwardId[2] = register_forward( FM_AddToFullPack, "fwdAddToFullPack_Post", 1 );
		
		g_bSemiclipEnabled = true;
	}
	else
		g_bSemiclipEnabled = false;
	
	g_iMaxPlayers = get_maxplayers( );
}

public CommandOn(id) {
	if(!is_user_alive(id)) return;
	
	g_bInSemiclip[id] = true;
}

public CommandOff(id) {
	g_bInSemiclip[id] = false;
}

public fwdPlayerPreThink( plr )
{
	static id, last_think;

	if( last_think > plr ) {
		for( id = 1 ; id <= g_iMaxPlayers ; id++ ) {
			if( is_user_alive( id ) ) {	
				if( get_pcvar_num( g_iCvar[1] ) )
					g_iTeam[id] = get_user_team( id );
				
				g_bSolid[id] = pev( id, pev_solid ) == SOLID_SLIDEBOX ? true : false;
				pev( id, pev_origin, g_fOrigin[id] );
			}
			else
				g_bSolid[id] = false;
		}
	}

	last_think = plr;

	if( g_bSolid[plr] ) {
		for( id = 1 ; id <= g_iMaxPlayers ; id++ ) {
			if( g_bSolid[id] && get_distance_f( g_fOrigin[plr], g_fOrigin[id] ) <= DISTANCE && id != plr ) {
				if( get_pcvar_num( g_iCvar[1] ) && g_iTeam[plr] != g_iTeam[id] || g_bInSemiclip[plr])
					return FMRES_IGNORED;
	
				set_pev( id, pev_solid, SOLID_NOT );
				g_bHasSemiclip[id] = true;
			}
		}
	}

	return FMRES_IGNORED;
}

public fwdPlayerPostThink( plr ) {
	static id;

	for( id = 1 ; id <= g_iMaxPlayers ; id++ ) {
		if( g_bHasSemiclip[id] ) {
			set_pev( id, pev_solid, SOLID_SLIDEBOX );
			g_bHasSemiclip[id] = false;
		}
	}
}

public fwdAddToFullPack_Post( es_handle, e, ent, host, hostflags, player, pset )
{
	if( player )
	{
		if( g_bSolid[host] && g_bSolid[ent] && get_distance_f( g_fOrigin[host], g_fOrigin[ent] ) <= DISTANCE )
		{
			if( get_pcvar_num( g_iCvar[1] ) && g_iTeam[host] != g_iTeam[ent] )
				return FMRES_IGNORED;
				
			set_es( es_handle, ES_Solid, SOLID_NOT ); // makes semiclip flawless
			
			if( get_pcvar_num( g_iCvar[2] ) == 1 )
			{
				set_es( es_handle, ES_RenderMode, kRenderTransAlpha );
				set_es( es_handle, ES_RenderAmt, 85 );
			}
			else if( get_pcvar_num( g_iCvar[2] ) == 2 )
			{
				set_es( es_handle, ES_Effects, EF_NODRAW );
				set_es( es_handle, ES_Solid, SOLID_NOT );
			}
		}
	}
	
	return FMRES_IGNORED;
}

// is there a better way to detect changings of g_iCvar[0]?
public fwdClientCommand( plr )
{
	// use the forwards just when needed, for good performance
	if( !get_pcvar_num( g_iCvar[0] ) && g_bSemiclipEnabled )
	{
		unregister_forward( FM_PlayerPreThink, g_iForwardId[0] );
		unregister_forward( FM_PlayerPostThink, g_iForwardId[1] );
		unregister_forward( FM_AddToFullPack, g_iForwardId[2], 1 );
		
		g_bSemiclipEnabled = false;
	}
	else if( get_pcvar_num( g_iCvar[0] ) && !g_bSemiclipEnabled )
	{
		g_iForwardId[0] = register_forward( FM_PlayerPreThink, "fwdPlayerPreThink" );
		g_iForwardId[1] = register_forward( FM_PlayerPostThink, "fwdPlayerPostThink" );
		g_iForwardId[2] = register_forward( FM_AddToFullPack, "fwdAddToFullPack_Post", 1 );
		
		g_bSemiclipEnabled = true;
	}
}

Przenikanie działa na rehlds , lepsza wersja podsadzania na bind czyli aby się podsadzić musisz wcisnąć ustawiony bind np.

 

Bind "c" "+przenikanie"

 

komenda aby się zmaterializować +przenikanie

 

Bind "klawisz" "+przenikanie"

 

Dlaczego lepsza wersja ? 

 

Bo wchodzisz w gracza klikasz bind (on nie musi) i pojawiasz mu się na głowie , nie ma męczenia się z kucaniem :) 

 

 


Użytkownik wariat aka pro edytował ten post 29.07.2018 19:45


#6 I am the one who knocks.

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 5
Nowy

  • Postów:133
  • Imię:Krystian
  • Lokalizacja:Albuquerque
Offline

Napisano 29.07.2018 22:25

juz sobie poradziłem :)

 

Temat do zamknięcia


  • +
  • -
  • 0

#7 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 584
Godlike

  • Postów:12 053
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 29.07.2018 22:50

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 1

0 użytkowników, 1 gości, 0 anonimowych