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

Nowy Pierścień TP


Rekomendowane odpowiedzi

Opublikowano

<>

<>

<>

<>

<>

<>

<>

<>

<>

<>

<>

<>

<>

<>

<>

<>

<>

Witam, duża ilość wolnego czasu skutkuje sporą ilością questów.

Przedstawiam wam nowy rodzaj pierścienia teleportacji.

Co w nim się znajduje? Nic szczególnego, teleportacja do miast i standardowych map oraz sklep.

Czym się różni ten quest od innych umieszczonych na MPC? Napisany jest on na funkcjach z dodaną możliwością powrotu do kategorii oraz usunięta została wiadomość po wyborze danej opcji. Do tego dodam że wszystko jest na tablicach co skutkuje prostej edycji oraz mamy możliwość dodania minimalnego poziomu do teleportacji w bardzo łatwy sposób.

Przejdźmy do sedna.

Quest:

Linki:

http://wklej.to/qpfvW
http://wklej.org/id/1307463/
http://pastebin.com/FATnaddh

Treść:

 

 

---------------------------------------------
-- Pierścień Teleportacji + Opcje
-- Autor: Svope (http://facebook.com/Svope)
-- Copyright ©2013. 
-- Zakaz publikacji i sprzedaży
---------------------------------------------
quest new_move_ring begin
	state start begin
		when 70058.use begin
			new_move_ring.R_P1()
		end
		function R_Tab()
			return {
				["Page1"] = {
					[1] = {
						["Kat"] = {"Moje Miasto"},
					},
					[2] = {
						["Kat"] = {"Miasta M1/M2"},
						[1] = {"Shinsoo M1", 4743, 9548},
						[2] = {"Chunjo M1", 638, 1664},
						[3] = {"Jinno M1", 9599, 2692},
						[4] = {"Shinsoo M2", 3531, 8829},
						[5] = {"Chunjo M2", 1455, 2400},
						[6] = {"Jinno M2", 8639, 2460},
					},
					[3] = {
						["Kat"] = {"Miejsca specjalne"},
						[1] = {"Świątynia Hwang 'DT'", 5905, 1105},
						[2] = {"Las Duchów", 3038, 268},
						[3] = {"Czerwony Las", 11196, 700},
						[4] = {"Wężowe Pole", 10496, 7168},
						[5] = {"Kraina Gigantów", 8283, 7635},
					},
					[4] = {
						["Kat"] = {"Expowiska #1"},
						[1] = {"Dolina Seungryong", 3326, 7468},
						[2] = {"Góra Sohan", 4347, 2142},
						[3] = {"Pustynia Yongbi", 2956, 5481},
						[4] = {"Ognista Ziemia", 5997, 7575},
						[5] = {"Loch Pająków Poz. I", 600 , 4960},
						[6] = {"Loch Pająków Poz. II", 7041, 4641},
					},
					[5] = {
						["Kat"] = {"Expowiska #2"},
						[1] = {"Grota Wygnańców Poz. I <75lvl>", 0, 12032, ["Min_Poz"] = 75},
						[2] = {"Grota Wygnańców Poz. II <75lvl>", 1536, 12032, ["Min_Poz"] = 75},
					},
				},
				["Page2"] = {
					[1] = {
						["Kat"] = {"Zapisane pozycje"},
					},
					[2] = {
						["Kat"] = {"Sklep"},
					--	[n] = |ID_ID, ILOŚĆ_W_STACKU, WYMAGANE_MIEJSCE, KOSZT| --
						[1] = {27003, 200, 1, 64000},
						[2] = {27003, 200, 5, 320000},
						[3] = {27006, 200, 1, 192000},
						[4] = {27006, 200, 5, 960000},
						[5] = {27105, 50, 1, 500000},
						[6] = {27112, 50, 1, 500000},
					},
					[3] = {
						["Kat"] = {"Otwórz magazyn"},
					},
				},
			}
		end
		function R_P1()
			say_title("Pierścień Teleportacji:")
			say("Wybierz kategorię:")
			say("")
			local r_tab = new_move_ring.R_Tab()
			local a = {}
			local b = {}
			for i=1, table.getn(r_tab.Page1) do
				table.insert(a, r_tab.Page1[i]["Kat"][1])
			end
			table.insert(a, "Strona 2") table.insert(a, "Anuluj")
			local w_a = select_table(a)
			if w_a == 1 then
				warp_to_village()
			elseif w_a == table.getn(r_tab.Page1)+1 then
				new_move_ring.R_P2()
			elseif w_a == table.getn(r_tab.Page1)+2 then
				return
			else
				for j=1, table.getn(r_tab.Page1[w_a]) do
					table.insert(b, r_tab.Page1[w_a][j][1])
				end
				table.insert(b, "Wróć..") table.insert(b, "Anuluj")
				local w_b = select_table(
				if w_b == table.getn(r_tab.Page1[w_a])+1 then
					new_move_ring.R_P1()
				elseif w_b == table.getn(r_tab.Page1[w_a])+2 then
					return
				else
					local min_lvl = 0
					if r_tab.Page1[w_a][w_b]["Min_Poz"] == nil then
						min_lvl = 0
					elseif r_tab.Page1[w_a][w_b]["Min_Poz"] > 1 then
						min_lvl = r_tab.Page1[w_a][w_b]["Min_Poz"]
					end
					if pc.level < min_lvl then
						syschat("Nie masz wystarczającego poziomu.")
						return
					else
						pc.warp(r_tab.Page1[w_a][w_b][2]*100, r_tab.Page1[w_a][w_b][3]*100)
					end
				end
			end
		end
		function R_P2()
			say_title("Pierścień Teleportacji:")
			say("Wybierz kategorię:")
			say("")
			local r_tab = new_move_ring.R_Tab()
			local a = {}
			local b = {}
			for i=1, table.getn(r_tab.Page2) do
				table.insert(a, r_tab.Page2[i]["Kat"][1])
			end
			table.insert(a, "Strona 1") table.insert(a, "Anuluj")
			local w_a = select_table(a)
			if w_a == table.getn(r_tab.Page2)+1 then
				new_move_ring.R_P1()
			elseif w_a == table.getn(r_tab.Page2)+2 then
				return
			elseif w_a == 1 then
				new_move_ring.S_Pos()
			elseif w_a == 2 then
				for j=1, table.getn(r_tab.Page2[w_a]) do
					table.insert(b, item_name(r_tab.Page2[w_a][j][1]).." x"..(r_tab.Page2[w_a][j][2]*r_tab.Page2[w_a][j][3]))
				end
				table.insert(b, "Wróć..") table.insert(b, "Anuluj")
				local w_b = select_table(
				if w_b == table.getn(r_tab.Page2[w_a])+1 then
					new_move_ring.R_P2()
				elseif w_b == table.getn(r_tab.Page2[w_a])+2 then
					return
				else
					if pc.money < r_tab.Page2[w_a][w_b][4] then
						syschat("Nie masz wystarczającej ilości yang.")
					elseif pc.get_empty_inventory_count() < r_tab.Page2[w_a][w_b][3] then
						syschat("Nie masz wystarczającej ilości miejsca w ekwipunku, aby zakupić ten przedmiot.")
					else
						for k=1, r_tab.Page2[w_a][w_b][3] do
							pc.give_item2(r_tab.Page2[w_a][w_b][1], r_tab.Page2[w_a][w_b][2])
						end
						pc.change_money(-r_tab.Page2[w_a][w_b][4])
					end
				end
			elseif w_a == 3 then
				game.open_safebox()
			end
		end
		function S_Pos()
			local map = { 
			[1] = 'Shinsoo M1', [3] = 'Shinsoo M2', [4] = 'Shinsoo Tereny Gildii', 
			[21] = 'Chunjo M1', [23] = 'Chunjo M2', [24] = 'Chunjo Tereny Gildii',
			[41] = 'Jinno M1', [43] = 'Jinno M2', [44] = 'Jinno Tereny Gildii',
			[61] = 'Góra Sohan', [62] = "Ognista Ziemia 'Doyyumhwaji'", [63] = 'Pustynia Yongbi', [64] = 'Dolina Seungryong',
			[65] = 'Świątynia Hwang', [66] = 'Wieża Demonów', [67] = 'Las Duchów', [68] = 'Czerwony Las', [69] = 'Wężowe Pole',
			[70] = 'Kraina Gigantów', [71] = 'Loch Pająków Poz. II', [72] = 'Grota Wygnańców Poz. I', [73] = 'Grota Wygnańców Poz. II',
			[75] = 'Loch Pająków Poz. III', [81] = 'Obszar Ślubny', [103] = 'Arena Wojen Gildii', [104] = 'Loch Pająków Poz. I',
			[105] = 'Arena Wojen Gildii', [107] = 'Loch słabych małp', [108] = 'Loch normalnych małp', [109] = 'Loch trudnych małp',
			[110] = 'Arena Wojen Gildii', [111] = 'Arena Wojen Gildii', [112] = 'Arena Walk', [113] = 'Event OX', 
			[181] = 'Wojna Królestw', [182] = 'Wojna Królestw', [183] = 'Wojna Królestw' }
			local map_x = pc.get_x()
			local get_x = pc.get_local_x()
			local map_y = pc.get_y()
			local get_y = pc.get_local_y()
			local idx = pc.get_map_index()
			local blok = {5, 25, 45} -- Tutaj podajemy indexy na których nie możemy utworzyć tp.
			local s_tab = {}
			say_title("Pierścień Teleportacji")
			say("Wybierz opcję:")
			for i=1, 5 do
				if pc.getqf("idx_"..i) == 0 then
					table.insert(s_tab, "Zapisz pozycję ")
				else
					table.insert(s_tab, map[pc.getqf("idx_"..i)].." ("..pc.getqf("cx_"..i)..", "..pc.getqf("cy_"..i)..")")
				end
			end
			table.insert(s_tab, "Usuń teleport") table.insert(s_tab, "Wróć..") table.insert(s_tab, "Anuluj")
			local w1 = select_table(s_tab)
			if w1 < 6 then
				if pc.getqf("idx_"..w1) == 0 then
					for i=1, table.getn(blok) do
						if idx == blok[i] then
							syschat("Nie można utworzyć teleportu na danej mapie.")
							return
						end
						break
					end
					say_title("Pierścień Teleportacji")
					say("Czy chcesz utworzyć teleport do tego miejsca?")
					say(map[idx].." ("..get_x..", "..get_y..")")
					local w3 = select("Utwórz", "Wróć..", "Anuluj")
					if w3 == 1 then
						pc.setqf("idx_"..w1, idx)
						pc.setqf("cx_"..w1, get_x) pc.setqf("mapx_"..w1, map_x)
						pc.setqf("cy_"..w1, get_y) pc.setqf("mapy_"..w1, map_y)
						new_move_ring.S_Pos()
						return
					end
				else
					pc.warp(pc.getqf("mapx_"..w1)*100, pc.getqf("mapy_"..w1)*100)
				end
			elseif w1 == 6 then
				say_title("Pierścień Teleportacji")
				say("Który teleport chcesz usunąć:")
				local w2 = select(s_tab[1], s_tab[2], s_tab[3], s_tab[4], s_tab[5], "Wróć..", "Anuluj")
				if w2 == 6 then
					new_move_ring.S_Pos()
					return
				elseif w2 == 7 then
					return
				end
				if pc.getqf("idx_"..w2) != 0 then
					for i=1, 5 do
						pc.setqf("idx_"..w2, 0)
						pc.setqf("cx_"..w2, 0) pc.setqf("mapx_"..w2, 0)
						pc.setqf("cy_"..w2, 0) pc.setqf("mapy_"..w2, 0)
					end
					new_move_ring.S_Pos()
					return
				else
					syschat("Nieskonfigurowany teleport dla tego wyboru.")
					return
				end
			elseif w1 == 7 then
				new_move_ring.R_P2()
			elseif w1 == 8 then
				return
			end
		end
	end
end 

 

 

 

Od siebie:

- Quest w 100% mojego autorstwa,

- Nie należy on do trudnych w napisaniu,

- Sklep którego w nim użyłem zaczerpnięty z mojego wcześniejszego questa który znajdziecie w temacie:

http://www.mpcforum.pl/topic/1164615-sklep-w-przedmiocie/#entry9996998

jest on tutaj jednak znacznie "okrojony",

- Co do dalszego rozwoju tego pierścienia, czekam na wasze propozycje w jakim kierunku jak go rozwijać tj. nowe opcje oraz urozmaicenia.

__Hejt ON__ ^^

 

#Changelog:

- Dodano możliwość zapisu pozycji,

- Dodano magazyn,

- Usunięto zaobserwowane błędy,

 

Pozdrawiam Svope.

dCrwk2h.gif

Opublikowano

Quest pierwsza klasa ;) Dobry, przejrzysty i łatwy w edycji.
Popieram kolegę UP jak dodasz opcję zapisywania lokalizacji i ich usuwania to będzie po prostu "igiełka"

Opublikowano

@2UP

Tak jak kolega napisał.

Oraz możesz dać magazyn:)

giphy.gif

 

"Są ludzie, którym szczęście mig­nie tyl­ko na mo­ment, na mo­ment tyl­ko się ukaże po to tyl­ko, by uczy­nić życie tym smut­niej­sze i okrutniejsze." ~ Stanisław Dygat

Opublikowano

Dodany został changelog oraz opcje od użytkowników UP.

 

@EDIT

Później przypiszę zapisywanie pozycji pod funkcję i dodam tam jeszcze kilka urozmaiceń chwilowo nie mam czasu. :)

Błąd podczas cofania zapisu pozycji i zamknięcia okna zostanie naprawiony po moim powrocie do domu.

Index'y map dopisujemy w queście nie jak to było we wcześniejszej wersji w postaci dopisywania do locale.

Proszę moda o zmianę nazwy tematu na "Pierścień teleportacji z opcjami".

dCrwk2h.gif

Opublikowano
local b = select(tab[1], tab[2], tab[3], tab[4], tab[5], "Anuluj")
select_table(tab)

oczywiście z insertem Anuluj do tablicy, ale zamysł mam nadzieję że rozumiesz

 

umarł

Opublikowano

z4z0l

Tak, tak rozumiem i tak mam zamiar napisać to po swojemu. Quest który jest wrzucony w pierścień nie jest mojego autorstwa ja tam tylko dodałem 1 dodatkowe miejsce pod zapis.

 

Teraz mam godzinkę wolnego więc się za to wezmę.

dCrwk2h.gif

Opublikowano

Ogólnie gitara mógł byś jeszcze dodać do niego funkcje zapisywania kilku kordów z możliwością usuwania ich.

 

Dokładnie, zaktualizuj to i zasysam, narazie like, ładny i przejrzysty kod.

The past has gone

 

Opublikowano

Usunięto zaobserwowane błędy, dodano w pełni sprawny zapis pozycji.

Czekam na dalsze propozycje zmian. Wszystko wpisane w changelog.

dCrwk2h.gif

Opublikowano

Hardkorrek

Nie rozumiem Twojej wypowiedzi. Co masz na myśli mówiąc rozwijacie jeśli taki quest nie jest żadnym problemem do napisania prócz 20 minut wolnego czasu?

dCrwk2h.gif

Opublikowano

Hardkorrek

Nie rozumiem Twojej wypowiedzi. Co masz na myśli mówiąc rozwijacie jeśli taki quest nie jest żadnym problemem do napisania prócz 20 minut wolnego czasu?

  • 3 tygodnie później...
  • 2 miesiące temu...
  • 2 tygodnie później...
Opublikowano

Mógłbyś sprawdzić tego questa ? po dodaniu zaczęły padać kanały. Syserr sra wartościami nil.

  • 5 tygodni później...
Opublikowano

Fajnie że pisany tablicą, bardzo krótki :)

Można by napisać to krócej, ale Svope lubi tablice asocjacyjne. Pewnie mówisz, że krótki, bo masz na 1000 ifach.

 

Pamiętam jak mi się chwaliles tym niemieckim questem C:

ZcWbjGf.png


Serdecznie zapraszam :)

  • 3 tygodnie później...
Opublikowano

Ładnie napisany quest, przyjemnie się patrzy jak ktoś umie robić wcięcia w odpowiednich miejscach :)

 

masz rację.. ;d

fajnie się też patrzy kiedy ktoś podpierdala pomysł ;p

  • 1 miesiąc temu...

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...