Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[TuT] Klasy w lua (questach)


Rekomendowane odpowiedzi

Opublikowano

Witajcie,

 

Pewnie wielu z Was znało ten sposób, lub też nie, ale warto o tym napisać..

Na pewno nie raz wkurzaliście się w momencie, gdy pisaliście nowe funkcje, które stosowaliście w swoich questach, lecz potem nie mogliście ich wygodnie odszukać w "questlib.lua" z powodu przepełnienia tego pliku, teraz to już nie problem ;).

W językach takich jak php, AutoIT, c#, c++ etc spotkaliście się z funkcją typu : require lub include (zależy od języka), lub również taką posiada :).

 

Funkcja :

require("")

 

Przykład :

require("klasa")
klasa:say_niebieski("Siemka")

 

Sposób dodania i stosowania :

1 - Funkcję dodajemy do quest_functions.

2 - Funkcję stosujemy po quest (od quest kompilator dopiero zaczyna odczyt kodu).

3 - Nie podajemy formatu pliku, funkcja automatycznie interpretuje plik (odczytuje tylko pliki *.lua).

4 - By wywołać funkcję z klasy piszemy : nazwaklasy:funkcja np : mysql.query("")

 

Mam nadzieję, że się przydało, i nie jednemu z Was ułatwi to pracę szczególnie w pisaniu skryptów w wersji obiektowego lua (tak wiem, że lua nie ma prawdziwej "obiektowej" wersji).

W razie niejasności lub pytań proszę pisać w komentarzach.

 

Przykład specjalnie dla Sunushi :

 

 

1 - Tworzymy plik : mysql.lua.

2 - Wklejamy następującą zawartość :


function query_select(sql)
user = "mt2"
pw = "mt2!@#"
local var = {}
var.pre = ''
if user ~= nil then
var.pre = var.pre..' -u'..user
end
if pw ~= nil then
var.pre = var.pre..' -p'..pw
end
var.scriptfile = 'sc_'..pc.get_name()..number(1,999)..number(2,999)..number(3,999)
var.outputfile = 'op_'..pc.get_name()..number(1,999)..number(2,999)..number(3,999)
sql = string.gsub(sql,'"',"'")
var.str = "mysql -N -L "..var.pre.." < "..var.scriptfile.." > "..var.outputfile
script = io.open(var.scriptfile,"a+")
script:write(sql)
script:close()
os.execute(var.str)
zwroc = io.open(var.outputfile)
quer = zwroc:read()
zwroc:flush()
zwroc:close()
os.remove(var.scriptfile)
os.remove(var.outputfile)
return quer
end

3 - Tworzymy plik : test.quest.

4 - Wklejamy do niego następującą zawartość :

quest test begin
state start begin
when 9003.chat."Test" begin
require("mysql") -- dołączamy naszą "bibliotekę"
local x = mysql:query_select("SELECT job FROM player.player WHERE name = '"..pc.get_name().."' ;") -- wywołujemy funkcję z naszej "biblioteki"
say("Twoj job to : "..x.."")
end
end
end

 

Oczywiście wszystko uploadujemy do folderu quest i wgrywamy nasz testowy quest :).

 

 

 

Pozdrawiam.

1377371138-U1002370.png

Opublikowano

Podstawowa funkcja, tak jak wspomniałeś jaki include :)

Raczej wątpię że ktoś może jej nie znać, lecz daj początkujących questerów na 100% się przyda :)

Opublikowano

Podstawowa funkcja, tak jak wspomniałeś jaki include :)

Raczej wątpię że ktoś może jej nie znać, lecz daj początkujących questerów na 100% się przyda :)

W żadnym queście / skrypcie lua pod metina nie widziałem tej funkcji w użyciu, stąd moje przypuszczenia, że mało kto ją zna w lua lub wiedział, iż w lua ona istnieje ;).

1377371138-U1002370.png

Opublikowano

