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

Overlapping huda


Najlepsza odpowiedź Rivit, 13.09.2018 10:24

To może być problem tego że używasz  ShowSyncHudMsg... daj zamiast tego show_hudmessage albo przerób to na dhudmessage, bo zwykłe hud messages mają tylko 4 kanały wyświetlania

Przejdź do postu


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

#1 Mixtaz

    Zaawansowany

  • Użytkownik

Reputacja: 21
Życzliwy

  • Postów:76
  • Steam:steam
  • Imię:Jędrzej
  • Lokalizacja:%s
Offline

Napisano 12.09.2018 22:19

Mam problem, który dość ciężko mi wyjaśnić ale spróbuję jak mogę. Mam taki kod: 

#include <amxmodx>

new g_Hud;

public plugin_init(){
    register_plugin("Test Switch", "1.0.0", "mixtaz");
    register_clcmd("say /open", "cmdOpen")
    g_Hud=CreateHudSyncObj();
}
public cmdOpen(id){
    new szTime[64];
    get_time("%H:%M:%S", szTime, charsmax(szTime));
    set_hudmessage(218, 165, 32, 0.9, 0.3, 2, 1.0, 7.0, 0.0, 1.0, -1)

    switch(random(3)){
        case 0: {
            client_print(id, print_chat, "Wybrana opcja: A");
            ShowSyncHudMsg(0, g_Hud, "Opcja A - unix stamp: %i", szTime)
        }
        case 1: {
            client_print(id, print_chat, "Wybrana opcja: B");
            ShowSyncHudMsg(0, g_Hud, "Opcja B - unix stamp: %i", szTime)
        }
        case 2: {
            client_print(id, print_chat, "Wybrana opcja: C");
            ShowSyncHudMsg(0, g_Hud, "Opcja C - unix stamp: %i", szTime)
        }
    }
}

Teraz załóżmy, że 3 graczy wpisze te komende i każdy dostanie inny wynik, co się stanie? Wszystko będzie na jednej pozycji zamazane i nie będzie wiadomo o co chodzi. Teraz chciałbym, aby ten los który został wywołany jako pierwszy pojawił się na samej górze a pozostałe trochę niżej. Iście programistyczny pomysł aby postawić ^n na końcu wiadomości też na niewiele się zdał.

 

Mam nadzieję, że dobrze wyjaśniłem (?) - im nowsze tym niżej, im starsze tym wyżej, oczywiście pod warunkiem że wyświetlają się te pozostałe wiadomości.


  • +
  • -
  • 0

:nuke:  Mój serwer Zombie Biohazard/Deathmatch  :nuke:
:cwaniak:


#2 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 12.09.2018 22:36

Zrób sobie zmienną która Ci trzyma pozycje huda

Spoiler

 

może z tego coś wyciągniesz też:

https://amxx.pl/topi...dynamiczny-hud/

 

Chyba, że chcesz takie jakby kolejkowanie slotów czy coś, to moge machnąć to bo w sumie nie mam nic do roboty


  • +
  • -
  • 1

#3 Mixtaz

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 21
Życzliwy

  • Postów:76
  • Steam:steam
  • Imię:Jędrzej
  • Lokalizacja:%s
Offline

Napisano 13.09.2018 08:11

Okej, jest mały postęp w postaci tego, że HUD w rzeczy samej się przemieszcza w dół (czyli paradoksalne ma dodawaną wartość) co pokażę tu:

#include <amxmodx>

new g_Hud, g_ChannelSlot;

public plugin_init(){
    register_plugin("Test Switch", "1.0.0", "mixtaz");
    register_clcmd("say /open", "cmdOpen");
    g_Hud=CreateHudSyncObj();
}
public cmdOpen(id){
    new szTime[64];
    get_time("%H:%M:%S", szTime, charsmax(szTime));
   
    if (++g_ChannelSlot > 6 || g_ChannelSlot < 3)
	{
		g_ChannelSlot = 3
	}

    new Float:ypos =  0.3 + float(g_ChannelSlot) / 35.0

    set_hudmessage(218, 165, 32, -1.0, ypos, 2, 1.0, 7.0, 0.0, 1.0, -1)

    switch(random(3)){
        case 0: {
            client_print(id, print_chat, "Wybrana opcja: A");
            ShowSyncHudMsg(0, g_Hud, "Opcja A - unix stamp: %s", szTime)
        }
        case 1: {
            client_print(id, print_chat, "Wybrana opcja: B");
            ShowSyncHudMsg(0, g_Hud, "Opcja B - unix stamp: %s", szTime)
        }
        case 2: {
            client_print(id, print_chat, "Wybrana opcja: C");
            ShowSyncHudMsg(0, g_Hud, "Opcja C - unix stamp: %s", szTime)
        }
    }
    return PLUGIN_HANDLED;
}

Ale po wywołaniu kolejnej wiadomości, poprzednia natychmiast znika i trochę niżej pojawia się ta nowsza. A jak wspomniałem - chciałbym żeby wszystkie były w jednym czasie dopóki nie skończy się ich duration time (najchętniej z wykorzystaniem tylko jednego kanału hud).


  • +
  • -
  • 0

:nuke:  Mój serwer Zombie Biohazard/Deathmatch  :nuke:
:cwaniak:


#4 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 13.09.2018 10:24   Najlepsza odpowiedź

To może być problem tego że używasz  ShowSyncHudMsg... daj zamiast tego show_hudmessage albo przerób to na dhudmessage, bo zwykłe hud messages mają tylko 4 kanały wyświetlania


  • +
  • -
  • 1

#5 Mixtaz

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 21
Życzliwy

  • Postów:76
  • Steam:steam
  • Imię:Jędrzej
  • Lokalizacja:%s
Offline

Napisano 13.09.2018 13:17

Po zmianie z ShowSyncHudMsg na zwykły hud - wiadomość pokazywała się jak należy, czyli chronologicznie. Dzięki za pomoc.


  • +
  • -
  • 0

:nuke:  Mój serwer Zombie Biohazard/Deathmatch  :nuke:
:cwaniak:


#6 Mixtaz

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 21
Życzliwy

  • Postów:76
  • Steam:steam
  • Imię:Jędrzej
  • Lokalizacja:%s
Offline

Napisano 13.09.2018 13:17

Usuńcie tą wiadomość please... Lag przeglądarki -.-


Użytkownik Mixtaz edytował ten post 13.09.2018 13:19

  • +
  • -
  • 0

:nuke:  Mój serwer Zombie Biohazard/Deathmatch  :nuke:
:cwaniak:





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

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