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
 

Zdjęcie

Wiadomość hud (togglemode)schowaj/pokaz jak wykonać ?


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
10 odpowiedzi w tym temacie

#1 Żuk

    Wszechwidzący

  • Użytkownik

Reputacja: 11
Początkujący

  • Postów:291
  • Lokalizacja:Katowice
Offline

Napisano 18.05.2014 15:06

Mam np. tak skonstruwowaną wiadomość:

set_hudmessage(255, 0, 0, -1.0, 0.3, 1, 6.0, 15.0,0,0,-1)
		show_hudmessage(id, "%s, -------------- !",name)

Jest ustawiona sobie gdzieś w rogu na hud i jest ona widoczna przez całą mape (nie zawsze), automatycznie włączana i aktualizowana co jakiś czas przez plugin. Jako, że irytuje to niektórych graczy chciałbym ją ukryć pod komendą np. /ukryj i po wpisaniu tej komendy dwukrotnie, wiadomość znowu się włączy.

 

Czyli pierwszy raz /ukryj wiadomość zostaje schowana, a po ponownym wpisaniu jest widoczna. Jak to zrobić ? ;s


  • +
  • -
  • 0

#2 UTeam

    Pomocny

  • Zbanowany

Reputacja: 29
Życzliwy

  • Postów:70
  • Lokalizacja:404 Not Found
Offline

Napisano 18.05.2014 16:18

Poaz caly public jak wyswietlasz ta wiadomosc.Uzywasz task ?



#3 Żuk

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 11
Początkujący

  • Postów:291
  • Lokalizacja:Katowice
Offline

Napisano 18.05.2014 21:59

public plugin_init( )
{


set_task( 1.0, "info", _, _, _, "b" );


}

public info(id)

{

set_hudmessage(255, 0, 0, -1.0, 0.3, 1, 6.0, 15.0,0,0,-1)
show_hudmessage(id, " WIADOMOSC !")

}

 

tam w plugin init wiadomo mam jeszcze jakies rzeczy zwiazane z samym pluginem, ale tylko to dotyczy wiadomosci


  • +
  • -
  • 0

#4 wiwi249

    Wszechobecny

  • Użytkownik

Reputacja: 150
Profesjonalista

  • Postów:440
  • GG:
  • Imię:Wiktor
  • Lokalizacja:Tarnobrzeg
Offline

Napisano 18.05.2014 22:35

Po pierwsze, w plugin_init dajesz set_task do jakiejś tam funkcji i wywolujesz ją bez parametrów, a potem widzimy że ta funkcja ma parametr id - wtf? Jak chcesz wyswietlic wiadomosc na hud gracza o id = id, to musisz mu tego set_taska ustawic gdzie indziej I WYSŁAĆ PARAMETR na miłość Boską... Najlepiej jest ustawić parametr przy wywołaniu client_putinserver i ustawić interwał, na przyklad 1 sekundę między wywoływaniem funkcji zawierającej wiadomość na HUD. W niej najpierw zabezpieczenia typu is_user_connected(id), a potem warunek if logicznie ujęty: Jeżeli wartość logiczna ToggleMode wynosi 1, to wykonaj:

set_hudmessage(255, 0, 0, -1.0, 0.3, 1, 6.0, 15.0,0,0,-1)

show_hudmessage(id, " WIADOMOSC !")

w przeciwnym razie

return PLUGIN_CONTINUE

i tyle w temacie.


  • +
  • -
  • 0

Wykonuję strony internetowe, zlecenia AMXX i HLDS - w tym pisanie pluginów, ogarnianie serwerów, edycja i tworzenie modeli.

Potrzebujesz czegoś? Pisz!

 

"śpieszmy się pisać posty, tak szybko banują..." ~ sebul


#5 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 19.05.2014 09:34

Po pierwsze, w plugin_init dajesz set_task do jakiejś tam funkcji i wywolujesz ją bez parametrów, a potem widzimy że ta funkcja ma parametr id - wtf?

Pobrał id task'a którego nie wyznaczył z ostrzeżeniem przy kompilacji ale będzie równe zawsze "0"

 

Jak chcesz wyswietlic wiadomosc na hud gracza o id = id, to musisz mu tego set_taska ustawic gdzie indziej I WYSŁAĆ PARAMETR na miłość Boską

Ależ to działa u niego zmienna "id" zawsze równa się 0 a zatem show_hudmessage będzie pokazywało sie poprawnie (tylko że zawsze all graczom)

 

Najlepiej

Z tym także się nie zgodzę. Najlepiej to by było nie uzywać set_task'a bo nie potrzebnie funkcje tyle razy wykonujesz + lecą zbędne pakiety do client'a, Jak zatem najlepiej? Użyć "CreateHudSyncObj" + "ShowSyncHudMsg" Tylko że tutaj wszystko zależy od tego co ma być w wiadomości bo to ty musisz wiedzieć kiedy odświeżyć hud a nie sobie walniesz 1 sek i masz to w d*pie

 

