Teljesitmény rendszer [TELJES]

Indította huzsihun1997, 2015-04-03, 16:18:32

2015-04-03, 16:18:32 Utolsó szerkesztés: 2015-04-03, 16:24:54 Szerző: huzsihun1997
Mi is ez?

Belehet benne állitani, hogy meik szörny megölése, menyi pontot adjon, aztán ezeket a pontokat lelehet vásárolni viszont minden szörnyért csak egyszer ad pontot.

PÉLDA:
Egy méregkard +0  50 pontba kerül.
Fő ork ad 10 pontot.
Megölöm a fő orkot, lesz 10 pontom ha mégegyszer leölöm, akkor nem lesz 20 pontom, mert egyszer már leöltem.

Ezt PVM szerverekhez ajánlom, ahol pl. bossok adnak ilyen pontot (ez olyan pont, hogy a quest számolja, nem ingame leltárban van)

Hogyan adhatok hozzá új tárgyat?

A Megfelelő részhez (Fegyverek stb) hozzáadod a tárgyadat ilyen módon:

{"Név", ID, ÁR},

Hogyan állithatom be hogy meik szörny menyi pontot adjon?
{691, 20, "691", "achievement ".. mob_name(691) .."_getötet#".. pc.getqf("691") + 1  .."%".. pc.getqf("achieve") + 20},

végén, " +20" a pont. példa alapján tudjok hozzáadni / elvenni.
Szintekért is ad pontot, aztis belehet állitani.
és kiirja, hogy "Elérted a 90 es szintet, ezért 50 pontot kapsz" stb


Quest:
quest teljesitmeny_rendszer begin
state start begin
-- // Bolt
when 20094.chat."Teljesítmény Rendszer" begin
local points = pc.getqf("achieve")
local category = {"Fegyverek","Vértek","Pvm - Felszerelés","Fejlesztők","Ládák","Ékszerek"}
local list = {
-- Kategória 1
{
--    Név           ID  Ár 
{"Méregkard+9", ID, ÁR},
{"oroszlánkard+9", ID, ÁR},
{"Orchideaharang+9", ID, ÁR},
{"Harag Kard+9", ID, ÁR},
{"Ördögszárny Chakram+9", ID, ÁR},
},
-- Kategória 2
{
{"Feketevas Vért+9", ID, ÁR},
{"Feketevas Öltöny+9", ID, ÁR},
{"Feketevas Lemezvért+9", ID, ÁR},
{"Feketevas Ruha+9", ID, ÁR},
},
-- Kategória 3
{
{"Smaragd", ID, ÁR},
{"Rubin", ID, ÁR},
{"Zafír", ID, ÁR},
},
-- Kategória 4
{
{"Kristály", ID, ÁR},
{"Vízkristály", ID, ÁR},
},
-- Kategória 5
{
{"Kaszás Láda", ID, ÁR},
{"Kilencfarkú Láda", ID, ÁR},
{"Sárkány Láda", ID, ÁR},
},
-- Kategória 6
{
{"Ébenfa Fülbevaló +0", ID, ÁR},
{"Ébenfa Fülbevaló +0", ID, ÁR},
}
}


local s = select3(category)
local menu = {}
for i = 1, table.getn(list[s]) do
table.insert(menu, list[s][i][1])
end
ay_title("Teljesitmény Bolt")
say("A Kiválasztot tárgyad:")
say()
local t = select3(menu)
local reward_item = list[s][t][2]
local reward_count = list[s][t][3]
say_title("Teljesitmény Bolt")
say_reward("Teljesitmény Pontok: "..points)
say()
say("A Tárgy: "..item_name(reward_item))
say_reward(string.format("A tárgy ára %d Teljesítménypont", reward_count))
say()
if points < reward_count then
return say("Nincs elég pontod!")
end
if select("Oké","Vissza") == 2 then return end
pc.setqf("achieve", points - reward_count)
pc.give_item2(reward_item)
end


