Problem z pobieraniem textu
Najlepsza odpowiedź _McHappy 28.08.2017 20:51
Wszelako pojęte tablice z danymi przekazywane są jako argumenty funkcji(przez referencję), a nie przez nie zwracane. Patrz przykład:
public PobierzJakisTekst(id, TablicaZTekstem[], dlugoscTekstu)
{
param_convert(2);
copy(TablicaZTekstem, dlugoscTekstu, JakisTekstNpGracza[id]);
}
Wywołanie:
new szZmienna[64];
PobierzJakisTekst(id, szZmienna, 63);
Potem wykorzystanie, np:
client_print(id, print_center, "Twoja zmienna tekstowa: %s", szZmienna); Przejdź do postu
public PobierzJakisTekst(id, TablicaZTekstem[], dlugoscTekstu)
{
param_convert(2);
copy(TablicaZTekstem, dlugoscTekstu, JakisTekstNpGracza[id]);
}
Wywołanie:
new szZmienna[64];
PobierzJakisTekst(id, szZmienna, 63);
Potem wykorzystanie, np:
client_print(id, print_center, "Twoja zmienna tekstowa: %s", szZmienna); Przejdź do postu
Split
28.08.2017
Witam. Mam pewien problem, otóż od niedawana zacząłem zabawę w Pawn. Jest jeden problem. Zrobiłem tablicę z itemami (przedmiotami)
Problem leży właśnie po tym że nie może mi zwrócić nazwy.
- .WhiteBlue (s)
a powinno pisać
- .WhiteBlue (item 1)
Proszę o pomoc.
new const nazwy_przedmiotow[][] = { "Brak", "Item 1", // 1 }A następnie funkcję:
public native_cod_get_user_item_name(id) { new item[64] format(item, charsmax(item), nazwy_przedmiotow[informacje_przedmiotu_gracza[id][0]]) return item }Oczywiście "informacje_przedmiotu_gracza[id][0]" zawiera ID przedmiotu, czyli 1 to "Item 1"
Problem leży właśnie po tym że nie może mi zwrócić nazwy.
for (new i = 1; i <= get_maxplayers(); i++) { if (!is_user_connected(i)) continue new name[64] get_user_name(i, name, charsmax(name)) //new item //item = cod_get_user_item_name(i) new player[64] format(player, charsmax(player), "%s (%s)", name, cod_get_user_item_name(i)) menu_additem(menu, player, _, _, menu_call) }I podczas zwracania wartości Pokazuje mi coś takiego:
- .WhiteBlue (s)
a powinno pisać
- .WhiteBlue (item 1)
Proszę o pomoc.
xBredeK
28.08.2017
W tym
for (new i = 1; i <= get_maxplayers(); i++) { if (!is_user_connected(i)) continue new name[64] get_user_name(i, name, charsmax(name)) //new item //item = cod_get_user_item_name(i) new player[64] format(player, charsmax(player), "%s (%s)", name, cod_get_user_item_name(i)) menu_additem(menu, player, _, _, menu_call) }
nie powinno być zamiast "%s (%s)" takie coś "%s (%i)" ?
Split
28.08.2017
Niestety nie, gdy %i jest to liczba a ja chcę zwracać nazwę itemu, nie ID.
Robiin
28.08.2017
Możesz pokazać cały public? Mam wrażenie, że błędem jest wyświetlanie opcji w menu, a nie samo formatowanie (bo z tego co widzę, to chyba kod jest spójny).
Najlepsza odpowiedź
_McHappy
28.08.2017
Wszelako pojęte tablice z danymi przekazywane są jako argumenty funkcji(przez referencję), a nie przez nie zwracane. Patrz przykład:
public PobierzJakisTekst(id, TablicaZTekstem[], dlugoscTekstu)
{
param_convert(2);
copy(TablicaZTekstem, dlugoscTekstu, JakisTekstNpGracza[id]);
}
Wywołanie:
new szZmienna[64];
PobierzJakisTekst(id, szZmienna, 63);
Potem wykorzystanie, np:
client_print(id, print_center, "Twoja zmienna tekstowa: %s", szZmienna);
Użytkownik _McHappy edytował ten post 28.08.2017 21:14
public PobierzJakisTekst(id, TablicaZTekstem[], dlugoscTekstu)
{
param_convert(2);
copy(TablicaZTekstem, dlugoscTekstu, JakisTekstNpGracza[id]);
}
Wywołanie:
new szZmienna[64];
PobierzJakisTekst(id, szZmienna, 63);
Potem wykorzystanie, np:
client_print(id, print_center, "Twoja zmienna tekstowa: %s", szZmienna);
Użytkownik _McHappy edytował ten post 28.08.2017 21:14
_McHappy
28.08.2017
param_convert() używane jest dla natywów o parametrze 'style'=1
Funkcja ta przygotowuje zwykły parametr do przekazania poprzez referencję.
Funkcja ta przygotowuje zwykły parametr do przekazania poprzez referencję.
Split
28.08.2017
Kumam. Jak mam użyć Twojego przykładu w tej funkcji ?
public native_cod_get_user_item_id(id) { new item = informacje_przedmiotu_gracza[id][0] return item } public native_cod_get_user_item_name(id) { new item = nazwy_przedmiotow[informacje_przedmiotu_gracza[id][0]] return item }W natywach mam to:
native cod_set_user_item(id, amount) native cod_get_user_item_id(id) native cod_get_user_item_name(id)
_McHappy
28.08.2017
Natyw:
native cod_get_user_item_name(id, szReturn[], iLen);
Ciało natywu:
public native_cod_get_user_item_name(id, szReturn[], iLen) { param_convert(2); copy(szReturn, iLen, nazwy_przedmiotow[informacje_przedmiotu_gracza[id][0]]); }
Wywołanie:
for (new i = 1; i <= get_maxplayers(); i++) { if (!is_user_connected(i)) continue new name[64] get_user_name(i, name, charsmax(name)) new szItemName[32]; cod_get_user_item_name(id, szItemName, charsmax(szItemName)); new player[64] format(player, charsmax(player), "%s (%s)", name, szItemName) menu_additem(menu, player, _, _, menu_call) }
Użytkownik _McHappy edytował ten post 28.08.2017 22:17