Dice Event

Avatar utilizator
klynaTz
Nivel 3

Nivel 3
Mesaje: 342
Membru din: 25 Ian 2014, 12:44
Regat: Chunjo
Aprecieri: 22  
Mulţumiri: 43  
Medalii

Nume: Dice event
Descriere: Eventul are loc in mapa ox, l-am pus asa pentru ca am protectie Ip in mapa respectiva. La fel ca si la ox, deschizi portile intra lumea, le inchizi si dupa spawnezi un npc pe care lumea o sa dea click si le genereaza 10 numere random. Daca unul din numere este 100 vor castiga un cufar, daca unul din numere e 69 primesc a doua sansa. Toti cei care pierd primes 1 MD(pe joc), ca participare.
Dice event quest este scris de mine, dice event manager este copiat dupa quest-ul de la OX.
Quest:
Dice Event Manager

Cod: Selectaţi tot

quest diceevent_manager begin
    state start begin
      when login with game.get_event_flag("oxevent_status") == 1 begin
         notice("Nu ai vazut? Eventul DICE a inceput!")
         notice("Vorbeste cu Uriel pentru a participa!")
         command("unmount")
      end
      when letter with pc.get_map_index()==113 begin
         send_letter("Paraseste event")
      end
      when button or info begin
         say_title("Evenimentul Dice")
         say("Dai startul la evenimentul DICE?")
         local s=select("Da", "Nu")
         if s==2 then
            send_letter("Paraseste event")
            return
         end
         local empire = pc.get_empire()
         if empire== 1 then
            pc.warp(433300, 219600)
         elseif  empire == 2 then  
            pc.warp(431500, 209200)
         elseif  empire == 3 then 
            pc.warp(439800, 211000)
         end
      end
        when 20011.chat."Evenimentul Dice" begin
            say_title("Uriel")
            say("Hei,salut!Acesta este evenimentul DICE")
            wait()
         if pc.get_level() < 15 then      
            say_title("Uriel :")
            say("")
            say("ÃŽmi pare rau, dar nu ai nivelul necesar pentru")
            say("a participa.")
            say("")
            say_reward("Nivelul minim pentru participare: 15")
            say("")
            return
            elseif game.get_event_flag("oxevent_status") == 0 then
                say_title("Uriel")
                say("GM-ii inca nu au dat startul,dar probabil")
                say("daca vorbesti cu mine acum este gata sa")
                say("inceapa!Fii pe faza.")
            elseif game.get_event_flag("oxevent_status") == 1 then
                say_title("Uriel")
                say("Evenimentul a inceput")
                say("Eu te pot duce acolo..sau nu?")
                local s = select("Particip", "Inapoi")
            if s == 1 then
               say_title("Uriel")
               say("Atunci eu te voi duce in harta unde se")
                    say("tine concursul.Fii pe faza.")
                    wait()
               command("unmount")
               pc.warp(896500, 24600)
                end
            elseif game.get_event_flag("oxevent_status") == 2 then
                say_title("Uriel")
                say("Concursul a inceput deja,numai poti.")
                say("participa.Data viitoare fii mai rapid.Si")
                say("daca mai injuri staff-ul primesti ban permanent")
                say("Nu iti risca contul pentru ca ai pierdut.")
                say("o amarata de runda!")
            end
        end
      when 20358.chat."GM: Dice-Panel" with pc.is_gm() begin  
         local stat = oxevent.get_status()
         if stat == 0 then
         say_title( "Panou competitie Dice" )
         say( "Parolã:[ENTER]" )
         local sname = input()
         if sname == "samance" then
            say_title("Concursul Dice")
            say_reward("Porneste Dice?")
            local s = select("Da", "Nu")
            if s==2 then return end
            local v = oxevent.open()
            if v == 0 then
               say_title("Concursul DICE")
               say("Eroare!Nu a putut fii incarcat oxquiz.lua.")
               say_reward("Verifica daca nu ai gresit vreo intrebare")
               say_reward("Mai exact,lipsa unui apostrof sau unei paranteze")
               return
            elseif v == 1 then
               say_title("Concursul DICE")
               say("Concursul dice a inceput!")
               server_timer("automatic1", 10*60, 113)
               notice_all("Dragi jucatori, eventul DICE a inceput!")
               notice_all("Vorbeste cu Uriel pentru a participa!")
            else
               say("A aparut o eroare : Error1")
               return
            end
         end
         elseif stat == 1 then
            say_title("Concursul DICE")
            say("Portile sunt inca deschise.")
            say("In mapa sunt "..oxevent.get_attender().." jucatori activi.")
            say("")
            local s = select("Inchide portile", "Inapoi")
            if s == 1 then
               notice_all("Portile au fost inchise!")
               notice_all("Data viitoare fiti mai rapizi!")
               oxevent.close()
            end
         elseif stat == 2 then
            say_title("Concursul DICE")
            say("Alege ce doresti sa faci:")
            local s = select("Sfarseste aceasta runda", "Inapoi")
            if s == 1 then
               oxevent.end_event()
               notice_all("Evenimentul DICE a luat sfarsit.")
               setskin(0)
            elseif s == 2 then
               return
            end
         else
            say_title("Concursul DICE")
            say("A aparut o eroare : Error4")
            return
         end
      end
    end
end

Dice Event Quest

Cod: Selectaţi tot

quest dicequest_manager  begin
	state start begin
		when 20092.chat."Eveniment Dice" begin
			say_title ( "Eveniment DICE:" )
			say_green ("Daca unul din cele 10 numere este 100 vei castiga un cufar")
			say_green ("Daca unul din cele 10 numere este 69 vei primii a doua sansa")
			say_alb ("")
			say_green ("Pierzatorii castiga 1 MD")
			say ("Continuam?")
			local scelta = select ( "Da","Nu" )
			if scelta == 1 then
				say ("Si acum vom continua cu extragerea!")

				random_number = {}
				for i = 1,10,1 
				do
					random_number[i] = number(1,100)
				end

				say("Numerele extrase: " .. random_number[1], ",", random_number[2], ",", random_number[3], "," , random_number[4], "," , random_number[5], "," , random_number[6], "," , random_number[7], "," , random_number[8], "," , random_number[9], "," , random_number[10])

				if has_value(random_number, 100) == true then
					say("")
					say_verde("Felicitari, ai câstigat!")
					pc.give_item2(38055, 1)
					notice_all ( pc.getname() , " a castigat cufarul DICE!" )
					wait()
					warp_to_village
				elseif has_value(random_number, 69) == true then
					say("Se pare ca ai castigat o noua sansa, ai dat 69")
					say ("Continuam?")
						local s = select ( "Da", "Nu" )
						if s == 1 then

							random_number1 = {}
							for i = 1,10,1 
							do
								random_number1[i] = number(1,100)
							end

							say("Numerele extrase: " .. random_number1[1], ",", random_number1[2], ",", random_number1[3], "," , random_number1[4], "," , random_number1[5], "," , random_number1[6], "," , random_number1[7], "," , random_number1[8], "," , random_number1[9], "," , random_number1[10])

							if has_value(random_number1, 100) == true then
								say_verde("Se pare ca de data asta ai castigat, felicitari!")
								pc.give_item2(38055, 1)
								notice_all ( pc.getname() , " a castigat cufarul DICE!" )
								wait ()
								warp_to_village()
							else
								say ("Se pare ca nu ai avut noroc nici tura aceasta.")
								pc.give_item2(30510, 1)
								wait()
								warp_to_village()
							end

						end
						return
				else
					say("Se pare ca nu ai avut noroc.")
					pc.give_item2(30510, 1)
					wait()
					warp_to_village()
				end
			end
			return
		end
	end
end
Adauga in questlib.lua

Cod: Selectaţi tot

function has_value (array, val)
	for j = 1,10,1
	do
		if array[j] == val then
			return true
		end
	end
end
Adauga in quest_functions

Cod: Selectaţi tot

has_value
De aici schimbi parola

Cod: Selectaţi tot

if sname == "samance" then
De aici schimbi premiul pentru pierzatori sau il poti scoate

Cod: Selectaţi tot

pc.give_item2(30510, 1)
De aici schimbi premiul castigatorilor

Cod: Selectaţi tot

pc.give_item2(38055, 1)
 ! Mesaj de la: klynaTz
Nu poti face DICE si OX in acelasi timp.
Ultima oară modificat 03 Noi 2019, 14:22 de către klynaTz, modificat 1 dată în total.
Pentru acest mesaj, klynaTz a primit 4 (de) mulţumiri
Kazuhiri • [Klaus] • [Demonul] • HolyAngels
Avatar utilizator
Braxy
Quest Creator

Quest Creator
Mesaje: 293
Membru din: 04 Mai 2016, 17:13
Regat: Jinno
Aprecieri: 7  
Mulţumiri: 228  
Medalii

Felicitari pentru initiativa, chiar astept de mult timp oameni care incearca sa faca lucruri noi. Totusi chiar daca codul tau nu este rau (spre suprinderea mea) oarecum este on point, sunt cateva mici lucruri care putea fi modificate.

