Poprawieni kodu hud
Flk 12.08.2012
chcial bym zeby to co wpisze w messagemode pokazywalo w hud ale cos zle zrobilem i mi to nie dziala
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#define ZADANIE_POKAZ_INFORMACJE 672
#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "Administrator"
new mymenu, klasa[33];
new SyncHudObj;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("NazwaKlasy","pobierz");
SyncHudObj = CreateHudSyncObj();
}
public pokaz_menu(id)
{
mymenu = menu_create("Menu","handle_mymenu")
menu_additem(mymenu, "Klasa Gracza");
menu_display(id,mymenu,0)
}
public handle_mymenu(id,menu,item)
{
switch(item)
{
case 0:
{
client_cmd(id,"messagemode NazwaKlasy");
}
}
}
public pobierz(id)
{
new said[31];
new cmd[16];
new target[32];
read_args(said, 30);
replace(said, 30, "^"", "");
parse(said, cmd,15, target,31);
if (equal(cmd, "NazwaKlasy", 4))
{
klasa[id] = cmd_target(id,target,31);
}
}
public client_connect(id)
{
set_task(3.0, "Info", id+ZADANIE_POKAZ_INFORMACJE);
}
public Info(id)
{
id -= ZADANIE_POKAZ_INFORMACJE;
set_task(0.1, "Info", id+ZADANIE_POKAZ_INFORMACJE);
if(!is_user_alive(id))
{
new target = pev(id, pev_iuser2);
if(!target)
return PLUGIN_CONTINUE;
set_hudmessage(255, 255, 255, 0.6, 0.46, 0, 0.0, 0.3, 0.0, 0.0, 2);
ShowSyncHudMsg(id, SyncHudObj, "Klasa: %s", klasa[id]);
return PLUGIN_CONTINUE;
}
set_hudmessage(0, 255, 0, 0.02, 0.23, 0, 0.0, 0.3, 0.0, 0.0);
ShowSyncHudMsg(id, SyncHudObj, "[Klasa: %s]", klasa[id]);
return PLUGIN_CONTINUE;
}
fgsfds
13.08.2012
Może się nie znam ale jakoś tak dziwnie to wygląda.
Przy połączeniu gracza z serwerem ustawiasz task co 3 sekundy o identyfikatorze id+ZADANIE_POKAZ_INFORMACJE który uruchamia funkcję Info, po czym w tej funkcji ustawiasz task o tym samym identyfikatorze, który wywołuję funkcje, która znowu ustawia ten task i tak w nieskończoność.
Są jakieś błędy w konsoli? W kompilatorze? Cokolwiek?
Przy połączeniu gracza z serwerem ustawiasz task co 3 sekundy o identyfikatorze id+ZADANIE_POKAZ_INFORMACJE który uruchamia funkcję Info, po czym w tej funkcji ustawiasz task o tym samym identyfikatorze, który wywołuję funkcje, która znowu ustawia ten task i tak w nieskończoność.
Są jakieś błędy w konsoli? W kompilatorze? Cokolwiek?
fgsfds
13.08.2012
O którą linijkę dokładnie chodzi?
Tą?
Użytkownik Maxorq edytował ten post 13.08.2012 00:58
if (equal(cmd, "NazwaKlasy", 4))
{
klasa[id] = cmd_target(id,target,31);
}
Tą?
Użytkownik Maxorq edytował ten post 13.08.2012 00:58
Gość_21977_* 13.08.2012
Na pierwszy rzut oka, po wyjściu gracza z serwera, dalej wysyłasz do niego wiadomości.
Doraźnie
Doraźnie
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#define ZADANIE_POKAZ_INFORMACJE 672
#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "Administrator"
new mymenu, klasa[33];
new SyncHudObj;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("NazwaKlasy","pobierz");
SyncHudObj = CreateHudSyncObj();
}
public pokaz_menu(id)
{
mymenu = menu_create("Menu","handle_mymenu");
menu_additem(mymenu, "Klasa Gracza");
menu_display(id,mymenu,0);
}
public handle_mymenu(id,menu,item)
{
switch(item)
{
case 0:
{
client_cmd(id,"messagemode NazwaKlasy");
}
}
}
public pobierz(id)
{
new said[31];
new cmd[16];
new target[32];
read_args(said, 30);
replace(said, 30, "^"", "");
parse(said, cmd,15, target,31);
if (equal(cmd, "NazwaKlasy", 4))
{
klasa[id] = cmd_target(id,target,31);
}
}
public client_connect(id)
{
set_task(3.0, "Info", id+ZADANIE_POKAZ_INFORMACJE);
}
public Info(id)
{
id -= ZADANIE_POKAZ_INFORMACJE;
if(is_user_connected(id))
set_task(0.1, "Info", id+ZADANIE_POKAZ_INFORMACJE);
if(!is_user_alive(id))
{
new target = pev(id, pev_iuser2);
if(!target)
return PLUGIN_CONTINUE;
set_hudmessage(255, 255, 255, 0.6, 0.46, 0, 0.0, 0.3, 0.0, 0.0, 2);
ShowSyncHudMsg(id, SyncHudObj, "Klasa: %s", klasa[id]);
return PLUGIN_CONTINUE;
}
set_hudmessage(0, 255, 0, 0.02, 0.23, 0, 0.0, 0.3, 0.0, 0.0);
ShowSyncHudMsg(id, SyncHudObj, "[Klasa: %s]", klasa[id]);
return PLUGIN_CONTINUE;
}
fgsfds
13.08.2012
niby działa ale nie pokazuje się tekst wpisany i zapisany do klasa[id]
klasa[33] to tablica typu Integer.
Usiłujesz wstawić do wiadomości %s czyli String. Zamień "Klasa: %s" na "Klasa: %i" i wtedy będziesz miał wartość liczbową typu "Klasa: 1"
Żadnych deklaracji nazw klas nie widzę, więc to musisz zrobić na początku.
Flk 13.08.2012
akurat chce tam wstawić tekst jak to zrobić dopiero zaczynam wiec proszę o pomoc
fgsfds
13.08.2012
Dobra, chcesz wstawić tekst ale jaki? Skąd go bierzesz? Co w ogóle usiłujesz zrobić?
Flk 13.08.2012
Tutaj w tem menu wpisujesz np. Kapitan
i chce to wyświetlić w hud z zapisem nvault
i chce to wyświetlić w hud z zapisem nvault
public pokaz_menu(id)
{
mymenu = menu_create("Menu","handle_mymenu");
menu_additem(mymenu, "Klasa Gracza");
menu_display(id,mymenu,0);
}
public handle_mymenu(id,menu,item)
{
switch(item)
{
case 0:
{
client_cmd(id,"messagemode NazwaKlasy");
}
}
fgsfds
13.08.2012
Dziwnie mi to wygląda, ale w każdym razie, najlepiej gdybyś na początku walnął jakąś definicję wszystkich nazw klas typu:
Później w HUD'zie możesz się do tego odwołać podając NazwyKlas[klasa[id]] (tym razem z parametrem %s)
new const NazwyKlas[3][] = { "Kapitan", "Inna klasa", "Jeszcze inna" }
Później w HUD'zie możesz się do tego odwołać podając NazwyKlas[klasa[id]] (tym razem z parametrem %s)
Flk 13.08.2012
wiem ale właśnie chciałem zrobić że każdy se może swoją nazwę wpisać szkoda że się nie da
fgsfds
13.08.2012
Nie no, dałoby się zrobić wpisywanie własnej, ale musiałbyś wtedy zrobić zmienną która może to przetrzymywać, np.
Dałoby to 32 znaki do wykorzystania dla każdego gracza, mógłbyś to pętlą zapisywać do nVault'a.
Trochę pokomplikowany ten kod, więc wstrzymam się z dalszymi pomysłami do czasu, aż ktoś inny na to popatrzy.
new NazwyKlas[33][32]
Dałoby to 32 znaki do wykorzystania dla każdego gracza, mógłbyś to pętlą zapisywać do nVault'a.
Trochę pokomplikowany ten kod, więc wstrzymam się z dalszymi pomysłami do czasu, aż ktoś inny na to popatrzy.
Flk 13.08.2012
zrobiłem to inaczej ale mam problem bo nie wiem jak zapisać wpisany tekst na jedną osobę
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <nvault>
#define ZADANIE_POKAZ_INFORMACJE 672
#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "Administrator"
new szText1[33][64];
new SyncHudObj;
new d_bron
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /test","test")
register_clcmd("NazwaKlasy", "Manual1")
d_bron = nvault_open("klasa")
SyncHudObj = CreateHudSyncObj();
}
public test(id) {
new menu = menu_create("MenuX", "wieczyste")
menu_additem(menu, "Nazwa Klasy")
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, menu, 0)
}
public wieczyste(id, menu, item) {
switch(item){
case 0: {
client_cmd(id, "messagemode NazwaKlasy");
}
}
return PLUGIN_HANDLED
}
public Manual1(id) {
read_argv(1, szText1[id], charsmax(szText1))
remove_quotes(szText1[id])
return PLUGIN_HANDLED
}
public client_connect(id)
{
Wczytajexp(id)
set_task(3.0, "Info", id+ZADANIE_POKAZ_INFORMACJE);
}
public client_disconnect(id)
{
Zapiszexp(id);
}
public Info(id)
{
id -= ZADANIE_POKAZ_INFORMACJE;
set_task(0.1, "Info", id+ZADANIE_POKAZ_INFORMACJE);
if(!is_user_alive(id))
{
new target = pev(id, pev_iuser2);
if(!target)
return PLUGIN_CONTINUE;
set_hudmessage(255, 255, 255, 0.6, 0.46, 0, 0.0, 0.3, 0.0, 0.0, 2);
ShowSyncHudMsg(id, SyncHudObj, "Klasa: %s", szText1[id]);
return PLUGIN_CONTINUE;
}
set_hudmessage(0, 255, 0, 0.02, 0.23, 0, 0.0, 0.3, 0.0, 0.0);
ShowSyncHudMsg(id, SyncHudObj, "[Klasa: %s]", szText1[id]);
return PLUGIN_CONTINUE;
}
public Zapiszexp(id)
{
new name[31];
get_user_name(id, name, 31);
new vaultkey[64], vaultdata[256];
format(vaultkey, 63, "%s-exp", name);
format(vaultdata, 255, "%s#", szText1[id]);
nvault_set(d_bron, vaultkey, vaultdata);
return PLUGIN_CONTINUE;
}
public Wczytajexp(id)
{
new name[31];
get_user_name(id,name,31);
new vaultkey[64], vaultdata[256];
format(vaultkey, 63, "%s-exp", name);
format(vaultdata, 255, "%s#", szText1[id]);
nvault_get(d_bron, vaultkey, vaultdata,255);
replace_all(vaultdata, 255, "#", " ");
new danegracza[1][32];
parse(vaultdata, danegracza[0]);
copy(szText1[id], 63, danegracza[0]);
return PLUGIN_CONTINUE;
}
fgsfds
13.08.2012
Spróbuj zamiast:
użyć:
read_argv(1, szText1[id], charsmax(szText1))
użyć:
read_argv(1, szText1[id], charsmax(szText1[id]))
Flk 13.08.2012
Welcome to the AMX Mod X 1.76-300 Compiler.
Copyright © 1997-2006 ITB CompuPhase, AMX Mod X Team
Error: Expected token: "]", but found "-identifier-" on line 47
Error: Invalid expression, assumed zero on line 47
Error: Invalid expression, assumed zero on line 47
Error: Too many error messages on one line on line 47
Compilation aborted.
4 Errors.
Could not locate output file D:\amxx\Untitled.amx (compile failed).
Copyright © 1997-2006 ITB CompuPhase, AMX Mod X Team
Error: Expected token: "]", but found "-identifier-" on line 47
Error: Invalid expression, assumed zero on line 47
Error: Invalid expression, assumed zero on line 47
Error: Too many error messages on one line on line 47
Compilation aborted.
4 Errors.
Could not locate output file D:\amxx\Untitled.amx (compile failed).
Kawon
13.08.2012
Wiadomość wygenerowana automatycznie
Ten temat został zamknięty przez moderatora.
Powód: Temat zamknięty na prośbę użytkownika.
Z pozdrowieniami,
Zespół AMXX.PL
Ten temat został zamknięty przez moderatora.
Powód: Temat zamknięty na prośbę użytkownika.
Z pozdrowieniami,
Zespół AMXX.PL