←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] Funkcja przyciągnięcia gracza...


Najlepsza odpowiedź MarWit 16.04.2013 15:24

id - gracz/byt przyciągający

iEnt - gracz/byt przyciągany

fSpeed - szybkość z jaką gracz/byt jest przyciągany

#include < amxmodx >
#include < fakemeta >
 
public plugin_init( )
    register_clcmd( "say /test", "cmdTest" );
 
public cmdTest( id )
    for( new i = 1; i < 33; i ++ ) if( is_user_alive( i ) && id != i ) pullIt( id, iEnt, random_float( 500.0, 900.0 ) )
 
stock pullIt( id, iEnt, Float: fSpeed )
{
    new Float: fOrigin[ 2 ][ 3 ];

    pev( id, pev_origin, fOrigin[ 0 ] );
    pev( iEnt, pev_origin, fOrigin[ 1 ] )

    new Float: fDistance = floatsqroot(
        floatpower( fOrigin[ 0 ][ 0 ] - fOrigin[ 1 ][ 0 ], 2.0 ) +
        floatpower( fOrigin[ 0 ][ 1 ] - fOrigin[ 1 ][ 1 ], 2.0 ) +
        floatpower( fOrigin[ 0 ][ 2 ] - fOrigin[ 1 ][ 2 ], 2.0 )
    );

    fOrigin[ 0 ][ 0 ] = ( ( fOrigin[ 0 ][ 0 ] - fOrigin[ 1 ][ 0 ] ) * fSpeed ) / fDistance;
    fOrigin[ 0 ][ 1 ] = ( ( fOrigin[ 0 ][ 1 ] - fOrigin[ 1 ][ 1 ] ) * fSpeed ) / fDistance;
    fOrigin[ 0 ][ 2 ] = ( ( fOrigin[ 0 ][ 2 ] - fOrigin[ 1 ][ 2 ] ) * fSpeed ) / fDistance;

    set_pev( iEnt, pev_velocity, fOrigin[ 0 ] );
}
Przejdź do postu
Zablokowany

  • +
  • -
Raen - zdjęcie Raen 14.04.2013

Witam.
Szukam funkcji która pozwoli przyciągnąć gracza A do gracza B czyli do mnie. Może być to plugin, perk, klasa obojętne mi to potrzebuję sam kod. Wydaje mi się że widziałem taki perk ale teraz za nic go znaleźć nie mogę. Liczę na Waszą pomoc i z góry dziękuję ;)

Odpowiedz

  • +
  • -
GwynBleidD - zdjęcie GwynBleidD 15.04.2013

Złap sobie plugin na hooka i odwróć działanie (zamiast gracz strzelać w ścianę, ściana będzie strzelać w gracza i go przyciągać). Następnie wymienić ścianę na drugiego gracza i gotowe

Odpowiedz

  • +
  • -
Raen - zdjęcie Raen 15.04.2013

Hmm.. nie wiem czy sobie z tym poradzę, ale cóż będę musiał spróbować. A nie ma gdzieś gotowego pluginu? Wydaje mi się że gdzieś widziałem taki perk ale nie jestem tego pewien.

Odpowiedz

  • +
  • -
sNH. - zdjęcie sNH. 15.04.2013

Nie było czegoś podobnego na zombie? 1 mógł przyciągać 2? I dodać ten sam efekt? Dobrze nie pamiętam bo z zombie bawiłem się dawno temu, ale możesz poszukać.

Odpowiedz

Longlin - zdjęcie Longlin 15.04.2013

jest taka klasa zombie na allienie , nazywała się faraon na polskich serwerach xD

Odpowiedz

  • +
  • -
MarWit - zdjęcie MarWit 16.04.2013