Ja się zastanawiam nad jakimś praktycznym wykorzystaniem tego. Może mi go ktoś przybliżyć?

Koniec z MPCForum.pl i ogółem z metinem

:D

 

sunp.png

Sygnatura wykonana przez

Isuribi aka Amelka.

Opublikowano

Ja się zastanawiam nad jakimś praktycznym wykorzystaniem tego. Może mi go ktoś przybliżyć?

Praktycznie ja wykorzystuję to tak, że dzielę sobie funkcje, które tworzyłem wg kategorii, includuje w quest i używam.

Łatwiej się odnaleźć (bynajmniej mi) jak i łatwiej np przekazać komuś quest wraz z funkcjami, jeśli przykładowo takowa osoba nie wie jak dodać nowe funkcje (tak, są tacy ^^).

1377371138-U1002370.png

Opublikowano

Dzięki temu można dawać kilka funkcji w jakiś folder. Tak ? Jak tak to zmniejszy się burdel w questach...

 

@Down x2. Dzięki za odp.

To 'teraz' można normalnie jak w php pisać. ;)

Opublikowano

Dobry tut ale lol, to nie są klasy

No nie są do końca, po prostu nie wiedziałem jak to nazwać to nazwałem tak:).

 

@2up - tak, robisz se pliki *.lua, do nich dajesz funkcje i wykonujesz je tak jak opisałem w tutku :). Np : require("/include/funkcje")

Nie ma za co, no wiem to mega ułatwi robotę :).

1377371138-U1002370.png

Opublikowano

Ja się zastanawiam nad jakimś praktycznym wykorzystaniem tego. Może mi go ktoś przybliżyć?

np jeśli do questa robisz, że zabije metina, to zamiast żmudne or lub coś innego, ta właśnie klasa ;)

ePc0b.jpg

mcn_cc.pl - banda złodziei

;)

Piszę questy na zamówienie - Zostanę questerem na serwerze dedykowanym - Na zlecenie napiszę questy - Zakoduję stronę HTML5/CSS3

Opublikowano

np jeśli do questa robisz, że zabije metina, to zamiast żmudne or lub coś innego, ta właśnie klasa ;)

Co ma takie rozwiązanie do operatorów logicznych stosowanych w warunkach? Teraz to nie zrozumiałem ;o

1377371138-U1002370.png

Opublikowano

Co ma takie rozwiązanie do operatorów logicznych stosowanych w warunkach? Teraz to nie zrozumiałem ;o

Podałem proste rozwiązanie, ja bynajmniej tak to rozumuję, w questach akurat orłem nie jestem :f

ePc0b.jpg

mcn_cc.pl - banda złodziei

;)

Piszę questy na zamówienie - Zostanę questerem na serwerze dedykowanym - Na zlecenie napiszę questy - Zakoduję stronę HTML5/CSS3

Opublikowano

Podałem proste rozwiązanie, ja bynajmniej tak to rozumuję, w questach akurat orłem nie jestem :f

No to ciutke błędne ;). Tam możesz umieścić funkcje zamiast w questlib.lua i wywołać je tak jak opisałem w topiku:).

1377371138-U1002370.png

Opublikowano

Czyli w pliku .lua tworzę sobie dowolną treść, którą później mogę tak jakby zwrócić w dowolnym queście? Jeśli tak to stwórz jakiś przykład w tym tutorialu co by dało się od razu załapać o co się rozchodzi. Niemniej jednak fajnie wiedzieć, że coś takiego istnieje

Koniec z MPCForum.pl i ogółem z metinem

:D

 

sunp.png

Sygnatura wykonana przez

Isuribi aka Amelka.

Opublikowano

Czyli w pliku .lua tworzę sobie dowolną treść, którą później mogę tak jakby zwrócić w dowolnym queście? Jeśli tak to stwórz jakiś przykład w tym tutorialu co by dało się od razu załapać o co się rozchodzi. Niemniej jednak fajnie wiedzieć, że coś takiego istnieje

