←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Pytanie, jak to napisać, czym to się różni?

Zablokowany

GoldeN - zdjęcie GoldeN 14.12.2010

Witam, mam kilka pytań..

1. Jak mogę zablokować zakładanie tłumika na np. M4A1?
2. Jak mogę wykonać sprite, który idzie od bytu, na gracza?

3. Czym różni się:

register_event("Damage", "Damage", "b", "2!0")


Od:

RegisterHam(Ham_TakeDamage, "player", "TakeDamage");


4. Jak mogę stworzyć, że gdy gracz żyje, wciśnie E to na kilka sekund ma tzw. "freecam", czyli postać stoi, a my lecimy myszką i strzałkami po mapie?
5. Jak sprawdzić, czy gracz w kogoś celuje?
Użytkownik GoldeNx3 edytował ten post 14.12.2010 16:45
Odpowiedz

  • +
  • -
Ortega - zdjęcie Ortega 14.12.2010

1.
    #include <amxmodx>
#include <hamsandwich>
#include <fakemeta>

const m_flNextSecondaryAttack = 47;

public plugin_init()
{
register_plugin( "Block M4A1 Secondary Attack", "1.0", "Arkshine" );

RegisterHam( Ham_Weapon_PrimaryAttack, "weapon_m4a1", "Event_BlockSecondaryAttack" , 1 );
RegisterHam( Ham_Item_Deploy , "weapon_m4a1" , "Event_BlockSecondaryAttack", 1 );
}

public Event_BlockSecondaryAttack ( const Entity )
{
set_pdata_float( Entity , m_flNextSecondaryAttack , 9999.0, 4 );
}

3. Wersja Hamsandwich rejestruje każde obrażenia, nawet generic.
5. AMX Mod X - Half-Life Scripting for Pros!
Odpowiedz

GoldeN - zdjęcie GoldeN 14.12.2010

Czyli w:

register_event("Damage", "Damage", "b", "2!0")


Mogę wykonać sprite na który ciągnie się od atakującego do obrywającego?

A jeżeli chce zablokować np. na Glocku Multi-Strzał? I jak chcę większość broni zablokować, to wystarczy, że dodam linijkę do init tak jak wyżej tylko z inną bronią?

Czekam na 2 i 4. :D

@Edit:

Testowałem i nie działa:

public Event_BlockSecondaryAttack ( const Entity )
{
if(sm_tlumik[Entity] == 1)
{
set_pdata_float( Entity , m_flNextSecondaryAttack , 9999.0, 4 );
}
}


Reszta jak powyżej dodana.
Użytkownik GoldeNx3 edytował ten post 14.12.2010 17:41
Odpowiedz

FreZZy - zdjęcie FreZZy 14.12.2010

4. Na poke jest takie chyba w kadabrze ;) możesz pokombinować z tym
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 15.12.2010

#include <amxmodx>

    #include <hamsandwich>

    #include <fakemeta>



    const m_flNextSecondaryAttack = 47;

    

    public plugin_init() 

    {

        register_plugin( "Block M4A1 Secondary Attack", "1.0", "Arkshine" );

        

        RegisterHam( Ham_Weapon_PrimaryAttack, "weapon_m4a1", "Event_BlockSecondaryAttack" , 0 );

        RegisterHam( Ham_Item_Deploy , "weapon_m4a1" , "Event_BlockSecondaryAttack", 0);

    }



    public Event_BlockSecondaryAttack ( const Entity )

    {

        set_pdata_float( Entity , m_flNextSecondaryAttack , 9999.0, 4 );

         return HAM_SUPERCEDE;

    }
Odpowiedz

  • +
  • -
Ortega - zdjęcie Ortega 15.12.2010

G[o]Q, testowałeś najpierw czy bez return działa poprawnie ? Ja wnioskuję, że Arkshine zna się deczko lepiej od nas bez urazy :) Dlatego tez przytoczyłem jego kod, bo mój pewnie miałby gdzieś błąd.
Tak poza tym, to supercede w post nic nie da więc...
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 15.12.2010

nie wiem kto ci powiedzial ze 0 to post no ale ok :D wiec wystarczy nr zmienic a supercede tez dalem zle bo gosc w ogóle broni nie dostanie :D
Odpowiedz

  • +
  • -
Ortega - zdjęcie Ortega 15.12.2010

Wiesz ja już sam nie wiem, a nie mam jak sprawdzić czy 0 jest post czy 1. Spotkałem się w kilku poważnych kodach, że 1, natomiast w dokumentacji jest 0=post. Arkshine tutaj użył 1 czyli jakby patrzeć do dokumentacji to pre.

@GoldeNx3
Ciekawe, że nie działa skoro traktujesz Entity jako gracza. To słowo jednak ma tutaj inne znaczenie chociaż gracz też jest bytem. Tutaj funkcja wyłapuje każdy byt z classname m4. Jeśli uda Ci się tak zmodować grę, żebyś grał bronią, a nie postacią to wtedy zadziała.
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 15.12.2010

Post=0 a czy to nie oznacza ze jest to parametr domniemany i ma wartosc 0(false czyt nie post) :?: czyli pre
Odpowiedz

  • +
  • -
Ortega - zdjęcie Ortega 15.12.2010

W sensie
func( ... ,  true ? post : pre );
Jest to możliwe. Tak czy inaczej nie wiem czy supercede jest w tym przypadku konieczny.

Dobra zachciało mi się to raz na zawsze sprawdzić:
Forward *pfwd=new Forward(fwd);
if (post)
{
hook->post.push_back(pfwd);
}
else
{
hook->pre.push_back(pfwd);
}
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 15.12.2010

no czyli wychodzi na to ze arkshire gafe jeb*ął :D supercede zbedny bo wtedy broni nie dostanie i bedzie strzelac z kosy :D
Odpowiedz

  • +
  • -
Ortega - zdjęcie Ortega 15.12.2010

No ale ten OFFSET się zmienia po strzale każdym w CS, więc gdyby dał jako pre to gra by zdążyła zmienić :)
Odpowiedz

GoldeN - zdjęcie GoldeN 16.12.2010

To w końcu która funkcja będzie dobra?
Odpowiedz

  • +
  • -
Ortega - zdjęcie Ortega 16.12.2010

Wiem, że sprawdzić jest trudno. Prawdopodobnie ta co dałem zadziała poprawnie.
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 16.12.2010

hmm ewentualnie w pre seccondary attacku ustawiac offset moze sie nie zmieni i/lub ewentualnie supercede zwrocic :D
Odpowiedz
Zablokowany