Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

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

Pokazanie drogi rzuconego granatu

droga granatu

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
19 odpowiedzi w tym temacie

#1 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6034
Godlike

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

Napisano 17.01.2012 14:45

*
Popularny

Stock służący pokazaniu graczowi jak poleci rzucony granat najlepiej wrzucić wywołanie do prethinku ;).

new laser;

public plugin_precache(){
	laser	=	precache_model("sprites/laserbeam.spr")
}

stock showGrenadeWay ( id , weapon ){
	new Float:fGrenadeGrav = 1.0;

	switch( weapon) {
	case CSW_HEGRENADE:
		fGrenadeGrav	=				 0.55;
	case CSW_FLASHBANG:
		fGrenadeGrav	=				 0.5;
	case CSW_SMOKEGRENADE:
		fGrenadeGrav	=				 0.5;
	}
	static pGrav;
	
	if( !pGrav )	pGrav   =		  get_cvar_pointer( "sv_gravity" );
	
	new Float:fStartPos[ 3 ] , Float: fViewOfs[ 3 ] , Float: fVector[ 3 ] , Float: fVeloc [ 3 ] , Float: fAngles [ 3 ] , Float: fEndPos [ 3 ] , Float: fTmpVector [ 3 ] , pTr , Float: fFraction , Float: fNormal [ 3 ] , iCollision = 0 , Float: fVel;
	new Float:fGrav =				 get_pcvar_float( pGrav ) , pHit = 0;

	const				   maxCollsion					 =				 30;
	const Float:	fConstAliveTime		  =				2.0;
	const Float:	fConstLoops					  =				20.0;
	new Float:		fAliveTime					  =			   0.0;
	new Float:		fStep							=			  fConstAliveTime / fConstLoops;

	pev( id , pev_origin , fStartPos );
	pev( id , pev_view_ofs , fViewOfs );
	pev( id , pev_velocity , fVeloc );
	pev( id , pev_v_angle , fAngles );

	xs_vec_add( fStartPos , fViewOfs , fStartPos );

	if (fAngles[0] < 0)
		fAngles[0] = -10.0 + fAngles[0] * ((90.0 - 10.0) / 90.0);
	else
		fAngles[0] = -10.0 + fAngles[0] * ((90.0 + 10.0) / 90.0);

	fVel = (90.0 - fAngles[0]) * 6.0;
	if (fVel > 750.0)
		fVel = 750.0;

	pev( id , pev_v_angle , fAngles );

	angle_vector( fAngles , ANGLEVECTOR_FORWARD , fVector );

	xs_vec_mul_scalar( fVector , 16.0 , fTmpVector );

	xs_vec_add( fStartPos , fTmpVector , fStartPos );

	xs_vec_mul_scalar( fVector , fVel , fVector );

	xs_vec_add( fVector , fVeloc , fVector );


	for( ; fAliveTime < fConstAliveTime ; fAliveTime += fStep ){

		xs_vec_copy( fStartPos , fEndPos);
		xs_vec_mul_scalar( fVector , fStep , fTmpVector );
		xs_vec_add( fEndPos , fTmpVector , fEndPos );

		pTr	   =			  create_tr2();

		engfunc(EngFunc_TraceLine, fStartPos, fEndPos, DONT_IGNORE_MONSTERS, id, pTr )
		
		if( fAliveTime == 0.0 ){
			fStartPos [ 2 ] += 10.0;
		}

		get_tr2( pTr , TR_flFraction , fFraction);

		pHit	=				 get_tr2( pTr , TR_pHit );

		if( pHit != id && fFraction < 1.0 ){
			get_tr2( pTr , TR_vecEndPos , fEndPos );
			
			get_tr2( pTr , TR_vecPlaneNormal , fNormal )
			
			if( fNormal [ 2 ] > 0.9 && fVector [ 2 ] <= 0.0 && fVector [ 2 ] >= -fGrav / 0.20 ){
				return ;
			}

			new Float: fScalar = xs_vec_dot( fVector, fNormal ) * 1.3;

			fVector[0] = fVector[0] - fScalar * fNormal[0];
			fVector[1] = fVector[1] - fScalar * fNormal[1];
			fVector[2] = fVector[2] - fScalar * fNormal[2];

			iCollision++;

			if(  iCollision > maxCollsion )
			break;

			fAliveTime			  -=		fStep   *			 ( 1.0 - fFraction ) ;
		}
		
		new iR , iG , iB;

		switch( weapon ) {
		case CSW_HEGRENADE:{
				iR = 250;
				iG = 0;
				iB = 0;
			}
		case CSW_FLASHBANG:{
				iR = 0;
				iG = 0;
				iB = 250;
			}
		case CSW_SMOKEGRENADE:{
				iR = 0;
				iG = 250;
				iB = 0;
			}
		}
		
		message_begin( MSG_ONE_UNRELIABLE , SVC_TEMPENTITY , { 0 , 0 , 0 } , id )
		write_byte(0)					 // TE_BEAMPOINTS
		engfunc( EngFunc_WriteCoord , fStartPos [ 0 ] )
		engfunc( EngFunc_WriteCoord , fStartPos [ 1 ] )
		engfunc( EngFunc_WriteCoord , fStartPos [ 2 ] )
		engfunc( EngFunc_WriteCoord , fEndPos [ 0 ] )
		engfunc( EngFunc_WriteCoord , fEndPos [ 1 ] )
		engfunc( EngFunc_WriteCoord , fEndPos [ 2 ] )
		write_short(laser)
		write_byte(1)
		write_byte(1)
		write_byte(1)
		write_byte(15)
		write_byte(0)
		write_byte( iR )
		write_byte( iG )
		write_byte( iB )
		write_byte(210)
		write_byte(0)
		message_end()

		xs_vec_copy( fEndPos , fStartPos );
		
		fVector[ 2 ]	-=			  floatmul( floatmul( fGrenadeGrav , fGrav ) , floatmul( fFraction , fStep ) );

		free_tr2( pTr );
	}
}

