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
 

Polskie końcówki wyrazów w zależności od wartości

polskie końcówki wyrazy wartość zależność końcówka polska polska końcówka liczebnik odpowiednia końcówka końcówka zależna od liczby

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
11 odpowiedzi w tym temacie

#1 Gość_21977_*

  • Gość

Reputacja: 0

Offline

Napisano 30.06.2012 18:10

*
Popularny

Wstęp
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łady
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");
}


Stocki 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;
}


Stocki do pobrania
Załączony plik  koncowka.inc   1,02 KB  133 Ilość pobrań

Implementacja (koncowka.inc)
  • Kopiujemy stock do folderu scripting/include i dodajemy na początku kodu
    #include <koncowka>
    
  • Lub kopiujemy potrzebne stocki do naszego kodu


#2 ToRRent

    Czempion

  • Power User

Reputacja: 229
Wszechwidzący

  • Postów:861
  • Imię:Łukasz
  • Lokalizacja:Wrocław
Offline

Napisano 30.06.2012 18:24

Wow !

Miałeś naprawdę dobry pomysł ;)
  • +
  • -
  • 0

#3 Maniek974

    Wszechwiedzący

  • Power User

Reputacja: 352
Wszechpomocny

  • Postów:594
  • Steam:steam
  • Imię:Mariusz
  • Lokalizacja:Tomaszów Maz.
Offline

Napisano 30.06.2012 18:34

+ dla ciebie
Komuś na pewno się przyda.
  • +
  • -
  • 0

#4 Pan PrO

    Wszechpomocny

  • Użytkownik

Reputacja: 99
Zaawansowany

  • Postów:388
  • Lokalizacja:PC
Offline

Napisano 30.06.2012 19:10

Na pewno się przyda
  • +
  • -
  • 0

#5 radim

    Godlike

  • Moderator

Reputacja: 939
Master

  • Postów:2 725
  • Steam:steam
  • Imię:Arkadiusz
  • Lokalizacja:Janów Lub.
Offline

Napisano 01.07.2012 08:15

Hehe, dobry pomysł, wręcz zaje*isty ; ) Dużo razy borykałem się z tym problemem i używałem zawsze if'ów O.o :facepalm:
+
  • +
  • -
  • 0

Chcąc napisać do mnie prywatną wiadomość, wpierw zapoznaj się ze stroną "O mnie" w moim profilu użytkownika [ radim ] !


#6 sNH.

    Czy MisieQ ukradł ciasteczko?

  • Power User

Reputacja: 299
Wszechwidzący

  • Postów:1 070
  • Steam:steam
  • Imię:Bartek
  • Lokalizacja:Ełk
Offline

Napisano 01.07.2012 10:55

Dobra robota! +
  • +
  • -
  • 0

#7 Stachuu :D ??

    Wszechobecny

  • Użytkownik

Reputacja: 237
Wszechwidzący

  • Postów:476
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Karsznice
Offline

Napisano 01.07.2012 11:53

mogłeś tez używać reszty z dzielenia zamiast if
  • +
  • -
  • 0

#8 Gość_21977_*

  • Autor tematu
  • Gość

Reputacja: 0

Offline

Napisano 01.07.2012 18:10

@Stachuu :D ?? Co miałeś na myśli z używaniem reszty z dzielenia?

#9 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 981
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 01.07.2012 21:00

temat wyczyszczony ;)
  • +
  • -
  • 1

#10 grzesiu131

    Profesjonalista

  • Użytkownik

Reputacja: 87
Zaawansowany

  • Postów:180
  • Lokalizacja:Warszawa
Offline

Napisano 30.07.2012 14:05

Jest możliwość dodania trzeciego stock'u, który sprawdzałby czy pierwszy argument jest typu int czy float i na podstawie wyników sam wybierał który stock użyć d-f ?
G[o]Q (30.07.2012 14:39):
tak

  • +
  • -
  • 0

#11 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 981
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 30.07.2012 14:09

format ( które jest dość wolne ) mogło by zostać zamienione na copy
  • +
  • -
  • 0

#12 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 23.03.2013 18:50

#define konc(%1,%2,%3,%4) (%1==1?%2:(%1%%10<5&&%1%%10!=05||%1/10!=1)?%2:%3)


Zawsze robiłem to w ten sposób... Kto ten kod zrozumie? :D
  • +
  • -
  • 2

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark






Również z jednym lub większą ilością słów kluczowych: polskie, końcówki, wyrazy, wartość, zależność, końcówka polska, polska końcówka, liczebnik, odpowiednia końcówka, końcówka zależna od liczby

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

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