Witam!
W si?dmej cz??ci poznamy funkcje z lua a konkretnie funkcje 'string.' by?y 'math.' to czas na stringi. Opr?cz tego zajm? si? wyt?umaczeniem funkcji getTickCount oraz przypomnimy sobie setTimer.
string.byte
Funkcja string.byte zwraca kod liczbowy danego znaku z ci?gu.
Przyk?adowo
Taki kod zwr?ci nam
Czyli warto?? liczbow? liczby "A", je?li zrobiliby?my zamiast 3 to 1 to zwr?ci?o by nam czyli warto?? liczbow? liczb "L".
string.char
Funkcja ta generuje literowy ci?g znak?w z podanych liczb. Jak wcze?niej wspomnia?em liczbow? warto?ci? "A" jest 65 a "L" 76, wi?c
wygeneruje nam znaki spod tych liczby czyli A i L. Zwr?ci nam
string.dump
Funkcja string.dump zwraca funkcje w postaci kodu binarnego. Funkcja musi by? funkcj? lua, czyli w mta za bardzo tego nie mamy jak wykorzysta?.
string.find
Funkcja string.find s?u?y np. do sprawdzania czy jest jaki? znak w ci?gu, aczkolwiek zwraca pewne warto?ci, konkretnie liczb? znaku od kt?rego zaczyna si? nasz wyszukiwany znak i liczb? znaku gdzie si? ko?czy. Przyk?adowo
Taki kod zwr?ci nam , poniewa? w ca?ym tym ci?gu znajduje si? wyraz "marek". Oraz zwr?ci nam Dlaczego? a no dlatego, ?e nasz ci?g znak?w "jacekmarekjozek" ma w sumie 15 liter, a wyraz "marek" zaczyna si? od 6 litery i ko?czy na 10 literze st?d te warto?ci.
string.format
Funkcja string.format formatuje nasz string zgodnie z podanymi argumentami. Informacja jest dodatkowa, ?e %q formuje nam string w cytat. G??wnym elementem w tej funkcji jest metoda formatowania, czym jest takowa metoda? Ot?? jest to tak zwany "regex" w wielu j?zykach programowania jest on u?ywany. Przyk?adowo
Taki kod zwr?ci nam
Bardzo wa?na tutaj jest umiej?tno?? i wiedza na temat regex'u. Regex to wyra?enia regularne. Czym jest regex i kurs: klik W ka?dym kursie jest znak / zamiast %. % jest u?ywany w lua zamiast /. Funkcja przyjmuje niesko?czenie wiele argument?w, mo?emy ich poda? ile chcemy.
Taki kod zwr?ci nam Czyli rozdzieli nam s?owa po spacji.
string.gsub
Funkcja string.gsub jest pot??n? funkcj?. Mo?na za jej pomoc? zamieni? jaki? znak z ca?ego ci?gu, opcjonalny argument 'n' ogranicza nam ilo?? zamian. Kolejno, funkcja ta przyjmuje argument s,pattern,replace i opcjonalne n.
Czyli
taki kod zwr?ci nam a wi?c zamieniamy,
i taki kod zwr?ci nam Teraz co? z przyk?adem wykorzystania argumentu n.
taki kod zwr?ci nam bez sens prawda? Trzeba to napawi?
i taki kod zwr?ci nam z?? warto?? bo Dlatego musimy u?y? argumentu n, kt?ry spowoduje zamian? "z" na "c" podan? ilo?? razy.
i taki kod zwr?ci nam nasz oczekiwany efekt W przypadku znak?w specjalnych jest r?wnie? pewna zasada,
taki kod nie zamieni nam $ na PLN a zamieni nam na
Dlaczego? Poniewa? $ to znak specjalny a zarazem mo?na powiedzie?, ?e wyra?enie regularne tak wi?c trzeba odpowiednio to oznaczy?, znakiem z regexu domy?lnie / a w lua %.
Zwr?ci nam Gdy? jest to po prostu 15 liter. Aczkolwiek jak wiadomo ci?gi znak?w w lua maj? rozmiar 8 bajt?w wi?c np
Taki kod zwr?ci nam r?wnie? gdy? \000 zostanie zignorowane. Tam jest gtao zamienia to na "(TEXT)".
string.lower
Funkcja string.lower zamienia nam podany ci?g znak?w na ma?e litery.
Wynik
string.upper
Funkcja string.upper zamienia nam w przeciwie?stwie string.lower podany ci?g znak?w na du?e litery.
i wynik
string.match
Funkcja string.match wyodr?bnia tylko podane ci?gi. Czyli r?wnie? mamy doczynienia z regexem.
Kod zwraca nam Dlaczego to ka?dy b?dzie wiedzia?, gdy zrozumie regex.
string.rep
Funkcja string.rep przyjmuje dwa argumenty 's' kt?ry jest ci?giem znak?w i 'n' kt?ry jest ilo?ci? powt?rze?.
Czyli funkcja ta jakby 'klonuje' nam podany ci?g ile? razy.
Wynik Mo?na te? tak
Wynik
string.reverse
Funkcja string.reverse odwraca nam podany ci?g znak?w,
Wynik
string.sub
Funkcja string.sub zwraca jakby cz??? ci?gu znaku od podanej liczby jako argument i ko?czy si? na opcjonalnym argumencie je?li jest.
Taki kod zwr?ci nam czyli zacznie od 3 znaku i sko?czy si? na ko?cu ci?gu, gdy? nie podali?my opcjonalnego argumentu ko?ca.
i wynik czyli zacznie od 3 znaku a sko?czy na 6. Spacja te? si? liczy jako znak Mo?emy te? operowa? od ko?ca,
i wynik , bo -8 to od ko?ca "L", czyli l, a -3 to od ko?ca "U" czyli u. Tak wi?c leci nam od -8 (L) do -3 (u)
My?l?, ?e chyba pro?ciej wyt?umaczy? si? tego nie da.
Funkcje te mo?emy ze sob? ??czy?, u?ywa? string.format w string.gsub itd je?li zachodzi konieczno??.
Wszystkie te string. mo?emy zamieni? na kr?tsz? wersj?, czyli nasza zmienna ci?gu znaku:funkcja np.
zwr?ci nam r?wnie?
Tak samo mo?emy z wszystkimi pozosta?ymi funkcjami. Czas na temat numer dwa.
getTickCount
Funkcja getTickCount jest spotykana coraz cz??ciej, zazwyczaj u?ywana jest w animacjach gui czy te? dx. Funkcja ta zwraca czas w milisekundach od uruchomienia serwera, na stronie client zwraca czas w milisekundach od momentu po??czenia si? z serwerem. Dzi?ki tej funkcji mo?emy sprawdzi? ile czasu min??o mi?dzy jakimi? zdarzeniami. Przyk?adowo
Taki kod gdy wpiszemy /startTick rozpocznie nalicza? czas w milisekundach a gdy wpiszemy /czas to poka?e nam si? informacja ile czasu min??o mi?dzy wpisaniem startTick a czas w milisekundach, a ?e jest * 1000 to informacja poka?e nam w sekundach. Jedna sekunda to 1000 milisekund(ms)
Przyk?adowo robimy system AFK i chcemy co 30 sekund sprawdza? czy gracz nie ma elementdaty "afk", nie zrobimy tego w timerze tylko chcemy to zrobi? w renderze. Wi?c u?yjemy funkcji getTickCount.
Czyli pokr?tce, w renderze sprawdzamy czy czas mi?dzy obecn? chwil? a ostatni? akcj? gracza jest wi?kszy lub r?wny 30 sekund, je?li tak to ustawia gracza jako afk. Nast?pne zdarzenia s? gdy gracz zminimalizuje gr? wtedy ustawiamy mu afk, gdy wr?ci do gry to zdejmujemy afk. Gdy gracz poruszy kursorem to odnawiamy naszego ticka z ostatni? akcj?, poniewa? gracz w?a?nie j? wykona? to ustawiamy go od nowa, no i je?li jest afk to zdejmujemy mu afk ponownie. Je?li wcisn?? jaki? klawisz to r?wnie? ustawiamy od nowa ticka gdy? wykona? akcj? i odlicza od nowa. Gdy po 30 lub ponad 30 sekundach gracz nie ruszy? myszk?, nie wcisn?? klawisza no to ponownie ustawiamy mu afk.
Chyba do?? prosto i jasno to wyt?umaczy?em.
setTimer
No i funkcja setTimer jak wiadomo jest to taki minutnik tyle, ?e w milisekundach. Przyk?adowo je?li co minut? (60 sekund, 60000 milisekund) ma si? wy?wietla? jaki? komunikat to nie b?dziemy robi? tick?w bo to bez sensu w tym wypadku, ustawimy timer.
60*1000 Bo 60000 ms, mo?emy wpisa? zamiast 60*1000 to 60000 ale jak kto woli. 60*1000 czyli 60000 ms, czyli 60 sekund, a 60 sekund to minuta. 0 To ilo?? powt?rze?, jak wiadomo gdyby 0 mia?o oznacza? dos?owne zero to by?oby to bez sensu, je?li nie ma by? timera to go nie dajemy. Dlatego 0 oznacza bez przerwy czyli co minut? b?dzie si? to dzia?o. Je?li by?my dali 1 to tylko raz po minucie, je?li 5 to co minut? 5 razy itd. Jak wiadomo timer zawiera argument funkcji, w przyk?adzie wy?ej poda?em funkcj? od razu w argumencie, a mo?emy tam poda? gotow? funkcj? np
czyli po 30 sekundach ustawi elementdat? "data" dla gracza na false.
W przypadku gdy stosujemy tak? budow? jak w 1 przyk?adzie i przekazujemy argument to musimy go zadeklarowa? odpowiednio.
Po 10 sekundach od wpisania ots wy?wietli si? informacja na chacie. Przekazujemy plr gdy? to argument z funkcji addCommandHandler i dlatego musimy go przekaza? r?wnie? do timera.
Ciesz? si?, ?e po tylu cz??ciach nadal te poradniki si? komu? przydaj? a kolejne cz??ci s? ciep?o witane. Jest to ju? 7 cz??? z czego jestem zadowolony, ?e nadal si? nie znudzi?o.
Dawaj MySQL(tworzenie skryptu do export?w i obs?ugiwanie samych export?w - np wyci?gniecie czego? z bazy danych i ustawienie tego jako element dat? etc.
PolskiSebek12, Wystarczy my?le? logicznie, masz przyk?ady. Tak w og?le ty poda?e? sk?adnie, a marcin778, napisa? co robi ta funkcja. Poradnik jest u?yteczny, poniewa? wszystko jest w jednym miejscu oraz jest wszystko opisane.
Podpis
Aktualny najlepszy kontakt do mnie: Szydlo#8134 (Discord)
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach