Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Tworzenie zestawów emotikon
Konnekt | Forum > Developerzy > Tworzenie dodatków
riddle
Informacje podstawowe

Reguła dla emotikony wygląda tak:
    "kod_emotikony","plik"
Jeśli emotikona jest animowana lub bardzo duża, bardzo wskazane jest dorobienie wersji mniejszej / nieanimowanej:
    "kod_emotikony","plik","plik_nieanim"
Jeśli chcemy, aby parę kodów emotikon odnosiło się do jednego pliku piszemy:
    ("kod_1","kod_2","kod_3"),"plik"
Jeśli chcemy, aby dana emotikona nie była pokazywana w menu emotikon, wystarczy przed nią dodać znaczek „*”
    *"kod_emotikony","plik"
Bardzo opłacalne jest używanie kodów emotikon w nawiasach trójkątnych „<”, „>”. Są one szybciej przetwarzane i wyświetlane.

Kody emotikon piszemy bez polskich znaków, są one automatycznie uwzględniane w tekście.

Wyrażenia regularne.

Konnekt umożliwia pobieranie kodów emotikon w postaci wyrażeń regularnych, co w znaczy sposób przyśpiesza i usprawnia ich pisanie.

Reguła emotikony z wyrażeniem regularnym wygląda tak:
    ("/wyrazenie_regularne/g"),"plik"
W zestawie emotikon Gadu-Gadu™ znajdują się reguły dla uśmiechu. Powtórzono tam wiele razy podobny kod, używając coraz większej ilości nawiasów („:)), :))), :)))). Jeśli chcemy, możemy uprościc sobie ten proceder. ;) Wystarczy zastosować znak „+”.
    ("/:\)+/g")
Należy zaznaczyć, że przed „)” znalazł się „\” gdyż w ten sposób „)” jest traktowany jak znak a nie operator wyrażenia regularnego (podobnie trzeba wstawiać ten znak przed „|”, „\”, „/”, „(”, „?”, „+”, „]”, ”[” ). Także mamy „)” i „+" co jest logiczne… ) i powtarzanie się „)” w nieskończoność.

Jeśli chcemy aby dla kodu :-) i :) obowiązywała ta sama emotikona, wystarczy zapisać wyrażenie, które przyjmie myślnik pomiędzy oczami a uśmiechem za opcjonalny. Służy temu „?”.
    ("/:-?\)+/g")
Część wyrażenia „-?” spowoduje, że :-) i :) będzie tym samym. W tym wyrażeniu skleiłem też poprzednie, powtarzające „)”. Jeśli nie chcemy, to zróbmy tak:
    ("/:-?\)/g")
Można w ten sam sposób zrobić z literkami w emotikonach typu :P czy :D. No ale będzie ważna wielkość liter. Aby uwzględniać duże i małe litery, dodajmy na końcu wrażenia „i”.
    ("/:-?d+/gi")
Widzisz co tutaj zachodzi? Myślnik jest opcjonalnie, literka „d” jest powtarzana w nieskończoność a do tego może być „d" i „D". :-)

Jeśli chcemy, aby emotikona działała niezależnie od tego czy wpiszemy średnik „;” czy dwukropek „:” możemy skorzystać z grupowania
    ("/[;:]-?\)+/g")
Na pewno wiesz już o co tutaj chodzi. Wybieramy „;” albo „:” a potem opcjonalnie „-” i „)” w nieskończoność. Mam nadzieję, że będzie to już zrozumiałe.

Przydatne też może być skrócenie kodów emotikon z cyframi, jak <lol> i <lol2>. Wiesz na pewno, że trzeba skorzystać z „?”. No i też wypada uwzględnić wielkość liter.
    ("/<lol2?>/gi")
