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
CoD Nowy

Pytanie o hudHUD

cod nowy

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

#1 Anonimowy09

    Zaawansowany

  • Użytkownik

Reputacja: 3
Nowy

  • Postów:123
  • GG:
  • Imię:Dawid
  • Lokalizacja:Krakow
Offline

Napisano 25.12.2024 00:13

Mam pytanie czy da sie zrobic HUD w kilku barwach czy np moze byc tylko zielony 


  • +
  • -
  • 0

#2 break23

    Nowy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:4
Offline

Napisano 25.12.2024 11:50

Da się. A co dokładnie chcesz?
  • +
  • -
  • 0

#3 Anonimowy09

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 3
Nowy

  • Postów:123
  • GG:
  • Imię:Dawid
  • Lokalizacja:Krakow
Offline

Napisano 25.12.2024 14:00

public pokaz_hud(id)
{
id -= 1000;
 
if(!is_user_connected(id))
{
return;
}
 
if(is_user_alive(id))
{
new hudzik[526];
new hud_len;
const hud_lenik = sizeof hudzik;
 
new name[33];
get_user_name(id, name, charsmax(name));
 
new class_name[30];
cod_get_user_class_name(id, class_name, charsmax(class_name));
 
new perk_name[30];
cod_get_user_perk_name(cod_get_user_perk(id), perk_name, charsmax(perk_name));
 
new klan_name[30];
cod_get_user_clan(id, klan_name, charsmax(klan_name));
 
hud_len = formatex(hudzik[hud_len], hud_lenik - hud_len, "[NICK]: %s^n", name);
 
if(cod_get_user_class_id(id))
{
hud_len += formatex(hudzik[hud_len], hud_lenik - hud_len, "[KLASA]: %s^n", class_name);
hud_len += formatex(hudzik[hud_len], hud_lenik - hud_len, "[PERK]: %s^n", perk_name);
}
 
hud_len += formatex(hudzik[hud_len], hud_lenik - hud_len, "[MONETY]: %i^n", zwrot_monet(id));
 
if(cod_get_user_class_id(id))
{
new Float:fProcent = float(((cod_get_user_next_exp(id) - cod_get_user_exp(id)) * 100) / cod_get_roznica_levele(id));
hud_len += formatex(hudzik[hud_len], hud_lenik - hud_len, "[POZIOM]: %i (%0.1f%%)^n", cod_get_user_lvl(id), 100 - fProcent);
}
 
hud_len += formatex(hudzik[hud_len], hud_lenik - hud_len, "[HP]: %i^n", get_user_health(id));
hud_len += formatex(hudzik[hud_len], hud_lenik - hud_len, "[KLAN]: %s^n", klan_name);
 
new czas[30]
zwrot_czas(id, czas, charsmax(czas));
 
hud_len += formatex(hudzik[hud_len], hud_lenik - hud_len, "[CZAS]: %s", czas);
 
set_hudmessage(0, 255, 0, 0.01, 0.20, 0, 6.0, 12.0);
ShowSyncHudMsg(id,hud, "%s", hudzik);
}
else
{
new target = pev(id, pev_iuser2);
 
if(!target)
{
return;
}
 
new thudzik[526];
new thud_len;
const thud_lenik = sizeof hudzik;
 
new name[33];
get_user_name(target, name, charsmax(name));
 
new class_name[30];
cod_get_user_class_name(target, class_name, charsmax(class_name));
 
new perk_name[30];
cod_get_user_perk_name(cod_get_user_perk(target), perk_name, charsmax(perk_name));
 
new klan_name[30];
cod_get_user_clan(target, klan_name, charsmax(klan_name));
 
thud_len = formatex(thudzik[thud_len], thud_lenik - thud_len, "[NICK]: %s^n", name);
 
if(cod_get_user_class_id(target))
{
thud_len += formatex(thudzik[thud_len], thud_lenik - thud_len, "[KLASA]: %s^n", class_name);
thud_len += formatex(thudzik[thud_len], thud_lenik - thud_len, "[PERK]: %s^n", perk_name);
}
 
thud_len += formatex(thudzik[thud_len], thud_lenik - thud_len, "[MONETY]: %i^n", zwrot_monet(target));
 
if(cod_get_user_class_id(target))
{
new Float:fProcent = float(((cod_get_user_next_exp(target) - cod_get_user_exp(target)) * 100) / cod_get_roznica_levele(target));
thud_len += formatex(thudzik[thud_len], thud_lenik - thud_len, "[POZIOM]: %i (%0.1f%%)^n", cod_get_user_lvl(target), 100 - fProcent);
}
 
thud_len += formatex(thudzik[thud_len], thud_lenik - thud_len, "[HP]: %i^n", get_user_health(target));
thud_len += formatex(thudzik[thud_len], thud_lenik - thud_len, "[KLAN]: %s^n", klan_name);
 
new czas[30]
zwrot_czas(target, czas, charsmax(czas));
 
thud_len += formatex(thudzik[thud_len], thud_lenik - thud_len, "[CZAS]: %s", czas);
 
set_hudmessage(0, 255, 0, 0.01, 0.20, 0, 6.0, 12.0);
ShowSyncHudMsg(id,hud, "%s", thudzik);
}
}
  • +
  • -
  • 0

#4 Anonimowy09

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 3
Nowy

  • Postów:123
  • GG:
  • Imię:Dawid
  • Lokalizacja:Krakow
Offline

Napisano 25.12.2024 14:02

chcialbym zeby [KLASA] ;[PERK] byl w innym kolorze 


  • +
  • -
  • 0

#5 Boski Z Polski

    Profesjonalista

  • Użytkownik

Reputacja: 82
Zaawansowany

  • Postów:208
  • Steam:steam
  • Imię:Olgierd
  • Lokalizacja:Leszno
Offline

Napisano 25.12.2024 15:43

Nie ma takiej możliwości 


  • +
  • -
  • 1

#6 KoRrNiK

    Zaawansowany

  • Użytkownik

Reputacja: 89
Zaawansowany

  • Postów:81
  • Steam:steam
  • Lokalizacja:Rzeszów
Offline

Napisano 25.12.2024 17:02

Teoretycznie HUDu nie da się zrobić w kilku kolorach, ale w praktyce, jeśli ktoś ruszy głową i dobrze pomyśli, to można to obejść. Można osiągnąć efekt wielu kolorów poprzez użycie kilku osobnych HUDów. Maksymalnie na ekranie można wyświetlić 4 HUDy przy użyciu funkcji show_hudmessage.  
 
Więc tak, da się zrobić tak, żeby np. "Perk" i "Klasa" były w różnych kolorach. Patrząc na Twój przykład, gdzie "Klasa" i "Perk" są wyświetlane jeden pod drugim, wystarczą dwa osobne HUDy, zamiast  np. trzech czy czterech.  
 
Pierwszy HUD (np. zielony) umieszczony na współrzędnych 0.01, 0.20 może wyglądać tak:  
 
NICK  
- odstęp  ^n (tutaj są odstępy specjalnie po to by zrobić miejsce dla drugiego HUDu który jest na tych samych współrzędnych)
- odstęp  ^n
MONETY  
POZIOM  
HP  
KLAN  
 
Drugi HUD (np. żółty) na tych samych współrzędnych by zachować odpowiednie skalowanie względem rozdzielczości, zaczyna się od razu od "odstępów", by odpowiednio ustawić "Klasę" i "Perk":  
 
- odstęp  ^n
KLASA  
PERK  
 
Oraz w kodzie masz warunek if(cod_get_user_class_id(id)), który spradza czy masz wybraną klasę i wyświetla wtedy klase i perka. W takim przypadku musisz zadbać o to, żeby odstępy również były zależne od tego warunku. Dzięki temu odstępy będą dodawane lub usuwane tylko wtedy, gdy gracz rzeczywiście ma klasę, a nie będą stale wyświetlane. 
 
Tutaj trzymaj na szybko coś wykombinowane oraz z wyczyszczonym kodem, nie wiem nawet czy działa bo dawno już w amxxie nie pisałem i nie miałem gdzie tego spradzić ale sama logika działania powinna być git nawet jakbyś chciał coś po swojemu pokombinować to już masz rozpisane jak to zrobić. 
 
public pokaz_hud(id) {
    id -= 1000;

    if (!is_user_connected(id))
        return;

    if (is_user_alive(id)) {
        display_hud_for_user(id);
    } else {
        new target = pev(id, pev_iuser2);

        if (!target)
            return;

        display_hud_for_user(target, id);
    }
}

