Właściciel GET Opublikowano 6 Sierpnia 2012 Właściciel Opublikowano 6 Sierpnia 2012 Polskie końcówki wyrazów w zależności od wartości Na pewno nieraz widzieliście napisy typu: Koszt przesyłki wynosi 24 złotych Na Twoim koncie jest 1 punktów Sesja wygaśnie za 4 minut Nie potrafiliście sobie z tym poradzić, lub po prostu problem Was przerastał. Mam dla Was wspaniałą nowinę: Od dziś będziecie spać spokojnie! Albowiem przedstawiam rozwiązanie. Stock wybiera odpowiednią końcówkę na podstawie podanej wartości. Mamy do czynienia z dwoma stockami: dkoncowka() dla liczb całkowitych (integer, decimal) fkoncowka() dla dla liczb zmiennoprzecinkowych (float) Zastosowanie dkoncowka(ile, czlon[], zero[], jeden[], dwa[]); fkoncowka(Float:ile, czlon[], zero[], pol[], jeden[], dwa[]); Opis ile [liczba całkowita dla dkoncowka(), zmiennoprzecinkowa dla fkoncowka()] → wartość, na podstawie której wybierana będzie końcówka czlon [ciąg znaków] → wbrew nazwie humanistycznej, początek wyrazu wyświetlanego, identyczny dla wszystkich kolejnych argumentów zero [ciąg znaków] → końcówka, którą przyjmuje wyraz dla wartości ile równej 0, która dołączona do członu da pełny, odmieniony wyraz pol [ciąg znaków] → końcówka, którą przyjmuje wyraz dla wartości ile równej 0.5, która dołączona do członu da pełny, odmieniony wyraz jeden [ciąg znaków] → końcówka, którą przyjmuje wyraz dla wartości ile równej 1, która dołączona do członu da pełny, odmieniony wyraz dwa [ciąg znaków] → końcówka, którą przyjmuje wyraz dla wartości ile równej 2, która dołączona do członu da pełny, odmieniony wyraz Uwaga Zmienna czlon służy zaoszczędzeniu czasu w używaniu funkcji, pozostawienie jej pustej i podanie pełnych odmian słów pozostałych zmiennych w zupełności spełni swoje zadanie, choć zazwyczaj zwyczajnie przysporzy nam niepotrzebnego pisania kilkakrotnie początku tego samego wyrazu. Przykład if(is_user_alive(id)){ new hp=get_user_health(id); client_print(id,print_chat,"Masz %d %s zycia", hp, dkoncowka(hp, "punkt", "ow", "", "y")); } if(is_user_connected(id)){ new frags=get_user_frags(id); if(frags) client_print(id,print_chat,"Zdobyles %d %s", frags, dkoncowka(frags, "frag", "ow", "a", "i")); else client_print(id,print_chat,"Nie zdobyles jeszcze zadnego fraga"); } Stock do skopiowania stock dkoncowka(ile, czlon[], zero[], jeden[], dwa[]){ new str[1024]; ile=abs(ile); if(ile==1){ format(str,1023,"%s%s",czlon,jeden); return str; } if((ile%10==2 || ile%10==3 || ile%10==4) && (!(ile%100==12 || ile%100==13 || ile%100==14))){ format(str,1023,"%s%s",czlon,dwa); return str; } format(str,1023,"%s%s",czlon,zero); return str; } stock fkoncowka(Float:ile, czlon[], zero[], pol[], jeden[], dwa[]){ new str[1024]; ile=floatabs(ile); if(ile==1.0){ format(str,1023,"%s%s",czlon,jeden); return str; } if(ile!=floatround(ile)){ format(str,1023,"%s%s",czlon,pol); return str; } new num=floatround(ile); if((num%10==2 || num%10==3 || num%10==4) && (!(num%100==12 || num%100==13 || num%100==14))){ format(str,1023,"%s%s",czlon,dwa); return str; } format(str,1023,"%s%s",czlon,zero); return str; } Implementacja (koncowka.inc) Kopiujemy stock do folderu scripting/include i dodajemy na początku kodu #include Lub kopiujemy potrzebne stocki do naszego kodu Autor: benio101 dla amxx.pl
Właściciel GET Opublikowano 6 Czerwca 2017 Autor Właściciel Opublikowano 6 Czerwca 2017 Wiadomość została wygenerowana automatycznie. Ten temat został oznaczony przez Moderatora jako spam i wyrzucony do -> archiwum. Jeśli się z tym nie zgadzasz, raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Rekomendowane odpowiedzi