Jeśli się zdarzy, że chcesz jakąś literę opcjonalnie, jak wyżej, a nadal chcesz wpisywać raz polskie znaki, a raz nie, to musisz skorzystać z kodów polskich liter. Przykładowo <3m się>. Może nie pamiętamy, czy wstawiać tam spację czy nie… możemy ją zrobić opcjonalną:
    (/<3m ?si[e|\xEA]>/gi")
Już śpieszę z wyjaśnieniami. Po spacji mamy „?” - to wiadome. Potem na miejscu „ę” znalazła się grupa znaków „[e|\xEA]”. Jako że kod polskiej litery „ę” składa się z trzech znaków, należało rozgraniczyć te dwa elementy grupy „|”.

Kody polskich liter możesz sprawdzić bardzo łatwo. Otwórz tablicę znaków - „charmap”. Wybierz „Widok zaawansowany” i wybierz „Zestaw znaków” - „Windows - Europa Środkowa”. Potem kliknij na górze na polską literkę. W przypadku „ę” na dole okna, na pasku statusu pokaże się kod litery - „U+0119 (0xEA):…”. Należy przepisać zawartość nawiasu bez „0” i dodać „\” przed.



Możesz też chcieć raz na zawsze ustawić, że <papa> i <papapapapa> będzie tym samym. Weź tylko ciąg „pa” w nawiasy i powtórz go „*”.
    ("/<pa(pa)*>/gi")
Żeby było śmieszniej, dodaj „p” na końcu i zrób je opcjonalne - zero literówek, czyli zawsze dostajemy animowaną ikonę, nawet jak się ktoś walnie.
    ("/<pa(pa)*p?>/gi")
Więcej o wyrażeniach regularnych możesz przeczytać tutaj:

http://www.perl.com/doc/manual/html/pod/perlre.html
http://en.wikipedia.org/wiki/Perl_regular_...ession_examples
Olórin
Wreszcie ktoś sie za to porządnie zabrał ;]

2 małe uwagi, potem można mojego posta wywalić ;]

QUOTE
("/<pa(pa)*p?>/gi")

Zareaguje również na samo <pa>...
QUOTE
Potem na miejscu „ę” znalazła się grupa znaków „[e|xEA]”.

chyba powinno być [e|\xEA]
riddle
<pa>? A to Ci dopiero… /me lame. biggrin.gif

Dzięki za zwrócenie uwagi. W sumie myślę nad nowymi pregami, może masz jakieś pomysły na przykłady? :>
Aule
A nie lepiej dać
CODE
/<(pa)+p?>/gi
?
riddle
Nie, + do (pa) nie zadziała, sprawdzałem.
Aule
Jakeiś logiczne wytłumaczenie może ktoś zna? Jeżeli * działa to czemu ine +?
riddle
Dodam jeszcze, że nie wolno zostawiać pustych linijek w pliku - każda reguła emotikony po pustej linii jest ignorowana.
lhs
Aule - nie bardzo rozumiem, co nie działa? Znak + po grupie (pa) jak najbardziej działa - Twoje wyrażenie dopasowuje:

CODE
<pa>
<pap>
<papa>
<papap>
<papapa>
<papapap>
... itd ...
riddle
lhs: Próbowałeś?
lhs
Oczywiście smile.gif - i działa.
riddle
Chyba wiem gdzie problem. kIEview wcale tak dobrze nie obsługuje paru zestawów emotikon włączonych na raz w Więcej. Włączenie globalnie powoduje poprawne rozpatrywanie pregów.
Aule
Mi też się zdawało, że nie będzie trudności... To Riddle w błąd wprowadził wink.gif
Aule
Errata końcówki artukułu
Możesz też chcieć raz na zawsze ustawić, że <papa> i <papapapapa> będzie tym samym. Weź tylko ciąg „pa” w nawiasy i powtórz go „*”.
    ("/<(pa)+>/gi") zamiast ("/<pa(pa)*>/gi")
Żeby było śmieszniej, dodaj „p” na końcu i zrób je opcjonalne - zero literówek, czyli zawsze dostajemy animowaną ikonę, nawet jak się ktoś walnie.
    ("/<(pa)+p?>/gi") zamiast ("/<pa(pa)*p?>/gi")