Efekt:
2012-01-17_00001.jpg
2012-01-17_00005.jpg
http://www.youtube.com/watch?v=RzXca9lTRBA

Wymagania:
#include <xs>
#include <fakemeta>
  • Pierwszy parametr to id gracza któremu pokazać drogę
  • Drugi to typ granatu czyli przyjmuje on wartości CSW_HEGRENADE , CSW_FLASHBANG lub CSW_SMOKEGRENADE
Przykład:
Wyświetlanie ścieżki kiedy gracz trzyma granat
public client_PreThink( id ){
	if( is_user_alive( id ) ){
		new iWeapon	=	get_user_weapon( id );
		
		if( iWeapon == CSW_HEGRENADE || iWeapon == CSW_SMOKEGRENADE || iWeapon == CSW_FLASHBANG ){
			showGrenadeWay( id , iWeapon );
		}
	}
}

  • +
  • -
  • 7

#2 Nakupenda.

    Not yet YODA

  • Użytkownik

Reputacja: 136
Zaawansowany

  • Postów:451
  • Imię:Paweł
  • Lokalizacja:Warszawa
Offline

Napisano 17.01.2012 14:49

jak rozumiem stock nie uwzględnia tego że np. gracz akurat biegnie (krzywa wygląda inaczej) albo podskakuje ?
  • +
  • -
  • 0

#3 DarkGL

    Nie oddam ciasteczka !

  • Autor tematu
  • Administrator

Reputacja: 6034
Godlike

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

Napisano 17.01.2012 14:50

uwzględnia
  • +
  • -
  • 3

#4 Nakupenda.

    Not yet YODA

  • Użytkownik

Reputacja: 136
Zaawansowany

  • Postów:451
  • Imię:Paweł
  • Lokalizacja:Warszawa
