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
 

DEADP00L - zdjęcie

DEADP00L

Rejestracja: 20.10.2012
Aktualnie: Nieaktywny
Poza forum Ostatnio: 21.04.2024 00:31
*****

Moje posty

W temacie: Funkcja rzucania granatem dymnym

20.02.2024 17:09

jakieś małe podpowiedzi czy jest wogóle możliwość ogarnięcia czegoś takiego? Dodam, że znalazłem jakąś funkcje stworzoną przy użyciu modułu ORPHEU ale zależałby mi na tym aby była to funkcja bez tego modułu.

W temacie: [ROZWIĄZANE] Visual Damage (sprites)

17.12.2023 04:59

 

dodaj else if jesli owner jest rozny od host z

set_es( es_handle, ES_Effects, EF_NODRAW );

 

działa! temat do zamknęcia :) 

W temacie: [ROZWIĄZANE] Problem z odczytywaniem adresu IP gracza z bazy danych (SQL)

22.10.2023 19:48

 


Kiedy tworze zmienną adres_ip[33]

 

Zamiast tego potrzebujesz dwuwymiarową tablicę: adres_ip[33][33] - jeden wymiar na id gracza, drugi na ip.

Wtedy to:

 

 


adres_ip[id] = SQL_ReadResult(Query, 3);

zamieniasz na to:

SQL_ReadResult(Query, 3, adres_ip[id], charsmax(adres_ip[]));

Aktualnie próbujesz zapisać ip jako int, co jest bezsensowne.

 

 

Podziękowal! Temat do zamkniecia.

 

Wczesniej robilem podobnie z tym, ze nie wiem skad mi sie to wzielo ale mialem dodane tam: SQL_ReadResult(Query, 3, adres_ip[id], charsmax(adres_ip[])-1);

W temacie: TakeDamage_Pre - sprawdzenie funkcji

28.05.2023 21:02

Czym są te floaty w hit_area?

Generalnie zamiast robić switcha to pewnie dałoby radę zrobić to z jednym ifem:

if(bitsDamageType & DMG_BULLET && get_pdata_int(id, m_iTeam, XTRA_OFS_PLAYER) != get_pdata_int(iAttacker, m_iTeam, XTRA_OFS_PLAYER))
    SetHamParamFloat(4, hit_area[hitbox][id_based_on_weapon_id]);

Zakładając, że id_based_on_weapon_id będzie jakoś sensownie wyznaczany.

No i jeszcze kwestia HE, bo tam pewnie jest DMG_* inne, więc nie złapałby go if.

 

Zrobiłem to w taki sposób, tak jak napisałeś wyżej:

#define IsPlayer(%1) (1 <= %1 <= g_iMaxPlayers)
new g_iMaxPlayers;

new const Float:hit_area[][] = {
    // 0    1    2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22    23   24   25   26   27   28   29    30
    { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0 },  // HIT_GENERIC
    { 0.0, 5.0, 0.0, 5.0, 0.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 20.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 10.0, 5.0 },  // HIT_HEAD
    { 0.0, 5.0, 0.0, 5.0, 0.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,  5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 10.0, 5.0 },  // HIT_CHEST
    { 0.0, 5.0, 0.0, 5.0, 0.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,  5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 10.0, 5.0 },  // HIT_STOMACH
    { 0.0, 5.0, 0.0, 5.0, 0.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,  5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 10.0, 5.0 },  // HIT_LEFTARM
    { 0.0, 5.0, 0.0, 5.0, 0.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,  5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 10.0, 5.0 },  // HIT_RIGHTARM
    { 0.0, 5.0, 0.0, 5.0, 0.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,  5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 10.0, 5.0 },  // HIT_LEFTLEG
    { 0.0, 5.0, 0.0, 5.0, 0.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,  5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 10.0, 5.0 },  // HIT_RIGHTLEG
    { 0.0, 5.0, 0.0, 5.0, 0.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,  5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 10.0, 5.0 }   // HIT_SHIELD
}

public plugin_init() {
    RegisterHam(Ham_TakeDamage, "player", "Ham_CBasePlayer_TakeDamage_Pre", 0);
    g_iMaxPlayers = get_maxplayers();
}

public Ham_CBasePlayer_TakeDamage_Pre(id, iInflictor, iAttacker, Float:flDamage, bitsDamageType) {
    if(id != iAttacker && IsPlayer(iAttacker)) {
        const XTRA_OFS_PLAYER = 5; const m_LastHitGroup = 75; const m_iTeam = 114;
        new wid, weapon = GetUserWeapon(iAttacker,wid), hitbox = get_pdata_int(id, m_LastHitGroup, XTRA_OFS_PLAYER);

        if(bitsDamageType & DMG_BULLET && get_pdata_int(id, m_iTeam, XTRA_OFS_PLAYER) != get_pdata_int(iAttacker, m_iTeam, XTRA_OFS_PLAYER))
            SetHamParamFloat(4, hit_area[hitbox][weapon]);

        return HAM_OVERRIDE 
    }
    return HAM_IGNORED
}

GetUserWeapon(id,&wid=0) {
	const m_pActiveItem = 373
	const m_iId = 43
	if(!is_user_alive(id) || pev_valid((wid = get_pdata_cbase(id,m_pActiveItem,5))) != 2)	return 0
	
	return get_pdata_int(wid,m_iId,4)
}

Ponumerowałem sobie ID broni od 0 do 30, tak abym potem wiedział w której broni zmieniam DMG. 

 

Co do *HE_, to to akurat nie będzie mi potrzebne dlatego ustawiłem przy każdym granacie float 0.0, tak samo jak i przy C4. 

Ten plugin jest uruchomiony na Zombie Modzie, gdzie nie ma standardowych granatów wybuchających tylko podpalających. 

 

Daj znać czy teraz plugin jest bardziej zoptymalizowany ;)

W temacie: TakeDamage_Pre - sprawdzenie funkcji

28.05.2023 20:28


Czym są te floaty w hit_area?

 

Obrażenia w zależności od tego czy trafiliśmy w głowe, klate, noge itp

 

Dałem tam przykład pod 3 bronie, FiveSeven, M4A1 oraz Knife