lhs
A czy wie ktoś może, dlaczego duże (128x128 px) emoty w formacie .ico są automatycznie przeskalowywane do (na oko) 16x16 px?
Aule
Może mają kilka formatów(tzn na raz mają 16x16, 32x32 i 128x128), a kIEview wybiera 16x16 ?
lhs
Rozumiem, że nie można mu powiedzieć, żeby nie wybierał "po swojemu" - ?
Olórin
ico2png i spokój wink.gif wypuszcza wszystkie wersje siedzące w ico smile.gif
riddle
Nie próbowałem, ale może .body img { width: 100% !important; height: 100% !important; } pomoże?

Edit: /me lame… sory.
lhs
Olórin - tylko, że kIEview w plikach .png przerabia przezroczystość na syfny błękit...
riddle
QUOTE(lhs @ 3.09.2005 - 16:14)
Olórin - tylko, że kIEview w plikach .png przerabia przezroczystość na syfny błękit...
*



Daj PNG8 i wybierz Matte odpowiedniego koloru, żeby się pokrył z tłem. (Rozwiązanie doraźne)
lhs
PNG8 poszarpie krawędzie - poza tym nie wypuszczę przecież zestawu z instrukcją "Przed użyciem wczytajcie wszystkie pliki do Photoshopa i zmieńcie im tło na takie, jakie macie w aktualnie używanym stylu okna rozmowy"...
Olórin
Nie poszarpie! wystarczy ustawić odpowiednie matte!
lhs
PNG8 wykorzystuje 256-kolorową paletę, PNG24 - 16,7-milionową. Oczywistym jest, że w pliku True Color (PNG24) wykorzystującym pełną paletę (ze szczególnym uwzględnieniem stopniowanej przezroczystości), a "przerobionym" na PNG8 - krawędzie poszarpane będą.
Olórin
Jak ustawisz odpowiednie matte nie ma szans poszarpać.... Przeciętna emota będzie miała wymiary 16x16 ew. 24x24, w 1 przypadku wychodzi równo 1 kolor z palety na 1 pixel, w drugim 1 kolor na 2 pixele (a wiadomo że kolory będą sie powtarzać).

Chcesz emote na tło białe dajesz matte #ffffff, chcesz na czarne - #000000, nic nie będzie poszarpane! Prawda - jak dasz emoty z matte białym na tło czarne będzie to kiepsko wyglądać, ale jak dasz tło efekt będzie ten sam wink.gif A będzie troche lepiej wyglądać wersja z matte przy tle rozmowy z obrazkiem...
lhs
No i wracamy do punktu wyjścia - każdy user ma przecież zupełnie inne kolory okienka rozmowy, poza tym wiadomości wysyłane mają przeważnie inne tło niż otrzymywane - PNG8 nie jest dobrym rozwiązaniem.

(Od lewej: PNG24, PNG8-matte-none, PNG8-matte-white, PNG8-matte-black).
riddle
Tak naprawdę IE obsługuje PNG24 z kanałem alpha. Tylko trzeba znaleźć sposób, żeby mu to powiedzieć (filtr) i zrobić to w kIEview. biggrin.gif
lhs
To może jakaś petycja do nix-a? Niedługo minie pierwsza rocznica zapowiadanego wyjścia nowego kIEview-a.
Graup
Mam pytanko: Jakbym chciał zdefiniować swoje emotki żeby po wpisaniu np: //haha wyskakiwał mi obrazek. Jeśli to jest możliwe to proszę o pomoc.
riddle
http://www2.konnekt.info/forum/index.php?showtopic=5707 - tutaj się możesz nauczyć jak
zhvir
Właśnie sobie siedze nad zestawem ikon z tlena i sie zastanawiam w jaki sposób w konnekcie (wyrażenia regularne) da się zrobić 8 dużych standartowych ikon z tlena reprezentowanych przez: <MAIL> <TELEFON> <SMUTNY> itd
w odróżnieniu od małych emotikonek: <mail> <telefon> <smutny> itd

Czy jest jakiś działający w obie strony sposób na duże litery???

edit1: zauważyłem że wpisując regułę dla emotikony ("JEM") w oknie rozmowy pojawia się JEM, natomiast dla reguły ("<JEM>") duże litery zamieniane są na małe i pojawia się <jem>. Również różne kombinacje z /g oraz /gi nie dają pożądanych rezultatów. Czy ktoś ma jakiś pomysł???
riddle
    (""/<SMUTNY>/U"")
