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

[Archiwum][Tut]Wybór w queście


lopescio

Rekomendowane odpowiedzi

Opublikowano

Witam.

 

Wielu z Was często się zastanawia, jak zrobić tak, aby np. po użyciu itemka wyskoczyło kilka opcji do wyboru, lub po wykonanym queście wybrać sobie nagrodę. Dziś postaram się Wam to jak najlepiej wytłumaczyć :)

 

No więc zaczynamy, na początek wstawie tutaj questa, a później opisze co i jak ;)

 

quest tutorial begin
state start begin
 when iditemu.use begin
  say("Użyłeś magicznego itema")
  say("Możesz sobie wybrać nagrodę")
  local i = select("Miecz +0 ", "Miecz +9 ")
  if i == 1 then
pc.give_item2(10)
  end
  if i == 2 then
pc.give_item2(19)
  end
 end
end
end

 

No to zaczynamy :)

quest tutorial begin

Każdy quest zaczyna się w ten sposób, zamiast "tutorial" możecie wpisać cokolwiek chcecie, lecz pamiętajcie, jeśli chcecie wpisać dwu-członową nazwę, nie może być to coś takiego "moj tutorial" tylko musi być to "moj_tutorial"

 

state poczatek begin

Stat'y pozwalają oddzielić poszczególne części misji, akurat w tym queście który teraz opisuje nie potrzebne jest więcej stat'ów więc nie opisze ich użycia tutaj.

 

 when iditemu.use begin

Jest to chyba najprostrza funkcja która może być użyta w questach. Jeśli zostanie użyty jakiś przedmiot, to uruchomi się dalsza część questa. Jeśli zrobicie to w ten sposób:

when 20903.use begin

To po użyciu itemka o id 20903 coś się stanie.

Jeśli chcecie aby np. miało coś się dziać po kliknięciu na NPC należy użyć takiej funkcji:

when idnpc.chat begin

 

  say("Użyłeś magicznego itema")

Klasyczna funkcja, wyskoczy okno z napisem

 Użyłeś magicznego itema

Pamiętajcie, gdy wpiszecie np.

say("Coś tam coś tam chcę")

Quest nie zadziała, gdyż na końcu jest polski znak, którego system nie jest w stanie wyczytać, aby zadziałało musi być

say("Coś tam coś tam chce")

 

  local i = select("Miecz +0 ", "Miecz +9 ")

To właśnie o tą funkcję w tym tutorialu chodzi, otóż gdy coś takiego jest w queście, to w grze, w wyskakującym oknie będą do wyboru 2 opcje:

Miecz +0

 

Miecz +9

 

  if i == 1 then

 

Teraz tak, należy przypatrzyć się poprzedniej fukncji, a mianowicie tej: local i = select("Miecz +0 ", "Miecz +9 ")

 

Można ujrzeć tutaj małą literkę: local i = select("Miecz +0 ", "Miecz +9 ")

I teraz przy choć minimalnej znajomości języka angielskiego można zrozumieć, tą: if i == 1 then fukcję w ten sposób:

jeśli i == 1 wtedy

Czyli patrząc na kolejność tej funkcji: local i = select("Miecz +0 ", "Miecz +9 ") po kliknięciu na "Miecz +0" uruchomi się ta część questa.

 

pc.give_item2(10)

Standardowa fuknkcja, odpowiadająca za danie itemka graczowi. Jeśli chcemy aby gracz otrzymał itemek o id 1111 to fukcja będzie wyglądała tak:

pc.give_item2(1111)

 

end

Ah ten end :) Jak każdy wie, z języka angielskiego oznacza to "koniec" w tym przypadku koniec fukcji. Pamiętajcie, każde "if" "when" "state" musi być zakończone tym właśnie "end"

 

  if i == 2 then

Tutaj to samo co wcześniej, lecz ta funkcja uruchomi się po kliknięciu na coś drugiego w kolejności, w tym przypadku jest to "Miecz +9"

 

pc.give_item2(1111)

To samo co przy

  if i == 1 then

 

 end
end
end

W naszym forumowym

[color=#F0F8FF] "when" [/color][color=#F0FFFF]"state" [/color][color=#FFA07A]oraz[/color][color=#F0FFFF] "quest"[/color]
[color=#006400]Tutaj macie plik, w którym wszystko lepiej widać:[/color]
[color=#0000FF][code]http://www.filesonic.com/file/RvQQZtM

Skan:

http://www.virustotal.com/file-scan/report.html?id=65dcbf1867fcdc01ffa690f8a7dde1f4645f03dc1ae73e5dff327459955b8da8-1324916604

 

Mam nadzieje że tut'orial jest na tyle zrozumiały, aby osoba który pierwszy raz pisze questa, zrozumiała go bez problemu :)

 

To by było na tyle, w następnym tutorialu opiszę, jak zrobić tak, aby np. po wyborze czegoś pojawiały się kolejne wybory :)

 

Troszkę się przy tym napisałem więc prosił bym o zdjęcie kilku % :)

Opublikowano

hmmm jeśli chodzi o to:

say("Coś tam coś tam chcę")

to wystarczy zrobić z spacja na końcu i wszystko działa;)

 

say("Coś tam coś tam chcę ")

Opublikowano

@Up Tak też można, lecz spotkałem się z kilkoma plikami serwerowymi, gdzie użycie spacji nie dawało żadnego efektu, więc lepiej po prostu nie używać polskich znaków na końcu :)

Opublikowano

Z tymi ifami to trochę niezbyt fajnie napisałeś. Tak jest profesjonalnie:

quest tutorial begin

state poczatek begin
 when iditemu.use begin
  say("Użyłeś magicznego itema")
  say("Możesz sobie wybrać nagrodę")
  local i = select("Miecz +0 ", "Miecz +9 ")
  if i == 1 then
       pc.give_item2(10)
  elseif i == 2 then
       pc.give_item2(19)
  end
 end
end
end

Opublikowano

quest tutorial begin
state poczatek begin
when iditemu.use begin
say("Użyłeś magicznego itema")
say("Możesz sobie wybrać nagrodę")
local item = {10,19}
local i = select("Miecz +0 ", "Miecz +9 ")

pc.give_item2(item[i])

end
end
end

 

 

A nie sorry, nawet ten quest nie zadziała bo nikt nie wywoła state poczatek, domyślnie tylko jest start. Trzeba wywołać innym questem np Biolog.

50596142255057180250.png

Opublikowano

@UP

weź skończ ...

taki poradnik gdzie quest i tak nie zadziała...

 

pierwszy state w queście musi być start ... !

w metinie "szablon questa" wygląda tak :

quest nazwa_questa begin
state start begin
	-- tutaj dalsze instrukcje
end
end

a jak chcemy mieć ten state poczatek ... to :

quest nazwa_questa begin
state start begin
	set_state(poczatek)
end
state poczatek begin
	-- tutaj dalsze instrukcje
end
end

btw.

		-- tutaj dalsze instrukcje

to jest komentarz dla niekumatych

podczas wgrywania serwer nie patrzy na to do końca linjniki od rozpoczęcia znakami --

 

@EDIT

wg. mnie otwieranie i zamykanie if'a do jednego select'u jest bardzo nieczytelna

jak już mamy tylko 2 opcje wyboru to można zrobić tak:

quest nazwa_questa begin
   state start begin
       set_state(poczatek)
   end
   state poczatek begin
       local a = select("X","Y")
       if a == 1 then
           chat("X")
       else
           chat("Y")
       end
   end
end

ale jak jest więcej to warto używać elseif:

 

quest nazwa_questa begin
   state start begin
       set_state(poczatek)
   end
   state poczatek begin
       local a = select("X","Y","Z","A")
       if a == 1 then
           chat("X")
       elseif a == 2 then
           chat("Y")
       elseif a == 3 then
           chat("Z")
       elseif a == 4 then
           chat("A")
       end
   end
end

 

 

@TOPIC

jak można pisać tak "zaawansowane i trudne" tutoriale

jak już coś piszesz to napisz coś sensownego...

gogame.png

Opublikowano

kurwa, to ja widzę, że tuty na mpc mają coraz wyższy poziom zaawansowania.

Niedługo dojdą jak dodać wpis do sql

co tam wpis do sql, będzie jak włączyć virtualboxa.

 

ty uczysz robić questy a robisz na dwóch if'ach, o boże :<

jaki bedzie twoj next poradnik?

 

"Rozmowa w queście"? xD

@UP

weź skończ ...

taki poradnik gdzie quest i tak nie zadziała...

 

pierwszy state w queście musi być start ... !

w metinie "szablon questa" wygląda tak :

quest nazwa_questa begin
state start begin
	-- tutaj dalsze instrukcje
end
end

a jak chcemy mieć ten state poczatek ... to :

quest nazwa_questa begin
state start begin
	set_state(poczatek)
end
state poczatek begin
	-- tutaj dalsze instrukcje
end
end

btw.

		-- tutaj dalsze instrukcje

to jest komentarz dla niekumatych

podczas wgrywania serwer nie patrzy na to do końca linjniki od rozpoczęcia znakami --

 

@EDIT

wg. mnie otwieranie i zamykanie if'a do jednego select'u jest bardzo nieczytelna

jak już mamy tylko 2 opcje wyboru to można zrobić tak:

quest nazwa_questa begin
state start begin
	set_state(poczatek)
end
state poczatek begin
	local a = select("X","Y")
	if a == 1 then
		chat("X")
	else
		chat("Y")
	end
end
end

ale jak jest więcej to warto używać elseif:

 

quest nazwa_questa begin
state start begin
	set_state(poczatek)
end
state poczatek begin
	local a = select("X","Y","Z","A")
	if a == 1 then
		chat("X")
	elseif a == 2 then
		chat("Y")
	elseif a == 3 then
		chat("Z")
	elseif a == 4 then
		chat("A")
	end
end
end

 

 

@TOPIC

jak można pisać tak "zaawansowane i trudne" tutoriale

jak już coś piszesz to napisz coś sensownego...

 

Kurwa, wszyscy tacy mądrzy jesteście, a może ktoś z Was geniusze coś napisze? Popierdoleńce, nic tylko siedzieć i krytykować jak ktoś coś robi, i samemu chuja robić...

Gość PoweRade™
Opublikowano

Temat zamykam , ponieważ panuje tutaj bardzo wielki spam . Co do niektórych ... chłopak robi pierwszy raz serwer i chce pomóc początkującym . Jeżeli wy umiecie robic serwery czy tam questy to nie znaczy ze cały świat to umie .

Gość PoweRade™
Opublikowano

Automatyczna wiadomość systemu.

 

Temat został zarchiwizowany.

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...