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

[Pytania]Questy Questy Questy :)


Rekomendowane odpowiedzi

Opublikowano

Witam,

mam kilka pytań odnośnie pisania Questów i tego tematu: http://www.mpcforum.pl/topic/124484-tutpisanie-questow/

1.

when button or info begin -- kiedy naciśniemy na zwój z questem

Nie uwierzę w to nigdy w życiu :P

Tzn na te tłumaczenie: kiedy naciśniemy na zwój z questem

Bardzo prosiłbym o informacje co to za callback button oraz info ?

2.

W punkcie 1 mogłem się pomylić jeżeli źle przetłumaczyłem sobie:

when button or info begin

Jak dla mnie to oznacza " Kiedy COŚ albo COŚ to", w tym punkcie chce Was zapytać czy słowo "or" oznacza "albo" ?

3.

Nie uwierzę też nigdy że to:

when button or info begin -- kiedy naciśniemy na zwój z questem

oznacza dokładnie to samo co:

when letter begin -- Kiedy naciśniemy na zwój (ten po lewej stronie ekranu)

Może mi ktoś wytłumaczyć różnicę ?

4.

Bardzo proszę o inne tłumaczenie tego:

local v = find_npc_by_vnum(20011) -- W nawiasie wpisujemy ID Npc (20011 - Uriel)
                                               if v != 0 then                                  - Musi tak być
                                                               target.vid("__TARGET__", v, "Nazwa Npc") -  tak musi być

 

Rozumiem z tego tyle, local v to pewnie definicja nowej zmiennej której wartość równa się "find_npc_by_vnum(20011)" <-- tej oto funkcji która coś nam pewnie zwróci aby mogło się to zapisać w zmiennej.

W kolejnej linijce jest instrukcja warunkowa if, tzn jeżeli v jest różne od zera to, i teraz jest jakaś funkcja target.vid, myślę że jest to coś związane z tą strzałką nad NPC, jednak argumentów tej funkcji: ""__TARGET__", v, "Nazwa Npc" - nie rozumiem :( I nie rozumiem też czemu jest porównanie "V" do liczby innej od 0 ;(

 

Bardzo proszę o wyjaśnienie tego :)

 

 

 

Na zakończenie:

Chce dodać że tut ten jest napisany WSPANIALE, ale dla mnie osoby jako tako znającej język programowania, jest trochę niewystarczający :(

Lubię wszytko rozumieć, mieć sytuację czarno na białym, dlatego proszę Was o pomoc :)

Opublikowano

A bo tamten jest 4 noobs :D Jak znasz język programowania to Cie wtajemncize :)

 

funkcja send_letter jest uproszczeniem kilku funkcji tworzących BUTTON oraz INFO. Jedno to jest to po lewej stronie ekranu, drugie to jest to co w zakładce zadania.

