Dalej wyświetla się podwójnie
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
Przejdź do postu#41
Napisano 12.02.2015 15:31
#42
Napisano 12.02.2015 15:39
Podmeiń funkcje smiercgraczapost na to i powiedz czy działa (ta funkcja była przerabiana "młotkiem", jak będzie działać to musisz ją sobie ładnie przepisać):
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 headexp; new bool:info; 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); new cod_hs = get_pcvar_num(cod_cvar); if(get_pdata_int(id, 75, 5) == HIT_HEAD) { headexp = cod_hs info = true; } } doswiadczenie_gracza[attacker] += headexp + nowe_doswiadczenie + madrosc_gracza[id]*2; 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"); }else if(info){ 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); } ZapiszDane(id); return PLUGIN_CONTINUE; }
Użytkownik plx211 edytował ten post 12.02.2015 15:52
#43
Napisano 12.02.2015 19:31
#44
Napisano 12.02.2015 20:42
W sprawdzpoziom mam 2 błędy
w tej linijce i następnej gdzie jest zakończenie publica
ZapiszDane(id);
QTM_CodMod.sma(588) : warning 225: unreachable code QTM_CodMod.sma(589) : warning 209: function "SprawdzPoziom" should return a value
#45
Napisano 12.02.2015 20:54
to nie błędy a ostrzeżenie, moje działa?
#46
Napisano 12.02.2015 20:55
Niestety nie, chciałem teraz sprawdzić TibacKa, ale takie coś mi wyskakuje
#47
Napisano 12.02.2015 21:13
Jak to nie styknie to ja odpadam
#48
Napisano 12.02.2015 21:44
Niestety, ale dalej nie działa prawidłowo
#49
Napisano 12.02.2015 21:54
#50
Napisano 20.02.2015 17:01
Próbowałem tak, ale dalej się wyświetla :
public SmiercGraczaPost(id, attacker) { if(!is_user_connected(attacker)) return PLUGIN_CONTINUE; if(get_user_team(id) != get_user_team(attacker) && klasa_gracza[attacker]) { new nowe_doswiadczenie = get_pcvar_num(cvar_doswiadczenie_za_zabojstwo) new cod_hs = 350 doswiadczenie_gracza[attacker] += cod_hs if(!perk_gracza[attacker]) UstawPerk(attacker, -1, -1, 1); if(get_pdata_int(id, 75, 5) == HIT_HEAD) { if(!bBlokuj[attacker]) { set_dhudmessage(212, 255, 85, 0.44, 0.36, 1, 3.0, 1.0, 0.0, 0.0); show_dhudmessage(attacker, "HEADSHOT + %i XP", cod_hs); } } else { if(!bBlokuj[attacker]) { set_dhudmessage(212, 255, 85, 0.46, 0.36, 1, 3.0, 1.0, 0.0, 0.0); show_dhudmessage(attacker, "+ %i XP", nowe_doswiadczenie); } } ZapiszDane(attacker); } return PLUGIN_CONTINUE; } SprawdzPoziom(id) { new limit_poziomu = sizeof doswiadczenie_poziomu-1; new bool:zdobyl_poziom = false 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] 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] 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"); bBlokuj[id] = true set_task(0.4, "unlockMsg", id) } ZapiszDane(id); } public unlockMsg(id) { bBlokuj[id] = false }
#51
Napisano 22.02.2015 12:34
if(!zdobyl_poziom){ 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); } }
Sell - System Klanów (wojny, top15 etc)
Kontakt GG: 7285018
#52
Napisano 22.02.2015 13:28
@up
No fantastyczny pomysł...
Tyle, że to jest w innych funckjach.
Po testach doszedłem do wniosku, że sprawdzanie poziomu w ObrazeniaPost i WygranaRunda mają znaczenie.
Zrobiłem mu wersje, która podczas awansu blokuje ustawia zmienną na true i odpowiedni warunek w SmierGracza. Po 0.4s odblokowuje, ale nadal to nie działa!
#53
Napisano 22.02.2015 15:27
Teraz ciągle się wyświetla napis Awansowałeś
#54
Napisano 22.02.2015 19:09
Sell - System Klanów (wojny, top15 etc)
Kontakt GG: 7285018
#55
Napisano 22.02.2015 19:12
Podajesz ten sam kod co ja podawałem, najpierw przeczytaj temat.
#56
Napisano 23.02.2015 00:31
Ma ktoś jeszcze jakieś propozycje ?
#57
Napisano 01.03.2015 12:26 Najlepsza odpowiedź
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
Użytkownik FejmZPolski edytował ten post 01.03.2015 12:29
#58
Napisano 01.03.2015 14:50
Nie działa, raz nic się nie wyświetliło, czasami wyświetla się sam awansowałeś i częściej wyświetla się XP i Awansowales
#59
Napisano 01.03.2015 15:10
Coś mi świta, że źle testujesz
Bo wg mnie to nie ma prawa nie dzilac
#60
Napisano 01.03.2015 15:29
Testuje prawidłowo jak każdą jedną rzecz -.-
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych