Postado Julho 7, 2021 3 anos Em 03/08/2020 em 21:30, WooX disse: Cave Exclusiva Cave exclusiva ou também conhecido como Super UP é um sistema que assim como o nome indica proporciona ao jogador acesso a uma cave exclusiva, onde somente ele tem acesso e pode caçar sem ser perturbado. Eu particularmente não gosto da ideia do sistema, mas querendo ou não é bem popular nos servidores Baiak. Escrevi esse sistema a mais ou menos uns 2 anos atrás quando um amigo que era dono de um servidor Baiak na época estava tendo problemas com o sistema que usava, sistema esse que acredito ser o que vem por padrão nas bases de Baiak por ai e o que provavelmente é o mais usado até hoje. Sobre o sistema O sistema foi testado apenas em OTX2, mas provavelmente também funcione em TFS 0.4 Com a intenção de fazer com que fosse de fácil configuração, eu escrevi o sistema mantendo as funções principais e configurações em uma Lib separada dos arquivos, irei citar algumas características do sistema. Reiniciar o servidor ou manter ativo o global save não interfere na funcionalidade do sistema, todas as caves são entregues novamente no momento de abertura do servidor. O sistema funciona através de global storage e devido a isto não é necessário modificação alguma no banco de dados. O jogador tem a liberdade de escolher a cave que quiser, desde que ela esteja livre. O jogador pode verificar o status de cada uma das caves registradas no sistema e ver informações como quem é o dono de determinada cave e o tempo restante para que a cave esteja livre novamente. Algumas imagens Ocultar conteúdo Instalação Este sistema utiliza de funções contidas na lib do link abaixo, então antes de mais nada é necessário adicionar esta lib no servidor. Ocultar conteúdo Todos os arquivos necessários para instalação do sistema estão anexados no tópico, irei apenas mostrar como deve ser configurado. Como auxilio para saber onde vai cada um, todos os scripts contém a tag XML a ser registrada. Como mencionado anteriormente toda configuração do sistema se encontra na lib do mesmo, segue abaixo explicação de como configurar. caveExclusiva = { config = { rentTime = 4 * 60 * 60, buyItemID = 11758, caveStats = true, buyMessage = "Você comprou a cave de %s por %s.", timeLeftMessageInCave = "Seu tempo na cave de %s acabou e você foi teleportado para o templo.", timeLeftMessage = "Seu tempo na cave de %s acabou.", signs = { useSigns = true, signID = 1815, signLook = "Esta cave pertence a %s, estará livre novamente as %s." } }, caves = { [9851] = { gStor = 7330, caveName = "Cave 1", enterPos = {x=0, y=0, z=7}, signPos = {x=0, y=0, z=7} }, [9852] = { gStor = 7331, caveName = "Cave 2", enterPos = {x=0, y=0, z=7}, signPos = {x=0, y=0, z=7} } }, storages = { cave = 35070, inCave = 35071, time = 35072 } } rentTime: tempo que o jogador vai permanecer como dono de uma cave, o valor deve ser definido em segundos. buyItemID: ID do item em que o jogador deve usar o item definido na action para comprar uma cave. caveStats: pode ser definido como true ou false, se definido como falso não irá permitir o uso da talkaction que exibe informações sobre as caves. buyMessage: esta é a mensagem que irá aparecer quando o jogador comprar uma cave. timeLeftMessageInCave: esta é a mensagem que irá aparecer quando acabar o tempo e o player estiver dentro da cave. timeLeftMessage: esta é a mensagem que irá aparecer quando acabar o tempo e o player estiver fora da cave. useSigns: pode ser definido como true ou false, se definido como verdadeiro irá exibir o dono e o tempo restante em um quadro ou qualquer item configurado na variável abaixo. signID: ID do item em que será exibido as informações da cave. signLook: mensagem a ser exibida ao dar look no item definido na variável acima. As caves devem ser adicionadas e configuradas da seguinte maneira: [9851] = { -- Action ID, um pra cada cave. gStor = 7330, -- Global storage, um valor pra cada cave. caveName = "Cave 1", -- Nome da cave. enterPos = {x=0, y=0, z=7}, -- Posição que o player vai ser teleportado ao entrar na cave. signPos = {x=0, y=0, z=7} -- Posição do item que foi configurado na variavel signID no mapa. }, No mapa é necessário adicionar tudo que foi definido na configuração do sistema, isso inclui action IDs e os items configurado em buyItemID e signID, veja abaixo alguns exemplos. Mostrar conteúdo oculto Em Verde é o item configurado em buyItemID Em Amarelo é o item configurado em signID Cada item com o ID definido em buyItemID deve conter também o action ID referente a cave que representa. E cada item com o ID definido em signID deve conter o texto: Esta cave esta livre! O mesmo action ID configurado no item de compra deve estar registrado no SQM de entrada para cave. Os teleportes de saída de cada cave deve conter a action ID registrada na tag XML do script cave_exit.lua Créditos @Baalszor por testar todo o sistema. cave_action.lua 1 kB · 43 downloads cave_creaturescript.lua 1 kB · 38 downloads cave_enter.lua 943 B · 37 downloads cave_exit.lua 347 B · 36 downloads cave_start.lua 174 B · 36 downloads cave_talkaction.lua 2 kB · 36 downloads lib_exclusivecave.lua 4 kB · 44 downloads Boa Amigo estou com um erro quando tento comprar a cave pode me ajudar por favor? [4:44:08.914] [Error - Action Interface] [4:44:08.917] data/actions/scripts/other/cave_action.lua:onUse [4:44:08.921] Description: [4:44:08.923] data/actions/scripts/other/cave_action.lua:8: attempt to index fie ld '?' (a nil value) [4:44:08.929] stack traceback: [4:44:08.931] data/actions/scripts/other/cave_action.lua:8: in function <data/ actions/scripts/other/cave_action.lua:1> Boa Galera Alguém poderia me ajudar com esse erro: Citar [4:44:08.914] [Error - Action Interface] [4:44:08.917] data/actions/scripts/other/cave_action.lua:onUse [4:44:08.921] Description: [4:44:08.923] data/actions/scripts/other/cave_action.lua:8: attempt to index fie ld '?' (a nil value) [4:44:08.929] stack traceback: [4:44:08.931] data/actions/scripts/other/cave_action.lua:8: in function <data/ actions/scripts/other/cave_action.lua:1> Script: Citar function onUse(cid, item, fromPosition, itemEx, toPosition) if itemEx.itemid == caveExclusiva.config.buyItemID then if getPlayerStorageValue(cid, caveExclusiva.storages.cave) > 0 then local caveName = caveExclusiva.caves[getPlayerStorageValue(cid, caveExclusiva.storages.cave)].caveName local timeLeft = getPlayerStorageValue(cid, caveExclusiva.storages.time) - os.time() doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você já é dono da cave de ".. caveName ..", aguarde ".. getTimeString(timeLeft) .." para comprar uma cave novamente.") doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) elseif getGlobalStorageValue(caveExclusiva.caves[itemEx.aid].gStor) > 1 then local ownerGUID = getGlobalStorageValue(caveExclusiva.caves[itemEx.aid].gStor) local ownerTimeLeft = nil if isPlayerOnline(getPlayerNameByGUID(ownerGUID)) then ownerTimeLeft = getPlayerStorageValue(getPlayerByGUID(ownerGUID), caveExclusiva.storages.time) - os.time() else ownerTimeLeft = getOfflinePlayerStorage(ownerGUID, caveExclusiva.storages.time) - os.time() end doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Esta cave já pertence ao player ".. getPlayerNameByGUID(ownerGUID) ..", restam ".. getTimeString(ownerTimeLeft) .." para a cave estar livre novamente.") doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) else caveExclusiva.setCaveTo(cid, itemEx.aid) doSendMagicEffect(getThingPos(cid), CONST_ME_FIREWORK_BLUE) doRemoveItem(item.uid) end end return true end Agradeço atenção quem puder ajudar. Boa Galera Alguém poderia me ajudar com esse erro: Citar [4:44:08.914] [Error - Action Interface] [4:44:08.917] data/actions/scripts/other/cave_action.lua:onUse [4:44:08.921] Description: [4:44:08.923] data/actions/scripts/other/cave_action.lua:8: attempt to index fie ld '?' (a nil value) [4:44:08.929] stack traceback: [4:44:08.931] data/actions/scripts/other/cave_action.lua:8: in function <data/ actions/scripts/other/cave_action.lua:1> Script: Citar function onUse(cid, item, fromPosition, itemEx, toPosition) if itemEx.itemid == caveExclusiva.config.buyItemID then if getPlayerStorageValue(cid, caveExclusiva.storages.cave) > 0 then local caveName = caveExclusiva.caves[getPlayerStorageValue(cid, caveExclusiva.storages.cave)].caveName local timeLeft = getPlayerStorageValue(cid, caveExclusiva.storages.time) - os.time() doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você já é dono da cave de ".. caveName ..", aguarde ".. getTimeString(timeLeft) .." para comprar uma cave novamente.") doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) elseif getGlobalStorageValue(caveExclusiva.caves[itemEx.aid].gStor) > 1 then local ownerGUID = getGlobalStorageValue(caveExclusiva.caves[itemEx.aid].gStor) local ownerTimeLeft = nil if isPlayerOnline(getPlayerNameByGUID(ownerGUID)) then ownerTimeLeft = getPlayerStorageValue(getPlayerByGUID(ownerGUID), caveExclusiva.storages.time) - os.time() else ownerTimeLeft = getOfflinePlayerStorage(ownerGUID, caveExclusiva.storages.time) - os.time() end doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Esta cave já pertence ao player ".. getPlayerNameByGUID(ownerGUID) ..", restam ".. getTimeString(ownerTimeLeft) .." para a cave estar livre novamente.") doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) else caveExclusiva.setCaveTo(cid, itemEx.aid) doSendMagicEffect(getThingPos(cid), CONST_ME_FIREWORK_BLUE) doRemoveItem(item.uid) end end return true end Agradeço atenção quem puder ajudar.
Postado Setembro 11, 2021 3 anos Em 03/08/2020 em 21:30, WooX disse: Cave Exclusiva Cave exclusiva ou também conhecido como Super UP é um sistema que assim como o nome indica proporciona ao jogador acesso a uma cave exclusiva, onde somente ele tem acesso e pode caçar sem ser perturbado. Eu particularmente não gosto da ideia do sistema, mas querendo ou não é bem popular nos servidores Baiak. Escrevi esse sistema a mais ou menos uns 2 anos atrás quando um amigo que era dono de um servidor Baiak na época estava tendo problemas com o sistema que usava, sistema esse que acredito ser o que vem por padrão nas bases de Baiak por ai e o que provavelmente é o mais usado até hoje. Sobre o sistema O sistema foi testado apenas em OTX2, mas provavelmente também funcione em TFS 0.4 Com a intenção de fazer com que fosse de fácil configuração, eu escrevi o sistema mantendo as funções principais e configurações em uma Lib separada dos arquivos, irei citar algumas características do sistema. Reiniciar o servidor ou manter ativo o global save não interfere na funcionalidade do sistema, todas as caves são entregues novamente no momento de abertura do servidor. O sistema funciona através de global storage e devido a isto não é necessário modificação alguma no banco de dados. O jogador tem a liberdade de escolher a cave que quiser, desde que ela esteja livre. O jogador pode verificar o status de cada uma das caves registradas no sistema e ver informações como quem é o dono de determinada cave e o tempo restante para que a cave esteja livre novamente. Algumas imagens Mostrar conteúdo oculto Instalação Este sistema utiliza de funções contidas na lib do link abaixo, então antes de mais nada é necessário adicionar esta lib no servidor. Mostrar conteúdo oculto Todos os arquivos necessários para instalação do sistema estão anexados no tópico, irei apenas mostrar como deve ser configurado. Como auxilio para saber onde vai cada um, todos os scripts contém a tag XML a ser registrada. Como mencionado anteriormente toda configuração do sistema se encontra na lib do mesmo, segue abaixo explicação de como configurar. caveExclusiva = { config = { rentTime = 4 * 60 * 60, buyItemID = 11758, caveStats = true, buyMessage = "Você comprou a cave de %s por %s.", timeLeftMessageInCave = "Seu tempo na cave de %s acabou e você foi teleportado para o templo.", timeLeftMessage = "Seu tempo na cave de %s acabou.", signs = { useSigns = true, signID = 1815, signLook = "Esta cave pertence a %s, estará livre novamente as %s." } }, caves = { [9851] = { gStor = 7330, caveName = "Cave 1", enterPos = {x=0, y=0, z=7}, signPos = {x=0, y=0, z=7} }, [9852] = { gStor = 7331, caveName = "Cave 2", enterPos = {x=0, y=0, z=7}, signPos = {x=0, y=0, z=7} } }, storages = { cave = 35070, inCave = 35071, time = 35072 } } rentTime: tempo que o jogador vai permanecer como dono de uma cave, o valor deve ser definido em segundos. buyItemID: ID do item em que o jogador deve usar o item definido na action para comprar uma cave. caveStats: pode ser definido como true ou false, se definido como falso não irá permitir o uso da talkaction que exibe informações sobre as caves. buyMessage: esta é a mensagem que irá aparecer quando o jogador comprar uma cave. timeLeftMessageInCave: esta é a mensagem que irá aparecer quando acabar o tempo e o player estiver dentro da cave. timeLeftMessage: esta é a mensagem que irá aparecer quando acabar o tempo e o player estiver fora da cave. useSigns: pode ser definido como true ou false, se definido como verdadeiro irá exibir o dono e o tempo restante em um quadro ou qualquer item configurado na variável abaixo. signID: ID do item em que será exibido as informações da cave. signLook: mensagem a ser exibida ao dar look no item definido na variável acima. As caves devem ser adicionadas e configuradas da seguinte maneira: [9851] = { -- Action ID, um pra cada cave. gStor = 7330, -- Global storage, um valor pra cada cave. caveName = "Cave 1", -- Nome da cave. enterPos = {x=0, y=0, z=7}, -- Posição que o player vai ser teleportado ao entrar na cave. signPos = {x=0, y=0, z=7} -- Posição do item que foi configurado na variavel signID no mapa. }, No mapa é necessário adicionar tudo que foi definido na configuração do sistema, isso inclui action IDs e os items configurado em buyItemID e signID, veja abaixo alguns exemplos. Ocultar conteúdo Em Verde é o item configurado em buyItemID Em Amarelo é o item configurado em signID Cada item com o ID definido em buyItemID deve conter também o action ID referente a cave que representa. E cada item com o ID definido em signID deve conter o texto: Esta cave esta livre! O mesmo action ID configurado no item de compra deve estar registrado no SQM de entrada para cave. Os teleportes de saída de cada cave deve conter a action ID registrada na tag XML do script cave_exit.lua Créditos @Baalszor por testar todo o sistema. cave_action.lua 1 kB · 46 downloads cave_creaturescript.lua 1 kB · 41 downloads cave_enter.lua 943 B · 40 downloads cave_exit.lua 347 B · 39 downloads cave_start.lua 174 B · 39 downloads cave_talkaction.lua 2 kB · 39 downloads lib_exclusivecave.lua 4 kB · 47 downloads Em 03/08/2020 em 21:30, WooX disse: Cave Exclusiva Cave exclusiva ou também conhecido como Super UP é um sistema que assim como o nome indica proporciona ao jogador acesso a uma cave exclusiva, onde somente ele tem acesso e pode caçar sem ser perturbado. Eu particularmente não gosto da ideia do sistema, mas querendo ou não é bem popular nos servidores Baiak. Escrevi esse sistema a mais ou menos uns 2 anos atrás quando um amigo que era dono de um servidor Baiak na época estava tendo problemas com o sistema que usava, sistema esse que acredito ser o que vem por padrão nas bases de Baiak por ai e o que provavelmente é o mais usado até hoje. Sobre o sistema O sistema foi testado apenas em OTX2, mas provavelmente também funcione em TFS 0.4 Com a intenção de fazer com que fosse de fácil configuração, eu escrevi o sistema mantendo as funções principais e configurações em uma Lib separada dos arquivos, irei citar algumas características do sistema. Reiniciar o servidor ou manter ativo o global save não interfere na funcionalidade do sistema, todas as caves são entregues novamente no momento de abertura do servidor. O sistema funciona através de global storage e devido a isto não é necessário modificação alguma no banco de dados. O jogador tem a liberdade de escolher a cave que quiser, desde que ela esteja livre. O jogador pode verificar o status de cada uma das caves registradas no sistema e ver informações como quem é o dono de determinada cave e o tempo restante para que a cave esteja livre novamente. Algumas imagens Mostrar conteúdo oculto Instalação Este sistema utiliza de funções contidas na lib do link abaixo, então antes de mais nada é necessário adicionar esta lib no servidor. Mostrar conteúdo oculto Todos os arquivos necessários para instalação do sistema estão anexados no tópico, irei apenas mostrar como deve ser configurado. Como auxilio para saber onde vai cada um, todos os scripts contém a tag XML a ser registrada. Como mencionado anteriormente toda configuração do sistema se encontra na lib do mesmo, segue abaixo explicação de como configurar. caveExclusiva = { config = { rentTime = 4 * 60 * 60, buyItemID = 11758, caveStats = true, buyMessage = "Você comprou a cave de %s por %s.", timeLeftMessageInCave = "Seu tempo na cave de %s acabou e você foi teleportado para o templo.", timeLeftMessage = "Seu tempo na cave de %s acabou.", signs = { useSigns = true, signID = 1815, signLook = "Esta cave pertence a %s, estará livre novamente as %s." } }, caves = { [9851] = { gStor = 7330, caveName = "Cave 1", enterPos = {x=0, y=0, z=7}, signPos = {x=0, y=0, z=7} }, [9852] = { gStor = 7331, caveName = "Cave 2", enterPos = {x=0, y=0, z=7}, signPos = {x=0, y=0, z=7} } }, storages = { cave = 35070, inCave = 35071, time = 35072 } } rentTime: tempo que o jogador vai permanecer como dono de uma cave, o valor deve ser definido em segundos. buyItemID: ID do item em que o jogador deve usar o item definido na action para comprar uma cave. caveStats: pode ser definido como true ou false, se definido como falso não irá permitir o uso da talkaction que exibe informações sobre as caves. buyMessage: esta é a mensagem que irá aparecer quando o jogador comprar uma cave. timeLeftMessageInCave: esta é a mensagem que irá aparecer quando acabar o tempo e o player estiver dentro da cave. timeLeftMessage: esta é a mensagem que irá aparecer quando acabar o tempo e o player estiver fora da cave. useSigns: pode ser definido como true ou false, se definido como verdadeiro irá exibir o dono e o tempo restante em um quadro ou qualquer item configurado na variável abaixo. signID: ID do item em que será exibido as informações da cave. signLook: mensagem a ser exibida ao dar look no item definido na variável acima. As caves devem ser adicionadas e configuradas da seguinte maneira: [9851] = { -- Action ID, um pra cada cave. gStor = 7330, -- Global storage, um valor pra cada cave. caveName = "Cave 1", -- Nome da cave. enterPos = {x=0, y=0, z=7}, -- Posição que o player vai ser teleportado ao entrar na cave. signPos = {x=0, y=0, z=7} -- Posição do item que foi configurado na variavel signID no mapa. }, No mapa é necessário adicionar tudo que foi definido na configuração do sistema, isso inclui action IDs e os items configurado em buyItemID e signID, veja abaixo alguns exemplos. Ocultar conteúdo Em Verde é o item configurado em buyItemID Em Amarelo é o item configurado em signID Cada item com o ID definido em buyItemID deve conter também o action ID referente a cave que representa. E cada item com o ID definido em signID deve conter o texto: Esta cave esta livre! O mesmo action ID configurado no item de compra deve estar registrado no SQM de entrada para cave. Os teleportes de saída de cada cave deve conter a action ID registrada na tag XML do script cave_exit.lua Créditos @Baalszor por testar todo o sistema. cave_action.lua 1 kB · 46 downloads cave_creaturescript.lua 1 kB · 41 downloads cave_enter.lua 943 B · 40 downloads cave_exit.lua 347 B · 39 downloads cave_start.lua 174 B · 39 downloads cave_talkaction.lua 2 kB · 39 downloads lib_exclusivecave.lua 4 kB · 47 downloads Da dando esse error ai, @WooX
Postado Outubro 8, 2021 3 anos Em 11/09/2021 em 13:59, leozincorsair disse: Da dando esse error ai, @WooX @leozincorsair na tag dentro do action apaga esse "cave_exclusiva" deixa somente o nome do script "cave_action" do jeito que está ai "cave_exclusiva/cave_action.lua" você está apontando 2 scriptpara ser aberto, sendo que na pasta script você só criou um que é o "cave_action.lua"... só arrumar isso que vai dar certo! Deve fazer o mesmo para as outras tas, caso estejam dando erro também! Editado Outubro 8, 2021 3 anos por Altairjr (veja o histórico de edições)
Postado Novembro 25, 2021 3 anos Autor Em 14/05/2021 em 10:23, Belmont disse: @WooX EDIT: Consegui por pro Player só pegar a Cave se tiver dinheiro na backpack, porém ele não está setando a storage para o player pegar a cave, poderia me fortalecer nesse suporte, pfv? Spoiler local price = 1000000000 function onUse(cid, item, fromPosition, itemEx, toPosition) if itemEx.itemid == caveExclusiva.config.buyItemID then if getPlayerStorageValue(cid, caveExclusiva.storages.cave) > 0 then local caveName = caveExclusiva.caves[getPlayerStorageValue(cid, caveExclusiva.storages.cave)].caveName local timeLeft = getPlayerStorageValue(cid, caveExclusiva.storages.time) - os.time() doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você já é dono da cave de ".. caveName ..", aguarde ".. getTimeString(timeLeft) .." para comprar uma cave novamente.") doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) elseif getGlobalStorageValue(caveExclusiva.caves[itemEx.aid].gStor) > 0 then local ownerGUID = getGlobalStorageValue(caveExclusiva.caves[itemEx.aid].gStor) local ownerTimeLeft = nil if isPlayerOnline(getPlayerNameByGUID(ownerGUID)) then ownerTimeLeft = getPlayerStorageValue(getPlayerByGUID(ownerGUID), caveExclusiva.storages.time) - os.time() else ownerTimeLeft = getOfflinePlayerStorage(ownerGUID, caveExclusiva.storages.time) - os.time() end doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Esta cave já pertence ao player ".. getPlayerNameByGUID(ownerGUID) ..", restam ".. getTimeString(ownerTimeLeft) .." para a cave estar livre novamente.") doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) else if doPlayerRemoveMoney(cid, price) then caveExclusiva.setCaveTo(cid, itemEx.aid) doRemoveItem(item.uid) doSendMagicEffect(getThingPos(cid), CONST_ME_FIREWORK_BLUE) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, "Você não possue dinheiro suficiente para comprar está Cave.") doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) end end end return true end Em 07/07/2021 em 04:48, Babiloniaoz disse: Boa Amigo estou com um erro quando tento comprar a cave pode me ajudar por favor? Agradeço atenção quem puder ajudar. Em 11/09/2021 em 13:59, leozincorsair disse: Da dando esse error ai, @WooX Aparentemente é algum erro de configuração na lib na parte de global storage, confere se preencheu corretamente.
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.