Tłumaczysz do ( no dobra nie do dupy, ale begin to nie znaczy 'to' tylko rozpocznij ^^, nie wiem gdzie się angielskiego uczyłeś

 

when login or levelup begin

Kiedy zalogouje się albo wbije level rozpocznij ( wykonywanie poniższego skryptu)

 

Troche sie rozgadałem , teraz kolejne

 

when letter begin

 

To jest funkcja coś jak login, ale służąca do wyznaczenia targeta/ wysłanie listu ( button i info). Zauwaz że listy odnawiają sie przy każdym przejściu przez mapę i zalogowaniu.

 

No i targety

 

local v = find_npc_by_vnum(20011) -- W nawiasie wpisujemy ID Npc (20011 - Uriel)

if v != 0 then - Musi tak być

target.vid("__TARGET__", v, "Nazwa Npc") - tak musi być

 

zmienna v = znajdz npc o tym ID ( szuka an tej mapie )

To co jest po = jest równiez wykonywane, ale wynik zapisywany pod nazwą zmiennej.

Jeeśli an tej mapie znajdzie sie taki NPC , to v ma jakąś wartość różną od zera. Więc masz potem

if v != 0 then

 

Czyli jeśli v jest inne niż zero = jest taki npc na mapie.

target.vid("__TARGET__", v, "Nazwa Npc")

ustanawia CI target ( strzałke ) oraz dodatkowe informacje dla Ciebie

 

1. "__TARGET__" = nazwa targetu w queście, do zastosowania np

when __TARGET__.target.click begin

 

2. To nie dla Ciebie, to informacja o ktorego npc chodzi."

3. "Nazwa NPC", zauważ że przy wykonywaniu misji konnej masz punkty na mapie Nie nad npc. Wtedy gdy na niego najedziesz pojawi sie napis . Jaki ? Właśnie ten.

Mam nadzieje że wszystko jest zrozumiałe, ale jak coś trzeba wyjaśnić to pisz.

 

 

 

//EDIT :D

Jesteś pierwszą osobą której wytłumaczyłem po swojemu i załapała xD

Saying Java is good because it works on all operating systems is like saying anal sex is good because it works on all genders.

Opublikowano

Na razie WIELKIE dzięki :D

Zagłębie się dalej w pisanie i jak uzbieram kilka pytań to napiszę :P

Jeszcze raz dzięki :D

 

PS:

Pięknie wytłumaczyłeś :P, a co do mojego angielskiego to ... ;)

Opublikowano

Sory za DT ale mam jeszcze pewne pytanie o podobnej tematyce :)

Mianowicie, potrzebuje zrobić tak zwaną "operacje na zmiennych"

I mam pytanie czy da się tu tworzyć zmienną bool, czyli zawierającą tylko atrybuty false i true :)

 

A, i czy istnieje jakiś spis funkcji ?

Typu właśnie say(""), pc.get_level() itp

 

Za pomoc plusiki :)

Opublikowano

say("") :

między " " wpisujesz tekst, który ma być wyświetlany w okienku

pc.get_level()

po prostu sprawdza twój lvl, używane gdey questy mają być od danego lvla..

 

a co do spisu, takiego chyba nie ma ;o

kalik.png

Opublikowano

ColderQ

Spis funkcji

 

