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

Od zera do questera


Umarly

Rekomendowane odpowiedzi

Opublikowano
Witam.
Chciał bym podzielić się wiedzą o questach. Tu znajdziesz przykład budowy oraz zastosowania. 
Chcę byście pisali dobre questy oraz pomagali dopiero zaczynającymi.
 
Spis Treści:
#1. Jak rozpocząć pisanie?
#2. When czyli argument/warunek oraz funkcje
#3. Say/Notice/Chat czyli mówimy
#4. Jak stosować Taby
#5. Typy Zmiennej
#6. Instrukcje warunkowe
 
 
#1.

Do pisania questów będziemy potrzebowali trochę informacji o Lua
oraz Notepada ++
 
Więc zacznijmy:
Na samym początku ustawiamy składnie Lua więc tak:
Szukamy na górze "Składnia", szukamy "L", i naciskamy "Lua".
 
Już mamy składnie Lua, możemy zacząć pisać, ale jak?
Każdy quest musi rozpoczynać się od
quest <nazwa> begin --zaczynamy naszego questa, <nasza nazwa>, każdy quest musi zacząć się inną nazwą
state start begin --ropoczynamy state naszego questa
 
Przykład:
quest <nazwa> begin --zaczynamy naszego questa, <nasza nazwa>, każdy quest musi zacząć się inną nazwą
state start begin --ropoczynamy state naszego questa
when 20015.chat."Ucz się !" begin --argument #2
end --kończymy argument
end --kończymy state
end --kończymy quest
 
Podsumowanie:
Nauczyliśmy się zaczynać questa, poznaliśmy przykład, wiemy wczym zaczynać.
Info. Jeżeli chcemy mieć nazwe składająco się z dwuch wyrazów musi być miedzy nimi " _ " np.
quest <nazwa_nazwa2> begin

#2.

Argumentów jest mnóstwo większość mówi sama za siebie. Do niektórych argumentów wystarczy translator, ale niektóre trzeba przemyśleć co mogą robić.
Najczęściej używane argumenty:
1.     kill
2.     logout
3.     login
4.     .use
5.     .click 
6.     .take
7.     chat
8.     button or info
9.     letter
Oznaczenie po koleji:
1. Kiedy zabijemy jakiegoś gracza lub moba    np.
quest kill begin
state start begin 
when 101.kill begin
chat("Pokonałeś Dzikiego Psa")
end
end 
end
2. Kiedy się wylogujemy <coś się zrobi>       np.
quest logout begin
state start begin 
when logout begin
notice_all("Gracz o nicku "..pc.get.name().." wylogował się. ")
end
end 
end
3. Kiedy się zalogujemy <coś się zrobi>       np.
quest login begin
state start begin 
when login begin
notice_all("Gracz o nicku "..pc.get.name().." zalogował się. ")
end
end 
end
4. Kiedy naciśniemy jakiś item <coś się stanie>    np.
quest use begin
state start begin 
when 80009.use begin
say("Jesteś zdolny by się tego nauczyć. ")
end
end 
end
5. Kiedy naciśniemy jakiegoś npc <coś się stanie>  np.
quest click begin
state start begin 
when 80009.click begin
say("Jesteś zdolny by się tego nauczyć. ")
chat("Jesteś bardzo zdolny ")
notice_all("Gracz "..pc.get.name().." rozpoczoł naukę z questami. ")
notice_all("Powodzenia ")
end
end 
end
6. Kiedy przeciągniemy jakiś item na npc <coś nam powie np niszczy> np.
quest take begin
state start begin
when 9003.take begin
say("Uczmy się lepiej a to będzie pomocne")
end
end
end
7. Chat u jakiegoś npc <często używany w questach> np.
quest chat begin
state start begin 
when 9009.chat"Chcesz wiedzieć więcej?" begin
say("Jesteś zdolny doszłeś do tego poziomu ")
say("jestes mistrzem i wiem że to zapamiętasz ")
end
end 
end
8. Kiedy klikniemy na list pojawi nam się informacja   np.
Jest on rozbudowany pewnie nie będziecie go rozumieli z początku ale jak dojdziemy do wprawy napewno będziecie wiedzieć.
quest buton_info begin
state start begin
when login or levelup with pc.level >= 1 begin
set_state(information)
end
end
state information begin
when letter begin
local v = find_npc_by_vnum(20355)
if v != 0 then
target.vid("__TARGET__", v, "Kapitan")
end
send_letter("Trening")
end 
when button or info begin
say_title("Informacja: ")
say("")
say("Udało Ci się wbić "..pc.get_level().." poziom, a z racji tego, ")
say("możesz udać się do Kapitana. ")
say("")
say("Nie zwlekaj z tym! ")
end
end
end
9. Tworzy list po lewej stronie by mogło działać @UP
 
Podsumowując:
Każdy argument/warunek ma swoją nazwę, większość argumentów/warunków(funkcji) znajdziecie w quest_functions.
 

#3.

Znaczenie say/notice/chat
Say - wyświetla się nam okno z tym co zapiszemy, stosujemy za pomocą say("<tekst>") np.
quest say begin
state start begin 
when 9009.chat"Uczymy się say!" begin
say("<tekst>")
say("Zaczynamy naukę z say! ")
end
end 
end
 
Notice - Jest to tekst który jest wyświetlany na żółto tak jak by GM pisał lecz aby tylko dla ciebie, stosujemy za pomocą notice("<tekst>") np.
quest notice begin
state start begin 
when 9009.chat"Uczymy się notice!" begin
notice("<tekst>")
notice("Zaczynamy naukę z notice! ")
end
end
end
istnieje również druga odsłona notice która zwie się notice_all jest używana by ogłosić event <coś w tym stylu> mówi ona na żółto do każdej osoby która jest aktywna, stosuje się ją za pomocą notice_all("<tekst>)  np.
quest notice_all begin
state start begin 
when 9009.chat"Uczymy się notice_all!" begin
notice_all("<tekst>")
notice_all("Zaczynamy naukę z notice! ")
end
end
end
 
Chat - Jest to tekst który wyświetli nam się na czacie kolorem białym jest stosowany do dropu szkat itp., stosujemy za pomocą chat("<tekst>") np.
quest chat begin
state start begin 
when 9009.chat"Uczymy się chat!" begin
chat("<tekst>")
chat("Coś ci spadło! ")
chat("Zaczynamy naukę z notice! ")
end
end
end
 
Podsumowanie:
Mamy wiele rodzaji mowy najczęściej używano w questach z nich jest say
Ciekawostka:
Jeżeli zrobimy tak:
say("Świetnie udało ci się")
quest nam nie zadziała gdyż musi w tym być odstęp. Powinno wyglądać tak:
say(" Świetnie udało ci się ")
 

#4.

Taby to najprostsza rzecz w questach.
Po każdej funkcji stosujemy tab +1.
Po każdym zamknięciu "end", odejmujemy tab -1.
Przykład:
quest taby begin
[TAB]state start begin
[TAB][TAB]when login begin
[TAB][TAB]end
[TAB]end
end
 

#5.

Typy zmienej:
int - zmienna liczbowa
string - zmienna tekstowa
bool - zmiena przechowująca wartość true(1), false(0)
 
Przykład zmiennej typu string:
local string = "<tekst>"
Przykład zmiennej typu int:
local int = 123
Przykład zmiennej typu bool:
local bool = 123
 
Zastosowanie w queście:
quest zmiena begin
state start begin

when 9009.chat"Uczymy się zmienej!" begin

say("Zmiena string:"..string.."")

say("Zmiena int:"..int.."")

say("Zmiena bool:"..bool.."")
end
end
end

 
Podsumowanie:
Zmienną definiujemy dzięki local nazwa_zmiennej = wartość.
 

#6.

Najlepiej uczyć się na przykładach więc:


quest cos begin

state start begin

when cos begin

if cos < cos then                -- oznacza jeśli coś to coś

elseif cos > cos then            -- przedłużenie if,  mówiąca o innych warunkach coś to coś

else                             -- mówiąca o warunkach  pozostałych, które nie zostały określone wyżej

end

end

end

end
Znaki wykorzystywane w instrukcjach warunkowych:
==           - coś równe czemuś
 
>            - coś większe od czegoś
 
<            - coś mniejsze od czegoś
 
>=           - coś większe lub równe od czegoś
 
<=           - coś mniejsze lub równe od czegoś

Np.

quest np begin

state start begin

when login begin

if pc.get_level() == 1 then

chat("Masz 1 level ")

elseif pc.get_level() == 2 then

chat("Masz 2 level ")

else

chat("Masz większy level niż przewiduje ")

end

end

end

end
Podsumowanie
Myślę że zrobiłem to jakoś zrozumiale.

 
 
Według mnie najlepiej jest uczyć się na przykładach dlatego większość to przykłady.
Myślę że coś tam wam zostanie. Proszę abyście mi powiedzieli co mam jeszcze dodać.
 
 
//////////zadanie na podsumowanie\\\\\\\\\\
Opisz następujący quest używając komentarza.
np.
quest nazwa begin --rozpoczynamy questa o nazwie "nazwa"
http://wklej.to/mBB1F

Wziąłem mój pierwszy quest który napisałem dla prywatnego serwera. 

Ten serwer niedługo pojawi się na waszych oczach.

 

Czas wziąć się do roboty

;)

