Dalej się wyświetlają 2 wiadomośći w moemcie wbicia lvl
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.
|
Blokowanie wyświetlanie informacji, w momencie pojawienia się drugiej
Najlepsza odpowiedź FejmZPolski , 01.03.2015 12:26
Mysle, ze chcesz zablokowac wiadomosc na 5 sekund, bo tyle trwa czas pokazywania wiadomosci o awansie, mozesz to zrobic za pomocą pobrania czasu, dla danego gracza a potem sprawdzenia, proszę:
ew awansowal[33]
public client_connect(id) {
awansowal[id] = 0
public SmiercGraczaPost(id, attacker, shouldgib)
{
if(!is_user_connected(attacker))
return PLUGIN_CONTINUE;
if(get_user_team(id) != get_user_team(attacker) && klasa_gracza[attacker])
{
new doswiadczenie_za_zabojstwo = get_pcvar_num(cvar_doswiadczenie_za_zabojstwo);
new nowe_doswiadczenie = get_pcvar_num(cvar_doswiadczenie_za_zabojstwo);
if(poziom_gracza[id] > poziom_gracza[attacker])
nowe_doswiadczenie += (poziom_gracza[id]-poziom_gracza[attacker])*(doswiadczenie_za_zabojstwo/10);
if(!perk_gracza[attacker])
UstawPerk(attacker, -1, -1, 1);
doswiadczenie_gracza[attacker] += nowe_doswiadczenie + madrosc_gracza[id]*2;
new cod_hs = get_pcvar_num(cod_cvar);
if(get_gametime() >= float(awansowal[attacker]+5)) {
if(get_pdata_int(id, 75, 5) == HIT_HEAD)
{
cod_set_user_xp(attacker, cod_get_user_xp(attacker) + cod_hs);
set_dhudmessage(255, 212, 0, 0.50, 0.33, 1, 3.0, 1.0, 0.0, 0.0);
show_dhudmessage(attacker, "HEADSHOT + %i XP", cod_hs);
}
else
{
set_dhudmessage(255, 212, 0, 0.50, 0.33, 1, 3.0, 1.0, 0.0, 0.0);
show_dhudmessage(attacker, "+ %i XP", nowe_doswiadczenie);
}
}
}
SprawdzPoziom(attacker);
return PLUGIN_CONTINUE;
}
public SprawdzPoziom(id)
{
if(!is_user_connected(id))
return;
new limit_poziomu = get_pcvar_num(cvar_limit_poziomu);
new bool:zdobyl_poziom = false, bool:stracil_poziom = false;
while(doswiadczenie_gracza[id] >= PobierzDoswiadczeniePoziomu(poziom_gracza[id]) && poziom_gracza[id] < limit_poziomu)
{
poziom_gracza[id]++;
punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]-madrosc_gracza[id];
zdobyl_poziom = true;
}
while(doswiadczenie_gracza[id] < PobierzDoswiadczeniePoziomu(poziom_gracza[id]-1))
{
poziom_gracza[id]--;
stracil_poziom = true;
}
if(poziom_gracza[id] > limit_poziomu)
{
poziom_gracza[id] = limit_poziomu;
ResetujPunkty(id);
}
if(stracil_poziom)
{
ResetujPunkty(id);
set_dhudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0, 0.0, 0.0);
show_dhudmessage(id,"Spadles do %i poziomu!", poziom_gracza[id]);
}
else if(zdobyl_poziom)
{
punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]-madrosc_gracza[id];
set_dhudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0, 0.0, 0.0);
show_dhudmessage(id,"Awansowales do %i poziomu!", poziom_gracza[id]);
client_cmd(id, "spk QTM_CodMod/levelup");
awansowal[id] = floatround(get_gametime())
}
ZapiszDane(id);
}
Od razu mowie, ze nie mam calego kodu, tak wiec nawet nie moglem skompilowac, i zobaczyzc czy dziala ![]()
#21
Napisano 10.02.2015 20:56
#22
Napisano 10.02.2015 21:10
Dziwne, skoro SprawdzPoziom(id) zwraca 0 w momencie wbicia lvl to warunek jest fałszywy i dalszy kod nie ma prawa się wykonać...
Sprawdź dokładnie czy masz ten kod co dałem... Coś mi się nie widzi...
#23
Napisano 10.02.2015 21:12
Mam dokładnie w silniku twój kod wklejony
#24
Napisano 10.02.2015 21:17
Po co w silniku używasz cod_set_user_xp? Masz zmienną co trzyma EXP gracza, możliwe że to przez to...
Sprawdz kod z załącznika, jeżeli nie zadziała to odkomentuj zakomentowane linijki.
Załączone pliki
#25
Napisano 10.02.2015 21:44
Dalej nie działa czasami się nie wyświetla w ogóle, czasami 2 wiadomości, a czasami jedna oto logi
L 02/10/2015 - 21:41:36: Log file started (file "cstrike/addons/amxmodx/lol.txt") (game "cstrike") (amx "1.8.1.3746") L 02/10/2015 - 21:41:36: awans L 02/10/2015 - 21:41:36: awans L 02/10/2015 - 21:41:36: awans L 02/10/2015 - 21:41:58: wiadomosc L 02/10/2015 - 21:42:04: wiadomosc L 02/10/2015 - 21:42:04: awans L 02/10/2015 - 21:42:24: awans L 02/10/2015 - 21:42:51: wiadomosc L 02/10/2015 - 21:42:51: awans
#26
Napisano 10.02.2015 21:51
Dziwne jest to:
L 02/10/2015 - 21:41:36: awans L 02/10/2015 - 21:41:36: awans L 02/10/2015 - 21:41:36: awans
w tym samym czasie 3 razy funkcja awansujaca... A spróbuj z funkcji gzdie jest exp za dmg zakomentować sprawdzanie expa i wstaw log wtedy.
Załączone pliki
#27
Napisano 11.02.2015 18:02
Dalej wyświetlają się razem
Oto logi
L 02/11/2015 - 18:00:18: bez awansu L 02/11/2015 - 18:00:19: bez awansu L 02/11/2015 - 18:00:19: bez awansu L 02/11/2015 - 18:00:19: awans L 02/11/2015 - 18:00:19: bez awansu L 02/11/2015 - 18:00:19: awans L 02/11/2015 - 18:00:49: bez awansu L 02/11/2015 - 18:00:49: bez awansu L 02/11/2015 - 18:00:49: awans L 02/11/2015 - 18:00:49: bez awansu L 02/11/2015 - 18:00:49: awans L 02/11/2015 - 18:01:19: bez awansu L 02/11/2015 - 18:01:19: wiadomosc L 02/11/2015 - 18:01:19: bez awansu L 02/11/2015 - 18:01:19: awans L 02/11/2015 - 18:01:36: bez awansu L 02/11/2015 - 18:01:36: bez awansu L 02/11/2015 - 18:01:36: wiadomosc L 02/11/2015 - 18:01:36: bez awansu L 02/11/2015 - 18:01:36: awans L 02/11/2015 - 18:01:47: bez awansu
#28
Napisano 11.02.2015 18:17
Brak pomysłu
#29
Napisano 11.02.2015 18:28
Tak, też nie mam pomysłu
A jak by to tak zrobić
Zabrać zmienną dodaną w SprawdzPoziom dodać ją ogólnie
new bool:zdobyl_poziom = false
i w śmierć gracza dodać takie coś
if(zdobyl_poziom[id])
{
if(get_pdata_int(id, 75, 5) == HIT_HEAD)
{
doswiadczenie_gracza[attacker] += cod_hs
if(SprawdzPoziom(attacker))
{
log_to_file("addons/amxmodx/lol.txt", "wiadomosc")
set_dhudmessage(255, 212, 0, 0.50, 0.33, 1, 3.0, 1.0, 0.0, 0.0);
show_dhudmessage(attacker, "HEADSHOT + %i XP", cod_hs);
}
}
else
{
if(SprawdzPoziom(attacker))
{
log_to_file("addons/amxmodx/lol.txt", "wiadomosc")
set_dhudmessage(255, 212, 0, 0.50, 0.33, 1, 3.0, 1.0, 0.0, 0.0);
show_dhudmessage(attacker, "+ %i XP", nowe_doswiadczenie);
}
}
}
#30
Napisano 11.02.2015 19:17
public SmiercGraczaPost(id, attacker, shouldgib)
{
if(!is_user_connected(attacker))
return PLUGIN_CONTINUE;
if(get_user_team(id) != get_user_team(attacker) && klasa_gracza[attacker])
{
new doswiadczenie_za_zabojstwo = get_pcvar_num(cvar_doswiadczenie_za_zabojstwo);
new nowe_doswiadczenie = get_pcvar_num(cvar_doswiadczenie_za_zabojstwo);
if(poziom_gracza[id] > poziom_gracza[attacker])
nowe_doswiadczenie += (poziom_gracza[id]-poziom_gracza[attacker])*(doswiadczenie_za_zabojstwo/10);
if(!perk_gracza[attacker])
UstawPerk(attacker, -1, -1, 1);
doswiadczenie_gracza[attacker] += nowe_doswiadczenie + madrosc_gracza[id]*2;
new cod_hs = get_pcvar_num(cod_cvar);
new bool:lvl;
if( SprawdzPoziom )
lvl=true;
if(get_pdata_int(id, 75, 5) == HIT_HEAD)
{
cod_set_user_xp(attacker, cod_get_user_xp(attacker) + cod_hs);
if( !lvl ) {
set_dhudmessage(255, 212, 0, 0.50, 0.33, 1, 3.0, 1.0, 0.0, 0.0);
show_dhudmessage(attacker, "HEADSHOT + %i XP", cod_hs);
}
}
else if( !lvl )
{
set_dhudmessage(255, 212, 0, 0.50, 0.33, 1, 3.0, 1.0, 0.0, 0.0);
show_dhudmessage(attacker, "+ %i XP", nowe_doswiadczenie);
}
}
SprawdzPoziom(attacker);
return PLUGIN_CONTINUE;
}
public bool:SprawdzPoziom(id)
{
if(!is_user_connected(id))
return;
new limit_poziomu = get_pcvar_num(cvar_limit_poziomu);
new bool:zdobyl_poziom = false, bool:stracil_poziom = false;
while(doswiadczenie_gracza[id] >= PobierzDoswiadczeniePoziomu(poziom_gracza[id]) && poziom_gracza[id] < limit_poziomu)
{
poziom_gracza[id]++;
punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]-madrosc_gracza[id];
zdobyl_poziom = true;
}
while(doswiadczenie_gracza[id] < PobierzDoswiadczeniePoziomu(poziom_gracza[id]-1))
{
poziom_gracza[id]--;
stracil_poziom = true;
}
if(poziom_gracza[id] > limit_poziomu)
{
poziom_gracza[id] = limit_poziomu;
ResetujPunkty(id);
}
if(stracil_poziom)
{
ResetujPunkty(id);
set_dhudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0, 0.0, 0.0);
show_dhudmessage(id,"Spadles do %i poziomu!", poziom_gracza[id]);
}
else if(zdobyl_poziom)
{
punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]-madrosc_gracza[id];
set_dhudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0, 0.0, 0.0);
show_dhudmessage(id,"Awansowales do %i poziomu!", poziom_gracza[id]);
client_cmd(id, "spk QTM_CodMod/levelup");
}
ZapiszDane(id);
return zdobyl_poziom;
}
a tak?
#31
Napisano 11.02.2015 19:35
Zrobiłem tak i ciągle piszę, po trafieniu zabiciu i kupieniu expa awansowałeś
public SprawdzPoziom(id)
{
new limit_poziomu = get_pcvar_num(cvar_limit_poziomu);
new bool:stracil_poziom = false;
while(doswiadczenie_gracza[id] >= PobierzDoswiadczeniePoziomu(poziom_gracza[id]) && poziom_gracza[id] < limit_poziomu)
{
poziom_gracza[id]++;
punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]-madrosc_gracza[id];
zdobyl_poziom = true;
}
while(doswiadczenie_gracza[id] < PobierzDoswiadczeniePoziomu(poziom_gracza[id]-1))
{
poziom_gracza[id]--;
stracil_poziom = true;
}
if(poziom_gracza[id] > limit_poziomu)
{
poziom_gracza[id] = limit_poziomu;
ResetujPunkty(id);
}
if(stracil_poziom)
{
ResetujPunkty(id);
set_dhudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0, 0.0, 0.0);
show_dhudmessage(id,"Spadles do %i poziomu!", poziom_gracza[id]);
}
else if(zdobyl_poziom)
{
punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id]-madrosc_gracza[id];
set_dhudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0, 0.0, 0.0);
show_dhudmessage(id,"Awansowales do %i poziomu!", poziom_gracza[id]);
client_cmd(id, "spk QTM_CodMod/levelup");
ZapiszDane(id);
log_to_file("addons/amxmodx/lol.txt", "awans")
return 0;
}
ZapiszDane(id);
log_to_file("addons/amxmodx/lol.txt", "bez awansu")
return 1;
}
public SmiercGraczaPost(id, attacker, shouldgib)
{
if(!is_user_connected(attacker))
return PLUGIN_CONTINUE;
if(get_user_team(id) != get_user_team(attacker) && klasa_gracza[attacker])
{
new doswiadczenie_za_zabojstwo = get_pcvar_num(cvar_doswiadczenie_za_zabojstwo);
new nowe_doswiadczenie = get_pcvar_num(cvar_doswiadczenie_za_zabojstwo);
if(poziom_gracza[id] > poziom_gracza[attacker])
nowe_doswiadczenie += (poziom_gracza[id]-poziom_gracza[attacker])*(doswiadczenie_za_zabojstwo/10);
if(!perk_gracza[attacker])
UstawPerk(attacker, -1, -1, 1);
doswiadczenie_gracza[attacker] += nowe_doswiadczenie + madrosc_gracza[id]*2;
new cod_hs = get_pcvar_num(cod_cvar);
new sprawdzenie = zdobyl_poziom = false;
if(!sprawdzenie)
{
if(get_pdata_int(id, 75, 5) == HIT_HEAD)
{
doswiadczenie_gracza[attacker] += cod_hs
if(SprawdzPoziom(attacker))
{
log_to_file("addons/amxmodx/lol.txt", "wiadomosc")
set_dhudmessage(255, 212, 0, 0.50, 0.33, 1, 3.0, 1.0, 0.0, 0.0);
show_dhudmessage(attacker, "HEADSHOT + %i XP", cod_hs);
}
}
else
{
if(SprawdzPoziom(attacker))
{
log_to_file("addons/amxmodx/lol.txt", "wiadomosc")
set_dhudmessage(255, 212, 0, 0.50, 0.33, 1, 3.0, 1.0, 0.0, 0.0);
show_dhudmessage(attacker, "+ %i XP", nowe_doswiadczenie);
}
}
}
}
return PLUGIN_CONTINUE;
}
#32
Napisano 11.02.2015 21:31
Sprawdzpoziom musi zwracać wartość która porównujemy podczas śmierci.
Przysiade do tego i pomyślę. CzY Masz inne pluginy dające xp za frag?
#33
Napisano 11.02.2015 21:50
Nie
Ten plugin jest w silniku, bo był za hs i dodałem do silnika
#34
Napisano 11.02.2015 22:07
new bool:zdobyl_poziom = false;
Po za tym ta 2 funkcja wymaga przepisania (jak dla mnie to WTF!?)
Użytkownik plx211 edytował ten post 11.02.2015 22:08
#35
Napisano 11.02.2015 22:25
na samym początku dodałem new bool -.-
#36
Napisano 11.02.2015 22:31
Brak średnika:
doswiadczenie_gracza[attacker] += cod_hs
Zobacz czy tak samo jest gdy będziesz drukował do servera zamiast do pliku
#37
Napisano 11.02.2015 22:37
Przepisze ta funkcję jakoś muszę pomyśleć
#38
Napisano 11.02.2015 22:59
#39
Napisano 12.02.2015 00:09
#40
Napisano 12.02.2015 00:27
Do czystego silnika (takiego jakiego miales gdy rozpoczoles temat) zastosuje to (uwaga pisane na fonie):
http://wklej.org/id/1632744/
Użytkownicy przeglądający ten temat: 1
0 użytkowników, 1 gości, 0 anonimowych


Dodatki SourceMod







kod.amxx