/locale/*/quest/quest_functions

 

Niestety nie ma ich użycia,ale większość jest łatwa.

Nie mam polecia co to jest to bool no ale masz np.

 

if pc.get_level() == 1 then

return true

else

return false

end

 

Musisz to podać jako funkcje , teraz nie jestem na swoim kompie jak to o to chodzi to rozpiszę sie juz u siebie.

Saying Java is good because it works on all operating systems is like saying anal sex is good because it works on all genders.

Opublikowano

możesz sobie spojrzeć na taką treść.

 

 

 

if change_empire.move_pc() == true then
			pc.setqf("next_use_time", get_time() + 86400 * 7)
		end
	end



	function move_pc()
		if pc.is_engaged() then
			say("Nie mozesz zmienic krolestwa")
			say("kiedy jestes zareczony!")
			say("")
			return false
		end

		if pc.is_married() then
			say("Nie mozesz zmienic krolestwa")
			say("kiedy jestes zonaty!")
			say("")
			return false
		end

		if pc.is_polymorphed() then
			say("Nie moge Ciebie przeniesc")
			say("jako potwora!")
			say("")
			return false
		end

		if pc.has_guild() then
			say("Nie moge Ciebie przeniesc")
			say("z gildia!")
			say("")
			return false
		end
		if pc.money < 500000 then
			say("Aby sie przeniesc")
			say("potrzebujesz 500.000 yang!")
			say("")
			return false
		end
		say("Wybierz imperium, do ktorego chcesz")
		say(" sie przeniesc")
		local s = select("Shinsoo", "Chunjo", "Jinno", "Anuluj")
		if 4==s then
			return false 
		end
		say("")
		say_reward("Chcesz zmienic swoje imperium?")
		say_reward("")
		say("")
		local a = select("Kontynuuj", "Anuluj")
		if 2== a then
			return false
		end

		local ret = pc.change_empire(s)
		local oldempire = pc.get_empire()
		if ret == 999 then
			say("Zmieniles Imperium!")
			say("Wyloguj sie, aby zatwierdzic zmiany!")
			say("")
			pc.change_gold(-500000)
			pc.remove_item(71054) ;

			char_log(0, "CHANGE_EMPIRE",string.format("%d -> %d", oldempire, s)) 

			return  true
		else
			if ret == 1 then
				say_reward("Nie możesz się przenieść!")
				say("Jesteś już w tym imperium!")
				say("")
			elseif ret == 2 then
				say_reward("Nie możesz się przenieść!")
				say("Pierw musisz odejść z Gildii!")
				say("")
			elseif ret == 3 then
				say_reward("Nie możesz się przenieść!")
				say("Nie minął jeszcze czas oczekiwania..")
				say("")
			end
		end
		return false
	end

end
end

307681428489538142351.png

Metin2 Balmora Staff

Opublikowano

Dzięki, przyda się :P

 

 

Mam jeszcze jedno pytanie odnośnie stringa, czyli ciągu znaków ;)

Mianowicie jak zrobić w Say(""), takie coś:

"[TwójNick]:"

Wiem o funkcji: getnamepc

Ale niestety nie wiem jak ją zastosować, a tym bardziej dodać do niej ":" :P

Proszę o pomoc :)

Opublikowano

kilka sposobów zastosowań.

ZDEFINIOWANIE:

 

local nick = pc.get_name
say("Witaj "..nick.." w świecie gry.")

 

lub na sztywnego

 

say("Witaj"..pc.get_name().." w świecie gry.")

 

te kropki muszą być pomiędzy say(""..nick.."") lub też jak zaczynasz od razu od zmiennej nie musi być np. say(nick.." Witaj w świecie gry.")

naskrotydopiekla11.gif
Opublikowano

Kurde znowu zrobię DT, przepraszam :/ Następnym razem będę dziękował przez edit, obiecuje i wybaczcie :)

A sprawa wygląda tak:

Jak najłatwiej pobrać klasę postaci, i np ninji dać przedmiot A a wojownikowi przedmiot B ?

Dzięki z góry :)

 

 

@Down: Spoko, ale nie rozumiem tego "blabla" xD

Dzięki :P

Opublikowano

Blabla

 

if pc.job ==0 then

cos dla woja

elseif pc.job ==1 then

cos dla ninjy

2 to sura a 3 to szaman

 

pisane z iphone sorki za bledy

Saying Java is good because it works on all operating systems is like saying anal sex is good because it works on all genders.

Opublikowano

Dobra, o ile jeszcze nie będę pytał o funkcję to mam coś z innej beczki :P

 

Jak zrobić zapisywanie jakiejś informacji o postaci, np ile już psów ubiłem, tyle tylko że ma to się zapisywać też po restarcie serwa i relogu :)

Opublikowano

Zobacz sobie ten Quescik. Nie che mi się całego tłumaczyć lecz to prosty język na pewno zrozumiesz.

 

----------------------------------------------------
-- Metin2 Animemt2.com
-- Kowal Quest LV. 2 By Bambus3k
-- Zabij Psy + AdHd
----------------------------------------------------
quest pies begin
               state start begin
                               when login or levelup with pc.get_level > 2 begin
                                       set_state(pies)
                               end
               end
			state pies begin
					when button or info begin
                                               say_title("Pies")
                                               say("Psy to są Łobuzy! I są niegrzeczne..")
                                               say("Zabij 50 dzikich psów")
                                               say("Otrzymasz miecz +9")
											say("")
											local count = pc.getqf("piesek")
											say_reward("Pozostało co zabicia "..50-count.." Psów")

                               end
					when 501.kill begin
					local count = pc.getqf("piesek") + 1

						if count < 51 then
						pc.setqf("piesek", count)

							if count == 50 then
								say_title("Zabiles 50 psów.")
								say("Udało Ci się wykonać misję!")
                                                                       say("Otrzymujesz nagrodę ")
		                                           	say("")
		                                               	say_reward("Otrzymałeś: Miecz+9")
		                                                   	local item = 19
			                                        pc.give_item2(item ,1)
			                                        set_state(__COMPLETE__)																		
							end
						end
					end 

                end
state __COMPLETE__ begin
end
end

 

307681428489538142351.png

Metin2 Balmora Staff

Opublikowano

Ok, dzięki, czyli, "pc.setqf", "pc.getqf", a jak już nie będę potrzebować przechowywać tych danych to mogę to jakoś usunąć ? Nie wiem coś w stylu : pc.delgf ?

Opublikowano

Robisz pc.setqf("piesek", 0) ^^

Ja tak zawsze robię przed i po queście

GG:5542533

Bez jakichkolwiek danych,proszę nie pisać w sprawie pomocy...

Opublikowano

definiowanie własnej funkcji to jest nazwa_questa.twoja_funkcja

 

 

przykładowo fukcja która będzie sprawdzała level gracza i odchodziła mu od gildii (tak na prawdę istnieje już gotowa)

 

 

quest gracz begin
state start begin
	when login begin
	say("Chcesz sprawdzić czy możesz już odejść od gildii?")

		local s = select(locale.yes, locale.no)

			if s == 2 then
				return
			end

			if s == 1 then
				gracz.odejscie_od_gildii()
			end

		if gracz.odejscie_od_gildii() == true then
			pc.setqf("next_time_guild", get_time() + 86400 * 7)
		end
	end


	function odejscie_od_gildii()
		if get_time() < pc.getqf("next_time_guild") then
			say("Możesz odchodzić tylko wtedy,")
			say("gdy Twój czas od ostatniej zmiany już minął.")
			say_reward("Odczekaj siedem dni !")
			return false
		end
		if pc.is_guild_master() then
			say("Nie możesz odejść od gildii,")
			say("kiedy ją założyłeś!")
			return false
		end
		if pc.money < 1000000 then
			say("Potrzebujesz 1.000.000 Yang,")
			say("by odejść od gildii!")
			return false
		end
		if pc.get_level < 10 then
			say("Musisz mieć większy lvl niż 10!")
			return false
		end

		say("Czy aby napewno chcesz odejść od gildii?")
			local zogda = select(locale.yes, locale.no)

			if 2== a then
				return false
			end
		say("Zostałeś wydalony z gildii!")
		pc.remove_from_guild
		pc.change_gold(-1000000)

			return  true

		else
				say("UNKNOWN BUTTON ["..b.."]")
		end

		return false
	end
end
end

 

Nie jestem pewny w 100% czy będzie działać... ale raczej powinna :P

307681428489538142351.png

Metin2 Balmora Staff

Opublikowano

A to tego się nie dodaje w questlib.lua?

GG:5542533

Bez jakichkolwiek danych,proszę nie pisać w sprawie pomocy...

Opublikowano

Mam pytanie zrobiłem sobie taką fajną funkcję:

function KoniecOdwiedzin()
	if pc.getqf("HanB") == 1 or pc.getqf("HanZ") == 1 or pc.getqf("HanR") == 1 or pc.getqf("Kowal") == 1 or pc.getqf("Dozorca")== 1 or pc.getqf("Stajenny")==1 then
		pc.delqf("HanB")
		pc.delqf("HanZ")
		pc.delqf("HanR")
		pc.delqf("Kowal")
		pc.delqf("Dozorca")
		pc.delqf("Stajenny")
		return true
	else
		return false
	end

end

Ale gdy ją użyje:

			if KoniecOdwiedzin() == true then
			set_state(wrocdosmiasta)
			end

To mi wywali errror że niby nie ma takiej funkcji :/

Co jest :(

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...