Dokładnie tak, zaraz stworzę mały przykładzik, na podstawie prościutkiego questa :).

Istnieje, istnieje, ale jak widać, jednak mało kto to zna w lua ; p

1377371138-U1002370.png

Opublikowano

Dokładnie tak, zaraz stworzę mały przykładzik, na podstawie prościutkiego questa :).

Istnieje, istnieje, ale jak widać, jednak mało kto to zna w lua ; p

właśnie coś o to mi chodziło, że np zapiszę:

"8001 or 8002 or etc" do questlib.lua jako funkcja np "metin" i do quest_functions :)

ePc0b.jpg

mcn_cc.pl - banda złodziei

;)

Piszę questy na zamówienie - Zostanę questerem na serwerze dedykowanym - Na zlecenie napiszę questy - Zakoduję stronę HTML5/CSS3

Opublikowano

właśnie coś o to mi chodziło, że np zapiszę:

"8001 or 8002 or etc" do questlib.lua jako funkcja np "metin" i do quest_functions :)

A to zwracam honor, ale w przypadku dołączanego pliku nie dodajesz funkcji do quest_functions, to służy tylko do questlib.lua.

W przypadku dołączanego pliku, wywołujesz funkcję tak : nazwapliku.funkcja()

Nie mniej jednak nie opłaca się pisać operatorów logicznych w funkcji bez warunku, to wręcz karygodne ;).

1377371138-U1002370.png

Opublikowano
W żadnym queście / skrypcie lua pod metina nie widziałem tej funkcji w użyciu, stąd moje przypuszczenia, że mało kto ją zna w lua lub wiedział, iż w lua ona istnieje ;).

bo po chuj?


 

Opublikowano

bo po chuj?

wgl na chuj lua ?

ePc0b.jpg

mcn_cc.pl - banda złodziei

;)

Piszę questy na zamówienie - Zostanę questerem na serwerze dedykowanym - Na zlecenie napiszę questy - Zakoduję stronę HTML5/CSS3

Opublikowano

@up

Ja po prostu nie rozumiem, po co się w to bawić skoro można wszystko pakować ładnie do questlibu, bezproblemowo nie okreslając później nazwy pliku przed każdą funkcją.


 

Opublikowano

Odnośnie samego tuta ładnie przedstawione działanie funkcji, ale jak to już wspomniał up po co sobie życie utrudniać?

Jedyne zastosowanie tego jakie widzę to pisania questa na zamówienie osobie nie zdolnej do wklejenia sobie funkcji do pliku (są i tacy) i zamieszczenie jej specjalnie do oddzielnego pliku .lua z funkcjami, do której odwołanie jest w queście...

No cóż, brak w tym jakiejkolwiek logiki, ale jak ktoś lubi sobie dodawać zbędnych elementów to jest to idealne rozwiązanie dla niego.

Opublikowano

@up

Ja po prostu nie rozumiem, po co się w to bawić skoro można wszystko pakować ładnie do questlibu, bezproblemowo nie okreslając później nazwy pliku przed każdą funkcją.

Jakaś funkcja na podstawie .kill do zniszczenia metinów ?

ePc0b.jpg

mcn_cc.pl - banda złodziei

;)

Piszę questy na zamówienie - Zostanę questerem na serwerze dedykowanym - Na zlecenie napiszę questy - Zakoduję stronę HTML5/CSS3

Opublikowano

Mam pytanie czy przy użyciu tego będzie można pokolorować wybór locale np na niebiesko?

jak chcesz saye niebieskie, to rgb colors i edytujesz questlib.lua :)

ePc0b.jpg

mcn_cc.pl - banda złodziei

;)

Piszę questy na zamówienie - Zostanę questerem na serwerze dedykowanym - Na zlecenie napiszę questy - Zakoduję stronę HTML5/CSS3

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...