[R] Skillsystem - like "Scope Square"

02/25/2015 18:50 i[Remix]#1
Hallo

Ich release mal aus Langeweile mal das Skillsystem von Dyshaxos noname Server Scope Square.
Keine Ahnung, warum er es als Referenz für seinen Service nimmt.. War nur knapp 10 Minuten Arbeit.

Ist untested; falls es Bugs gibt, sagt bescheid.
Evtl fixe ich sie ja.

Habe eine Funktion aus der Seelenstein-Quest genommen, weil ich kein Bock hatte, sie selber zu schreiben.

Wie das ganze funktioniert


Code:
quest skillsystem begin
	state start begin
		when login begin
			send_letter("Skillsystem")
		end
		when login or levelup with pc.getf("skillsystem", "skill_"..pc.level) == 0 begin
			pc.setf("skillsystem", "skillpoints", pc.getf("skillsystem", "skillpoints") + pc.level*2)
			pc.setf("skillsystem", "skill_"..pc.level, 1)
		end
		when button or info begin
			say_title("Skillsystem")
			local list = training_grandmaster_skill.BuildGrandMasterSkillList(pc.get_job(), pc.get_skill_group()),{}
			table.foreach(list, function(i) table.insert(menu, list[2][i].." <".. list[1][i]..">") end)
			
			table.insert(menu, "Abbrechen")
			
			say("Wähle eine Fertigkeit:")
			local s = select_table(menu)
			
			if s == table.getn(menu) then return end
			local costs = skillsystem.getSkillCosts()[list[1][s]] or 0
			
			say_title("Skillsystem - ".. menu[s])
			say_reward("Kosten: ".. costs)
			say_reward("Verfügbare Punkte: ".. pc.getf("skillsystem", "skillpoints"))
			say()
			
			if select("Verbessern", "Abbrechen") == 2 then return end
			
			pc.set_skill_level(list[1][s], pc.get_skill_level(list[1][s]) + 1)
			pc.setf("skillsystem", "skillpoints", pc.getf("skillsystem", "skillpoints") - costs)
			
			send_letter("Skillsystem")
		end
		
		function getSkillCosts()
			return ({1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30
					31,32,33,34,35,36,37,38,39,40})
		end
		
		function BuildGrandMasterSkillList(job, group)
			GRAND_MASTER_SKILL_LEVEL = 30
			PERFECT_MASTER_SKILL_LEVEL = 40

			local skill_list = special.active_skill_list[job+1][group]
			local ret_vnum_list = {}
			local ret_name_list = {}

			-- test_chat(string.format("job=%d, group=%d", job, group))

			table.foreach(skill_list, 
			function(i, skill_vnum) 
			local skill_level = pc.get_skill_level(skill_vnum)

			-- test_chat(string.format("[%d]=%d", skill_vnum, skill_level))
			if skill_level >= 1 and skill_level < PERFECT_MASTER_SKILL_LEVEL then

				table.insert(ret_vnum_list, skill_vnum)
				local name=locale.GM_SKILL_NAME_DICT[skill_vnum]
				if name == nil then name=skill_vnum end
				table.insert(ret_name_list, name)
			end
			end)
			return {ret_vnum_list, ret_name_list}


			--return {ret_vnum_list, ret_name_list}
		end
	end
end
02/25/2015 19:08 [Kaito]#2
danke aber unnötig. lass ihn doch seinen server führen und dont copy things.
02/25/2015 19:22 Dyshaxo#3
Mhh meine Quest ist besser geschrieben =)

Code:
when login begin
			send_letter("Skillsystem")
		end
		when login or levelup with pc.getf("skillsystem", "skill_"..pc.level) == 0 begin
			pc.setf("skillsystem", "skillpoints", pc.getf("skillsystem", "skillpoints") + pc.level*2)
			pc.setf("skillsystem", "skill_"..pc.level, 1)
		end
Wüsste nicht, dass ich das drin hab', wenn schon könntest du auch den Client-Button dazu releasen, dann wirkt das ganze nicht so billig :) desweiteren fehlen bei dir die Schleifen, und die Formel für die Berechnung der Skillpunktekosten:

f(leck_mich) = 2*skill-level² + 10

dann brauchst du nämlich dashier nicht:

Code:
function getSkillCosts()
			return ({1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30
					31,32,33,34,35,36,37,38,39,40})
		end
Und die Textfarben hast du auch vergessen, 4 Punkte - Unterkurs.

Nochmal bitte, und diesmal richtig. =)
02/25/2015 19:22 rollback#4
Sieht eig. ganz nett aus. Warum machst du "pc.getf("skillsystem")" anstatt "pc.getqf()", wenn ich fragen darf?
02/25/2015 19:25 BizepsSupportAccount#5
Quote:
Originally Posted by Dyshaxo View Post
Mhh meine Quest ist besser geschrieben =)

Code:
when login begin
			send_letter("Skillsystem")
		end
		when login or levelup with pc.getf("skillsystem", "skill_"..pc.level) == 0 begin
			pc.setf("skillsystem", "skillpoints", pc.getf("skillsystem", "skillpoints") + pc.level*2)
			pc.setf("skillsystem", "skill_"..pc.level, 1)
		end