- Incearca sa folosesti functii care deja exista precum table.insert. (Ce ai facut tu se foloseste dar se foloseste in alt mod)
- Functiile nu trebuie separate de fisierul principal, nu spune nimeni ca trebuie adaugate in questlib.
- Lafel si cu warp_to_village(), eu sunt convins ca tu nu ai de unde sa stii aceste functii, de-asta iti recomand sa incerci sa citesti fiecare functie care exista in acel quest_functions, datorita faptului ca esti la inceput si lucrezi in metin vei avea nevoie de aceste functii deoarece metin2 nu permite orice fel de modificari si pana sa inveti ce inseamna dofile si sa poti scrie toate fisierele in lua sunt convins ca va mai trece ceva timp :)


Trage un ochi aici si incearca sa iti imbunatatesti cunostintele.
Pentru acest mesaj, Braxy for the post:
klynaTz
Avatar utilizator
klynaTz
Nivel 3

Nivel 3
Mesaje: 342
Membru din: 25 Ian 2014, 12:44
Regat: Chunjo
Aprecieri: 22  
Mulţumiri: 43  
Medalii

Braxy scrie: ↑26 Oct 2019, 18:09 Felicitari pentru initiativa, chiar astept de mult timp oameni care incearca sa faca lucruri noi. Totusi chiar daca codul tau nu este rau (spre suprinderea mea) oarecum este on point, sunt cateva mici lucruri care putea fi modificate.

- Incearca sa folosesti functii care deja exista precum table.insert. (Ce ai facut tu se foloseste dar se foloseste in alt mod)
- Functiile nu trebuie separate de fisierul principal, nu spune nimeni ca trebuie adaugate in questlib.
- Lafel si cu warp_to_village(), eu sunt convins ca tu nu ai de unde sa stii aceste functii, de-asta iti recomand sa incerci sa citesti fiecare functie care exista in acel quest_functions, datorita faptului ca esti la inceput si lucrezi in metin vei avea nevoie de aceste functii deoarece metin2 nu permite orice fel de modificari si pana sa inveti ce inseamna dofile si sa poti scrie toate fisierele in lua sunt convins ca va mai trece ceva timp :)


Trage un ochi aici si incearca sa iti imbunatatesti cunostintele.
Nu urmaresc sa profesez in a scrie quest-uri pentru metin2, doar am vazut un eveniment pe un anumit server si l-am facut si pentru mine pentru ca era interesant dar mersi de sfaturi.
Am pus functiile in questlib pentru a fi clean code si pentru reuse, functiile si codul propriu zis trebuie sa fie in fisiere separate. Daca pun functia in acelasi fisier nu o mai pot refolosi in alt quest decat daca o rescriu si in acel fisier.
Si de ce nu s-ar folosi un for loop pentru a popula un array?
Avatar utilizator
Braxy
Quest Creator

Quest Creator
Mesaje: 293
Membru din: 04 Mai 2016, 17:13
Regat: Jinno
Aprecieri: 7  
Mulţumiri: 228  
Medalii

klynaTz scrie: ↑27 Oct 2019, 13:19
Braxy scrie: ↑26 Oct 2019, 18:09 Felicitari pentru initiativa, chiar astept de mult timp oameni care incearca sa faca lucruri noi. Totusi chiar daca codul tau nu este rau (spre suprinderea mea) oarecum este on point, sunt cateva mici lucruri care putea fi modificate.

- Incearca sa folosesti functii care deja exista precum table.insert. (Ce ai facut tu se foloseste dar se foloseste in alt mod)
- Functiile nu trebuie separate de fisierul principal, nu spune nimeni ca trebuie adaugate in questlib.
- Lafel si cu warp_to_village(), eu sunt convins ca tu nu ai de unde sa stii aceste functii, de-asta iti recomand sa incerci sa citesti fiecare functie care exista in acel quest_functions, datorita faptului ca esti la inceput si lucrezi in metin vei avea nevoie de aceste functii deoarece metin2 nu permite orice fel de modificari si pana sa inveti ce inseamna dofile si sa poti scrie toate fisierele in lua sunt convins ca va mai trece ceva timp :)


Trage un ochi aici si incearca sa iti imbunatatesti cunostintele.
Nu urmaresc sa profesez in a scrie quest-uri pentru metin2, doar am vazut un eveniment pe un anumit server si l-am facut si pentru mine pentru ca era interesant dar mersi de sfaturi.
Am pus functiile in questlib pentru a fi clean code si pentru reuse, functiile si codul propriu zis trebuie sa fie in fisiere separate. Daca pun functia in acelasi fisier nu o mai pot refolosi in alt quest decat daca o rescriu si in acel fisier.
Si de ce nu s-ar folosi un for loop pentru a popula un array?
Nu am spus ca profesezi in a scrie questuri, ti-am spus ca pana inveti cum sa folosesti lua direct in questuri poti invata functiile ce ti le ofera sursa. Daca pui in questlib niste functii nu este clean code, clean code este codul pe care il scri tu sa fie lizibil si sa fie bine structurat, proper code inseamna un cod scris corect din punct de vedere al functionari. Daca tu pui acea functie acolo nu este decat o utilitate, nu este nici clean code nici proper code, functia functioneaza atat in fisierul questului cat si in questlib lafel, precum este si citita lafel, daca o adaugi in questlib nu oferi decat posibilitatea de a folosi functia mai departe fara a avea nevoie de adaugarea numelui questului in folosinta.