Reszty co napisałeś nie zrozumiałem piszesz za bardzo chaotycznie


  • +
  • -
  • 0
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#6 wiwi249

    Wszechobecny

  • Użytkownik

Reputacja: 150
Profesjonalista

  • Postów:440
  • GG:
  • Imię:Wiktor
  • Lokalizacja:Tarnobrzeg
Offline

Napisano 19.05.2014 11:45

Nie wszystkie funkcje:-) dzialaja na parametr id = 0, ale skoro ta dziala to ok. Tylko problem jest w tym, ze jak ustawisz id na 0, jak sprawdzisz, czy gracz chce mieć ustawiony HUD czy nie, skoro z gory walisz wyświetlanie HUD wszystkim? A co dalej to chyba nie przeczytales dokladnie, po prostu napisalem jakie instrukcje powinna funkcja z HUD zawierać.
Jak walniesz ShowSyncHudMsg, jak usuniesz graczowi HUD gdy w pisze komendę /ukryj ? Moim zdaniem najprościej odswiezac HUD co parę sekund, jeśli gracz go nie wylaczyl.
  • +
  • -
  • 0

Wykonuję strony internetowe, zlecenia AMXX i HLDS - w tym pisanie pluginów, ogarnianie serwerów, edycja i tworzenie modeli.

Potrzebujesz czegoś? Pisz!

 

"śpieszmy się pisać posty, tak szybko banują..." ~ sebul


#7 wiwi249

    Wszechobecny

  • Użytkownik

Reputacja: 150
Profesjonalista

  • Postów:440
  • GG:
  • Imię:Wiktor
  • Lokalizacja:Tarnobrzeg
Offline

Napisano 19.05.2014 13:27

Aj sory, mój błąd, nie doczytalem jednej rzeczy w pierwszym poscie. Jak sie da w plugin_init set_hudmessage z id na 0 to bedzie bez ory. W takim razie inaczej, dodaj zmienną:
new Bool:ToggleHUD
uzyj register_clcmd zeby ustawic flagi dostepu, ktore Cie interesują na komendę /ukryj. Jeśli zostaje prawidłowo wywołana i uzytkownik ma dostęp, zeby korzystac z tej komendy:
plugin_init() {
...
register_clcmd("say /ukryj","Ukryj",ADMIN_KICK,"Ukrywa HUD")
...
}
 
public Ukryj(id) {
ToggleHUD = true ? ToggleHUD = false; : ToggleHUD = false;
return PLUGIN_CONTINUE
 
a potem
public info(id)
{
if(ToggleHud) {
     set_hudmessage(255, 0, 0, -1.0, 0.3, 1, 6.0, 15.0,0,0,-1)
     show_hudmessage(id, " WIADOMOSC !")
}

return PLUGIN_CONTINUE
}
 
cukrzycedzi
  • +
  • -
  • 1

Wykonuję strony internetowe, zlecenia AMXX i HLDS - w tym pisanie pluginów, ogarnianie serwerów, edycja i tworzenie modeli.

Potrzebujesz czegoś? Pisz!

 

"śpieszmy się pisać posty, tak szybko banują..." ~ sebul


#8 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 19.05.2014 14:10

Nie wszystkie funkcje:-) dzialaja na parametr id = 0, ale skoro ta dziala to ok

Rozmawiamy o konkretnym przypadku

 

 

Tylko problem jest w tym, ze jak ustawisz id na 0, jak sprawdzisz, czy gracz chce mieć ustawiony HUD czy nie, skoro z gory walisz wyświetlanie HUD wszystkim?

  • Jak chcesz wyswietlic wiadomosc na hud gracza o id = id, to musisz mu tego set_taska ustawic gdzie indziej I WYSŁAĆ PARAMETR na miłość Boską

  • Ależ to działa u niego zmienna "id" zawsze równa się 0 a zatem show_hudmessage będzie pokazywało sie poprawnie (tylko że zawsze all graczom)

W swojej wypowiedzi stwierdiłem jedynie iż widomość dotrze do graczy nie nawiązywałem co do jej zniknięcia (no może prawie nie: "  pokazywało sie poprawnie (tylko że zawsze all graczom) ")

 

A co dalej to chyba nie przeczytales dokladnie, po prostu napisalem jakie instrukcje powinna funkcja z HUD zawierać.

Wybacz mój błąd jestem głupi, bo nawet tak wspaniałą instrukcję nie potrafię zrozumieć

 

Jak walniesz ShowSyncHudMsg, jak usuniesz graczowi HUD gdy w pisze komendę /ukryj ?

A na to jest sposób i to nawet nie jeden:

1. Użyj: ClearSyncHud i hud wyczyszczony