stock display_hud_for_user(id, viewer = -1) {
    new hud_message[526], hud_length = 0;

    new player_name[33], class_name[30], perk_name[30], clan_name[30];
    get_user_name(id, player_name, charsmax(player_name));
    cod_get_user_class_name(id, class_name, charsmax(class_name));
    cod_get_user_perk_name(cod_get_user_perk(id), perk_name, charsmax(perk_name));
    cod_get_user_clan(id, clan_name, charsmax(clan_name));

    hud_length = formatex(hud_message[hud_length], sizeof(hud_message) - hud_length, "[NICK]: %s^n%s", player_name, cod_get_user_class_id(id) ? fmt("^n^n") : "");

    if (cod_get_user_class_id(id)) {
        new class_perk_message[256];
        new class_perk_length;

        class_perk_length = formatex(class_perk_message[class_perk_length], sizeof(class_perk_message) - class_perk_length, "^n^n[KLASA]: %s^n", class_name);
        class_perk_length += formatex(class_perk_message[class_perk_length], sizeof(class_perk_message) - class_perk_length, "[PERK]: %s^n", perk_name);

        set_hudmessage(255, 255, 0, 0.01, 0.20, 0, 6.0, 12.0);
        ShowSyncHudMsg(viewer != -1 ? viewer : id, hud, "%s", class_perk_message);
    }

    hud_length += formatex(hud_message[hud_length], sizeof(hud_message) - hud_length, "[MONETY]: %i^n", get_coins(id));

    if (cod_get_user_class_id(id)) {
        new Float:progress_percentage = float(((cod_get_user_next_exp(id) - cod_get_user_exp(id)) * 100) / cod_get_level_difference(id));
        hud_length += formatex(hud_message[hud_length], sizeof(hud_message) - hud_length, "[POZIOM]: %i (%0.1f%%)^n", cod_get_user_lvl(id), 100 - progress_percentage);
    }

    hud_length += formatex(hud_message[hud_length], sizeof(hud_message) - hud_length, "[HP]: %i^n", get_user_health(id));
    hud_length += formatex(hud_message[hud_length], sizeof(hud_message) - hud_length, "[KLAN]: %s^n", clan_name);

    new time_string[30];
    zwrot_czas(id, time_string, charsmax(time_string));
    hud_length += formatex(hud_message[hud_length], sizeof(hud_message) - hud_length, "[CZAS]: %s", time_string);

    set_hudmessage(0, 255, 0, 0.01, 0.20, 0, 6.0, 12.0);
    ShowSyncHudMsg(viewer != -1 ? viewer : id, hud, "%s", hud_message);
}
 

  • +
  • -
  • 2

- Na wiadomości typu "siema, mam sprawę" nie odpisuję pisz od razu o co Ci chodzi.

- Jeśli masz zlecenie pisz śmiało  :)

- Nie pomagam na PW za darmo  :(

 

 


#7 Robiin

    Godlike

  • Support Team

Reputacja: 1 121
Super Hero

  • Postów:2 073
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 25.12.2024 22:29


ale w praktyce, jeśli ktoś ruszy głową i dobrze pomyśli, to można to obejść

no i po co ludzi w błąd wprowadzasz? Boski napisał, że się nie da, to się nie da. Jak dla mnie temat wyczerpany.


  • +
  • -
  • 3

Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.


#8 KoRrNiK

    Zaawansowany

  • Użytkownik

Reputacja: 89
Zaawansowany

  • Postów:81
  • Steam:steam
  • Lokalizacja:Rzeszów
Offline

Napisano 25.12.2024 23:36

 


ale w praktyce, jeśli ktoś ruszy głową i dobrze pomyśli, to można to obejść

no i po co ludzi w błąd wprowadzasz? Boski napisał, że się nie da, to się nie da. Jak dla mnie temat wyczerpany.

 

no taaak mój błąd  :facepalm: głupoty gadam.. czasem mam takie schizy, że nie wiem co się dzieje  :crazy:

 

Boski jest ten świat ukłony dla PANA  :rozpacz:


Użytkownik KoRrNiK edytował ten post 25.12.2024 23:38

  • +
  • -
  • 1

- Na wiadomości typu "siema, mam sprawę" nie odpisuję pisz od razu o co Ci chodzi.

- Jeśli masz zlecenie pisz śmiało  :)

- Nie pomagam na PW za darmo  :(

 

 


#9 Boski Z Polski

    Profesjonalista

  • Użytkownik

Reputacja: 82
Zaawansowany

  • Postów:208
  • Steam:steam
  • Imię:Olgierd
  • Lokalizacja:Leszno
Offline

Napisano 27.12.2024 10:54


Teoretycznie HUDu nie da się zrobić w kilku kolorach, ale w praktyce, jeśli ktoś ruszy głową i dobrze pomyśli, to można to obejść. Można osiągnąć efekt wielu kolorów poprzez użycie kilku osobnych HUDów. Maksymalnie na ekranie można wyświetlić 4 HUDy przy użyciu funkcji show_hudmessage. 


Praktycznie i teoretycznie nie da się zrobić żeby jeden obiekt hud był w kilku kolorach, a co do dzielenia na kilka obiektów hud. Powodzenia w zarządzaniu czymś takim. W typowych pluginach typu hud zajmujesz cały czas kanały, więc przy większych modach (więcej obiektów hud) po prostu wiadomości nie będą się wyświetlać czy w inny sposób będą się bugować.
 


Tutaj trzymaj na szybko coś wykombinowane oraz z wyczyszczonym kodem, nie wiem nawet czy działa bo dawno już w amxxie nie pisałem i nie miałem gdzie tego spradzić ale sama logika działania powinna być git nawet jakbyś chciał coś po swojemu pokombinować to już masz rozpisane jak to zrobić. 


Nie będzie to działać. W tym przypadku class_perk_message będzie nadpisywać hud_message w przypadku, gdy cod_get_user_class_id będzie prawdą, więc będzie tylko pokazywać się jedna rzecz.
 

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Multi HUD"
#define VERSION "1.0.0"
#define AUTHOR "Boski Z Polski"

new hud1, hud2, hud3, hud4, hud5;

public plugin_init() 
{
    register_plugin(PLUGIN, VERSION, AUTHOR);
    hud1 = CreateHudSyncObj();
    hud2 = CreateHudSyncObj();
    hud3 = CreateHudSyncObj();
    hud4 = CreateHudSyncObj();
    hud5 = CreateHudSyncObj();
}

public client_putinserver(index)
{
    set_task(1.0, "showHud", index, .flags="b");
}

public client_disconnected(index)
{
    remove_task(index);
}

public showHud(index)
{
    new name[33];
    get_user_name(index, name, 32);

    set_hudmessage(255, 0, 0, 0.01, 0.20, 0, 6.0, 12.0);
    ShowSyncHudMsg(index, hud1, "NAME1: %s", name);

    set_hudmessage(0, 255, 0, 0.01, 0.20, 0, 6.0, 12.0);
    ShowSyncHudMsg(index, hud2, "^nNAME2: %s", name);
    
    set_hudmessage(0, 0, 255, 0.01, 0.20, 0, 6.0, 12.0);
    ShowSyncHudMsg(index, hud3, "^n^nNAME3: %s", name);

    set_hudmessage(255, 255, 0, 0.01, 0.20, 0, 6.0, 12.0);
    ShowSyncHudMsg(index, hud4, "^n^n^nNAME4: %s", name);
    
    set_hudmessage(0, 255, 255, 0.01, 0.20, 0, 6.0, 12.0);
    ShowSyncHudMsg(index, hud5, "^n^n^n^nNAME5: %s", name);
}

Rezultat:
462582501_1143145747816634_5670635410841906867_n.png
jeden obiekt HUD się nie będzie wyświetlać bo wszystkie kanały zajęte czytaj rzeczy takie jak wiadomości z immesage, pokazywanie obrażeń (standard plugin abd) nie będą po prostu działać (nie będą się wyświetlać albo tak jak na powyższym przykładzie, coś sobie zniknie). Jeżeli kogoś będzie satysfakcjonować takie rozwiązanie to tak, w pierwszym poście źle napisałem. 
 


Boski jest ten świat ukłony dla PANA 


Robię ukłon do podłogi :)


  • +
  • -
  • 4





Również z jednym lub większą ilością słów kluczowych: cod nowy

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

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