Opublikowano
quest np begin

state start begin

when login begin

if pc.get_level() == 1" then

chat("Masz 1 level ")

elseif pc.get_level() == 2 then

chat("Masz 2 level ")

else

chat("Masz większy level niż przewiduje ")

end

end

end

end

no, no bardzo skomplikowane questy ^^

Opublikowano

Kolega sie dziś z tego uczył xdd i mi nauczył się pisać questa:

quest cos begin
state start begin
when 101.kill begin
chat("Zabiłeś dziekiego pieseła")
end
end
end

Wkońcu czegos się nauczył :DDD

 

@topic Może i się przyda.

9pst4soeytme.png


Opublikowano

@DjCady

Właśnie lepsze to niż nic.

 

Polecam uczyć się z innymi questami opisując każdą funkcję.

 

 

 

//Dodano zadanie do rozwiązania

 

@down

Wybacz ale nie widziałem tych poradników. 

Czas wziąć się do roboty

;)

Opublikowano
Podsumowanie:
Mamy wiele rodzaji mowy najczęściej używano w questach z nich jest say
Ciekawostka:
Jeżeli zrobimy tak:
say("Świetnie udało ci się")
quest nam nie zadziała gdyż musi w tym być odstęp. Powinno wyglądać tak:
say(" Świetnie udało ci się ")

To wyżej jest wyciągnięte z poradnika.

Nie trzeba robić odstępu na początku, wystarczy na końcu.

Opublikowano

Zapytałem tylko i zwróciłem uwagę, bo quest powinnien zadziałać.

Hmm, to było skopiowane z poradnika, ja dodałem tylko to:

Nie trzeba robić odstępu na początku, wystarczy na końcu.

Opublikowano

Tyle lat nauki, a Wy dalej piszecie when x.kill begin...

Pisze się when kill with npc.get_race() == x begin

 

tyle już tych poradników, a dalej nowe powstają

pre_1405084226__sygnatura_3.png

Opublikowano

Tyle razy narzekacie na te questy i dalej to robicie.

 

nie wiem jak tam u was jest, ale ja pisanie questów opanowałem już dawno

pre_1405084226__sygnatura_3.png

Opublikowano

nie wiem jak tam u was jest, ale ja pisanie questów opanowałem już dawno

Nie zrozumiałeś tego co napisałem.

 

 

top.

Dobrze byłoby gdybyś dawał co jakiś czas coraz więcej ćwiczeń związku z questowaniem.

Opublikowano

Nie zrozumiałeś tego co napisałem.

 

 

top.

Dobrze byłoby gdybyś dawał co jakiś czas coraz więcej ćwiczeń związku z questowaniem.

 

zrozumiałem, kłania się czytanie ze zrozumieniem

jeżeli jednak dalej nie rozumiesz powinieneś zrozumieć moją wypowiedź jako

'za dużo tych poradników, mimo tego powstają nowe - gorsze poradniki o tym samym przy czym wystarczy jeden poradnik, aby się nauczyć'

 

@top

 

nie wiem czemu moderator jeszcze tego nie zamknął

nie ma tutaj nic oprócz nieumiejętnie napisanego 'ćwiczenia' oraz opisu działania questów i ich funkcji który jest skopiowany z innych poradników

pre_1405084226__sygnatura_3.png

Opublikowano

zrozumiałem, kłania się czytanie ze zrozumieniem

jeżeli jednak dalej nie rozumiesz powinieneś zrozumieć moją wypowiedź jako

'za dużo tych poradników, mimo tego powstają nowe - gorsze poradniki o tym samym przy czym wystarczy jeden poradnik, aby się nauczyć'

 

@top

 

nie wiem czemu moderator jeszcze tego nie zamknął

nie ma tutaj nic oprócz nieumiejętnie napisanego 'ćwiczenia' oraz opisu działania questów i ich funkcji który jest skopiowany z innych poradników

Dokładnie tak to zrozumiałem, ale ja piszę trochę w innym kontekście, no ale cóż, głupi swojej głupoty nie zrozumie.

 

top.

A poza tym ćwiczeniami to rozwiń trochę temat związany ze zmiennymi, poradnik będzie bardziej wartościowszy.

Opublikowano

Tyle lat nauki, a Wy dalej piszecie when x.kill begin...

Pisze się when kill with npc.get_race() == x begin

 

yyy to nie ma znaczenia?

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...