Offline

Napisano 17.01.2012 14:58

drugie pytanie: jeżeli chce żeby dla pewnego gracza, wyświetlanie działało ciągle jak tylko weźmie do reki granat i znikało jak zmieni broń - jak to zrobić?

Prethink ?
  • +
  • -
  • 0

#5 HaDeS From HELL

    CoD MoD Fanatyk

  • Użytkownik

Reputacja: 161
Profesjonalista

  • Postów:452
  • Lokalizacja:Szczecin
Offline

Napisano 17.01.2012 15:05

a to pokazuję każdemu czy tylko graczowi który rzucił granat ?
  • +
  • -
  • 0

#6 DarkGL

    Nie oddam ciasteczka !

  • Autor tematu
  • Administrator

Reputacja: 6034
Godlike

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

Napisano 17.01.2012 15:18

Nakupenda.
w prethinku
new iWeapon	=	get_user_weapon( id );
	
	if( iWeapon == CSW_HEGRENADE || iWeapon == CSW_SMOKEGRENADE || iWeapon == CSW_FLASHBANG ){
		showGrenadeWay( id , iWeapon );
	}

a to pokazuję każdemu czy tylko graczowi który rzucił granat ?

tylko temu którego id przekazałeś w pierwszym parametrze ( czyli można powiedzieć tylko osobie która trzyma granat )

Update 1 postu
  • +
  • -
  • 2

#7 Nakupenda.

    Not yet YODA

  • Użytkownik

Reputacja: 136
Zaawansowany

  • Postów:451
  • Imię:Paweł
  • Lokalizacja:Warszawa
Offline

Napisano 17.01.2012 16:15

write_byte(0)
write_byte(255)
write_byte(0)


to odpowiada za rgb ?


ok już się dowiedziałem że to rgb

no to ja proponuje tak :)