stock pullIt( id, iEnt, Float: fSpeed )
{
    new Float: fOrigin[ 2 ][ 3 ];

    pev( id, pev_origin, fOrigin[ 0 ] );
    pev( iEnt, pev_origin, fOrigin[ 1 ] )

    new Float: fDistance = floatsqroot(
        floatpower( fOrigin[ 0 ][ 0 ] - fOrigin[ 1 ][ 0 ], 2.0 ) +
        floatpower( fOrigin[ 0 ][ 1 ] - fOrigin[ 1 ][ 1 ], 2.0 ) +
        floatpower( fOrigin[ 0 ][ 2 ] - fOrigin[ 1 ][ 2 ], 2.0 )
    );

    fOrigin[ 0 ][ 0 ] = ( ( fOrigin[ 0 ][ 0 ] - fOrigin[ 1 ][ 0 ] ) * fSpeed ) / fDistance;
    fOrigin[ 0 ][ 1 ] = ( ( fOrigin[ 0 ][ 1 ] - fOrigin[ 1 ][ 1 ] ) * fSpeed ) / fDistance;
    fOrigin[ 0 ][ 2 ] = ( ( fOrigin[ 0 ][ 2 ] - fOrigin[ 1 ][ 2 ] ) * fSpeed ) / fDistance;

    set_pev( iEnt, pev_velocity, fOrigin[ 0 ] );
}

Użytkownik MarWit edytował ten post 16.04.2013 20:32
Błąd z typami zmiennych
Odpowiedz

  • +
  • -
Raen - zdjęcie Raen 16.04.2013

Mógłbyś podać przykładowe zastosowanie? Załóżmy że chcę przyciągnąć gracza do siebie tylko jak tego użyć? Id to ja, a iEnt to drugi gracz? No i po co to fSpeed? :)

Odpowiedz

  • +
  • -
Najlepsza odpowiedź MarWit - zdjęcie MarWit 16.04.2013

id - gracz/byt przyciągający

iEnt - gracz/byt przyciągany

fSpeed - szybkość z jaką gracz/byt jest przyciągany

#include < amxmodx >
#include < fakemeta >
 
public plugin_init( )
    register_clcmd( "say /test", "cmdTest" );
 
public cmdTest( id )
    for( new i = 1; i < 33; i ++ ) if( is_user_alive( i ) && id != i ) pullIt( id, iEnt, random_float( 500.0, 900.0 ) )
 
stock pullIt( id, iEnt, Float: fSpeed )
{
    new Float: fOrigin[ 2 ][ 3 ];

    pev( id, pev_origin, fOrigin[ 0 ] );
    pev( iEnt, pev_origin, fOrigin[ 1 ] )

    new Float: fDistance = floatsqroot(
        floatpower( fOrigin[ 0 ][ 0 ] - fOrigin[ 1 ][ 0 ], 2.0 ) +
        floatpower( fOrigin[ 0 ][ 1 ] - fOrigin[ 1 ][ 1 ], 2.0 ) +
        floatpower( fOrigin[ 0 ][ 2 ] - fOrigin[ 1 ][ 2 ], 2.0 )
    );

    fOrigin[ 0 ][ 0 ] = ( ( fOrigin[ 0 ][ 0 ] - fOrigin[ 1 ][ 0 ] ) * fSpeed ) / fDistance;
    fOrigin[ 0 ][ 1 ] = ( ( fOrigin[ 0 ][ 1 ] - fOrigin[ 1 ][ 1 ] ) * fSpeed ) / fDistance;
    fOrigin[ 0 ][ 2 ] = ( ( fOrigin[ 0 ][ 2 ] - fOrigin[ 1 ][ 2 ] ) * fSpeed ) / fDistance;

    set_pev( iEnt, pev_velocity, fOrigin[ 0 ] );
}

Użytkownik MarWit edytował ten post 16.04.2013 20:33
Pop. bład z typami
Odpowiedz

  • +
  • -
Raen - zdjęcie Raen 16.04.2013

Dzięki bardzo, można zamknąć ;)

Odpowiedz
Zablokowany