Demonbholder 420 Postado Abril 4, 2011 Share Postado Abril 4, 2011 (editado) Faaala galerinha de sempre! Tudo tranquilo? :smile_positivo: Esses dias eu queria fazer meu próprio pet system, mas ai eu comecei a fazer e me deu preguiça, então eu dei uma ajeitada e fiz tipo de uma compra de summon. Como funciona: Você deve criar os monstros e depois adiciona-los ao script para poderem ser comprados. Palavras: !summon - Sumona o seu summon por certo tempo gastando uma certa quantidade de soul, caso você tenha comprado ele já.. !buysummon - Compra o summon por um preço. !sellsummon - Vende o summon por metade do preço que você comprou ele. !offer - Checa as ofertas de summons a venda. Talkaction: function onSay(cid, words, param) local buyprice = { ['rat'] = {price = 1000, message = "Parabéns, você comprou o Rat, cuide bem dele.", seconds = 10, soul = 30}, ['skeleton'] = {price = 10000, message = "Parabéns, você comprou o Skeleton, cuide bem dele.", seconds = 30, soul = 40}, ['demon'] = {price = 100000, message = "Parabéns, você comprou o Demon, cuide bem dele.", seconds = 60, soul = 50}, } local offert = "" if words == "!summon" then if getPlayerStorageValue(cid, 22000) ~= -1 then if #getCreatureSummons(cid) == 0 then if getPlayerSoul(cid) >= buyprice[getPlayerStorageValue(cid, 22000)].soul then doSummonPet(cid, getPlayerStorageValue(cid, 22000), buyprice[getPlayerStorageValue(cid, 22000)].seconds) doPlayerSendTextMessage(cid, 4, "Você usou seu summon, dentro de ".. buyprice[getPlayerStorageValue(cid, 22000)].seconds .." ele irá ser removido.") doPlayerAddSoul(cid, - (buyprice[getPlayerStorageValue(cid, 22000)].soul)) else doPlayerSendCancel(cid, "Você não tem soul suficiente.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Você não pode mais sumonar.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Você ainda não possui um summon.") doSendMagicEffect(getCreaturePosition(cid), 2) end end if words == "!buysummon" then if param ~= "" then if getPlayerStorageValue(cid, 22000) == -1 then if getPlayerMoney(cid) >= buyprice[string.lower(param)].price then setPlayerStorageValue(cid, 22000, string.lower(param)) doPlayerSendTextMessage(cid, 4, buyprice[string.lower(param)].message) doPlayerRemoveMoney(cid, buyprice[string.lower(param)].price) else doPlayerSendCancel(cid, "Você não tem dinheiro suficiente para comprar este summon.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Você já possui um summon.") doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, "Escolha o summon a ser comprado.") doSendMagicEffect(getCreaturePosition(cid), 2) end end if words == "!sellsummon" then if getPlayerStorageValue(cid, 22000) ~= -1 then doPlayerAddMoney(cid, (buyprice[getPlayerStorageValue(cid, 22000)].price)*5/10) doPlayerSendTextMessage(cid, 4, "Summon vendido com sucesso.") setPlayerStorageValue(cid, 22000, -1) else doPlayerSendCancel(cid, "Você não possui um summon.") doSendMagicEffect(getCreaturePosition(cid), 2) end end if words == "!offer" then for name, _ in pairs(buyprice) do offert = offert == "" and "Summons: \n\n" .. name .. " " .. buyprice[name].price or offert .. "\n" .. name .. " " .. buyprice[name].price end doShowTextDialog(cid, 2160, offert) end return TRUE end Tag: <talkaction words="!summon;!buysummon;!sellsummon;!offer" script="NomeDoArquivo.lua" /> Como adicionar mais monstros: local buyprice = { ['rat'] = {price = 1000, message = "Parabéns, você comprou o Rat, cuide bem dele.", seconds = 10, soul = 30}, ['skeleton'] = {price = 10000, message = "Parabéns, você comprou o Skeleton, cuide bem dele.", seconds = 30, soul = 40}, ['demon'] = {price = 100000, message = "Parabéns, você comprou o Demon, cuide bem dele.", seconds = 60, soul = 50}, } Adicionando: ['rat'] = {price = 1000, message = "Parabéns, você comprou o Rat, cuide bem dele.", seconds = 10, soul = 30}, Price é o preço para comprar o summon, Message é a mensagem que irá aparecer quando o summon for comprado. Seconds é o tempo que o summon durará quando for sumonado. Se desejar que seja infinito, coloque seconds = FALSE Soul é quanto que gastará de soul para sumonar o monstro. Funções: function doSummonPet(cid, name, time) if getMonsterInfo(name) then local sum = doSummonMonster(cid, name) if type(time) == "number" then addEvent(doRemovePet, time*1000, cid, name) end end end function doRemovePet(cid, name) for y, x in ipairs(getCreatureSummons(cid)) do if isCreature(x) then if string.lower(getCreatureName(x)) == name then doRemoveCreature(x) break end end end end Adicione isso em data/lib/functions Bom, é isso, creio que melhorarei o sistema depois. Até. Editado Julho 1, 2011 por Demonbholder Link para o comentário Compartilhar em outros sites More sharing options...
Kuro o Shiniga 87 Postado Abril 4, 2011 Share Postado Abril 4, 2011 Muito Bom Gostei Irei Usar Rep+ ;~ Link para o comentário Compartilhar em outros sites More sharing options...
Subwat 405 Postado Abril 4, 2011 Share Postado Abril 4, 2011 Uma dúvida. Qualquer vocação irá estár apta a usar este sistema? ou é só para Mages? Link para o comentário Compartilhar em outros sites More sharing options...
Vodkart 1515 Postado Abril 4, 2011 Share Postado Abril 4, 2011 (editado) Só não entendi o uso de 2 tabelas para o script demonzinho caolho ): se você usar in pairs você faz sóv com uma deixa só essa: local buyprice = { ['rat'] = {price = 1000, value = 1, message = "Parabéns, você comprou o Rat, cuide bem dele.", seconds = 10, soul = 30}, ['skeleton'] = {price = 10000, value = 2, message = "Parabéns, você comprou o Skeleton, cuide bem dele.", seconds = 30, soul = 40}, ['demon'] = {price = 100000, value = 3, message = "Parabéns, você comprou o Demon, cuide bem dele.", seconds = 60, soul = 50}, } ai if words == "!offer" then local str = "" str = str .. "Summons para Venda:\n\n" for a, b in pairs(buyprice) do str = str..a.."("..b.price..")\n" end str = str .. "" return doShowTextDialog(cid, 2160, str) end OBS: usa elseif dá para salvar algumas linhas :T abraços Editado Abril 4, 2011 por Vodkart Link para o comentário Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Abril 4, 2011 Autor Share Postado Abril 4, 2011 (editado) @Subwat Qualquer vocação está apta para comprar a talkaction. @Vodkart Como eu disse, originalmente era um projeto de pet, por isso eu estava usando duas tabelas e esqueci de remove-las, jájá edito pra deixar uma tabela só, e quanto ao elseif não me traria grandes vantagens, só meu pouparia o uso de alguns end. EDIT: Pronto, em uma tabela só agora amiguinhos. kkkk Editado Abril 4, 2011 por Demonbholder Link para o comentário Compartilhar em outros sites More sharing options...
MatheusGlad 424 Postado Abril 4, 2011 Share Postado Abril 4, 2011 (editado) Humm... A ideia é boa mas o script podia ser melhor se voce usa-se in pairs Pra que botar function na lib? Soh sao 2 functions '-' Eu falei que ia refazer sou mal: function alreadyHaveSummon(cid, configs) for i,x in pairs(configs) do if getPlayerStorageValue(cid, x.storage) >= 1 then return i, x.storage end end return false end function onSay(cid, words, param) local configs = { ['Rat'] = {price = 1000, storage = 22001, message = "Parabéns, você comprou o Rat, cuide bem dele.", seconds = 10, soul = 30}, ['Skeleton'] = {price = 10000, storage = 22002, message = "Parabéns, você comprou o Skeleton, cuide bem dele.", seconds = 30, soul = 40}, ['Demon'] = {price = 100000, storage = 22003, message = "Parabéns, você comprou o Demon, cuide bem dele.", seconds = 60, soul = 50}, } local lol,lawl = alreadyHaveSummon(cid, configs) if words == "!summon" then if configs[lol] then if #getCreatureSummons(cid) >= 1 then return doPlayerSendCancel(cid, "You already have summoned a monster.") end local summon = doSummonCreature(lol, getThingPosition(cid)) doConvinceCreature(cid, summon) doPlayerSendTextMessage(cid, 4, "You have used your summon, it will disapear in " .. configs[lol].seconds .. " seconds.") addEvent(function() if isCreature(summon) then doRemoveCreature(summon) end end, configs[lol].seconds*1000) else return doPlayerSendCancel(cid, "You don't have a summon.") end elseif words == "!sellsummon" then if configs[lol] then setPlayerStorageValue(cid, lawl, 0) doPlayerAddMoney(cid, configs[lol].price/2) else return doPlayerSendCancel(cid, "You don't have a summon.") end end for i,x in pairs(configs) do if words == "!buysummon" then if i:lower() == param:lower() then if not lol then if doPlayerRemoveMoney(cid, x.price) then setPlayerStorageValue(cid, x.storage, 1) return doPlayerSendTextMessage(cid, 4, x.message) else return doPlayerSendCancel(cid, "You need " .. x.price .. " gold coins to buy this summon.") end else return doPlayerSendCancel(cid, "You already have a summon.") end end elseif words == "!offerts" then str = str and str .. i .. " /// " .. x.price .. "\n" or "Name /// Price\n\n" .. i .. " /// " .. x.price .. "\n" end end return words == "!offerts" and doPlayerPopupFYI(cid, str) or TRUE end Editado Abril 4, 2011 por MatheusMkalo Link para o comentário Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Abril 4, 2011 Autor Share Postado Abril 4, 2011 (editado) Eu preferi adicionar na lib pois essas funções são quase que extensões de uma função que eu tinha postado, simplesmente por isso mesmo. Qualquer coisa é só adicionar no próprio script que irá dar certo. EDIT: Alguns scripts eu faço para funcionalidade, já outros para testar minhas habilidades, neste caso foi para funcionalidade. Editado Abril 4, 2011 por Demonbholder Link para o comentário Compartilhar em outros sites More sharing options...
elitevini 1 Postado Junho 30, 2011 Share Postado Junho 30, 2011 Kra ta dando esse erro aqui não sei porque [Error - TalkAction Interface] [30/06/2011 19:46:42] data/talkactions/scripts/buysummon.lua:onSay [30/06/2011 19:46:42] Description: [30/06/2011 19:46:42] data/lib/050-function.lua:28: Creature not found! [30/06/2011 19:46:42] stack traceback: [30/06/2011 19:46:42] [C]: in function 'error' [30/06/2011 19:46:42] data/lib/050-function.lua:28: in function 'doSummonPet' [30/06/2011 19:46:42] data/talkactions/scripts/buysummon.lua:14: in function <data/talkactions/scripts/buysummon.lua:1> se vc acha alguma coisa me fala Link para o comentário Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Julho 1, 2011 Autor Share Postado Julho 1, 2011 Tens razão, tinha um erro. Teste agora. Aguardo reposta, até. Link para o comentário Compartilhar em outros sites More sharing options...
samuelindo 0 Postado Julho 1, 2011 Share Postado Julho 1, 2011 pessimo script dando erro toda hora no conosole ao abri Reprovado Link para o comentário Compartilhar em outros sites More sharing options...
xxnetoxdz10 0 Postado Julho 28, 2011 Share Postado Julho 28, 2011 Parabéns Kra perfeito script, em otima forma !! vouu colocar pra player sumona Bazir opkadspkdopkdsaokp muito bomm vlw msm !!! to montando um baiak, com todas as melhores scripts... e essa ja faz parte tbm.. vlws Sangue Friio Link para o comentário Compartilhar em outros sites More sharing options...
Hyuugax 0 Postado Agosto 4, 2011 Share Postado Agosto 4, 2011 (editado) Parceiro esse script ta bugando em uma coisa quando vc usa o comando "!sellsummon" o summon continua com vc... so sai quando vc desconecta... tirando isso ta tudo ok... pelo menos ak em ksa kkk testei em global 8.6... e tem como sumonar 2? tipo ter 2 sumons nesse modo? vale rep+ Editado Agosto 5, 2011 por Hyuugax Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados