Co mam na myśli ? Chociażby wlepianie do tekstu nicku danego gracza, fragów, zgonów i tak dalej...
Przejdźmy do rzeczy, jedną z najbardziej znanych funkcji do formatowania tekstu, jest funkcja formatex(output[] ,len ,const format[] , any:...)
Musimy wypełnić w niej jednak następujące parametry
output[] - tablica, do której trafi nasz sformatowany już tekst
len - wielkość tablicy
const format[] - tekst, który będziemy przygotowywać do formatowania
any:... - tutaj dodamy, to, co zechcemy wrzucić do tekstu
Formatowanie nie jest aż tak skomplikowane, lecz istnieje coś takiego jak znaki (o których wcześniej wspomniałem) formatujące
Źródło: http://amxx.pl/dokum...a/f1366/format.
Przed każdy znak należy dodać %. Wydaje mi się że najlepiej wytłumaczyć będzie to na przykładzie
if(id == 1) { new tekst[101]; formatex(tekst, 100, "Twoj index jest rowny %d", id); //tekst - "Twoj index jest rowny 1" }Jak widać dodałem do tekstu %d, użyłem znaku d, gdzie odpowiada on za liczbe dziesiętną ze znakiem.
Oczywiście to tylko przykład, istnieje naprawdę dużoooo 'rzeczy' (naprawdę bardzo dużo), które możemy wrzucić do tekstu.
A tera trochę więcej, chcemy dodać do tekstu liczbę wymierną, lecz jest ona liczbą która nie ma końca (zapomniałem jak na takie liczby się mówi ).
Czyli, np. 100/3 = 33.333...
Możemy ograniczyć dodawanie tych liczb (po przecinku w tym przypadku), poprzez zamiast dodanie znaku
%fna
%.2fWtedy wyświetli nam się w danym miejscu 33.33
Podobnie można działać na znaku d czyli na liczbach rzeczywistych
new tekst[101]; formatex(tekst, 100, "Twoj index jest rowny %02d", id); //tekst = "Twoj index jest rowny 01"Warto powiedzieć że w np. ColorChat mamy że tak się wyrażę wbudowane formatowanie tekstu
Pokaże na przykładzie wyświetlania nicku na chacie, kiedy ten wchodzi na serwer
public client_putinserver(id) { new nick[64]; get_user_name(id, nick, 63); ColorChat(0, GREEN, "Na serwer wchodzi^x03 %s", nick); }Oczywiście formatex nie jest takie doskonałe (jest szybsze od innej funkcji, http://amxx.pl/dokum...ja/f1366/format), a mianowicie, istnieje funkcja format w której można zrobić coś takiego:
new tekst[101] = "de_dust2"; format(tekst, 100, "maps/%s.bsp", tekst);Chodzi mi tutaj o to, że tekst jako tablica do której wysyłamy sformatowany ciąg znaków, w format możemy użyć jeszcze jako jeden z parametrów do sformatowania, w formatex natomiast nie można już tak postępować.
Tak w sumie to są szanse że to zadziała, ale tylko wtedy, kiedy parametr który jest tablicą wynikową, jest na początku (Poprawka sebula )
Myślę że dość zrozumiałe, poradnik na tym się kończy
Użytkownik d0n tHe Pr0oo edytował ten post 03.02.2013 11:15