Muito Bom Gostei Irei Usar Rep+ ;~
- Fórum
- OTServ
- Recursos
- Scripting
- Actions e Talkactions
- [Talkaction] Comprando Summon
[Talkaction] Comprando Summon
Por Demonbholder, 03 de abr. de 2011 em Actions e Talkactions
info
Grupo: Colaborador
Registrado: 27/12/10
Posts: 271
Reputação: +87
Gênero: Masculino

info
Grupo: Infante
Registrado: 27/07/09
Posts: 1.5k
Reputação: +405
Char no Tibia: Gean Riot

Uma dúvida.
Qualquer vocação irá estár apta a usar este sistema?
ou é só para Mages?
info
Grupo: Herói
Registrado: 20/05/10
Posts: 3.4k
Reputação: +1.5k
Gênero: Masculino

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 por Vodkart
info
Grupo: Infante
Registrado: 13/10/08
Posts: 1.6k
Reputação: +420
Char no Tibia: Demonbholder

@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 por Demonbholder
info
Grupo: Conde
Registrado: 09/09/09
Posts: 528
Reputação: +424
Char no Tibia: Emekalo Makalo

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 por MatheusMkalo
info
Grupo: Infante
Registrado: 13/10/08
Posts: 1.6k
Reputação: +420
Char no Tibia: Demonbholder

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 por Demonbholder
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
info
Grupo: Infante
Registrado: 13/10/08
Posts: 1.6k
Reputação: +420
Char no Tibia: Demonbholder

Tens razão, tinha um erro. Teste agora.
Aguardo reposta, até.
info
Grupo: Campones
Registrado: 30/06/11
Posts: 2
Reputação: 0

pessimo script dando erro toda hora no conosole ao abri
Reprovado
info
Grupo: Campones
Registrado: 16/07/11
Posts: 8
Reputação: 0
Char no Tibia: Soft Killer

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 4 por Hyuugax






info
Grupo: Infante
Registrado: 13/10/08
Posts: 1.6k
Reputação: +420
Char no Tibia: Demonbholder
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 endTag:
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:
Adicione isso em data/lib/functions
Bom, é isso, creio que melhorarei o sistema depois. Até.
Editado Junho 30 por Demonbholder