Skocz do zawartości

Problem Z Doświadczeniem Na Start?


Rekomendowane odpowiedzi

Witam,

 

pokaże wam jak można szybko i łatwo we własnym zakresie pisać nowe funkcję.

W folderze z questami najczęściej ../locale/english/quest jest taki plik o nazwie questlib.lua.

Jest to taka mała biblioteka do poszczególnych usprawnień i działania funkcji. Nie znajdziemy w niej za wiele gdyż wszystkie

funkcje są praktycznie skompresowane z GAME lecz my w questlib możemy łatwo ingerować =)

 

------------------------------------------------

------------WPROWADZENIE------------

------------------------------------------------

 

 

Na początek musimy się zastanowić jak nasza funkcja ma wyglądać... Wybrałem dla swojej nazwę pc.set_level()

ponieważ istnieje już funkcja pc.get_level(), która sprawdza jaki poziom mamy. Wszystkie pc.set_... funkcje coś dodają graczowi skąd taka nazwa

się właśnie mi nasunęła.. =P

 

 

------------------------------------------------

---------DODAWANIE FUNKCJI---------

------------------------------------------------

 

 

Pierw musimy naszą nową funkcję dodać do quest_functions skąd nasz kompilator "qc" zaciąga informacje o dopuszczalnych funkcjach.

Nawet istniejąca funkcja nie dodana do quest_functions nie będzie działać.. i wywali nam ERROR po kompilacji.

Można to zrobić na dwa wiele sposobów.. Najłatwiejszym jest wejście do katalogu (Pliki Rain) /usr/rain/channel/share_data/locale/hongkong/quest przez

jakiś program który obsługuje ssh np. FileZilla lub WinSCP. Otworzenie tam tego owego pliku quest_functions i dopisanie na samym dole naszej nowej funkcji czyli pc.set_level.

Bez nawiasów okrągłych gdyż tam nie dopisuje się żadnych parametrów, zmiennych do tych funkcji. To jest tylko znak dzięki któremu będzie nasz kompilator rozumiał co to jest pc.set_level().

Lub bardziej dla leniwych wpisać w BSD#

echo 'pc.set_level' >> /usr/rain/channel/share_data/locale/hongkong/quest/quest_functions

 

 

------------------------------------------------

------------ŹRÓDŁO FUNKCJI------------

------------------------------------------------

 

 

Już mamy dodaną funkcję do naszego quest_functions lecz to nie wszystko.

Kompilator będzie nam rozumiał naszą funkcję ale nic się nie będzie po prostu działo jak ją użyjemy.

Do tego celu użyjemy pliku questlib.lua w którym dodamy kod źródłowy naszej funkcji.

Wchodzimy ponownie do katalogu z questami /usr/rain/channel/share_data/locale/hongkong/quest/

Odnajdujemy tam plik o nazwie questlib.lua. Kopiujemy go na pulpit i otwieramy np. notepad ++

Wklejamy do niego taki kod:

-------------------------------------------
---------Funkcja Level By Bambus3k---------
-------------------------------------------
function pc.set_level(lev)
if pc.getqf("__NEXT_LEVEL__") == 0 then
	pc.setqf("__NEXT_LEVEL__", 1)
---------------
-- BugFix --
---------------
if pc.level >= lev then
return
end
	repeat
		pc.give_exp2(pc.get_next_exp())
	until pc.level == lev
end
end

 

Dodałem takie małe zabezpieczenie by się serwer nie bugował jak używamy kilkanaście razy tej funkcji..

Wtedy wszystko wariuje i mogą się zbugować mapy. Sprawdzałem kilka razy i już nie miałem żadnego błędu.

Całość zapisujemy i wrzucamy z powrotem na serwer.

 

 

 

------------------------------------------------

----------WYKORZYSTYWANIE----------

------------------------------------------------

 

 

Prosty quest z wykorzystaniem nowej funkcji...

---------------------------------------
-- METIN2 
-- Login Quest By Bambus3k
---------------------------------------
quest level begin
state start begin
	when login begin
		if pc.getqf("eq_na_start") == 0 then
			pc.setqf("eq_na_start", 1)

				pc.set_level(5) -- 5 poziom na start.
					chat("Test Level: "..pc.get_name().." -> "..pc.level)

		end
	end
end
state __GOOD__ begin
end
end

 

 

 

To będzie wszystko... =)

307681428489538142351.png

Metin2 Balmora Staff

Odnośnik do komentarza
  • 2 tygodnie później...

Zarchiwizowany

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

  • Ostatnio przeglądający forum Problem Z Doświadczeniem Na Start?   0 użytkowników
    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...