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.
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?
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