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.
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.
|
DEADP00L
Rejestracja: 20.10.2012Aktualnie: Nieaktywny
Poza forum Ostatnio: 21.04.2024 00:31
O mnie
MAM DO SPRZEDANIA UNIKALNY MOD
CS:GO MOD pod serwery CS 1.6
!!!
Statystyki
- Grupa: Użytkownik
- Całość postów: 169
- Odwiedzin: 7 133
- Tytuł: Profesjonalista
- Wiek: 30 lat
- Urodziny: Luty 20, 1994
-
Imię
Bart
-
Płeć
Mężczyzna
-
Lokalizacja
United Kingdom
-
Zainteresowania
Wordpress & WooCommerce, Photography
Kontakt
- Steam 76561198128220930
Narzędzia użytkownika
Moje posty
W temacie: Funkcja rzucania granatem dymnym
20.02.2024 17:09
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
- AMXX.pl: Support AMX Mod X i SourceMod
- → Przeglądanie profilu: Posty: DEADP00L
- Regulamin