Pet system(k)

Indította Titan, 2013-10-17, 17:33:14

2013-10-17, 17:33:14 Utolsó szerkesztés: 2013-11-03, 12:20:18 Szerző: [TMOD]Aceagan
Sziasztok valaki tudna esetleg egy magyar leirást adni erről az EPVP-s Pet system ről hogy hogyan tudnám berakni? köszönöm előre is a segitséget itt a link:
http://www.elitepvpers.com/forum/metin2-pserver-guides-strategies/2308812-release-petgui-quest-levelbar.html

2013-10-18, 09:25:40 #1 Utolsó szerkesztés: 2013-10-31, 09:15:12 Szerző: Pisti95
Ken, kicsit csúnya dolog beleoffolni a témába....én sem tudok németül, de kitudom következtetni....erre nem mindenki képes, sajnos....
Ha meg lusta vagy leírn neki, akkor ne offold a témáját.


Nos, Szerveroldal:

Először is kell rendelkezzél egy alap pet rendszerrel...diffelt game fájlal (2089M game fájl esetén)

quest_funcions-ba ezt írd:

pet.summon
pet.unsummon
pet.is_summon


+ a questet berakod, de csak az egyiket aztán le ./qc-zod.



Kliens oldal:

game.py-t megnyitod (Notepad++-al ajánlom):

Megkeresed ezt a sort:

self.SetSize(wndMgr.GetScreenWidth(), wndMgr.GetScreenHeight())



Aláírod ezt:

##START_PETGUI BY DASKUCHEN
PetGuiBg = ui.AniImageBox()
PetGuiBg.AddFlag("not_pick")
PetGuiBg.AppendImage("d:/ymir work/ui/petgui.dds")
self.PetGuiBg = PetGuiBg

self.PetGuiBg.SetPosition(wndMgr.GetScreenWidth()-460,0)

self.PetName = ui.TextLine()
self.PetName.SetDefaultFontName()
self.PetName.SetPosition((wndMgr.GetScreenWidth()-460)+120, 35)
self.PetName.SetText("Haustierbesitzer:   NONE")
self.PetName.SetOutline()

self.PetLevel = ui.TextLine()
self.PetLevel.SetDefaultFontName()
self.PetLevel.SetPosition((wndMgr.GetScreenWidth()-460)+120, 55)
self.PetLevel.SetText("Haustierlevel:    NONE")
self.PetLevel.SetOutline()

self.PetBonus1 = ui.TextLine()
self.PetBonus1.SetDefaultFontName()
self.PetBonus1.SetPosition((wndMgr.GetScreenWidth()-460)+120, 75)
self.PetBonus1.SetText("1. Bonus:    NONE")
self.PetBonus1.SetOutline()

self.PetBonus2 = ui.TextLine()
self.PetBonus2.SetDefaultFontName()
self.PetBonus2.SetPosition((wndMgr.GetScreenWidth()-460)+120, 95)
self.PetBonus2.SetText("2. Bonus:    NONE")
self.PetBonus2.SetOutline()

self.PetBonus3 = ui.TextLine()
self.PetBonus3.SetDefaultFontName()
self.PetBonus3.SetPosition((wndMgr.GetScreenWidth()-460)+120, 115)
self.PetBonus3.SetText("3. Bonus:    NONE")
self.PetBonus3.SetOutline()

PetExpBar = ui.AniImageBox()
PetExpBar.AddFlag("not_pick")
PetExpBar.AppendImage("d:/ymir work/ui/pattern/charbar_main_yellow.tga")
PetExpBar.SetPercentage(0,1)
self.PetExpBar = PetExpBar

self.PetExpBar.SetPosition((wndMgr.GetScreenWidth()-460)+65, 143)

self.PetExpLabel = ui.TextLine()
self.PetExpLabel.SetDefaultFontName()
self.PetExpLabel.SetPosition((wndMgr.GetScreenWidth()-460)+150, 140)
self.PetExpLabel.SetText("0%")
self.PetExpLabel.SetOutline()

##CLOSE_PETGUI BY DASKUCHEN



Rákeresel erre:

def __ServerCommand_Build(self):
serverCommandList={



Aláírod ezt:


##PETGUI BY DASKUCHEN
"ShowPetGui" : self.__showpetgui,
"HidePetGui" : self.__hidepetgui,
"HaustierName" : self.__PetName,
"HaustierLevel" : self.__PetLevel,
"HaustierBonus1" : self.__PetBoni1,
"HaustierBonus2" : self.__PetBoni2,
"HaustierBonus3" : self.__PetBoni3,
"PetProcentExp" : self.__PetExp,
##



game.py vége felé berakod (de ha legvégére rakod hibás lehet, ha nem jól ütöd vissza a zárót):

def __hidepetgui(self):
self.PetGuiBg.Hide()
self.PetName.Hide()
self.PetLevel.Hide()
self.PetBonus1.Hide()
self.PetBonus2.Hide()
self.PetBonus3.Hide()
self.PetExpBar.Hide()
self.PetExpLabel.Hide()

def __showpetgui(self):
self.PetGuiBg.Show()
self.PetName.Show()
self.PetLevel.Show()
self.PetBonus1.Show()
self.PetBonus2.Show()
self.PetBonus3.Show()
self.PetExpBar.Show()
self.PetExpLabel.Show()

def __PetName(self, HaustierName):
self.PetName.SetText("Besitzer:    " + HaustierName)

def __PetLevel(self, HaustierLevel):
self.PetLevel.SetText("Haustierlevel:    " + HaustierLevel)

def __PetBoni1(self, HaustierBonus1):
self.PetBonus1.SetText("1. Bonus:    " + HaustierBonus1 + " Angriffswert")

def __PetBoni2(self, HaustierBonus2):
self.PetBonus2.SetText("2. Bonus:    " + HaustierBonus2 + " Verteidigung")

def __PetBoni3(self, HaustierBonus3):
self.PetBonus3.SetText("3. Bonus:    " + HaustierBonus3 + " Lebenspunkte")

def __PetExp(self, PetProcentExp):
self.PetExpLabel.SetText(PetProcentExp + "%")
self.PetExpBar.SetPercentage(PetProcentExp, 100)



uiaffectshower.py-t ne felejtsd felülírni.




Pisti.

Hogyan tudnám megoldani azt hogy fejlődjenek is a drágák?

Ebbe alapból fejlődnek ha azt a questet rakod be, ami ott van

és r34083 gf esetén? :o

Hát...ott gyárilag megvan a pet rendszer....

Ebbe a gyári questbe kell összeraknod a másik kettővel....

quest pet_system begin
    state start begin
        function get_pet_info(itemVnum)
            pet_info_map = {
            --  [ITEM VNUM] MOB_VNUM, DEFAULT NAME, buff_idx, spawn_effect_idx
                [53001]     = { 34001, "'s Fire Phoenix", 0},
                [53002]     = { 34002, "'s Baby Reindeer", 0},
                [53003]     = { 34003, "'s Ice Phoenix", 0},
                [53004]     = { 34001, "'s Fire Phoenix", 0},
                [53005]     = { 34004, "'s Baby Gahnasel", 1},
                [53010]     = { 34008, "'s Leonidas", 0},
                [53011]     = { 34007, "'s Khan", 0},
                [53012]     = { 34005, "´s Porky", 0},
                [53013]     = { 34006, "´s Rufus", 0},
                [53007]     = { 34010, "'s Bambi", 0},
            }

            itemVnum = tonumber(itemVnum)

            return pet_info_map[itemVnum]
        end
function get_spawn_effect_file(idx)
effect_table = {
[0] = nil,
[1] = "d:\\\\ymir work\\\\effect\\\\etc\\\\appear_die\\\\npc2_appear.mse",
}
return effect_table [idx]
end
        when 53007.use or 53013.use or 53012.use or 53011.use or 53010.use or 53005.use or 53004.use or 53003.use or 53002.use or 53001.use begin
            local pet_info = pet_system.get_pet_info(item.vnum)

            if null != pet_info then

                local mobVnum = pet_info[1]
                local petName = pet_info[2]
local spawn_effect_file_name = pet_system.get_spawn_effect_file(pet_info[3])

                if true == pet.is_summon(mobVnum) then
if spawn_effect_file_name != nil then
pet.spawn_effect (mobVnum, spawn_effect_file_name)
end
                    pet.unsummon(mobVnum)
                else
                    if pet.count_summoned() < 1 then
                        pet.summon(mobVnum, petName, false)
                    else
                        syschat("You already summoned a pet.")
                    end
if spawn_effect_file_name != nil then
pet.spawn_effect(mobVnum, spawn_effect_file_name)
end
                end -- if pet.is_summon
            end  -- if null != pet_info
        end -- when
    end -- state
end -- quest

Köszi szépen a válaszokat hétfőn ki is próbálom :)

2089M game fájlhoz milyen diff kell?

Invoice game fajlt hasznald, vagy pro arena diffet.

Pisti lenne egy kérdésem/kérésem.
Itt ezen a pet rendszeren a petet ha előhivod látszódik is? szaladgál melletted?
A másik pedig hogy nekem is 2089M game fájlhoz kellene egy diff a pet rendszerhez ilyet tudnál nekem a témába tenni? köszi szépen :)  :)

Videón is látszik, hogy működik, és igen szaladgál melletted.

quest_functions-be:

pet.summon
pet.unsummon
pet.is_summon


Diffet csatoltam!