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
 

OfertaDni - zdjęcie

OfertaDni

Rejestracja: 24.10.2016
Aktualnie: Nieaktywny
Poza forum Ostatnio: 20.11.2017 17:23
-----

Moje posty

W temacie: Informacja przy wibici lvl bądź expa

09.11.2017 12:38

Podaj kod swojego pluginu (twojego, nie tego na którym 'bazujesz')


public SprawdzPoziom( zeka )
{
	while( Exp[ zeka ] >= WymaganyExp( Poziom[ zeka ] ) && Poziom[ zeka ] < MAXPOZIOM )
		Poziom[ zeka ] ++
	
	new name[ 35 ]
	get_user_name( zeka, name, 34 )

if(Poziom[zeka] == 50)
{
		ColorChat(zeka, GREEN, "^x01 Gracz^x04 %s^x01 osiagnal^x04 50 Poziom^x01!",name)
}

}
Całego .sma nie mogę wysłać bo jest w nim dużo rzeczy ode mnie, ale ta funkcja nie została zmieniona jest taka sama jak w oryginale.

W temacie: Informacja przy wibici lvl bądź expa

09.11.2017 00:02

Tak wygląda kod wspominanej funkcji we wspomnianym wyżej kodzie pluginu:

public SprawdzPoziom( zeka )
{
	while( Exp[ zeka ] >= WymaganyExp( Poziom[ zeka ] ) && Poziom[ zeka ] < MAXPOZIOM )
		Poziom[ zeka ] ++
}
Kolega wyżej już napisał, jak powinno wyglądać rozwiązanie:
public SprawdzPoziom(id)
{    
    while( Exp[ id ] >= WymaganyExp( Poziom[ id ] ) && Poziom[ id ] < MAXPOZIOM ){
        Poziom[ id ] ++
        if(Poziom[id] == 50)
        {
            new name[ 35 ];
            get_user_name( id, name, 34 );

            client_print(0,print_chat,"Gracz %s wbil 50 Poziom.Gratulacje",name);
        }
    }
}
Informacja na czacie nie ma prawa ukazać więcej niż jeden raz (tylko wtedy, gdy następuje awans na poziom - w tym wypadku - 50).
Ogólnie plug pisany raczej for-fun, bo na optymalizacji podupada. Nie mówiąc już o samym stylu nazewnictwa...
 
Cały kod pluginu:


No i w tym problem, że jeśli wbije ten 50 i potem kogoś zabije ale ten ktoś nie da mu tyle expa by wbił się 51 to ta informacja i tak się wyświetla po raz kolejny.
I takie drugie pytanko, jak zrobić by wiadomość wyświetlała się jeśli exp jest pomiędzy 24200 a 24240? Mam takie coś ale nie chce się w ogóle wyświetlić.
if(Exp[zeka] == 24200 && Exp[zeka] <= 24240)

W temacie: Informacja przy wibici lvl bądź expa

08.11.2017 21:55

Do tego chciałem też zrobić informacje gdy wbije określoną ilość expa ale tej informacji nie wyświetla :/ Strzelam, że to wina tego iż informacja wymaga np. 40000 XP a gracz wbije 40100 i już d*pa nie wyświetla :(

Określ jaką maksymalnie ilość expa może dostać gracz za zabójstwo, asysty itd. łącznie, a potem zrób zakres. if(xp>40000&&<40150) (przykładowo) ale musisz się liczyć z możliwością podwójnego wyświetlenia informacji.


Jeśli chodzi o exp to właśnie o takim czymś myślałem, lecz nadal nie wiem jak rozwiązać sprawę z informacją za level.

W temacie: Informacja przy wibici lvl bądź expa

08.11.2017 21:29

Do tego chciałem też zrobić informacje gdy wbije określoną ilość expa ale tej informacji nie wyświetla :/ Strzelam, że to wina tego iż informacja wymaga np. 40000 XP a gracz wbije 40100 i już d*pa nie wyświetla :(

W temacie: Problem z dodaniem DMG

08.11.2017 17:01

Ham_TakeDamage nie sluzy do zmiany obrazen z broni...

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

const m_pActiveItem = 373;
const m_iId = 43;

public plugin_init()
{
	RegisterHamPlayer(Ham_TraceAttack, "TraceAttack");
}

public TraceAttack(iVictim, iAttacker, Float:fDamage)
{
	if(!is_user_connected(iVictim) || !is_user_connected(iAttacker))
	{
		return HAM_IGNORED;
	}

	if(GetUserWeapon(iAttacker) == CSW_AK47 || GetUserWeapon(iAttacker) == CSW_M4A1)
	{
		SetHamParamFloat(3, fDamage + 500.0);
		return HAM_HANDLED;
	}

	return HAM_IGNORED;
}

stock GetUserWeapon(id)
{
	static iWid;
	return pev_valid((iWid = get_pdata_cbase(id, m_pActiveItem))) == 2 ? get_pdata_int(iWid, m_iId, 4) : 0;
}


Skoro nie służy do tego to dlaczego działa?