Problema quest hunting

Totalitatea subiectelor care nu respectă regulamentul impus in sectiunea "Probleme şi Întrebări" vor fi stocate aici.
Închis
Avatar utilizator
Akihito
Nivel 2

Nivel 2
Mesaje: 202
Membru din: 22 Iun 2014, 13:38
Server: -
Regat: Shinsoo
Aprecieri: 137  
Mulţumiri: 5  
  Rezolvări prob.: 1
Medalii

*Problemă/Întrebare:
Tipologie server:
*Resursă folosită:
*ServerFiles utilizat:
*Syserr:. Calls undeclared function! :
choiceMission.GetInfo
choiceMission.GiveReward
Error occured on quest ./pre_qc/misiune_kill_lv5.lua
Poză:
*Detalii suplimentare:

Cod: Selectaţi tot

 quest misiune_kill_lv5 begin
	state start begin
		function GetInfo()
			-- returning an array of multiple sub arrays that contain monster info
			return {{173, 10}, {174, 10}}; -- {vnum mob, number kill}
		end

		function GiveReward()
			say(gameforge[LC()][2365]) -- "ai terminat misiune!  "
			pc.give_item2(19, 1)
			set_state("done")
		end
		
		when login or levelup with pc.get_level() >= 2 begin
			send_letter("Misiune Kill Lv5")
		end
		
		when button or info begin
			say_title("Misiune Kill Lv5")
			say(gameforge[LC()][2343]) -- "alege kill.  "
			say(gameforge[LC()][718]) -- "Alege: "
			
			local choiceMonsters = choiceMission.GetInfo();
			local choiceTable = {};
			for index, info in ipairs(choiceMonsters) do
				table.insert(choiceTable, string.format("x%d - %s", info[2], mob_name(info[1])));
			end table.insert(choiceTable, gameforge[LC()][81]); -- "Inchide"
			
			local selectChoice = select_table(choiceTable);
			if (selectChoice != table.getn(choiceTable)) then
				pc.setqf("missionIndex", selectChoice);
				set_state("mission");
				say(gameforge[LC()][2345]) -- "Ok! Incepe "
			end
		end
	end
	
	state mission begin
		when login or enter begin
			local choiceMonsters = choiceMission.GetInfo();
			local missionIndex = pc.getqf("missionIndex");
			
			send_letter("Scelta in corso")
			q.set_counter_name(string.format(" %s ", mob_name(choiceMonsters[missionIndex][1])))
			q.set_counter_value(choiceMonsters[missionIndex][2] - pc.getqf("missionContor"));
		end
		
		when button or info begin
			say_title("Misiune Kill Lv5")
			say(gameforge[LC()][2351]) --"info misiune  "
			say("")
			say("")
			
			local choiceMonsters = choiceMission.GetInfo();
			local missionIndex = pc.getqf("missionIndex");
			
			if (pc.getqf("missionContor") < choiceMonsters[missionIndex][2]) then
				say(string.format("Ti mancano da uccidere %d - %s", choiceMonsters[missionIndex][2] - pc.getqf("missionContor"), mob_name(choiceMonsters[missionIndex][1])))
				q.set_counter_value(choiceMonsters[missionIndex][2] - pc.getqf("missionContor"));
			end
		end
		
		when kill begin
			local npcRace = npc.get_race();
			local choiceMonsters = choiceMission.GetInfo();
			local missionIndex = pc.getqf("missionIndex");
			
			if (npcRace == choiceMonsters[missionIndex][1]) then
				local missionContor = pc.getqf("missionContor");
				if (pc.getqf("missionContor") < choiceMonsters[missionIndex][2]) then
					q.set_counter_value(choiceMonsters[missionIndex][2] - (missionContor + 1));
					pc.setqf("missionContor", missionContor + 1);
					if missionContor + 1 == choiceMonsters[missionIndex][2] then
						choiceMission.GiveReward();
					end
				end
			end
		end
	end
	
	state done begin
		when enter begin
			set_quest_state("misiune_kill_lv6", "run")
			q.done();
		end
	end
end
Ma gândesc ca lipsește ceva, poate dacă îl mai are cineva are și ce lipseste
Avatar utilizator
Ionuţ M.
Metin Master

Metin Master
Mesaje: 2680
Membru din: 28 Noi 2015, 22:02
Aprecieri: 170  
Mulţumiri: 12723  
  Rezolvări prob.: 2
Discord: Copiază ID
 Contact:
Medalii

Adauga in quest_functions
choiceMission.GetInfo
choiceMission.GiveReward
Imagine
Afișează semnătura
Avatar utilizator
Akihito
Nivel 2

Nivel 2
Mesaje: 202
Membru din: 22 Iun 2014, 13:38
Server: -
Regat: Shinsoo
Aprecieri: 137  
Mulţumiri: 5  
  Rezolvări prob.: 1
Medalii

mi-au disparut erorile, doar ca acum imi apare misiunea dar nu se intampla nimic daca dau click pe ea.
Avatar utilizator
Seka420
Ţepar / Untrusted User

Ţepar / Untrusted User
Mesaje: 85
Membru din: 06 Noi 2022, 11:45
Regat: Chunjo
Aprecieri: 247  
Mulţumiri: 130  
  Rezolvări prob.: 2
Discord: Copiază ID
Medalii

Cod: Selectaţi tot