Piszę z głowy, sprawdź.
zhvir
heh to co podałeś to raczej nie działa

Natomiast po kilkunastu próbach doszedłem do jednego całkiem dobrze działającego ustawienia:

("/<JEM>","/<jem>/gi"),"jem_b.gif" - dla dużej ikonki <JEM>
("/<jem>/g","<je>"),"jem_.gif" - dla małej ikonki <jem>

ale po pierwsze nie da się w tej metodzie odwrócić kolejności ikonek w podglądzie ikon tzn duża ikona pisana z zużych liter musi być jako pierwsza w pliku emots.txt.
Po drugie taki zestaw ikon raczej nie bedzie kompatybilny z innymi zestawami ikon w ktorych też są reguły typu <jem>, więc albo ten zestaw będzie ustawiany jako pierwszy na liście pakietów emotikon albo trzeba pomieniać reguły dla wybranych emotikon również w pozostałych zestawach :/ (działanie kilku zestawów jeszcze nie zostało przetestowane)

Ale czy nie ma jakiegoś normalnego sposobu na duze i małe litery w wyrażeniach regularnych? wink.gif ehh już nie mam żadnych pomysłów :/ (jak ktoś potrafiłby odwrócić kolejność ikonek: duża-mała w pliku emots to byłoby już nieźle)

Edit1: Kombinowałem i wykombinowałem smile.gif
Wpisując w takiej kolejności w emots.txt:

[/B]*("/<jem>/gi"),"jem_b.gif"
("/<jem>/g","<je>"),"jem_.gif"
"/<JEM>","jem_b.gif"[B]

otrzymuję małe i duże ikonki oraz to że duża ikonka reprezentowana przez <JEM> pokazuje się tak jak założyłem na końcu okienka podglądu emotikon. Niestety zestaw musi być ustawiony jako pierwszy gdyż inczej te duże ikonki się nie pokażą.

Edit2: Jeśli ktoś potrafi zrobić to bardziej zgrabnie to zapraszam do myślenia. Ja na razie mam dosyć tongue.gif
Aule
A czy
("/<JEM>/g"),"jem_b.gif"
("/<jem>/g","<je>"),"jem_.gif"

nie działa? Nie do końca zrozumiałem o co Ci chodzi.
riddle
Zhvir, Ty weź pójdź wstecz do mojego posta 1szego i kliknij w link dot. pregów. Tam znajdziesz odpowiedzi na Twoje pytania. Bo nie ma po co hackować kIEva, serwując mu pliki, skoro da się to zrobić na wyr. regularnych.
zhvir
do riddle'a: Otóż właśnie sie nie da (albo ja nie potrafie) chociaż długo patrzyłem i analizowałem te wszystkie przykłady z pierwszego posta oraz z linków

do Aule'a: nie, tak nie działa
Aule
'i' to chyba flaga od rozpoznawania rozmiaru, tak? Widać kIEview coś nie tak obsługuje.
Olórin
QUOTE
i (PCRE_CASELESS)

    If this modifier is set, letters in the pattern match both upper and lower case letters.

Sądze że kiev jest cały czas w tym tybie (i słusznie)...
Aule
Jakie słusznie.... Powinno obsługiwać te podstawowe flagi, bo powstają takie kwiatki.
LooL
Odkopuje temat.
Dzisiaj miałem chwile i pobawiłem się troche w gimpie i zrobiłem emotki.
Niestety zapomniałem ze kview nie obsługuje przezroczystości w png sad.gif ( albo obsługuje ale jakis inny rodzaj tego formatu, jak nizej udowadniał Lhs )

1. Moze mi ktos powiedziec jak zapisac w gimpie emotke ale z rozszerzeniem PNG8 a nie 24. ( w ogóle czy istnieje taka możliwość )?
Albo
2. Podac jakis inny format przy ktorym kompresja z png nie wyządziłaby duzych strat ? ( po przerobieniu ich na gify krawędzie były tragiczne ) wacko.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2012 Invision Power Services, Inc.