DasSchwarzeT hat mal ein TuT veröffentlicht wie man einstellt, das Pets nach dem Relog wieder spawnen. Nachteil: das Pet hat dann nicht mehr den richtigen Namen. Habe nun seit 1 Stunde versucht den richtigen Namen beim RESPAWNEN auslesen zu lassen, so dass das Pet nach einem relog mit korrektem Namen dort steht (wie er in der mob_proto halt eingetragen ist). Leider ist mir das nicht gelungen. Habe alles mögliche versucht.. pet vnum über flag auslesen zu lassen und umzukonvertieren zu mobname usw usw, nichts hat geklappt. Das "beste" was ich hinbekommen hatte war: "xxxx's 0" also das als Name nach dem respawn eine 0 dranstand xd
Hier mal die Quest:
Code
- quest pet_system begin
- state start begin
- when login begin
- callPetsystemCacheSave()
- end
- when login with pc.getqf("pet_vnum") != 0 begin
- item.select(pc.getqf("pet_item_id"))
- pet.summon(pc.getqf("pet_vnum"), "'s Haustier", false) -- <- hier ist die stelle mit dem respawn nach dem teleport
- end
- when 53001.use or 53002.use or 53003.use or 53005.use or 53006.use or 53007.use or 53008.use or 53009.use or 53010.use or 53011.use or 53012.use or 53013.use or 53014.use or 53015.use or 53016.use or 53017.use or
- 53018.use or 53019.use or 53020.use or 53021.use or 53022.use or 53023.use or 53024.use or 53025.use or 53026.use or 55701.use or 55702.use or 55703.use or 55704.use or 55705.use or 55706.use or 55707.use or
- 55708.use or 55709.use or 55710.use or 53027.use or 55711.use or 55712.use or 34106.use or 34107.use or 34108.use or 34109.use or 34110.use or 53218.use or 53219.use or 53220.use or 53221.use begin
- local sealVnum = item.get_vnum()
- local pid = pc.get_player_id()
- local srcPet = getPlayerPetByPIDAndSealVnum(pid, sealVnum)
- pc.setqf("pet_item_id", item.get_id())
- if not srcPet then
- local name = nil
- local spawnFromFar = nil
- if PET_SETTINGS.ALLOW_NAMECHANGE then
- local availableCharacters = 24 - string.len(pc.get_name()) - string.len(" - ")
- say_title(item_name(sealVnum) .. ":")
- say("")
- say("Da du dieses Pet zum ersten Mal rufst,")
- say("musst du dir zunächst einen Namen für es aussuchen.")
- say("")
- say_reward("Bitte gib den Namen des Pets ein (max. " .. availableCharacters .. "Zeichen):")
- say("")
- name = input()
- if string.len(name) > availableCharacters then
- say_title(item_name(sealVnum) .. ":")
- say("")
- say("Der eingegebene Name ist zu lang.")
- say("")
- return
- end
- end
- if PET_SETTINGS.ALLOW_SPAWNTYPECHANGE then
- say_title(item_name(sealVnum) .. ":")
- say("")
- say("Da du dieses Pet zum ersten Mal rufst,")
- say("musst du auswählen, ob das Pet beim spawnen")
- say("zu dir laufen soll oder direkt neben")
- say("dir erscheinen soll.")
- say("")
- say_reward("Das Pet soll ...")
- spawnFromFar = select("... zu mir laufen", "... neben mir spawnen") == 1
- end
- srcPet = createNewPlayerPet(pid, sealVnum, name, spawnFromFar)
- if not srcPet then
- syschat("Something went wrong ...")
- return
- end
- end
- ---- mit diesen infos hier habe ich versucht den namen zu übernehmen
- local mobVnum = srcPet:getPetdata():getMobVnum()
- local affectList = srcPet:getPetdata():getAffectList()
- local spawnEffectPath = srcPet:getPetdata():getSpawneffectFilepath()
- local petName = srcPet:getName()
- local spawnFromFar = srcPet:isSpawnFromFar()
- if pet.is_summon(mobVnum) then
- pet.unsummon(mobVnum)
- pc.setqf("pet_vnum", 0)
- syschat("Dein Haustier wurde zurückgeschickt.")
- return
- end
- -- alles was hier zwischen ist ^
- if pet.count_summoned() >= PET_SETTINGS.MAX_SPAWN_COUNT then
- --syschat("Du hast bereits die maximale Anzahl von " .. PET_SETTINGS.MAX_SPAWN_COUNT .. " Haustier gerufen.") -->
- syschat("Du kannst nur 1 Haustier rufen.")
- return
- end
- pet.summon(mobVnum, "'s " .. petName, spawnFromFar)
- pc.setqf("pet_vnum", mobVnum)
- if type(spawnEffectPath) == datatypes.STRING then
- pet.spawn_effect(spawnEffectPath)
- end
- end
- end
- end