stock showGrenadeWay ( id , weapon ){
        new Float:fGrenadeGrav = 1.0;

        switch( weapon) {
        case CSW_HEGRENADE:
                fGrenadeGrav    =          0.55;
        case CSW_FLASHBANG:
                fGrenadeGrav    =          0.5;
        case CSW_SMOKEGRENADE:
                fGrenadeGrav    =          0.5;
        }
        static pGrav;
        
        if( !pGrav )    pGrav   =       get_cvar_pointer( "sv_gravity" );
        
        new Float:fStartPos[ 3 ] , Float: fViewOfs[ 3 ] , Float: fVector[ 3 ] , Float: fVeloc [ 3 ] , Float: fAngles [ 3 ] , Float: fEndPos [ 3 ] , Float: fTmpVector [ 3 ] , pTr , Float: fFraction , Float: fNormal [ 3 ] , iCollision = 0 , Float: fVel;
        new Float:fGrav =          get_pcvar_float( pGrav ) , pHit = 0;

        const            maxCollsion            =          30;
        const Float:    fConstAliveTime         =          2.0;
        const Float:    fConstLoops             =          20.0;
        new Float:      fAliveTime              =          0.0;
        new Float:      fStep                   =          fConstAliveTime / fConstLoops;

        pev( id , pev_origin , fStartPos );
        pev( id , pev_view_ofs , fViewOfs );
        pev( id , pev_velocity , fVeloc );
        pev( id , pev_v_angle , fAngles );

        xs_vec_add( fStartPos , fViewOfs , fStartPos );

        if (fAngles[0] < 0)
                fAngles[0] = -10.0 + fAngles[0] * ((90.0 - 10.0) / 90.0);
        else
                fAngles[0] = -10.0 + fAngles[0] * ((90.0 + 10.0) / 90.0);

        fVel = (90.0 - fAngles[0]) * 6.0;
        if (fVel > 750.0)
                fVel = 750.0;

        pev( id , pev_v_angle , fAngles );

        angle_vector( fAngles , ANGLEVECTOR_FORWARD , fVector );

        xs_vec_mul_scalar( fVector , 16.0 , fTmpVector );

        xs_vec_add( fStartPos , fTmpVector , fStartPos );

        xs_vec_mul_scalar( fVector , fVel , fVector );

        xs_vec_add( fVector , fVeloc , fVector );


        for( ; fAliveTime < fConstAliveTime ; fAliveTime += fStep ){

                xs_vec_copy( fStartPos , fEndPos);
                xs_vec_mul_scalar( fVector , fStep , fTmpVector );
                xs_vec_add( fEndPos , fTmpVector , fEndPos );

                pTr      =         create_tr2();

                engfunc(EngFunc_TraceLine, fStartPos, fEndPos, DONT_IGNORE_MONSTERS, id, pTr )
                
                if( fAliveTime == 0.0 ){
                        fStartPos [ 2 ] += 10.0;
                }

                get_tr2( pTr , TR_flFraction , fFraction);

                pHit    =          get_tr2( pTr , TR_pHit );

                if( pHit != id && fFraction < 1.0 ){
                        get_tr2( pTr , TR_vecEndPos , fEndPos );
                        
                        get_tr2( pTr , TR_vecPlaneNormal , fNormal )
                        
                        if( fNormal [ 2 ] > 0.9 && fVector [ 2 ] <= 0.0 && fVector [ 2 ] >= -fGrav / 0.20 ){
                                return ;
                        }

                        new Float: fScalar = xs_vec_dot( fVector, fNormal ) * 1.3;

                        fVector[0] = fVector[0] - fScalar * fNormal[0];
                        fVector[1] = fVector[1] - fScalar * fNormal[1];
                        fVector[2] = fVector[2] - fScalar * fNormal[2];

                        iCollision++;

                        if(  iCollision > maxCollsion )
                        break;

                        fAliveTime        -=      fStep   *        ( 1.0 - fFraction ) ;
                }

                switch( weapon ) {
                case CSW_HEGRENADE:
                    {
                r = 250
                g = 0
                b = 0
            }
                case CSW_FLASHBANG:
                     {
                r = 0
                g = 0
                b = 250
            }
                case CSW_SMOKEGRENADE:
                    {
                r = 0
                g = 250
                b = 0
            }
            }
        
        linia(id, r, g, B)

                xs_vec_copy( fEndPos , fStartPos );
                
                fVector[ 2 ]    -=        floatmul( floatmul( fGrenadeGrav , fGrav ) , floatmul( fFraction , fStep ) );

                free_tr2( pTr );
        }

}

stock linia(id, r, g, b )
{
        message_begin( MSG_ONE_UNRELIABLE , SVC_TEMPENTITY , { 0 , 0 , 0 } , id )
                write_byte(0)              // TE_BEAMPOINTS
                engfunc( EngFunc_WriteCoord , fStartPos [ 0 ] )
                engfunc( EngFunc_WriteCoord , fStartPos [ 1 ] )
                engfunc( EngFunc_WriteCoord , fStartPos [ 2 ] )
                engfunc( EngFunc_WriteCoord , fEndPos [ 0 ] )
                engfunc( EngFunc_WriteCoord , fEndPos [ 1 ] )
                engfunc( EngFunc_WriteCoord , fEndPos [ 2 ] )
                write_short(laser)
                write_byte(1)
                write_byte(1)
                write_byte(1)
                write_byte(15)
                write_byte(0)
                write_byte( r )
                write_byte( g )
                write_byte( b )
                write_byte(210)
                write_byte(0)
                message_end()
}

Użytkownik Nakupenda. edytował ten post 18.01.2012 22:21

  • +
  • -
  • 0

#8 Nenczoks

    Banned

  • Zbanowany

Reputacja: 50
Pomocny

  • Postów:358
  • Lokalizacja:Warszawa
Offline

Napisano 17.01.2012 16:26

Tak.

#9 DarkGL

    Nie oddam ciasteczka !

  • Autor tematu
  • Administrator

Reputacja: 6034
Godlike

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

Napisano 17.01.2012 17:06

kosmetyka
po za tym nie musisz przenosić message do nowej funkcji
  • +
  • -
  • 0

#10 Nakupenda.

    Not yet YODA

  • Użytkownik

Reputacja: 136
Zaawansowany

  • Postów:451
  • Imię:Paweł
  • Lokalizacja:Warszawa
Offline

Napisano 17.01.2012 17:13

ale tak mi się podoba. ^D^

dzięki, zobaczę jak to działa w praktyce i zedytuje
  • +
  • -
  • 0

#11 DarkGL

    Nie oddam ciasteczka !

  • Autor tematu
  • Administrator

Reputacja: 6034
Godlike

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

Napisano 18.01.2012 00:38

Dodałem filmik do pierwszego postu
  • +
  • -
  • 0

#12 Fili:P

    Koleżeński

  • Power User

Reputacja: 752
Guru

  • Postów:1679
  • GG:
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Radom
Offline

Napisano 18.01.2012 09:01

        laser   =       precache_model("sprites/laserbeam.spr")
To jest podstawowy plik cs-a ?
Jak nie to proszę o download w załączniku :]
  • +
  • -
  • 0

BMXers.pl - Portal o tematyce BMX


#13 DarkGL

    Nie oddam ciasteczka !

  • Autor tematu
  • Administrator

Reputacja: 6034
Godlike

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

Napisano 18.01.2012 12:48

To jest podstawowy plik cs-a ?

tak
  • +
  • -
  • 0

#14 DarkGL

    Nie oddam ciasteczka !

  • Autor tematu
  • Administrator

Reputacja: 6034
Godlike

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

Napisano 18.01.2012 13:11

Update pierwszego posta
  • +
  • -
  • 0

#15 Nakupenda.

    Not yet YODA

  • Użytkownik

Reputacja: 136
Zaawansowany

  • Postów:451
  • Imię:Paweł
  • Lokalizacja:Warszawa
Offline

Napisano 18.01.2012 14:03

jak już skopiowałeś kod z mojego posta, to przydałoby się mu przyjrzeć ;)


			  

write_byte( r )
write_byte( g )
write_byte( b )


powinnio być

			  
write_byte( iR )
write_byte( iG )
write_byte( iB )

Użytkownik Nakupenda. edytował ten post 18.01.2012 14:05

  • +
  • -
  • 0

#16 DarkGL

    Nie oddam ciasteczka !

  • Autor tematu
  • Administrator

Reputacja: 6034
Godlike

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

Napisano 18.01.2012 14:07

ach ta kosmetyka ^D^
  • +
  • -
  • 0

#17 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1339
Godlike

  • Postów:3556
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 18.01.2012 20:28

nakupenda a kompilowales twój kod ? bo on bledny jest :D

Użytkownik G[o]Q edytował ten post 18.01.2012 20:29

  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#18 Nakupenda.

    Not yet YODA

  • Użytkownik

Reputacja: 136
Zaawansowany

  • Postów:451
  • Imię:Paweł
  • Lokalizacja:Warszawa
Offline

Napisano 18.01.2012 21:50

nie xD

jakie errory? Przecież prawie nic tam nie zmieniłem.. :P
  • +
  • -
  • 0

#19 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1339
Godlike

  • Postów:3556
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 18.01.2012 21:52

nie masz parametru id w twojej funkcji od linii a uzywasz czegos takiego xD
  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#20 Nakupenda.

    Not yet YODA

  • Użytkownik

Reputacja: 136
Zaawansowany

  • Postów:451
  • Imię:Paweł
  • Lokalizacja:Warszawa
Offline

Napisano 18.01.2012 22:30

poprawiłem :D
  • +
  • -
  • 0




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

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