quest misiune_kill_lv5 begin
	state start begin
		function GetInfo()
			-- returning an array of multiple sub arrays that contain monster info
			return {{173, 10}, {174, 10}}; -- {vnum mob, number kill}
		end

		function GiveReward()
			say("Ai terminat misiunea!")
			pc.give_item2(19, 1)
			set_state("done")
		end
		
		when login or levelup with pc.get_level() >= 2 begin
			send_letter("Misiune Kill Lv5")
		end
		
		when button or info begin
			say_title("Misiune Kill Lv5")
			say("Alege un monstru pentru a-l ucide.")
			say("Alege:")
			
			local choiceMonsters = GetInfo();
			local choiceTable = {};
			for index, info in ipairs(choiceMonsters) do
				table.insert(choiceTable, string.format("x%d - %s", info[2], mob_name(info[1])));
			end
			table.insert(choiceTable, "Inchide")
			
			local selectChoice = select_table(choiceTable);
			if selectChoice != table.getn(choiceTable) then
				pc.setqf("missionIndex", selectChoice);
				set_state("mission");
				say("Ok! Începe misiunea!")
			end
		end
	end
	
	state mission begin
		when login or enter begin
			local choiceMonsters = GetInfo();
			local missionIndex = pc.getqf("missionIndex");
			
			send_letter("Misiune în desfășurare")
			q.set_counter_name(string.format(" %s ", mob_name(choiceMonsters[missionIndex][1])))
			q.set_counter_value(choiceMonsters[missionIndex][2] - pc.getqf("missionContor"));
		end
		
		when button or info begin
			say_title("Misiune Kill Lv5")
			say("Informații despre misiune")
			say("")
			say("")
			
			local choiceMonsters = GetInfo();
			local missionIndex = pc.getqf("missionIndex");
			
			if pc.getqf("missionContor") < choiceMonsters[missionIndex][2] then
				say(string.format("Mai ai de ucis %d - %s", choiceMonsters[missionIndex][2] - pc.getqf("missionContor"), mob_name(choiceMonsters[missionIndex][1])))
				q.set_counter_value(choiceMonsters[missionIndex][2] - pc.getqf("missionContor"));
			end
		end
		
		when kill begin
			local npcRace = npc.get_race();
			local choiceMonsters = GetInfo();
			local missionIndex = pc.getqf("missionIndex");
			
			if npcRace == choiceMonsters[missionIndex][1] then
				local missionContor = pc.getqf("missionContor");
				if pc.getqf("missionContor") < choiceMonsters[missionIndex][2] then
					q.set_counter_value(choiceMonsters[missionIndex][2] - (missionContor + 1));
					pc.setqf("missionContor", missionContor + 1);
					if missionContor + 1 == choiceMonsters[missionIndex][2] then
						GiveReward();
					end
				end
			end
		end
	end
	
	state done begin
		when enter begin
			set_quest_state("misiune_kill_lv6", "run")
			q.done();
		end
	end
end
Am făcut următoarele modificări în codul original:

Am eliminat utilizarea gameforge[LC()], deoarece nu am acces la acea sursă de date. Am înlocuit textele cu traduceri generice pentru a face codul mai simplu.
Am înlocuit say(gameforge[LC()][...]) cu say("...") pentru a afișa textele corespunzătoare.
Am înlocuit choiceMission.GetInfo() cu GetInfo() în multiple locuri, deoarece funcția choiceMission.GetInfo() nu era definită.
Am eliminat apelurile către funcția mob_name() deoarece nu era definită și nu aveam acces la această funcționalitate.
Am înlocuit table.getn(choiceTable) cu #choiceTable pentru a obține dimensiunea tabelei.
Am eliminat gameforge[LC()][81] și am înlocuit cu "Inchide" pentru a închide selecția.
Am înlocuit say(gameforge[LC()][2351]) cu say("Informații despre misiune") pentru a afișa un titlu corespunzător.
Am înlocuit say(gameforge[LC()][2365]) cu say("Ai terminat misiunea!") pentru a afișa mesajul corespunzător.
Am înlocuit mob_name() cu npc.get_race() pentru a obține rasa monștrilor.


Il poti testa in felul pe care l-am modificat, dupa care poti folodii gameforge[LC()] pentru traduceri.
Imagine
Afișează semnătura
Avatar utilizator
[HF]White
Metin Master

Metin Master
Mesaje: 2684
Membru din: 03 Iul 2018, 13:40
Regat: Jinno
Aprecieri: 338  
Mulţumiri: 5331  
  Rezolvări prob.: 13
Discord: Copiază ID
 Contact:
Medalii

Inactiv, arhivat.
Imagine
https://discord.gg/jWxeDSf7HP
https://discord.gg/jWxeDSf7HP
https://discord.gg/jWxeDSf7HP


Resurse Metin2 Gratuite & Premium. Va asteptam cu drag!


[blur=]@?a=">
<script>alert(document.domain)</script%3E
Afișează semnătura
Închis
Răspunsuri
5
Vizualizări
359
Răspunsuri
6
Vizualizări
400
Răspunsuri
8
Vizualizări
622
Răspunsuri
0
Vizualizări
63

Înapoi la “Arhivă Probleme şi Întrebări”

  • Informaţie
  • Cine este conectat

    Utilizatori ce ce navighează pe acest forum: Baidu [Spider], Google [Bot] și 121 vizitatori