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

Rekomendowane odpowiedzi

Opublikowano

JonyNawalony dał mi wczoraj pomysł na quest, który umożliwia zapisanie kilku dowolnych lokalizacji. Z góry jestem nastawiony na hejt za zbyt dużą ilość użytych qf, ale jeśli ktoś poda mi optymalniejszy sposób to z chęcią skorzystam (query odpada, poza tym to to samo).

 

Co umożliwia ten super pierścień?

  • Zapisanie teleportu do dowolnego miejsca (poza dungeonami itd)
  • Usunięcie danego teleportu
  • No i to co chyba najważniejsze - teleportowanie do zapisanego miejsca

Zasada działania questa:

  1. Stań w dowolnym miejscu
  2. Wybierz w pierścieniu wolne miejsce (bądź usuń stary teleport)
  3. Zaakceptuj swój wybór
  4. Ciesz się nowym miejscem, do którego możesz się przenosić kiedy i ile razy chcesz!

Postanowiłem, że daruję sobie zapytania sql, ikonki itd. Każdy kto będzie chciał to sobie stworzy sam do tego, bądź też wykorzysta z mojego wczorajszego tematu (http://www.mpcforum....tacji-metin2pl/). Do senda:

 

Quest:

 

http://pastebin.com/kMis2UHY

 

quest multi_teleport begin
 state start begin
		 when xx.use begin
				 local name = item_name(item.get_id())
				 say_title(name..":")
				 say("Wybierz miejsce w które chcesz się przenieść:")
				 local tab = {}
				 for i=1,4 do
						 if pc.getqf("teleport_"..i.."_3") == 0 then
								 table.insert(tab, "Brak teleportu")
						 else
								 table.insert(tab, locale.map_name[pc.getqf("teleport_"..i.."_3")].." ("..pc.getqf("teleport_"..i.."_4")..", "..pc.getqf("teleport_"..i.."_5")..")")
						 end
				 end
				 local a = select(tab[1], tab[2], tab[3], tab[4], "Usuń teleport", "Anuluj")
				 if a == 6 then
						 return
				 elseif a == 5 then
						 say_title(name..":")
						 say("Wybierz który punkt chcesz usunąć:")
						 local b = select(tab[1], tab[2], tab[3], tab[4], "Anuluj")
						 if b == 5 then
								 return
						 end
						 say_title(name..":")
						 if pc.getqf("teleport_"..b.."_3") != 0 then
								 for i=1,5 do
										 pc.setqf("teleport_"..b.."_"..i, 0)
								 end
								 say("Pomyślnie usunięto teleport.")
								 say("")
						 else
								 say("Nie możesz usunąć nie istniejącego teleportu.")
								 say("")
						 end
						 return
				 end
				 say_title(name..":")
				 if pc.getqf("teleport_"..a.."_3") == 0 then
						 local index = pc.get_map_index()
						 if index == 5 or index == 25 or index == 45 or index == 71
						 or index == 72 or index == 73 or index == 81 or index == 104
						 or index == 107 or index == 108 or index == 109 or index == 112 or index == 113 then
								 say("Na tą mapę nie możesz utworzyć teleportu.")
								 say("")
								 return
						 end
						 local x = pc.get_local_x()
						 local xg = pc.get_x()
						 local y = pc.get_local_y()
						 local yg = pc.get_y()
						 say("Czy chcesz utworzyć do tego miejsca teleport?")
						 say(locale.map_name[index].." ("..x..", "..y..")")
						 local b = select("Tak", "Nie")
						 if b == 1 then
								 pc.setqf("teleport_"..a.."_1", xg*100)
								 pc.setqf("teleport_"..a.."_2", yg*100)
								 pc.setqf("teleport_"..a.."_3", index)
								 pc.setqf("teleport_"..a.."_4", x)
								 pc.setqf("teleport_"..a.."_5", y)
								 say_title(name..":")
								 say("Pomyślnie utworzono teleport")
								 say("")
						 end
				 else
						 pc.warp(pc.getqf("teleport_"..a.."_1"), pc.getqf("teleport_"..a.."_2"))
				 end
		 end
 end
end

 

 

 

Zawartość, którą wklejamy do locale.lua:

 

http://pastebin.com/eKuy07Za

 

locale.map_name = {
 [1] = "Pyungmoo",
 [3] = "Bakra",
 [4] = "Imha",
 [5] = "Loch Łatwych Małp",
 [21] = "Joan",
 [23] = "Bokjung",
 [24] = "Waryong",
 [25] = "Loch Łatwych Małp",
 [41] = "Yongan",
 [43] = "Jayang",
 [44] = "Jungrang",
 [45] = "Loch Łatwych Małp",
 [61] = "Góra Sohan",
 [62] = "Doyyumhwaji",
 [63] = "Pustynia Yongbi",
 [64] = "Dolina Seungryong",
 [65] = "Świątynia Hwang",
 [66] = "Wieża Demonów",
 [67] = "Las Duchów",
 [68] = "Czerwony Las",
 [69] = "Weżowe Pole",
 [70] = "Kraina Gigantów",
 [71] = "Loch Pająków V2",
 [72] = "Grota Wygnańców V1",
 [73] = "Grota Wygnańców V2",
 [74] = "Góra Sohan V2",
 [75] = "Świątynia Hwang V2",
 [77] = "Doyyumhwaji V2",
 [78] = "Dolina Seungryong V2",
 [81] = "Obszar Ślubny",
 [100] = "",
 [103] = "",
 [104] = "Loch Pająków V1",
 [105] = "",
 [107] = "Loch Łatwych Małp",
 [108] = "Loch Normalnych Małp",
 [109] = "Loch Trudnych Małp",
 [110] = "",
 [111] = "",
 [112] = "Arena Walk",
 [113] = "Mapa OX",
}

 

 

 

Jak edytować mapy, na które nie można się przenieść?

Wystarczy przeedytować ten warunek (podajemy w nim indexy map, na które nie można się przenosić):

if index == 5 or index == 25 or index == 45 or index == 71
or index == 72 or index == 73 or index == 81 or index == 104
or index == 107 or index == 108 or index == 109 or index == 112 or index == 113 then

 

Jak dodać nazwy map, na które można tworzyć teleporty?

Edytujemy to co wrzuciliśmy do locale.lua. Dodajemy wg następującej budowy:

[index] = "nazwa mapy",

cudzysłów i przecinek są istotne!

 

Co do questa, to raczej nie muszę mówić, że w miejsce xx wstawiamy id naszego pierścienia, prawda?

Jeśli chodzi o locale.lua to w 24 linii znajduje się już locale.map_name lecz zawiera tylko 4 lokacje. Podmieńcie sobie je, za te co tutaj podałem.

Tak to mniej więcej wygląda przed:

 

 

gnov.jpg

 

i po:

 

asjx.jpg

 

 

Na koniec kilka fotek:

 

qevl.jpg

xavl.jpg

cdju.jpg

chkn.jpg

 

Fotka po usunięciu jednego z punktów:

tthg.jpg

 

 

 

To chyba tyle, w sprawie zażaleń i pomysłów pisać w temacie

 

Lajki dla JonyNawalony za cierpliwość i testowanie questa :D

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

:D

 

sunp.png

Sygnatura wykonana przez

Isuribi aka Amelka.

Opublikowano

Hm. Quest jak quest ok.

Pytanko czy jak np 500 osób doda te lokalizacje to czy nie bd zasmiecac ?

Pytanie, czy jak 20000 osób założy konto to czy nie zaśmieci bazy poprzez ustawienie give_basic_weapon na 1?

 

Każdy quest w player.quest tworzy rekordy poprzez zapisanie state questa. Owszem, można zrobić sobie zupełnie osobną tabelkę i uzupełniać ją ale co to za różnica skoro i tak czy tak zapisuje się w bazie?

 

Jakby ktoś chciał to przy usuwaniu teleportów można usuwać qf (w moim się zerują), o tak:

for i=1,5 do
 pc.delqf("teleport_"..b.."_"..i)
end

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

:D

 

sunp.png

Sygnatura wykonana przez

Isuribi aka Amelka.

Opublikowano

baza bazą, parę rekordów do bazy 500, 1000 czy 10000 to nie robi różnicy.

Baza danych metin2, jest tak małą bazą[...] (że to zajmuje parę kb, żeby nie bajtów...)

że można do woli, zależy też od pojemności dysku, teraz dyski mają po 2-4TB tez to to nawet mili % nie jest :)

 

Po myście co się dzieje na FaceBook...

Opublikowano

Questy nie zaśmiecają bazy :)

Czasem się może zdarzyć (np. w game2089 od Infinity) że game zapisuje do player.quest statystyki graczy co 30 min. Wtedy przy 1000 graczy, dziennie mamy 48k rekordow, po 8 danych, co daje nam 384k rekordów. Po 2-4 tygodniach zaśmieca to tak bazę, że db timeoutuje i trzeba wyczyścić player.quest ze zbędnych milionów logów :)

 

@Top

Dzięki za quest, przyda się na 100%. Masz może jeszcze jakieś ciekawe do udostępnienia? :)

Pozdrawiam

zf0m.png


LINK DO PREZENTACJI (KLIK)


Nic dodać, nic ująć.


Opublikowano

Questy nie zaśmiecają bazy :)

Czasem się może zdarzyć (np. w game2089 od Infinity) że game zapisuje do player.quest statystyki graczy co 30 min. Wtedy przy 1000 graczy, dziennie mamy 48k rekordow, po 8 danych, co daje nam 384k rekordów. Po 2-4 tygodniach zaśmieca to tak bazę, że db timeoutuje i trzeba wyczyścić player.quest ze zbędnych milionów logów :)

 

@Top

Dzięki za quest, przyda się na 100%. Masz może jeszcze jakieś ciekawe do udostępnienia? :)

Pozdrawiam

player.quest nie można ot tak sobie czyścić. Są tam zapisane wszystkie state, qf oraz event_flagi! Gdy to wywalimy to każdy gracz będzie musiał wszystkie questy robić od nowa. A co do tej ilości rekordów to policz sobie ile na dobrze prosperującym prywatnym serwerze tworzy się rekordów w item (przyjmij sobie, że masz 2k graczy, każdy wykonuje z 500-1k akcji na itemach w ciągu dnia, tj drop, ulepszanie, wyrzucanie, handlowanie, zbieranie z ziemi)

 

Jeśli dasz mi ciekawy, do zrealizowania pomysł to się go napisze. Tego questa zacząłem pisać wczoraj bo JonyNawalony dał mi pomysł (czyt. "widziałem kiedyś coś takiego na jakimś tam serwerze")

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

:D

 

sunp.png

Sygnatura wykonana przez

Isuribi aka Amelka.

Opublikowano

player.quest nie można ot tak sobie czyścić. Są tam zapisane wszystkie state, qf oraz event_flagi! Gdy to wywalimy to każdy gracz będzie musiał wszystkie questy robić od nowa. A co do tej ilości rekordów to policz sobie ile na dobrze prosperującym prywatnym serwerze tworzy się rekordów w item (przyjmij sobie, że masz 2k graczy, każdy wykonuje z 500-1k akcji na itemach w ciągu dnia, tj drop, ulepszanie, wyrzucanie, handlowanie, zbieranie z ziemi)

 

Jeśli dasz mi ciekawy, do zrealizowania pomysł to się go napisze. Tego questa zacząłem pisać wczoraj bo JonyNawalony dał mi pomysł (czyt. "widziałem kiedyś coś takiego na jakimś tam serwerze")

Wiem, wiem :D Chodzi mi o wyczyszczenie tych niepotrzebnych wpisów :) Wpisywałem wtedy

DELETE FROM player.quest WHERE szState='';

i czyściło te niepotrzebne ;)

Cd. zaśmiecania - dobry przykład z itemami :D

zf0m.png


LINK DO PREZENTACJI (KLIK)


Nic dodać, nic ująć.


Opublikowano

45229565235833161184.png

 

Quest na ten pierścień naprawdę się przyda.

Podejrzewam że na tym forum jeszcze nie znajdywał się taki Quest. . .

Tak czy siak dostajesz Like za ładnego Quest'a.

64931698447324846581.png

 

Jestem .Aser♛ - Jeśli masz coś do mnie Pisz PW.

Wiem mam wielu wrogów i mam wielu przyjaciół.

Jestem WOJOWNIKIEM !.

Opublikowano

Mam rozumieć że jeśli ktoś chciałby sobie dodać buttony (sloty) w pierścieniu to należy tylko dodać taby w queście przy local'u ?

screenshot_10.jpg


Opublikowano

Dzięki że zrobiłeś tan temat bo kwiatmix go zrobił kiedyś ale nwm co się z tym stało/ @edit wszytsko działa dzięks.

beznazwyvl.jpg
Opublikowano

Mam rozumieć że jeśli ktoś chciałby sobie dodać buttony (sloty) w pierścieniu to należy tylko dodać taby w queście przy local'u ?

Nie do końca. Trzeba jeszcze ilość wykonywania się pętli zwiększyć.

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

:D

 

sunp.png

Sygnatura wykonana przez

Isuribi aka Amelka.

Opublikowano

Super sprawa dzieki za wstawienie ;>

 

Limit Lubie to dla Ciebie.

 

Dodam sobie do pierscienia Tp jako oddzielna opcja lub pod nowy pierscien. <3

Pomogłem? Daj Lubie to! :)

 

2252770056.png

Opublikowano

przyda sie do postawienia npc w danym miejscu ;)

@offtopic

Sunushi dlaczego na /inv nie wiem kim grasz ; _ ; .

Szamanę ?

Zdjęcia questa robił mi JonyNawalony

 

P.S. Wystarczy ogarnąć moją sygnaturę

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

:D

 

sunp.png

Sygnatura wykonana przez

Isuribi aka Amelka.

Opublikowano

Supcio :D

Co do 'Brak teleportu' to stworzył bym coś mniej mylnego gracza jak 'Stwórz teleport' = )

PS:

umiałbyś zrobić tak że idzie użyć tego przedmiotu tylko 50 razy ?

4funmt2.pl

Opublikowano

Chcesz pomysł? Masz funkcję npc.get_vid()? Jak nie, to mogę Ci ją podesłać. Za pośrednictwem pierścienia, teleport do innego gracza.

I bez tej funkcji można.

 

 

function pc.warp_to(vid)
vid = find_pc_by_name(vid)

local me = pc.select(vid)
local x,y = pc.get_x()*100,pc.get_y()*100
pc.select(me)
pc.warp(x,y)
end

 

umarł

  • 2 tygodnie później...
Opublikowano

Troche nie rozumiem po co zapisujesz local x i local y.

Ze względów czysto estetycznych. Dzięki temu przy zapisywaniu kilku teleportów do tej samej mapy masz możliwość rozróżnienia w które miejsce polecisz.

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

:D

 

sunp.png

Sygnatura wykonana przez

Isuribi aka Amelka.

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...