-- // pontok
when login begin
mob_data = {
--  Vnum Points qf                cmdchat
{691, 20, "691", "achievement ".. mob_name(691) .."_getötet#".. pc.getqf("691") + 1  .."%".. pc.getqf("achieve") + 20},
{791, 20, "791", "achievement ".. mob_name(791) .."_getötet#".. pc.getqf("791") + 1  .."%".. pc.getqf("achieve") + 20},
{792, 20, "792", "achievement ".. mob_name(792) .."_getötet#".. pc.getqf("792") + 1  .."%".. pc.getqf("achieve") + 20},
{1192, 150, "1192", "achievement ".. mob_name(1192) .."_getötet#".. pc.getqf("1192") + 1  .."%".. pc.getqf("achieve") + 20},
}
item_data = {
{12019, 50, "12019", "achievement Blaustahlpanzer+9%".. pc.getqf("achieve") + 50},
{12029, 50, "12029", "achievement Drachenanzug+9%".. pc.getqf("achieve") + 50},
{12039, 50, "12039", "achievement Auraplattenpanzer+9%".. pc.getqf("achieve") + 50},
{12049, 50, "12049", "achievement Drachenkleidung+9%".. pc.getqf("achieve") + 50},
}
level_data = {
-- Level points qf      cmdchat
{50, 50, "level50", "achievement Level_50_erreicht%".. pc.getqf("achieve") + 50},
{60, 50, "level60", "achievement Level_60_erreicht%".. pc.getqf("achieve") + 50},
{70, 50, "level70", "achievement Level_70_erreicht%".. pc.getqf("achieve") + 50},
{80, 50, "level80", "achievement Level_80_erreicht%".. pc.getqf("achieve") + 50},
{90, 50, "level90", "achievement Level_90_erreicht%".. pc.getqf("achieve") + 50},
{99, 50, "level99", "achievement Level_99_erreicht%".. pc.getqf("achieve") + 50},
}
end
when kill with not npc.is_pc() begin
local vid = npc.get_vid()
local function in_table(arg)
for i = 1, table.getn(mob_data) do
if mob_data[i][1] == arg then
return i
end
end
return false
end
local d = in_table(vid)
if d ~= false then
pc.setqf(mob_data[d][3], pc.getqf(mob_data[d][3]) + tonumber(mob_data[d][2]))
cmdchat(mob_data[d][4])
end
end
when use begin
local vnum = item.get_vnum()
local function in_table(arg)
for i = 1, table.getn(mob_data) do
if mob_data[i][1] == arg then
return i
end
end
return false
end
local d = in_table(vnum)
if d ~= false and pc.getqf(tostring(item_data[d][3]) == 0 then
pc.setqf(item_data[d][3], 1)
pc.setqf(item_data[d][3], pc.getqf(item_data[d][3]) + tonumber(item_data[d][2]))
cmdchat(item_data[d][4])
end
end
when levelup begin
local lvl = pc.get_level()
local function in_table(arg)
for i = 1, table.getn(mob_data) do
if mob_data[i][1] == arg then
return i
end
end
return false
end
local d = in_table(lvl)
if d ~= false and pc.getqf(tostring(level_data[d][3]) == 0 then
pc.setqf(level_data[d][3], 1)
pc.setqf(level_data[d][3], pc.getqf(level_data[d][3]) + tonumber(level_data[d][2]))
cmdchat(level_data[d][4])
end
end
end
end



Kliens rész

Megynyitod a game.py-t és rákeresel erre:
def __ServerCommand_Build(self):
ird be alá ezt:
# Achievement System START
"achievement" : self.__AchievementTest,
"achievementpoints" : self.__ShowAchievementPoints, 
# Achievement System END


Ezt írd bele valahova a game.py-be (Én a végére írtam.):

# Achievement System START
def __ShowAchievementPoints(self, points):
import uiAchievement
import uiTaskbar
self.uiAchievement = uiAchievement.AchievementDialog()
uiAchievement.AchievementPoints = int(points)

def __AchievementTest(self, archivement):
import uiAchievement
self.uiAchievement = uiAchievement.AchievementDialog()
self.uiAchievement.Show(1, str(archivement))
self.uiAchievement.SetTop() 
# Achievement System END


Tedd az achievement_small.sub fájlt a "\ymir work\ui\public\" mappába az ETC-n belül.(csatoltam)
Tedd az achievement_small.dds fájlt a "\ymir work\ui\" mappába az ETC-n belül. (csatoltam)

Minden teljesitett szörny megölését, ugybebár egyszer számolja, miután megöltük, feljön a kliensünkben egy kis ablak, jobb oldalt, és irja hogy "Sikeresen megölted a fő orkot, ezért 20 pontot kapsz amit xy nál tudsz elkölteni" De azt irsz bele amit akarsz, ez az ablak kb 20 másodpercig látszik
Érdemes az árakat ugy kalkulálni, hogy teljesithető legyen, mert ha tul árazzuk, azis lehet hogy nemtudják megvenni.

Példa: egy méregkard 500 pont, de ha minden boss-t megölünk, akkor is csak 300 pontot szerezhetünk.

Erre érdemes odafigyelni, hogy az árakat jól állitsuk be.
itt egy bemutató videó

(ezt találtam youtube-n, nem magyar de a lényeg levehető róla hogy miről beszélek)
https://www.youtube.com/watch?v=P4_vAUtQwx4