2. Wyślij pustą wiadomość na tym samym obiekcie hud'a

(Są też inne ale nie polecam)

 

public Ukryj(id) {
ToggleHUD = true ? ToggleHUD = false; : ToggleHUD = false;
return PLUGIN_CONTINUE

 

Zamień na:

public Ukryj(id) ToggleHUD = (ToggleHUD ?  false : true)

Jeszcze mógł by autor tematu się wypowiedzieć na temat tego co ma być w wiadomości


  • +
  • -
  • 3
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#9 Żuk

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 11
Początkujący

  • Postów:291
  • Lokalizacja:Katowice
Offline

Napisano 19.05.2014 16:11

Wiadomość będzie zawierać (w sumie to zawiera) prostą informację o aktualnym evencie o ile ten jest włączony na serwerze, a chciałem dać graczom możliwość jej ukrycia z prostej przyczyny, mod na którym to działa jest modem HnS (Ganiany) i tam naprawdę dużo huda jest zawalonego a niektórzy mają przez to spadki fps ;P

 

Wypróbuję sposób wiwi'ego wieczorem, jak będę miał wiecej czasu :)


  • +
  • -
  • 0

#10 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 19.05.2014 17:57

Zamień na:
public Ukryj(id) ToggleHUD = (ToggleHUD ? false : true)
Jeszcze mógł by autor tematu się wypowiedzieć na temat tego co ma być w wiadomości

Sorki poprawka na to:

public Ukryj(id) ToggleHUD[id] = (ToggleHUD[id] ? false : true)

niektórzy mają przez to spadki fps

Ludzie mają spadki fps nie przez to że mają dużo napisów na ekranie tylko przez to że cały czas przychodzą do nich informacje o napisach.

 

 

Może to bardziej wytłumacze i od razu pokaże różnice między task+hud a hud+obiekt

Weźmy sobie taki przykład:

 

Mamy jakiś tam serwer i co drugą rundę na ekranie pisze nam: parzysta runda (oczywiście pisze to przez całą rundę)

 

Teraz zróbmy to za pomoca taska:

new NumerRundy // Zmienna globalna przechowuje numer rundy

// w plugin_init()
//
     set_task(1.0,"Pokaz_Hud",_,_,_,"b")
     register_event("HLTV", "RoundStart", "a", "1=0", "2=0");
//
//
//

public RoundStart() NumerRundy++

public Pokaz_Hud()
{
     if(NumerRundy%2==0)
     {
          set_hudmessage(0,0,0,0.0,0.0,0,0.0,1.0,0,0,-1)
          show_hudmessage(0,"Parzysta Runda")
     }
}

A teraz jak to w praktyce działa:

 

Gdy zacznie sie runda która jest parzysta co 1.0 sek będzie do clienta wysyłana wiadomość o tym by pokazać nową wiadomość hud. Załóżmy iż runda trwa 3 min tzn. w ciągu rundy parzystej do clienta dojdzie 180 wiadomości iż ma pokazac na ekranie wiadomość hud.

 

A teraz sposób dużo optymalniejszy:

new NumerRundy,Hud // Zmienna globalna przechowuje numer rundy + Uchwyt do hud'a

// w plugin_init()
//
     Hud = CreateHudSyncObj()
     register_event("HLTV", "RoundStart", "a", "1=0", "2=0");
//
//
//

public RoundStart()
{
     NumerRundy++
     if(NumerRundy%2==0)
     {
          set_hudmessage(0,0,0,0.0,0.0,0,0.0,1.0,0,0,-1)
          ShowSyncHudMsg(0, Hud, "Parzysta Runda")

     }
     else ClearSyncHud(0, Hud)

}

Teraz jak to działa:

 

W momęcie rozpoczęcia nowej rundy (parzystej) zostanie wysłana wiadomośc do klienta aby pokazać mu na ekranie wiadomość hud (bodajże na czas nie określony nie sprawdzałem)

To wszystko

 

Różnica jaka jest? Hmm podczas rundy parzystej używając taska wyślemy 180 razy tą samą wiadomość a używając hud_obiekt'u tylko raz na początku (ale każdej rundy)

 

Czyli 180 - 2 = 178 Czyli 178 niepotrzebnych wiadomości wysyłamy za pomocą taska.

 

Dodam jeszcze że jak ustawiamy task na 1.0 a hud na 6.0 (jak w temacie) to wiadomości nakładają się na siebie i zabierają 6 kanałów hud'a a że są tylko 4 to całkowicie go kradną 


  • +
  • -
  • 2
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#11 Żuk

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 11
Początkujący

  • Postów:291
  • Lokalizacja:Katowice
Offline

Napisano 20.05.2014 15:12

Okej, dzięki panowie :> dostajecie plusy, wiem wiem miałem wczoraj to sprawdzić jednak doskwiera mi ostatnio brak czasu.

 

Można zamknąć !


  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych