Skocz do zawartości

Skille P - Kamień Tęczowy z podziałem na klasy/profesje


Phoenix.

Rekomendowane odpowiedzi

Siema.

Zanim przejdziecie do rękoczynów chciałbym powiedzieć tyle, że quest zrobiłem dla jednego z użytkowników MPC to i wstawiam go tutaj.

Wiem, że jesteście (hejterzy) na tyle kochani, że zjecie człowieka nawet za małą pomyłkę czy też prościznę (choćby była własna :D) dlatego proszę o wytknięcie mi jakichkolwiek błędów z góry. Dzięki pis, joł, elo, , drugs & rock'n'roll, madonna, bum bum america.

http://wklej.to/stO5i
------------------------------------
--- Quest by PhoEnix9332 / Syn3k ---
---   Specjalnie dla MPCForum    ---
------------------------------------

quest teczak begin
	state start begin
		when xxx.use begin
		say_title("Tęczowy Kamień:")
		say("")
		say("Wybierz klasę swojej postaci, abym")
		say("mógł dać jej skille na poziomie Perfect!")
		-------------------
		local s = select("Wojownik", "Ninja", "Sura", "Szaman", "Anuluj")
		-------------------
		if s == 5 then
			return
		elseif s == 1 then
			if pc.job == 0 then
				say_title("Tęczowy Kamień:")
				say("")
				say("Wybierz swoją profesję:")
				-------------------
				local a = select("Wojownik Body", "Wojownik Mental")
				local group = pc.get_skill_group()
				-------------------
				if a == 1 then
					if pc.get_skill_group() == group then
					say("Otrzymałeś umiejętności na poziomie P!")
						pc.set_skill_level(1, 59)
						pc.set_skill_level(2, 59)
						pc.set_skill_level(3, 59)
						pc.set_skill_level(4, 59)
						pc.set_skill_level(5, 59)
					else
						say_title("Tęczowy Kamień:")
						say("")
						say("Niestety, ale wybrałeś złą profesję postaci!")
					end
				elseif a == 2 then
					if pc.get_skill_group() == group then
					say("Otrzymałeś umiejętności na poziomie P!")
						pc.set_skill_level(16, 59)
						pc.set_skill_level(17, 59)
						pc.set_skill_level(18, 59)
						pc.set_skill_level(19, 59)
						pc.set_skill_level(20, 59)
					else
						say_title("Tęczowy Kamień:")
						say("")
						say("Niestety, ale wybrałeś złą profesję postaci!")
					end
				end
			else
			say_title("Tęczowy Kamień:")
			say("")
			say("Niestety, ale wybrałeś złą klasę postaci!")
			end
		elseif s == 2 then
			if pc.job == 1 then
				say_title("Tęczowy Kamień:")
				say("")
				say("Wybierz swoją profesję:")
				-------------------
				local a = select("Ninja Dagger", "Ninja Archer")
				local group = pc.get_skill_group()
				-------------------
				if a == 1 then
					if pc.get_skill_group() == group then
					say("Otrzymałeś umiejętności na poziomie P!")
						pc.set_skill_level(31, 59)
						pc.set_skill_level(32, 59)
						pc.set_skill_level(33, 59)
						pc.set_skill_level(34, 59)
						pc.set_skill_level(35, 59)
					else
						say_title("Tęczowy Kamień:")
						say("")
						say("Niestety, ale wybrałeś złą profesję postaci!")
					end
				elseif a == 2 then
					if pc.get_skill_group() == group then
					say("Otrzymałeś umiejętności na poziomie P!")
						pc.set_skill_level(46, 59)
						pc.set_skill_level(47, 59)
						pc.set_skill_level(48, 59)
						pc.set_skill_level(49, 59)
						pc.set_skill_level(50, 59)
					else
						say_title("Tęczowy Kamień:")
						say("")
						say("Niestety, ale wybrałeś złą profesję postaci!")
					end
				end
			else
			say_title("Tęczowy Kamień:")
			say("")
			say("Niestety, ale wybrałeś złą klasę postaci!")
			end
		elseif s == 3 then
			if pc.job == 2 then
				say_title("Tęczowy Kamień:")
				say("")
				say("Wybierz swoją profesję:")
				-------------------
				local a = select("Sura BM", "Sura WP")
				local group = pc.get_skill_group()
				-------------------
				if a == 1 then
					if pc.get_skill_group() == group then
					say("Otrzymałeś umiejętności na poziomie P!")
						pc.set_skill_level(76, 59)
						pc.set_skill_level(77, 59)
						pc.set_skill_level(78, 59)
						pc.set_skill_level(79, 59)
						pc.set_skill_level(80, 59)
						pc.set_skill_level(81, 59)
					else
						say_title("Tęczowy Kamień:")
						say("")
						say("Niestety, ale wybrałeś złą profesję postaci!")
					end
				elseif a == 2 then
					if pc.get_skill_group() == group then
					say("Otrzymałeś umiejętności na poziomie P!")
						pc.set_skill_level(61, 59)
						pc.set_skill_level(62, 59)
						pc.set_skill_level(63, 59)
						pc.set_skill_level(64, 59)
						pc.set_skill_level(65, 59)
						pc.set_skill_level(66, 59)
					else
						say_title("Tęczowy Kamień:")
						say("")
						say("Niestety, ale wybrałeś złą profesję postaci!")
					end
				end
			else
			say_title("Tęczowy Kamień:")
			say("")
			say("Niestety, ale wybrałeś złą klasę postaci!")
			end
		elseif s == 4 then
			if pc.job == 3 then
				say_title("Tęczowy Kamień:")
				say("")
				say("Wybierz swoją profesję:")
				-------------------
				local a = select("Szaman Smok", "Szaman Healler")
				local group = pc.get_skill_group()
				-------------------
				if a == 1 then
					if pc.get_skill_group() == group then
					say("Otrzymałeś umiejętności na poziomie P!")
						pc.set_skill_level(91, 59)
						pc.set_skill_level(92, 59)
						pc.set_skill_level(93, 59)
						pc.set_skill_level(94, 59)
						pc.set_skill_level(95, 59)
						pc.set_skill_level(96, 59)
					else
						say_title("Tęczowy Kamień:")
						say("")
						say("Niestety, ale wybrałeś złą profesję postaci!")
					end
				elseif a == 2 then
					if pc.get_skill_group() == group then
					say("Otrzymałeś umiejętności na poziomie P!")
						pc.set_skill_level(106, 59)
						pc.set_skill_level(107, 59)
						pc.set_skill_level(108, 59)
						pc.set_skill_level(109, 59)
						pc.set_skill_level(110, 59)
						pc.set_skill_level(111, 59)
					else
						say_title("Tęczowy Kamień:")
						say("")
						say("Niestety, ale wybrałeś złą profesję postaci!")
					end
				end
			else
			say_title("Tęczowy Kamień:")
			say("")
			say("Niestety, ale wybrałeś złą klasę postaci!")
			end
		end
		end
	end
end

Pa <3 !

727881401622271220780.jpeg
Odnośnik do komentarza

 

Prawie identyczny, jak twój, tylko trochę pozmieniałeś oraz spolszczyłeś..

 

http://wklej.to/pJFHA

No sorry, ale co ja Ci poradzę, że ten quest można napisać w taki sposób? Mam Ci przysięgać, że pisałem go z głowy a nie wzorowałem się czymś?

Inaczej za bardzo nie ma co kombinować, takimi funkcjami inaczej nie przekombinujesz...

Quest z mojego tematu pisany był bez żadnych innym wspomagaczy, wykonany przeze mnie. Nie musisz wierzyć, nie mam zamiaru się z tego tłumaczyć i usprawiedliwiać.

727881401622271220780.jpeg
Odnośnik do komentarza

Quest może i się komuś przyda. Mnie osobiście zastanawia tylko sens tego zapisu (może się mylę):

				local a = select("Wojownik Body", "Wojownik Mental")
				local group = pc.get_skill_group()
				-------------------
				if a == 1 then
					if pc.get_skill_group() == group then
					say("Otrzymałeś umiejętności na poziomie P!")
						pc.set_skill_level(1, 59)
						pc.set_skill_level(2, 59)
						pc.set_skill_level(3, 59)
						pc.set_skill_level(4, 59)
						pc.set_skill_level(5, 59)
					else
						say_title("Tęczowy Kamień:")
						say("")
						say("Niestety, ale wybrałeś złą profesję postaci!")
					end

Chodzi mi o to:

				local group = pc.get_skill_group()
                                if pc.get_skill_group() == group then

Jaki jest tego sens? Wg. mnie ten warunek będzie zawsze spełniony.

 

To samo tutaj:

		local s = select("Wojownik", "Ninja", "Sura", "Szaman", "Anuluj")

Po co ten local skoro poźniej w kodzie robisz sprawdzanie klasy postaci za pomocą if pc.job == 0 then ?

 

 

Quest trochę napisany nie po mojemu. Oczywiście mogę się mylić, questa nie pobierałem, nie sprawdzałem nawet czy działa, ale dla mnie to trochę takie... nieprzemyślane jest.

Odnośnik do komentarza

Nie rozumiem jednego - po co mamy do wyboru wszystkie klasy postaci, skoro i tak nie dostaniemy tych umiejętności?

A tak, żeby to się ładnie prezentowało wizualnie :D

Wiem o co Ci chodzi (że po wyborze np. Daj skille przydzieli odpowiedniej klasie odpowiednie skille do danego pc.get_skill_group).

Może to jest jakaś 'przeszkoda', że musisz wybrać klasę, a potem profke, ale myślę, że przejrzyściej to wygląda w grze :D

 

@Inkscape, spoko :D

Zedytuje go (do minimalistycznej wersji bez zbędnych funkcji) i podeślę później.

727881401622271220780.jpeg
Odnośnik do komentarza

Pisane można powiedzieć, że na kolanie, więc fajnie by było gdyby ktoś sprawdził czy działa. Wg. mnie powinno, ja nie widzę tu błędów. Skill będzie wbity na P, jeżeli obecnie jest na minimum M1.

-------------------------
--- Quest by Inkscape ---
--- Zakaz kopiowania ----
----- Final Version -----
-------------------------
quest PerfectSkill begin
    state start begin
        when id.use begin
            local skill =
            {
             [0] = {"1", "2", "3", "4", "5"},
             [1] = {"31", "32", "33", "34", "35"},
             [2] = {"61", "62", "63", "64", "65", "66"},
             [3] = {"91", "92", "93", "94", "95", "96"},
            }
            if pc.get_skill_group()==1 then
                for i = 1, table.getn(skill[pc.get_job()]) do
                    if pc.get_skill_level(skill[pc.get_job()][i]) >= 20 then
                        pc.set_skill_level(skill[pc.get_job()][i], 59)
                    end
                end
                pc.remove_item(item.get_vnum(), 1)
            elseif pc.get_skill_group()==2 then
                for i = 1, table.getn(skill[pc.get_job()]) do
                    if pc.get_skill_level(skill[pc.get_job()][i]+15) >= 20 then
                        pc.set_skill_level(skill[pc.get_job()][i]+15, 59)
                    end
                end
                pc.remove_item(item.get_vnum(), 1)
            else
                syschat("Najpierw wybierz profesje.")
            end
        end
    end
end


//Edit. Jak ktoś ma na serwie 6 skili u wojownika i ninja, to w tablice edytuje w następujący sposób:

            local skill =
            {
             [0] = {"1", "2", "3", "4", "5", "6"},
             [1] = {"31", "32", "33", "34", "35", "36"},
             [2] = {"61", "62", "63", "64", "65", "66"},
             [3] = {"91", "92", "93", "94", "95", "96"},
            }

// Edit2. właśnie to zauważyłem gdy pisałem notkę dotyczącą 6 skill dla woja i ninja. Id 34 też było 2x wpisane :D

Odnośnik do komentarza

 

Pisane można powiedzieć, że na kolanie, więc fajnie by było gdyby ktoś sprawdził czy działa. Wg. mnie powinno, ja nie widzę tu błędów.

-------------------------
--- Quest by Inkscape ---
--- Zakaz kopiowania ----
-------------------------
quest PerfectSkill begin
	state start begin
		when id.use begin
			local skill =
			{
			   [0] = {"1", "2", "3", "4", "5"},
			   [1] = {"31", "32", "33", "34", "34"},
			   [2] = {"61", "62", "63", "64", "65"},
			   [3] = {"91", "92", "93", "94", "95"},
			}
				for i = 1, table.getn(skill[pc.get_job()]) do
				if pc.get_skill_group()==1 then
					pc.set_skill_level(skill[pc.get_job()][i], 59)
					pc.remove_item(item.get_vnum(), 1)
				elseif pc.get_skill_group()==2 then
					pc.set_skill_level(skill[pc.get_job()][i]+15, 59)
					pc.remove_item(item.get_vnum(), 1)
				else
					syschat("Najpierw wybierz profesje.")
				end
			end
		end
	end
end

Póki co błąd, który rzucił mi się w oczy to brak szóstego skilla dla sury/szamana :D

Ja póki co średnio ogarniam tablice (zwykłe i wielowymiarowe tym bardziej :D).

727881401622271220780.jpeg
Odnośnik do komentarza

PhoEnix9332

To ten twój quest działa czy nie bo nw czy zapisać sobie go na pc,i użyć w przyszłości ??

 

I czy on daje skila z punktów na P czy z M1 na P czy może z G1 na P ? :P

Tak, działa.

Jak wybierzesz profesję i masz skilla na 0/1 pkt to też da Ci P :)

Nie umieszczałem tu warunków że np. skill musi być na G1.

727881401622271220780.jpeg
Odnośnik do komentarza

Ale fajnie by było przynajmniej dla mnie gdybyś zrobił właśnie warunki ze skil ma być na G1 chyba ze ktoś ma takiego questa i mi go udostępni

Tak właśnie działa ten quest:

-------------------------
--- Quest by Inkscape ---
--- Zakaz kopiowania ----
----- Final Version -----
-------------------------
quest PerfectSkill begin
    state start begin
        when id.use begin
            local skill =
            {
             [0] = {"1", "2", "3", "4", "5"},
             [1] = {"31", "32", "33", "34", "35"},
             [2] = {"61", "62", "63", "64", "65", "66"},
             [3] = {"91", "92", "93", "94", "95", "96"},
            }
            if pc.get_skill_group()==1 then
                for i = 1, table.getn(skill[pc.get_job()]) do
                    if pc.get_skill_level(skill[pc.get_job()][i]) >= 30 then
                        pc.set_skill_level(skill[pc.get_job()][i], 59)
                    end
                end
                pc.remove_item(item.get_vnum(), 1)
            elseif pc.get_skill_group()==2 then
                for i = 1, table.getn(skill[pc.get_job()]) do
                    if pc.get_skill_level(skill[pc.get_job()][i]+15) >= 30 then
                        pc.set_skill_level(skill[pc.get_job()][i]+15, 59)
                    end
                end
                pc.remove_item(item.get_vnum(), 1)
            else
                syschat("Najpierw wybierz profesje.")
            end
        end
    end
end
Odnośnik do komentarza

 

Tak właśnie działa ten quest:

-------------------------
--- Quest by Inkscape ---
--- Zakaz kopiowania ----
----- Final Version -----
-------------------------
quest PerfectSkill begin
    state start begin
        when id.use begin
            local skill =
            {
             [0] = {"1", "2", "3", "4", "5"},
             [1] = {"31", "32", "33", "34", "35"},
             [2] = {"61", "62", "63", "64", "65", "66"},
             [3] = {"91", "92", "93", "94", "95", "96"},
            }
            if pc.get_skill_group()==1 then
                for i = 1, table.getn(skill[pc.get_job()]) do
                    if pc.get_skill_level(skill[pc.get_job()][i]) >= 30 then
                        pc.set_skill_level(skill[pc.get_job()][i], 59)
                    end
                end
                pc.remove_item(item.get_vnum(), 1)
            elseif pc.get_skill_group()==2 then
                for i = 1, table.getn(skill[pc.get_job()]) do
                    if pc.get_skill_level(skill[pc.get_job()][i]+15) >= 30 then
                        pc.set_skill_level(skill[pc.get_job()][i]+15, 59)
                    end
                end
                pc.remove_item(item.get_vnum(), 1)
            else
                syschat("Najpierw wybierz profesje.")
            end
        end
    end
end

A ja bym już to zrobił inaczej.

 

function s()
			local s = {
				[0] = {
					[1] = {1,5},
					[2] = {16,20},
				},
				[1] = {
					[1] = {31,35},
					[2] = {46,50},
				},
				[2] = {
					[1] = {61,66},
					[2] = {76,81},
				},
				[3] = {
					[1] = {91,96},
					[2] = {106,111},
				},
			}
			for i = s[pc.job][pc.get_skill_group()][1], s[pc.job][pc.get_skill_group()][2] do
				pc.set_skill_level(i, 30)
			end
		end

gwo9.jpg


Odnośnik do komentarza

 

A ja bym już to zrobił inaczej.

 

function s()
			local s = {
				[0] = {
					[1] = {1,5},
					[2] = {16,20},
				},
				[1] = {
					[1] = {31,35},
					[2] = {46,50},
				},
				[2] = {
					[1] = {61,66},
					[2] = {76,81},
				},
				[3] = {
					[1] = {91,96},
					[2] = {106,111},
				},
			}
			for i = s[pc.job][pc.get_skill_group()][1], s[pc.job][pc.get_skill_group()][2] do
				pc.set_skill_level(i, 30)
			end
		end

Praktycznie to nic nie znacząca zmiana. Jedynie inny wygląd tablic i pętli. Kwestia gustu, co komu bardziej się podoba, bo efekt jest identyczny.

 

//Edit. Chyba, że chodziło ci o to, żeby zrobić to przy użyciu funkcji, to wtedy to jest jakiś pomysł, aczkolwiek deklarować funkcje, którą użyje się 2x w queście... jakoś nie widzę sensu.

Odnośnik do komentarza

Praktycznie to nic nie znacząca zmiana. Jedynie inny wygląd tablic i pętli. Kwestia gustu, co komu bardziej się podoba, bo efekt jest identyczny.

 

//Edit. Chyba, że chodziło ci o to, żeby zrobić to przy użyciu funkcji, to wtedy to jest jakiś pomysł, aczkolwiek deklarować funkcje, którą użyje się 2x w queście... jakoś nie widzę sensu.

Przecież funkcję można zdefiniować w quescie, więc nie widzę problemu. Ogólnie chodziło mi o to, żeby dać to wszystko w jedej tablicy, ot dla prostoty działania.

gwo9.jpg


Odnośnik do komentarza
  • 1 rok później...

Zarchiwizowany

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

  • Ostatnio przeglądający forum Skille P   0 użytkowników
    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...