Blokowanie wyświetlanie informacji, w mome...
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
GoldenKill
09.02.2015
Witam
Chciałbym zablokować informacje o zdobyciu danej ilości XP, wtedy gdy wyświetli się awans do następnego lvl.
Informacja która ma być zablokowana
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); }
W momencie wyświetlenia tego
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"); }
Daje +++
Rivit
09.02.2015
Rivit
10.02.2015
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"); return 69; }
cod_set_user_xp(attacker, cod_get_user_xp(attacker) + cod_hs); new sprawdz = SprawdzPoziom(attacker); if(sprawdz != 69) { if(get_pdata_int(id, 75, 5) == HIT_HEAD) { 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); } }
Sprawdz to... Może styknie, ale to taki prototyp.
GoldenKill
10.02.2015
Trzymaj całe 2 publiki
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_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"); } ZapiszDane(id); }
Rivit
10.02.2015
Teraz jestem ba tel, więc nie wykonam
GoldenKill
10.02.2015
No ja wiem, zaraz to zrobię, tylko już tak podałem na wszelki wypadek
GoldenKill
10.02.2015
QTM_CodMod.sma(1080) : warning 209: function "SprawdzPoziom" should return a value QTM_CodMod.sma(1118) : error 078: function uses both "return" and "return <value>" QTM_CodMod.sma(1123) : warning 209: function "SprawdzPoziom" should return a value
GoldenKill
10.02.2015
QTM_CodMod.sma(1080) : warning 209: function "SprawdzPoziom" should return a value QTM_CodMod.sma(1118) : error 078: function uses both "return" and "return <value>" QTM_CodMod.sma(1123) : warning 209: function "SprawdzPoziom" should return a value
Niech to moderator połączy z powyższym postem
Rivit
10.02.2015
W sprawdzpoziom znajdz pierwszy return i daj tam PLUGIN_CONTINUE i na koniec funkcji sprawdzpoziom to samo
Rivit
10.02.2015
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_pdata_int(id, 75, 5) == HIT_HEAD) { cod_set_user_xp(attacker, cod_get_user_xp(attacker) + cod_hs); if(SprawdzPoziom(attacker) != 69) { 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) != 69) { 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; } public SprawdzPoziom(id) { if(!is_user_connected(id)) return PLUGIN_CONTINUE; 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 69; } ZapiszDane(id); return PLUGIN_CONTINUE }
Nie wiem czy dobrze kminię, hm, ale może, może. Sprawdz i opisz dokładnie co nie działa w tym co teraz dałem
GoldenKill
10.02.2015
Wyświetla się tylko informacje o ilości danego XP po zabiciu, a chodzi mi o to, aby w momencie wbicia lvl wyświetlała się informacja "Awansowales do %i poziomu!", a nie o ilości zdobytego XP za zabicie, tamte mają się wyświetlać ciągle, tylko nie wtedy gdy ktoś wbił lvl, aby nie przeszkadzało informacji o Awansie
Rivit
10.02.2015
Nie mam pojęcia...
Próbujemy metody "na lampkę" (system logów)
Wgraj ten kod:
Zmien mape, zrob awans i daj mi ten plik: addons/amxmodx/awans.txt
Sam nie wiem czemu to nie działa.
GoldenKill
10.02.2015
Teraz przy wbiciu lvl zostają wyświetlone 2 wiadomości. Ta ze zdobyciem XP i awansem
Oto logi
L 02/10/2015 - 19:19:08: Log file started (file "cstrike/addons/amxmodx/awans.txt") (game "cstrike") (amx "1.8.1.3746") L 02/10/2015 - 19:19:08: awansuje L 02/10/2015 - 19:19:08: 0 L 02/10/2015 - 19:19:08: wyswietlam tekst L 02/10/2015 - 19:19:08: awansuje L 02/10/2015 - 19:19:32: awansuje L 02/10/2015 - 19:19:32: 0 L 02/10/2015 - 19:19:32: wyswietlam tekst L 02/10/2015 - 19:19:32: awansuje L 02/10/2015 - 19:19:56: 0 L 02/10/2015 - 19:20:21: awansuje L 02/10/2015 - 19:20:21: 69 L 02/10/2015 - 19:20:46: 0 L 02/10/2015 - 19:20:46: awansuje L 02/10/2015 - 19:21:01: 0 L 02/10/2015 - 19:21:01: wyswietlam tekst L 02/10/2015 - 19:21:01: awansuje L 02/10/2015 - 19:22:48: 0
GoldenKill
10.02.2015
Teraz raz wyświetliło napis Awansowałeś, potem już nie wyświetlało i również nie wyświetla wiadomość o ilości XP
Logi
L 02/10/2015 - 20:36:21: Log file started (file "cstrike/addons/amxmodx/awans.txt") (game "cstrike") (amx "1.8.1.3746") L 02/10/2015 - 20:36:21: awansuje L 02/10/2015 - 20:36:45: awansuje L 02/10/2015 - 20:37:02: awansuje L 02/10/2015 - 20:37:20: awansuje
Rivit
10.02.2015
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_pdata_int(id, 75, 5) == HIT_HEAD) { cod_set_user_xp(attacker, cod_get_user_xp(attacker) + cod_hs); if(SprawdzPoziom(attacker)) { 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)) { 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; } public SprawdzPoziom(id) { if(!is_user_connected(id)) return PLUGIN_CONTINUE; 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 0; } ZapiszDane(id); return PLUGIN_HANDLED }
Sprawdz. Powinno być.
PS. Nie ma logów już.