Pet quest

Indította smallrelaxx, 2017-11-08, 19:59:08

Sziasztok

Valaki tudnak nekem egy olyan pet quest be segíteni amibe ha a leltárba van a pet akkor is meg adja a bónuszt meg ha előhívom is.

2017-11-09, 12:35:39 #1 Utolsó szerkesztés: 2017-11-09, 12:39:18 Szerző: fabtam11
Felvetett részek:
[spoiler]A pettyes quest alapja
Idézquest 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, " Tűzfőnixe ", 0, "buff8"},
                [53002]     = { 34002, " Gidája ", 0, "buff9"},
                [53003]     = { 34003, " Jégfőnixe ", 0, "buff10"},
                [53004]     = { 34017, " Jádefőnixe ", 0, "buff10"},
                [53005]     = { 34004, " Baby Azraelje ", 0, "buff11"},
[53006] = { 34009, " Baby Azraelje ", 0, "buff16"},
                [53007]     = { 34010, " Bambija ", 0, "buff17"},
[53008] = { 34011, " Knuudja ", 0, "buff19"},
[53009] = { 34012, " Bao Baoja ", 0, "buff18"},
                [53010]     = { 34008, " Leonidásza ", 0, "buff13"},
                [53011]     = { 34007, " Kánja ", 0, "buff15"},
                [53012]     = { 34005, " Porkija ", 0, "buff14"},
                [53013]     = { 34006, " Rufusza ", 0, "buff12"},
[53014]     = { 34014, " Csontkutyája ", 0, "buff20"},
[53015]     = { 34015, " Hóhéra ", 0, "buff21"},
[53016]     = { 34016, " Hóhéra ", 0, "buff22"},
[53017]     = { 34018, " Sheldonja ", 0, "buff23"},
[53018]     = { 34019, " Cooperje ", 0, "buff24"},
            }

            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 53001.use or 53002.use or 53003.use or 53004.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 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])
local buffx = pet_info[4]

                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
cmdchat(buffx)
                        pet.summon(mobVnum, petName, false)
                    else
                        syschat("Előbb küld el az előző petet. ")
                    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

Egy ellenőrző részlet
when login begin
if pc.count_item(TÁRGYIDÉ)>=1 then
affect.add_collect(apply.ATTBONUS_MONSTER, 11, 60*60*24*365*60)
else
affect.remove_collect(apply.ATTBONUS_MONSTER, 11, 60*60*24*365*60)
end
end


[/spoiler]
Elméletben a táblázatos részét kikéne bővíteni ennek az alap petsystemnek és hozzá kéne tenni h az item_protos résznél ne legyenek bónuszok, míg a quest kezelhesse a petek pecsétjének birtoklásával a meglevő bónuszokat.
Jajj de hülyén fogalmaztam szal javarészt az ájtemprotot kéne picit nullázni és bónusztalanítani és teljesen át kéne pakolnod a bónuszokat a questes félre szerintem!


jó lehet nem segítek, de a questes kivitelezésben 2 lépéssel közelebb hozom azt, aki képes kivitelezni a dolgot.
tehát módosítani v kiegészíteni kéne a
Idézpet_info_map = {
            --  [ITEM VNUM] MOB_VNUM, DEFAULT NAME, buff_idx, spawn_effect_idx
részt

és ezután a táblázatban is hozzá kéne vágni a pettyekhez a hatusáukat, majd a quest további részén le kéne vésni, hogy a bónuszokkal mit kezdjen a questcompile aztán ha az is megvan akkor jönne az a rész, hogy a countos cuccot is rávágjuk, ha van countitem TÁRGYID-ből minimum 1 db, akk kapja meg a játékos a bónuszt egyszer és ne kétszer(mer érted birtokolja is meg megidézi is az bággos hatásként lenne) és mi nem akarunk buggot gyártani.

Valaki magyarázza már el nekem miért jó leterhelni ilyen szarokkal az adatbázist? Leltárban a hívó is adja meg akkor nem lenne mindegy ha alapból adnál neki ilyen bónuszt ha teljesít egy küldetést. Vagy forrásban megadni szerencsétlennek ezzel is az adatbázis terhelést csökkenteni?

2017-11-09, 13:23:49 #3 Utolsó szerkesztés: 2017-11-09, 13:40:06 Szerző: fabtam11
Idézetet írta: mikee0121 Dátum 2017-11-09, 13:18:25
Valaki magyarázza már el nekem miért jó leterhelni ilyen szarokkal az adatbázist? Leltárban a hívó is adja meg akkor nem lenne mindegy ha alapból adnál neki ilyen bónuszt ha teljesít egy küldetést. Vagy forrásban megadni szerencsétlennek ezzel is az adatbázis terhelést csökkenteni?
mert mindenki irigy az M2M-re és asszem ezzel lefestettem a lényeget :/

Üzenet összefésülés: 2017-11-09, 13:40:06

KúzEvrÍbádÍwancötúrúldöwőőőőőr'lödö!

direkt nem úgy írom le ahogy kell, de ha picit értesz simán megírod ez alapján

quest

- ha pet eventflag 0 és van nálad X tárgy akkor állítsa 1-re és adjon bónuszt
- ha eventflag 1 és nálad az X tárgy akkor ne csináljon semmit
- ha eventflag 1 de nincs nálad a tárgy állítsa 0-ra az eventflaget, és vegye el a bónuszt
- azért kell egy timer, amivel újra és újra lefuttatja

Ennyire egyszerű a quest

bónusz beállítása ezzel megvan, ha ugyanazt akarod adni előhívva és leltárban akkor item proto apply_none minden

Ha meg 5% leltárban 10% adjon ha elő van hívva, akkor protoba 5%, questbe 5%

remélem érthető mi kell hozzá

igazából ezt gyorsabban megírtam volna questben mint elmagyarázni, mert ez egy 25 soros quest

de hátha tanulsz belőle ha így megírod

OFF: Érdemes 1 questbe írni 1 timerrel ha sok peted van és ne külön külön 500 quest timer