Wüsste nicht, dass ich das drin hab', wenn schon könntest du auch den Client-Button dazu releasen, dann wirkt das ganze nicht so billig :) desweiteren fehlen bei dir die Schleifen, und die Formel für die Berechnung der Skillpunktekosten:

f(x) = 2*skill-level² + 10

dann brauchst du nämlich dashier nicht:

Code:
function getSkillCosts()
			return ({1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30
					31,32,33,34,35,36,37,38,39,40})
		end
Und die Textfarben hast du auch vergessen, 4 Punkte - Unterkurs.

Nochmal bitte, und diesmal richtig. =)
Wie lange hast du für deine Quest gebraucht ?
02/25/2015 19:28 Dyshaxo#6
Quote:
Originally Posted by [Sensenmann] View Post
Sieht eig. ganz nett aus. Warum machst du "pc.getf("skillsystem")" anstatt "pc.getqf()", wenn ich fragen darf?
Weil er nichts draufhat =)

Im Großen und ganzen - hat die Quest wenig mit meiner zutun, von dem her :P
02/25/2015 19:31 Fearn#7
iRemix hat nichts drauf? Wäre mir neu.
Zum Release, ganz nett gemacht lieber Michi
02/25/2015 19:45 Dyshaxo#8
Quote:
Originally Posted by i[Remix] View Post
Und trotzdem hast du nichts besseres zu tun als nun hier andauernd rumzuheulen.
Provokation failed.
Denkt er kann mich provozieren.. Was'n Süßer.

Dein ranziger noname Server kann auch mal Promo von bekannten Leuten (in diesem Falle mir) gebrauchen.
Habe ich doch gerne gemacht.
Davon abgesehen, dass du die Quest so dermaßen gefailt hast -> erstmal den Zweck total verfehlt -> Skillpointreward für bestimmte Quests und Raids um dem "Ich uppe immer den selben Skill bis auf M und erst dann den nächsten"-Müll der anderen Server aus dem Weg zu gehen, dann - darf man bei deiner Version c.a. 3x soviele Klicks durchführen, weil du scheinbar den Sinn einer Schleife nicht verstehst, aber gut, soll nicht mein Problem sein - dann - ist die Textformatierung Schlichtweg Krebserregend, ach und dann:

Code:
-- test_chat(string.format("job=%d, group=%d", job, group))
Quote:
Ist untested; falls es Bugs gibt, sagt bescheid.
muss dir ja ziemlich wichtig gewesen sein (:

Quote:
Originally Posted by BizepsSupportAccount View Post
Bemerkenswert was einige Menschen in 10 Minuten schaffe wobei hingegen andere Monate für' brauchen.
Nur mal so - wenn du 'ne fertige Quest innerhalb einem Monat nicht eingefügt bekommst, Stichwort "Can not find map by index" - "Öööööh Syserr-fehler omg was mach ich jetzt" - ist das dein Problem, nicht meins =)
02/25/2015 20:00 ProfessorEnte#9

Tolle Quest, hat was, danke fuers teilen!
02/25/2015 20:02 .Ryuzaki™#10
Bin ja auch so ein Posthunter, deshalb muss ich meinen Senf dazu geben.

Das System von dir ist nicht halb so gut, wie das von Dyshaxo.
Trotzdem danke für dieses Release...

Michi's Hate auf 3, 2, 1...
02/25/2015 20:10 Alergix2#11
Danke das du dir mühe gegeben hast :/
Werde es jedoch nicht nutzen :)
02/25/2015 21:28 .Xilent#12
Quote:
Originally Posted by Dyshaxo View Post
Mhh meine Quest ist besser geschrieben =)
[...]

Wüsste nicht, dass ich das drin hab', wenn schon könntest du auch den Client-Button dazu releasen, dann wirkt das ganze nicht so billig :) desweiteren fehlen bei dir die Schleifen, und die Formel für die Berechnung der Skillpunktekosten:
Was soll den daran so besonders sein? Das Konzept der Client-Quest Kommunikation ist schon seit Längerem veröffentlicht und iRemix kann etwas Python, von daher dürfte es nicht das Problem sein.

Quote:
Originally Posted by Dyshaxo View Post
f(x) = 2*skill-level² + 10
Du hättest eine Konstante als Ergebnis, da F von X abhängig ist. :confused: Anscheinend solltest du dich nochmal mit den Grundlagen der Algebra beschäftigen.

Quote:
Originally Posted by Dyshaxo View Post
dann brauchst du nämlich dashier nicht:

Code:
function getSkillCosts()
			return ({1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30
					31,32,33,34,35,36,37,38,39,40})
		end
Dies dient zur individuellen Anpassung, wenn kein Algorithmus festgelegt ist.


Quote:
Originally Posted by Mr.ChingLing View Post
Haha geben bester mann <3
Haha, ja jetzt sitzt er bestimmt in der Ecke und heult wegen euch. :rolleyes:
02/25/2015 21:37 methosiea#13
Danke fürs Release, aber gab's das in der Art nicht schon?^^
02/25/2015 23:01 Vordeaux#14
habe ich eine denk Lücke oder ist
PHP Code:
cost 
nicht das selbe wie
PHP Code:
pc.get_skill_level(list[1][s]) 
???
02/26/2015 13:24 AntikerGolem#15
ich verstehe den sinn hinter diesem system nicht..

was ist den so schlimm an dem Originalem skillsystem