Nu am inteles partea cu populatul unui array.
Avatar utilizator
klynaTz
Nivel 3

Nivel 3
Mesaje: 342
Membru din: 25 Ian 2014, 12:44
Regat: Chunjo
Aprecieri: 22  
Mulţumiri: 43  
Medalii

Braxy scrie: ↑27 Oct 2019, 17:40
klynaTz scrie: ↑27 Oct 2019, 13:19
Braxy scrie: ↑26 Oct 2019, 18:09 Felicitari pentru initiativa, chiar astept de mult timp oameni care incearca sa faca lucruri noi. Totusi chiar daca codul tau nu este rau (spre suprinderea mea) oarecum este on point, sunt cateva mici lucruri care putea fi modificate.

- Incearca sa folosesti functii care deja exista precum table.insert. (Ce ai facut tu se foloseste dar se foloseste in alt mod)
- Functiile nu trebuie separate de fisierul principal, nu spune nimeni ca trebuie adaugate in questlib.
- Lafel si cu warp_to_village(), eu sunt convins ca tu nu ai de unde sa stii aceste functii, de-asta iti recomand sa incerci sa citesti fiecare functie care exista in acel quest_functions, datorita faptului ca esti la inceput si lucrezi in metin vei avea nevoie de aceste functii deoarece metin2 nu permite orice fel de modificari si pana sa inveti ce inseamna dofile si sa poti scrie toate fisierele in lua sunt convins ca va mai trece ceva timp :)


Trage un ochi aici si incearca sa iti imbunatatesti cunostintele.
Nu urmaresc sa profesez in a scrie quest-uri pentru metin2, doar am vazut un eveniment pe un anumit server si l-am facut si pentru mine pentru ca era interesant dar mersi de sfaturi.
Am pus functiile in questlib pentru a fi clean code si pentru reuse, functiile si codul propriu zis trebuie sa fie in fisiere separate. Daca pun functia in acelasi fisier nu o mai pot refolosi in alt quest decat daca o rescriu si in acel fisier.
Si de ce nu s-ar folosi un for loop pentru a popula un array?
Nu am spus ca profesezi in a scrie questuri, ti-am spus ca pana inveti cum sa folosesti lua direct in questuri poti invata functiile ce ti le ofera sursa. Daca pui in questlib niste functii nu este clean code, clean code este codul pe care il scri tu sa fie lizibil si sa fie bine structurat, proper code inseamna un cod scris corect din punct de vedere al functionari. Daca tu pui acea functie acolo nu este decat o utilitate, nu este nici clean code nici proper code, functia functioneaza atat in fisierul questului cat si in questlib lafel, precum este si citita lafel, daca o adaugi in questlib nu oferi decat posibilitatea de a folosi functia mai departe fara a avea nevoie de adaugarea numelui questului in folosinta.

Nu am inteles partea cu populatul unui array.
Nu ma intelege gresit, nu ti-am reprosat nimic. Doar ca ti-am spus anumite chestii pe care le-am invatat in munca de zi cu zi. Intotdeauna functiile au fisierul lor si sunt puse pe categorii si structurate. Pentru ca asta face si codul mai usor de citit.

Si da nu stiu functiile existente pe care le are metinul, de aia mi-am creeat propria functie si m-am descurcat cum am stiu. De aia nici cei de au facut metinul la inceput nu au functii in quest-uri ci toate sunt adunate in questlib, tu daca vrei sa refolosesti o functie intotdeauna stii ca o gasesti intr un fisier asa daca le pui fiecare in fisierele lor le cauti 10 ani.
Nu am incercat sa fac ceva wow ci doar sa-mi creez un eveniment pe care l-am vazut si m-am descurcat cum am putut, nu m-am documentat de functiile deja existente.
Codul pe care l-ai rescris tu arata mai simplu si mai profi, dar si al meu daca inlocuoiesc acel pc.warp ar arata destul de ok, dar din nou doar am vrut sa fie functional si sa faca ce vreau eu.

Mersi de sfaturi oricum, stiu ca scrii quest-uri de ceva timp cred ca am apelat si eu la tine candva cu ceva.

[ Postat de pe Android ] Imagine
Răspunde
Răspunsuri
5
Vizualizări
738
Răspunsuri
2
Vizualizări
196
Răspunsuri
1
Vizualizări
158

Înapoi la “Quest-uri”

  • Informaţie
  • Cine este conectat

    Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 3 vizitatori