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

Estetyka Questa


Rekomendowane odpowiedzi

Opublikowano

Witam, na wstępie chciałbym powiedzieć, że dopiero zaczynam pisać questy i moja prośba do was jest następująca:

 

Piszę quest, w którym idziemy do NPC i mamy u niego możliwość wymiany 5 odłamków (w tym przypadku dałem krwisty kamień dla testu) na peta. Jeżeli mamy odłamki, dialog ciągnie się dalej, następnie wybieramy peta do Expa bądź PVP, następnie mamy możliwość wyboru zwierzaka.

 

Pisząc tego questa stosuję cały czas if'y, lecz po którymś z rzędu zaczynam się tak gubić, że nie wiem co się dzieje, niby quest działa, ale trochę się ze sobą mieszają te zmienne lokalne.

 

Także przychodzę do was z zapytaniem jak tego questa:

 

 

quest odlamki_peta begin
	state start begin
		when 34050.chat."Odłamki zwierzaków " begin
			say_yellow("Treserka: ")
			say("Widzę, że te piękne małe pupile zwróciły ")
			say("Twoją uwagę. ")
			say("")
			say("Pewnie zastanawiasz się jak zdobyć takiego ")
			say("zwierzaka. ")
			say("")
			wait()
			say_yellow("Treserka: ")
			say("Otóż każdy z tych pupili bardzo przywiązuje się ")
			say("do swojego właściciela, tak więc musisz zdobyć jego ")
			say("zaufanie. ")
			say("")
			say("W krainie występują odłamki zwierzaków, które ")
			say("możesz zdobyć z bossów na każdej mapie. ")
			say("")
			say_green("Oczywiście im silniejszy boss, tym większa szansa na ")
			say_green("zdobycie takiego odłamka. ")
			say("")
			wait()
			say_yellow("Treserka: ")
			say("Jeżeli przyniesiesz mi 5 odłamków danego zwierzaka, ")
			say("wtedy będziesz mógł zostać właścicielem jednego z nich. ")
			say("")
			say_green("Pamiętaj, że odłamki, które mi przyniesiesz ")
			say_green("nie mogą być różne! ")
			say("")
			say("Tak więc, życzę Ci powodzenia w poszukiwaniach! ")
		end -- pierwszy when
			
			when 34050.chat."Przyniosłem odłamki " begin
			say_yellow("Treserka: ")
			say("Widzę, że zdobyłeś odłamki! ")
			say("Mam nadzieję, że zapamiętałeś co mówiłam ")
			say("wcześniej. ")
			say("")
			say_green("Sprawdźmy czy posiadasz 5 takich samych odłamków. ")
			say("")
			wait()
				if pc.count_item(30190) >=5 then
					say_yellow("Treserka: ")
					say_green("Posiadasz odpowiednią ilość odłamków! ")
					say("")
					say("Czy chcesz wymienić swoje odłamki na zwierzaka? ")
					local s = select("Tak!","Jednak nie!")
						if s == 1 then
							say_yellow("Treserka:")
							say("Wybierz rodzaj zwojego zwierzaka.")
						end -- if s
							local pet = select("EXP","PVP")
								if pet == 1 then
									say("Wybierz zwierzaka:")
								end
									local exp = select("BaoBao","FENIKS")
										if exp == 1 then
											pc.remove_item(30190, 5)
											pc.give_item2(50513, 1)
										end
										if exp == 2 then
											pc.remove_item(30190, 5)
											pc.give_item2(50513, 1)
										end
										
								if pet == 2 then
									say("Wybierz zwierzaka:")
								end
									local pvp = select("DUPA","DUPA1")
										if pvp == 1 then
											pc.remove_item(30190, 5)
											pc.give_item2(50513, 1)
										end
										if pvp == 2 then
											pc.remove_item(30190, 5)
											pc.give_item2(50513, 1)
										end
																
				else
					say_red("Nie posiadasz odpowiedniej ilości odłamków!" )
					say("")
				return
				
				end -- if
			
			end -- drugi when
	end -- end begin
end -- end quest

 
zapisać bardziej przejrzyście, oraz jak go skrócić? Czekam na wasze komentarze i wspomnę jeszcze raz, że jest to mój pierwszy quest w życiu, także liczę na wskazówki a nie hejt.
Opublikowano

@ref

 

Sfinalizowałem questa, który działa tak jak chcę, tylko chciałbym abyście pokazali mi jak go skrócić za pomocą tablic, ponieważ mi to coś nie trybi:

 

 

quest odlamki_peta begin
	state start begin
		when 34050.chat."Odłamki zwierzaków " begin
			say_yellow("Treserka: ")
			say("Widzę, że te piękne małe pupile zwróciły ")
			say("Twoją uwagę. ")
			say("")
			say("Pewnie zastanawiasz się jak zdobyć takiego ")
			say("zwierzaka. ")
			say("")
			wait()
			say_yellow("Treserka: ")
			say("Otóż każdy z tych pupili bardzo przywiązuje się ")
			say("do swojego właściciela, tak więc musisz zdobyć jego ")
			say("zaufanie. ")
			say("")
			say("W krainie występują odłamki zwierzaków, które ")
			say("możesz zdobyć z bossów na każdej mapie. ")
			say("")
			say_green("Oczywiście im silniejszy boss, tym większa szansa na ")
			say_green("zdobycie takiego odłamka. ")
			say("")
			wait()
			say_yellow("Treserka: ")
			say("Jeżeli przyniesiesz mi 5 odłamków, wtedy ")
			say("będziesz mógł zostać właścicielem jednego z nich. ")
			say("")
			say_green("Pamiętaj, że odłamki, które mi przyniesiesz ")
			say_green("muszą być jednakowego rodzaju! ")
			say("")
			say("Tak więc, życzę Ci powodzenia w poszukiwaniach! ")
		end -- pierwszy when
			
			when 34050.chat."Przyniosłem odłamki - EXP " begin
			say_yellow("Treserka: ")
			say("Widzę, że zdobyłeś odłamki! ")
			say("Mam nadzieję, że zapamiętałeś co mówiłam ")
			say("wcześniej. ")
			say("")
			say_blue("Sprawdźmy czy posiadasz 5 takich samych odłamków. ")
			say("")
			wait()
				local petyexp = {53009,53010,53011}
				if pc.count_item(30190) >=5 then
					say_yellow("Treserka: ")
					say_green("Posiadasz 5 odłamków zwierzaka EXP!" )
					say("")
					wait()
					say("Wybierz teraz swojego pupila ")
					say("")
						local a = select(item_name(petyexp[1]), item_name(petyexp[2]), item_name(petyexp[3]), "Anuluj")
						if a == 4 then
							return
						end
						if a == 1 then
						say_yellow("Treserka: ")
						say("Oto Twój nowy zwierzak, dbaj o niego!")
						say_item_vnum(53009)
						pc.remove_item(30190, 5)
						pc.give_item2(petyexp[1])
						end
						if a == 2 then
						say("Oto Twój nowy zwierzak, dbaj o niego!")
						say_item_vnum(53010)
						pc.remove_item(30190, 5)			
						pc.give_item2(petyexp[2])
						end
						if a == 3 then
						say("Oto Twój nowy zwierzak, dbaj o niego!")
						say_item_vnum(53011)
						pc.remove_item(30190, 5)
						pc.give_item2(petyexp[3])
						end
				else
					say_red("Nie posiadasz wystarczającej ilości odłamków! ")
					say("")
					say("Wróć do mnie kiedy zdobędziesz wymaganą ilość. ")
				return
				end -- główny if
			end -- drugi when
				
		when 34050.chat."Przyniosłem odłamki - PVP " begin
			say_yellow("Treserka: ")
			say("Widzę, że zdobyłeś odłamki! ")
			say("Mam nadzieję, że zapamiętałeś co mówiłam ")
			say("wcześniej. ")
			say("")
			say_blue("Sprawdźmy czy posiadasz 5 takich samych odłamków. ")
			say("")
			wait()
				local petypvp = {530012,53013,53014}
				if pc.count_item(30190) >=5 then
					say_yellow("Treserka: ")
					say_green("Posiadasz 5 odłamków zwierzaka PVP!" )
					say("")
					wait()
					say("Wybierz teraz swojego pupila ")
					say("")
						local b = select(item_name(petypvp[1]), item_name(petypvp[2]), item_name(petypvp[3]), "Anuluj")
						if b == 4 then
							return
						end
						if b == 1 then
						say_yellow("Treserka: ")
						say("Oto Twój nowy zwierzak, dbaj o niego!")
						say_item_vnum(530012)
						pc.remove_item(30190, 5)
						pc.give_item2(petypvp[1])
						end
						if b == 2 then
						say("Oto Twój nowy zwierzak, dbaj o niego!")
						say_item_vnum(53013)
						pc.remove_item(30190, 5)
						pc.give_item2(petypvp[2])
						end
						if b == 3 then
						say("Oto Twój nowy zwierzak, dbaj o niego!")
						say_item_vnum(53014)
						pc.remove_item(30190, 5)
						pc.give_item2(petypvp[3])
						end
				else
					say_red("Nie posiadasz wystarczającej ilości odłamków! ")
					say("")
					say("Wróć do mnie kiedy zdobędziesz wymaganą ilość. ")
				return
				end
			end -- trzeci when
	end -- end begin
end -- end quest
 

 

 

Opublikowano

Poprawiłem go, dodałem tablice:

http://wklej.to/xMvn7

lub jak wolisz:

 

quest odlamki_peta begin
	state start begin
		when 9005.chat."Odłamki zwierzaków " begin
			say_yellow("Treserka: ")
			say("Widzę, że te piękne małe pupile zwróciły ")
			say("Twoją uwagę. ")
			say("")
			say("Pewnie zastanawiasz się jak zdobyć takiego ")
			say("zwierzaka. ")
			say("")
			wait()
			say_yellow("Treserka: ")
			say("Otóż każdy z tych pupili bardzo przywiązuje się ")
			say("do swojego właściciela, tak więc musisz zdobyć jego ")
			say("zaufanie. ")
			say("")
			say("W krainie występują odłamki zwierzaków, które ")
			say("możesz zdobyć z bossów na każdej mapie. ")
			say("")
			say_green("Oczywiście im silniejszy boss, tym większa szansa na ")
			say_green("zdobycie takiego odłamka. ")
			say("")
			wait()
			say_yellow("Treserka: ")
			say("Jeżeli przyniesiesz mi 5 odłamków, wtedy ")
			say("będziesz mógł zostać właścicielem jednego z nich. ")
			say("")
			say_green("Pamiętaj, że odłamki, które mi przyniesiesz ")
			say_green("muszą być jednakowego rodzaju! ")
			say("")
			say("Tak więc, życzę Ci powodzenia w poszukiwaniach! ")
		end -- pierwszy when
		when 9005.chat."Przyniosłem odłamki" begin
			say_yellow("Treserka: ")
			say("Widzę, że zdobyłeś odłamki! ")
			say("Mam nadzieję, że zapamiętałeś co mówiłam ")
			say("wcześniej. ")
			say("")
			say_blue("Sprawdźmy czy posiadasz 5 takich samych odłamków. ")
			say("")
			wait()
			local pets = 
			{
				['types'] = {'EXP', 'PVP'},
				[1] = {53009, 53010, 53011},
				[2] = {530012, 53013, 53014},
			}
			if pc.count_item(30190) >=5 then
				say_yellow("Treserka: ")
				say_green("Posiadasz 5 odłamków zwierzaka!" )
				say("")
				wait()
				say("Wybierz teraz swojego pupila ")
				say_reward("Wybierz typ bonusu:")
				local typesTable = {}
				for types = 1, table.getn(pets['types']) do
					table.insert(typesTable, pets['types'][types])
				end
				table.insert(typesTable, "Anuluj")
				local selectTypes = select_table(typesTable)
				if selectTypes >= 1 and selectTypes < table.getn(typesTable) then
					say_yellow("Treserka:")
					say("Wybierz swojego zwierzaka "..pets['types'][selectTypes])
					local petTable = {}
					for x = 1, table.getn(pets[selectTypes]) do
						table.insert(petTable, pets[selectTypes][x])
					end
					table.insert(petTable, "Anuluj")
					local selectPet = select_table(petTable)
					if selectPet >= 1 and selectPet < table.getn(petTable) then
						pc.remove_item(30190, 5)
						pc.give_item2(pets[selectTypes][selectPet], 1)
						say_yellow("Treserka: ")
						say_item_vnum(pets[selectTypes][selectPet])
						say("Oto Twój nowy zwierzak, dbaj o niego!")
					end
				end
			else
				say_red("Nie posiadasz wystarczającej ilości odłamków! ")
				say("")
				say("Wróć do mnie kiedy zdobędziesz wymaganą ilość. ")
			end -- główny if
		end -- drugi when	
	end -- end begin
end -- end quest


 


 
Generalnie popełniasz wiele błędów jeśli chodzi o stylistykę, ponieważ np. po wait() dodajesz wcięcie, co jest zupełnie bez sensu. Wcięcie się wstawia przeważnie tylko, gdy masz widzisz (do, then, begin) itp, ponieważ po nich ZAWSZE masz end (i nie musisz liczyć endów itp). Returny też stawiałeś w niepotrzebnych miejscach, albo używałeś niepotrzebnie, wszystko może if załatwić jeśli chodzi o tą budowę, przykładowo:

if selectTypes >= 1 and selectTypes < table.getn(typesTable) then

selectTypes to wybór, który nastąpił z tablicy typesTable ('EXP', 'PVP', 'Anuluj'), dzięki temu ifowi nie musisz dodawać kolejnego, w którym dajesz np.


if selectTable == 3 the return end

 
Starczy dać znacznik < który będzie kontynuował pracę questa dla wartości 1 i 2 (ponieważ wybierasz opcje mniejsze niż 3).
 
Widzę również, że dajesz zawsze (prawie) spację na końcu say. Nie musisz tego robić, niepotrzebne to jest, wymagane jest tylko, gdy znajduje się na końcu polski znak diakrytyczny, ponieważ wtedy kompilator (qc) się zatrzyma i nie będzie kontyuować pracy, a błędu nie wykryje.
 
Pozdrawiam i polecam używać tablic, bardzo ułatwiają życie w Lua.

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...