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
 

poloo89 - zdjęcie

poloo89

Rejestracja: 03.04.2012
Aktualnie: Nieaktywny
Poza forum Ostatnio: 15.05.2012 15:43
-----

#400408 problem z popychaniem/podrzucaniem gracza.

Napisane przez mierzwi w 22.04.2012 19:23

jak nie chcesz żeby ich mocno do góry wy***rdalało to sprawdź czy fVeloc 0 i 1 są mniejsze np. od 100, jak tak to wtedy ustaw mocne wybicie w górę.


#400224 problem z popychaniem/podrzucaniem gracza.

Napisane przez mierzwi w 22.04.2012 13:26

o boże, znów mój mały błąd HAHA :D sory ale w nocy pisane i to jeszcze po imprezie :D set_pev musi być :lol:
set_pev( iTouched, pev_velocity, fVeloc[ 1 ] ); /* USTAWIAMY TYLKO DLA TEGO CO MA ODEPCHAĆ */



#398835 Jak sprawdzić czy gracz jest ostanim żywym ?

Napisane przez mierzwi w 18.04.2012 17:15

nie. jak gracz jest ostatni w swoim teamie to zwróci false, jak jeszcze ktoś z jego teamu żyje poza nim to zwróci true.
przykładowy kod (użyłem !hasTeammateAlive)
public _func_Check( id )
{
    new _iTeam = get_user_team( id );
    
    if( !hasTeammateAlive( id, _iTeam ) )
    {
        new sName[ 32 ];
        get_user_name( id, sName, sizeof ( sName ) - 1 );
    
        client_print(0, print_chat, "** UWAGA ** %s jest ostatnim zywym %s!!!", sName, _iTeam == 1 ? "terrorysta" : "anty-terrorysta" );
    }
}

bool:hasTeammateAlive( index, team )
{
    for( new i = 1; i <= get_maxplayers(); i++ )
    {
        if( i == index )
            continue;
        
        if( is_user_alive( i ) && get_user_team( i ) == team )
            return true;
    }
    return false;
}



#398591 [ROZWIĄZANE] [BIOHAZARD] Problem z funkcją warunkową if()

Napisane przez Gość w 17.04.2012 20:50

Funkcja Ham_TraceAttack przyjmuje parametry
victim, attacker, Float:damage, Float:direction[3], tracehandle, damagetype
i żadnych innych. m.in. victim oznacza ofiarę (atakowanego), attacker - id atakującego, itd. (RTFM)

Pierwszy parametr jest zatem ofiarą, drugi atakującym, reszta nie ma dla naszego problemu znaczenia.
Jeśli dopisałeś sobie id na początku, to od teraz id jest numerem ofiary, a zmienna victim przyjmuje wartość (czyt. z Manuala) numeru id atakującego.
Stąd jeśli w kodzie sprawdzając w domyśle, czy victim żyje, tak naprawdę sprawdzasz, czy żyje atakujący, zaczną się w tym kodzie dziać dziwne cuda niewida,
a nie będziesz wiedział o co chodzi. NIE MOŻESZ dopisać sobie od tak parametru w predefiniowanej, includowanej funkcji, zwłaszcza na początku.


1. Usuń to id na początku, bo zmienna victim będzie reprezentować atakującego i wszystko się nam pomiesza.
2. Skoro już wiesz, że numerem id ofiary (z manuala) jest zmienna victim, to zamiast sprawdzać if(g_czas[id]), sprawdź if(g_czas[victim])
I napisz, czy teraz działa.




#397746 [ROZWIĄZANE] Migająca poświata gracza...

Napisane przez mierzwi w 15.04.2012 23:15

parametr "(life in 10's)" ustaw na większy/mniejszy, pokombinuj.

#define TE_DLIGHT				   27	   // Dynamic light, effect world, minor entity effect

// write_byte(TE_DLIGHT)

// write_coord(position.x)

// write_coord(position.y)

// write_coord(position.z)

// write_byte(radius in 10's)

// write_byte(red)

// write_byte(green)

// write_byte(blue)

// write_byte(brightness)

// write_byte(life in 10's)

// write_byte(decay rate in 10's)



#394643 [ROZWIĄZANE] Jak zastosować funkcję natywną.

Napisane przez Gość w 09.04.2012 15:03

Założę, że kompilujesz lokalnie.

Tworzysz sobie bibliotekę, niech będzie antidotum.inc o treści:
#if defined _ANTIDOTUM_included
#endinput
#endif
#define _ANTIDOTUM_included
#pragma library "ANTIDOTUM"
native menu_broni_biohazard(id);
i wrzucasz do katalogu /include

Następnie w pluginie z MenuBroni dodajesz na początku:
#include <ANTIDOTUM>
a w kodzie właściwym
public plugin_natives(){
register_library("ANTIDOTUM");
register_native("menu_broni_biohazard", "n_menu_broni");
}
public n_menu_broni(plugin, params){
new id = get_param(1);
menu_broni(id);
}
dzięki czemu, stworzyliśmy bibliotekę, informującą, że menu_broni_biohazard jest funkcją natywną, a w pluginie biohazard includujesz jedynie antidotum.inc:
#include <ANTIDOTUM>

oraz w miejscu, gdzie trzeba, po prostu używasz funkcji natywnej poprzez menu_broni_biohazard(id).
Wszystko powinno działać, chyba, że się gdzieś machnąłem.