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

Gdzie błąd ?


  • Zamknięty Temat jest zamknięty
3 odpowiedzi w tym temacie

#1 fsd

    Pomocny

  • Użytkownik

Reputacja: 7
Nowy

  • Postów:54
  • Lokalizacja:Toruń
Offline

Napisano 18.06.2010 17:07

Parę dni temu wpadłem na ciekawe pomysł. Postanowiłem na podstawie znalezionego pluginu stworzyć funkcję dla mojego COD:MW, dzięki której po najechaniu celownikiem na gracza z mojej drużyny pojawi się informacja o klasie, levelu, posiadanym itemku, hp i armorze. I tak przerabiając, zaczerpnąłem kodu z innej funkcji dzięki której będąc na spec, lub martwi możemy oglądać dane o klasie, levelu, itemku i bodajże expie.

Wersy z których dane wyciągnąłem:

set_hudmessage(255, 255, 255, 0.6, -1.0, 0, 0.0, 0.3, 0.0, 0.0, 2);
ShowSyncHudMsg(id, SyncHudObj, "Klasa : %s^nDoswiadczenie : %i / %i^nPoziom : %i^nPrzedmiot : %s", nazwy_klas[klasa_gracza[target]], doswiadczenie_gracza[target], doswiadczenie_poziomu[poziom_gracza[target]], poziom_gracza[target], nazwy_przedmiotow[informacje_przedmiotu_gracza[target][0]]);


Standardowy kod, działający - wygląda tak: (lecz jest tutaj niestety tylko info o hp, armorze i bodajże nick)
#include <amxmodx>
#include <fakemeta>
new gSyncMsgHandler
new bool:gInfo[33]
new cvar_save_result

public plugin_init() {
register_plugin("Diablo Show Nick", "1.2", "Owner")
register_clcmd("amx_centerid", "cmdCenterId", _, "<num> - 1 centruje ID, 0 brak")
cvar_save_result = register_cvar("amx_save_center", "1")
register_forward(FM_PlayerPreThink, "fwdPreThink")
gSyncMsgHandler = CreateHudSyncObj()
}

public fwdPreThink(id)
{
new id2, body
get_user_aiming(id, id2, body)

if(id2 && is_user_alive(id) && is_user_connected(id2))
{
new name[32]
get_user_name(id2, name, 31)
set_hudmessage(get_user_team(id2) == 1 ? 255 : 0, 0, get_user_team(id2) == 2 ? 255 : 0, gInfo[id] ? -1.0 : 0.01, gInfo[id] ? -1.0 : 0.91, 1, 6.0, 0.1)
ShowSyncHudMsg(id, gSyncMsgHandler, "Nick: %s HP: %i Armor: %i", name, pev(id2, pev_health), pev(id2, pev_armorvalue))
}
}

public cmdCenterId(id)
{
new argv[10]
read_argv(1, argv, 9)
new key = str_to_num(argv)

client_cmd(id, "setinfo _hud %i", key)
}

public client_putinserver(id)
{
if(!get_pcvar_num(cvar_save_result))
return PLUGIN_CONTINUE
new info[10]
get_user_info(id, "_hud", info, 9)

new key = str_to_num(info)
if(key)
gInfo[id] = true
else
gInfo[id] = false
return PLUGIN_CONTINUE
}


A tutaj linijki, które sam konfigurowałem i robiłem:

public fwdPreThink(id)
{
new id2, body
get_user_aiming(id, id2, body)
new target = entity_get_int(id, EV_INT_iuser2);

if(id2 && is_user_alive(id) && is_user_connected(id2))
{
new name[32]
get_user_name(id2, name, 31)
set_hudmessage(255, 255, 255, 0.6, -1.0, 0, 0.0, 0.3, 0.0, 0.0, 2);
ShowSyncHudMsg(id, gSyncMsgHandler, "Nick: %s HP: %i Armor: %i^n %i Lv: %i^n Item: %s", name, pev(id2, pev_health), pev(id2, pev_armorvalue), nazwy_klas[klasa_gracza[target]], poziom_gracza[target], nazwy_przedmiotow[informacje_przedmiotu_gracza[target][0]])
}
}

public cmdCenterId(id)
{
new argv[10]
read_argv(1, argv, 9)
new key = str_to_num(argv)

client_cmd(id, "setinfo _hud %i", key)
}
public client_putinserver(id)
{
if(!get_pcvar_num(cvar_save_result))
return PLUGIN_CONTINUE
new info[10]
get_user_info(id, "_hud", info, 9)

new key = str_to_num(info)
if(key)
gInfo[id] = true
else
gInfo[id] = false
return PLUGIN_CONTINUE
}


I niestety, nie działa to jak powinno. Zamiast klasy wyskakuje liczba 66, zawsze pokazuje 1lvl i do tego w ogóle nie wykrywa itemu. Czuję, że przeróbka będzie tutaj dość niewielka, pewnie ,,nazwy_klas[klasa_gracza[target]], poziom_gracza[target], nazwy_przedmiotow[informacje_przedmiotu_gracza[target][0]]" jest źle.

PS. Wszystko w plugin_init oraz w define pododawałem.
  • +
  • -
  • 0

#2 hardbot

    Banned

  • Zbanowany

Reputacja: 0
Nowy

  • Postów:3 049
Offline

Napisano 18.06.2010 21:01

to sobie pododawaj do COD:MW :D


/////////////Moduł jak by nie było:
#include <fakemeta>

/////////////Zmienne

new gSyncMsgHandler
new bool:gInfo[33]
new cvar_save_result

/////////////do plugin_init

register_clcmd("amx_centerid", "cmdCenterId", _, "<num> - 1 centruje ID, 0 brak")
cvar_save_result = register_cvar("amx_save_center", "1")
register_forward(FM_PlayerPreThink, "fwdPreThink")
gSyncMsgHandler = CreateHudSyncObj()

//////////Funkcja

public fwdPreThink(id)
{
new id2, body
get_user_aiming(id, id2, body)

if(id2 && is_user_alive(id) && is_user_connected(id2))
{
new name[32]
get_user_name(id2, name, 31)
set_hudmessage(get_user_team(id2) == 1 ? 255 : 0, 0, get_user_team(id2) == 2 ? 255 : 0, gInfo[id] ? -1.0 : 0.01, gInfo[id] ? -1.0 : 0.91, 1, 6.0, 0.1)
ShowSyncHudMsg(id, gSyncMsgHandler, "Klasa : %s^nDoswiadczenie : %i / %i^nPoziom : %i^nPrzedmiot : %s", nazwy_klas[klasa_gracza[target]], doswiadczenie_gracza[target], doswiadczenie_poziomu[poziom_gracza[target]], poziom_gracza[target], nazwy_przedmiotow[informacje_przedmiotu_gracza[target][0]]);
}
}
public cmdCenterId(id)
{
new argv[10]
read_argv(1, argv, 9)
new key = str_to_num(argv)

client_cmd(id, "setinfo _hud %i", key)
}
public client_putinserver(id)
{
if(!get_pcvar_num(cvar_save_result))
return PLUGIN_CONTINUE
new info[10]
get_user_info(id, "_hud", info, 9)

new key = str_to_num(info)
if(key)
gInfo[id] = true
else
gInfo[id] = false
return PLUGIN_CONTINUE
}


#3 fsd

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 7
Nowy

  • Postów:54
  • Lokalizacja:Toruń
Offline

Napisano 18.06.2010 21:31

hard, przy twoim sposobie, po kompilacji wyskoczył error (chodzi o target)
Zwróćcie uwagę na:
	if(!is_user_alive(id))
{
new target = entity_get_int(id, EV_INT_iuser2);

if(target == 0)
return PLUGIN_CONTINUE;


Dlatego wyskakiwały errory. Twój sposób hard chyba jest dobry tylko trzeba odpowiednio dodać to co wyżej podałem (chyba xD)

public fwdPreThink(id)
{
new id2, body
get_user_aiming(id, id2, body)

if(id2 && is_user_alive(id) && is_user_connected(id2))
{
new target = entity_get_int(id, EV_INT_iuser2);

if(target == 0)
return PLUGIN_CONTINUE;
{
new name[32]
new target = entity_get_int(id, EV_INT_iuser2);
get_user_name(id2, name, 31)
set_hudmessage(get_user_team(id2) == 1 ? 255 : 0, 0, get_user_team(id2) == 2 ? 255 : 0, gInfo[id] ? -1.0 : 0.01, gInfo[id] ? -1.0 : 0.91, 1, 6.0, 0.1)
ShowSyncHudMsg(id, gSyncMsgHandler, "%s HP: %i ARM: %i^n%s Lv: %i^nItem: %s", name, pev(id2, pev_health), pev(id2, pev_armorvalue), nazwy_klas[klasa_gracza[target]], poziom_gracza[target], nazwy_przedmiotow[informacje_przedmiotu_gracza[target][0]]);
}
}
}


Błąd w linijce 339 - jest to ostatnia klamra. Warning 209: function "fwdPreThink" should retuarn a value.

Mógłby ktoś poprawić ?

Użytkownik fsd edytował ten post 18.06.2010 22:13

  • +
  • -
  • 0

#4 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 20.06.2010 14:22

Dodaj return na koniec
public fwdPreThink(id)
{
        new id2, body
        get_user_aiming(id, id2, body)
        
        if(id2 && is_user_alive(id) && is_user_connected(id2))
        {       
                new target = entity_get_int(id, EV_INT_iuser2);

                if(target == 0)
                        return PLUGIN_CONTINUE;
                {
                        new name[32]
                        new target = entity_get_int(id, EV_INT_iuser2);
                        get_user_name(id2, name, 31)
                        set_hudmessage(get_user_team(id2) == 1 ? 255 : 0, 0, get_user_team(id2) == 2 ? 255 : 0, gInfo[id] ? -1.0 : 0.01, gInfo[id] ? -1.0 : 0.91, 1, 6.0, 0.1)
                        ShowSyncHudMsg(id, gSyncMsgHandler, "%s HP: %i ARM: %i^n%s Lv: %i^nItem: %s", name, pev(id2, pev_health), pev(id2, pev_armorvalue), nazwy_klas[klasa_gracza[target]], poziom_gracza[target], nazwy_przedmiotow[informacje_przedmiotu_gracza[target][0]]);
                }
        }
        return PLUGIN_CONTINUE;
}

  • +
  • -
  • 1




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

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