
brunei
Membro
-
Registro em
-
Última visita
Histórico de Curtidas
-
brunei deu reputação a WooX em Trade Offline V2.0Trade Offline V2.0
Esse sistema me foi pedido a alguns meses atrás e hoje tirei um tempinho pra trazer aqui.
O sistema consiste em permitir que jogadores negociem sem contato direto entre comprador e vendedor.
Mas como assim?
O vendedor pode criar um anuncio de venda informando item, valores ou até mesmo items que ele queira em troca, após feito o anuncio todas essas informações ficam armazenadas no banco de dados do servidor, permitindo assim serem exibidas em uma página no site para interessados, junto de todas informações fornecidas pelo vendedor é exibido um comando para que os interessados possam adquirir a oferta exibida na página.
Sobre o sistema
O sistema foi testado apenas em OTX2, mas provavelmente também funcione em TFS 0.4
Versão para TFS 1.x adaptada pelo @luanluciano93
Como mencionado acima, o sistema funciona de forma semelhante ao Market System das versões atuais porem sem exibição gráfica das ofertas in-game, para isso o sistema vai acompanhado de uma página para o Gesior AAC. Este sistema existe no fórum há um bom tempo e já é familiar pra muitos jogadores, essa versão trás consigo algumas melhorias e diferenças que irei listar abaixo.
Sistema
Agora é possivel vender um item exigindo outro item em troca ao invés de dinheiro. Containers com um conjunto de items dentro agora podem ser anunciados. Agora o sistema verifica as cargas e durações dos items antes de criar uma oferta. Novo parâmetro adicionado para verificar informações de ofertas in-game. Agora todo valor recebido vai diretamente para o banco do vendedor. Página
A depender da quantidade de ofertas existentes no servidor, a página agora irá separa-las por páginas. Agora além do valor é exibido também imagem da moeda a depender do valor da oferta. Agora é possivel ver as características tanto dos items ofertados como dos items exigidos pelo vendedor. Adicionado filtros para exibir somente ofertas de items vip, containers ou trocas. Adicionado barras de pesquisas para filtrar as ofertas por items ou nome do jogador.
Algumas imagens
Instalação
Antes de mais nada é necessário citar os requisitos necessários para o funcionamento correto do sistema, ele utiliza de algumas funções que não estão no script principal e portanto é necessário a instalação de uma lib extra, também é necessário instalar as funções doItemSetDuration e getItemDurationTime na source do servidor, ambos os links se encontram abaixo.
Todos os arquivos necessários para a instalação estão anexados no tópico, irei apenas dizer onde instalar e como deve ser configurado.
Primeiramente importe o arquivo schema.sql no banco de dados, ou se preferir pode executar as queries a seguir.
CREATE TABLE IF NOT EXISTS `trade_off_offers` ( `id` int(11) NOT NULL auto_increment, `player_id` int(11) NOT NULL, `type` int(1) NOT NULL DEFAULT '0', `item_id` int(11), `item_count` int(11) NOT NULL DEFAULT '1', `item_charges` int(11) NULL, `item_duration` int(11) NULL, `item_name` varchar(255), `item_trade` tinyint(1) NOT NULL DEFAULT '0', `cost` bigint(20) UNSIGNED NOT NULL, `cost_count` int(11) NOT NULL DEFAULT '1', `date` bigint(20), PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1; CREATE TABLE IF NOT EXISTS `trade_off_container_items` ( `offer_id` int(11) NOT NULL, `item_id` int(11), `item_charges` int(11) NULL, `item_duration` int(11) NULL, `count` int(11) DEFAULT '1' ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1; ALTER TABLE `trade_off_container_items` ADD KEY `offer_id` (`offer_id`); ALTER TABLE `trade_off_container_items` ADD CONSTRAINT `offer_id_fk` FOREIGN KEY (`offer_id`) REFERENCES `trade_off_offers`(`id`) ON DELETE CASCADE;
Configuração no arquivo tradeoff.lua:
-- Trade Offline 2.0 by WooX -- local config = { priceLimit = 2000000000, -- 2kkk offerLimit = 3, offerLimitStor = 86420, infoOnPopUp = true, infoMsgType = MESSAGE_STATUS_CONSOLE_BLUE, errorMsgType = MESSAGE_STATUS_CONSOLE_RED, successMsgType = MESSAGE_INFO_DESCR, helpMsg = "Enter the parameters (add, remove, active, buy, info).", goldItems = {2148, 2152, 2160}, itemsVIP = {4540, 4545, 4560}, } priceLimit: define o valor máximo de uma oferta. offerLimit: define o valor máximo de ofertas que um jogador pode adicionar. offerLimitStor: storage que irá armazenar quantas ofertas ativas o jogador possui. infoOnPopUp: pode ser definido como true ou false, se definido como falso irá enviar os detalhes da oferta no default ao invés de como é mostrado nas imagens acima. infoMsgType: define como será exibido uma mensagem de informação ao jogador (não recomendo mexer a menos que saiba o que está fazendo). errorMsgType: define como será exibido uma mensagem de erro ao jogador (não recomendo mexer a menos que saiba o que está fazendo). successMsgType: define como será exibido uma mensagem de ação sucedida ao jogador (não recomendo mexer a menos que saiba o que está fazendo). helpMsg: mensagem que será enviada para o jogador caso ele erre os parâmetros do comando. goldItems: nesta tabela deve ser preenchido todos os IDs de moedas no servidor como gold coins, platinum coins, etc. itemsVIP: nesta tabela deve ser preenchido os IDs dos items vips existentes no servidor.
Agora para a instalação da página, no arquivo mysql_db.php deve ser preenchido os dados para conexão no banco de dados do servidor.
/** * Host do banco de dados * @var string */ private static $DB_HOST = 'localhost'; /** * Usuario de conexao ao banco de dados * @var string */ private static $DB_USER = 'root'; /** * Senha de conexao ao banco de dados * @var string */ private static $DB_PASS = 'SUA_SENHA'; /** * Nome do banco de dados * @var string */ private static $DB_NAME = 'NOME_BANCO'; Após feito isso, o arquivo paginationClass.php em conjunto do arquivo mysql_db.php devem ser adicionados no seguinte diretório do Gesior AAC.
classes/
Finalizado isto, basta jogar o arquivo tradeoff.php dentro do diretório informado abaixo e o sistema estará pronto para uso.
pages/
Avisos
Eu escrevi somente o sistema, não sou o autor da página para o Gesior AAC portanto não estarei dando suporte em relação a página que não seja sobre a instalação da mesma no Gesior AAC 2012, e embora esteja funcional, eu não recomendo o uso da página devido a falta do uso de cache para leitura do items.xml. Foram mais de 600 linhas de código sem contar funções extras e alterações na source, além de muitas horas de testes para garantir que tudo estava funcionando corretamente, tudo que peço em troca é que não removam os créditos no arquivo quando forem usar.
Créditos
@MatheusDuarte pela página do Gesior AAC.
schema.sql tradeoff.lua tradeoff.php mysql_db.php paginationClass.php
-
brunei deu reputação a Imperius em [TFS 0.4 / 8.60] - GM, CM e GOD falam em vermelho no channel HelpTinha visto isso no servidor do MegaTibia / Kaldrox e achei bem interessante.
Todos os tópicos que encontrei sobre o assunto de alterar a cor das mensagens dos GMs, CMs e ADM no channel Help para vermelho, falavam que tinham que fazer uma configuração na própria source do servidor.
Fiz uma gambiarra que funciona, sem a necessidade de mexer na source do servidor e de utilizar comandos para isso. Testei somente em TFS 0.4 e funciona tranquilamente.
segue abaixo como configurar em seu otserver:
data > talkactions > scripts > crie um arquivo chamado gmsayred.lua e cole o código abaixo:
function onSay(cid, words, param, channel) if channel == CHANNEL_HELP then for _, pid in ipairs(getPlayersOnline()) do doPlayerSendChannelMessage(pid, '', "".. getCreatureName(cid) .. ": ".. words, TALKTYPE_CHANNEL_R1, CHANNEL_HELP) end return true end end
em talkactions.xml cole a tag abaixo:
<!-- Gamemasters --> <talkaction default="yes" filter="quotation" logged="no" access="3" event="script" value="gmsayred.lua"/>
e pronto! Agora é só enviar alguma mensagem no Help que a mensagem ficará em vermelho.
-
brunei recebeu reputação de Mikayovski em Shiny Ditto MemoryOlá galera bom dia , boa tarde e boa noite a todos !
venho trazer meu primeiro projeto para contribuir com o TK , se trata de um modulo bastante util
como é minha primeira vez trazendo algo aqui , talvez eu esqueça de algo , sem enrolação vamos la.
o modulo é um Shiny Ditto Memory para PDA ,o melhor é que nao precisa de source e é bem simples de instalar !
1° ponto - Adicionar o memory sistem por TalkAction do @zipter98 (fiz algumas correçoes e melhorias no script para funcionar de uma melhor forma com o modulo)
em Talkactions.xml adicione a tag : <talkaction words="/memory;!memory" event="script" value="sdittomemory.lua"/>
2° - Em talkaction/script ,crie um arquivo sdittomemory.lua e cole esse script :
em : local cd = 2 (em segundos) mude para o numero que desejar como cooldown para efetuar a troca .
Para efetuar a troca o pokemon precisa esta com os Moves 100% ,caso contrario ira mandar uma mensagem de bloqueio.
3° - em somefunctions.lua adicione essas funçoes !
tem umas correções q eu mesmo fiz no ditto system e shiny ditto system ,e é necessario pro modulo funcionar 100% .
4° - extraia e adicione o arquivo na pasta Modulos do seu OTClient !
pronto , com isso vai funcionar o modulo
1 - no icone salvar , vc consegue salvar o pokemon que o ditto esta transformado em cada slot (pokebola) e reverter o ditto.
2 - no icone check , vc consegue remover uma memoria ou checar quais memorias o seu ditto esta usando.
3 - e no icone transformar vc transforma em cada memoria salva no s.ditto e tbm consegue reverter para virar um pokemon novo sem usar a memori etc..
entao é isso galera , espero que seja util .
CREDITOS :
@zipter98
@usoparagames Eu
game_memory.rar
-
brunei deu reputação a Wakon em MENSAGEM QUANDO LOGARVá em "Data/creaturescripts/scripts", abra o arquivo login.lua e abaixo de function onLogin(cid), adicione:
doPlayerPopupFYI(cid, "Double EXP ativa!")
-
brunei recebeu reputação de FlamesAdmin em Shiny Ditto Memoryque bom que gostou mano, e obrigado pela dica com isso agora creio que esteja 100% , topico atualizado só trocar o sdittomemory.lua .
agora tem um cooldown de 2 segundos para trocar (configurável) e coloquei um bloqueio caso o pokemon nao esteja com o moveset 100% carregado.
-
brunei deu reputação a FlamesAdmin em Shiny Ditto MemoryCara, ficou simplesmente perfeito, um detalhezinho que faltou é um exaust pra não spammar as trocas
-
brunei recebeu reputação de FlamesAdmin em Shiny Ditto MemoryOlá galera bom dia , boa tarde e boa noite a todos !
venho trazer meu primeiro projeto para contribuir com o TK , se trata de um modulo bastante util
como é minha primeira vez trazendo algo aqui , talvez eu esqueça de algo , sem enrolação vamos la.
o modulo é um Shiny Ditto Memory para PDA ,o melhor é que nao precisa de source e é bem simples de instalar !
1° ponto - Adicionar o memory sistem por TalkAction do @zipter98 (fiz algumas correçoes e melhorias no script para funcionar de uma melhor forma com o modulo)
em Talkactions.xml adicione a tag : <talkaction words="/memory;!memory" event="script" value="sdittomemory.lua"/>
2° - Em talkaction/script ,crie um arquivo sdittomemory.lua e cole esse script :
em : local cd = 2 (em segundos) mude para o numero que desejar como cooldown para efetuar a troca .
Para efetuar a troca o pokemon precisa esta com os Moves 100% ,caso contrario ira mandar uma mensagem de bloqueio.
3° - em somefunctions.lua adicione essas funçoes !
tem umas correções q eu mesmo fiz no ditto system e shiny ditto system ,e é necessario pro modulo funcionar 100% .
4° - extraia e adicione o arquivo na pasta Modulos do seu OTClient !
pronto , com isso vai funcionar o modulo
1 - no icone salvar , vc consegue salvar o pokemon que o ditto esta transformado em cada slot (pokebola) e reverter o ditto.
2 - no icone check , vc consegue remover uma memoria ou checar quais memorias o seu ditto esta usando.
3 - e no icone transformar vc transforma em cada memoria salva no s.ditto e tbm consegue reverter para virar um pokemon novo sem usar a memori etc..
entao é isso galera , espero que seja util .
CREDITOS :
@zipter98
@usoparagames Eu
game_memory.rar
-
brunei recebeu reputação de Under em Shiny Ditto MemoryOlá galera bom dia , boa tarde e boa noite a todos !
venho trazer meu primeiro projeto para contribuir com o TK , se trata de um modulo bastante util
como é minha primeira vez trazendo algo aqui , talvez eu esqueça de algo , sem enrolação vamos la.
o modulo é um Shiny Ditto Memory para PDA ,o melhor é que nao precisa de source e é bem simples de instalar !
1° ponto - Adicionar o memory sistem por TalkAction do @zipter98 (fiz algumas correçoes e melhorias no script para funcionar de uma melhor forma com o modulo)
em Talkactions.xml adicione a tag : <talkaction words="/memory;!memory" event="script" value="sdittomemory.lua"/>
2° - Em talkaction/script ,crie um arquivo sdittomemory.lua e cole esse script :
em : local cd = 2 (em segundos) mude para o numero que desejar como cooldown para efetuar a troca .
Para efetuar a troca o pokemon precisa esta com os Moves 100% ,caso contrario ira mandar uma mensagem de bloqueio.
3° - em somefunctions.lua adicione essas funçoes !
tem umas correções q eu mesmo fiz no ditto system e shiny ditto system ,e é necessario pro modulo funcionar 100% .
4° - extraia e adicione o arquivo na pasta Modulos do seu OTClient !
pronto , com isso vai funcionar o modulo
1 - no icone salvar , vc consegue salvar o pokemon que o ditto esta transformado em cada slot (pokebola) e reverter o ditto.
2 - no icone check , vc consegue remover uma memoria ou checar quais memorias o seu ditto esta usando.
3 - e no icone transformar vc transforma em cada memoria salva no s.ditto e tbm consegue reverter para virar um pokemon novo sem usar a memori etc..
entao é isso galera , espero que seja util .
CREDITOS :
@zipter98
@usoparagames Eu
game_memory.rar
-
brunei deu reputação a GamerGoiano em goback ( uso de pokemons )Para fazer com que o item possa ser usado somente se estiver no inventário do player, você deve adicionar a condição
isInArray(item2, getPlayerAllItems(cid))
logo abaixo da condição
if item.itemid == usando then
e acima do primeiro
if getPlayerStorageValue(cid, 990) == 2 then
-
brunei deu reputação a Fir3element em (Resolvido){Ajuda} Error TFS "not enough memory"Estranho, o mapa é pequeno para dar esse tipo de erro...
Tenta usar o LAA: http://www.tibiaking.com/forum/topic/12637-aprenda-a-usar-o-laatido/
-
brunei deu reputação a marcot em (Resolvido)pedido script held fusion@Danxi
Eu testei um pouco o sistema e a princípio parece que funcionou. Gostaria que você testasse adequadamente e, caso encontre algum bug, me mande aqui nessa mesma página que vou tentar corrigir.
Nome:
Fusão de Held Item Testado em:
The Forgotten Server 0.4 Como instalar:
1) Cole a tag em data/actions/actions.xml 2) Crie um arquivo chamado "heldFusion.lua" em data/actions/scripts e cole o "script" dentro dele 3) Vá no map editor de sua preferência, crie um contêiner e um ativador (nos testes usei uma alavanca), guarde a posição do contêiner, pois será necessário na configuração do script. 4) Ainda no map editor, coloque o actionID 10001 no ativador Pronto! Tag:
<action actionid = "10001" event = "script" value = "heldFusion.lua" /> Script:
-- Held Fusion 0.1 by Marcot -- Se encontrou algum erro no script, favor enviar PM explicando os erros -- http://www.tibiaking.com/forum/profile/120572-marcot/ -- Configuracoes necessarias para o script local config = { quest = { -- Precisa fazer quest? (Nao mexa caso negativo) necessaria = false, -- Eh necessario fazer uma quest para liberar o sistema? storageID = 10001, -- Qual o storageID dessa quest? (caso true, anteriormente) }, chestPos = {x = 92, y = 114, z = 7, stackpos = 1}, -- Posicao do Bau (certifique-se que nao tenha nada encima dele) -- Tenha atencao para que a soma das chances dos helds em cada tier seja igual a 100 helds = { -- Item IDs e chance de vir o held [1] = { -- Array Tier 1 {ID = 2159, chance = 10}, {ID = 2160, chance = 80}, {ID = 2158, chance = 10}, }, [2] = { -- Array Tier 2 {ID = 2000, chance = 20}, {ID = 2001, chance = 20}, {ID = 2002, chance = 20}, {ID = 2003, chance = 20}, {ID = 2004, chance = 20}, }, [3] = { -- Array Tier 3 }, [4] = { -- Array Tier 4 }, [5] = { -- Array Tier 5 }, [6] = { -- Array Tier 6 }, [7] = { -- Array Tier 7 }, }, } function onUse(cid, item, fromPosition, itemEx, toPosition) if config.quest.necessaria and getPlayerStorageValue (cid, config.quest.storageID) == 0 then -- Erro caso a pessoa use a maquina sem ter feito a quest -- Valido apenas quando a opcao esta ativada doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You don\'t have permission to use this machine.") return false end items = {nil, nil, nil} container = getThingFromPos(config.chestPos) for i = 0, 2 do items[i + 1] = getContainerItem (container.uid, i) if items [i + 1].itemid == 0 or items [i + 1].itemid == nil then -- Erro quando tem menos de 3 itens no bau doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You need 3 held items to fuse.") return false end end heldType = {nil, nil, nil} for j=1, 3 do for i=1, 7 do for k = 1, #config.helds[i] do if config.helds[i][k].ID == items[j].itemid then heldType[j] = i end end end if heldType [j] == nil then -- Erro a ser exibido caso o jogador coloque algum item que nao seja um held na maquina doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "This machine works only to held items.") return false end end if heldType[1] ~= heldType[2] or heldType[2] ~= heldType[3] then -- Erro a ser exibido caso o jogador coloque helds de tiers diferentes doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You need helds with the same tier.") return false elseif heldType[1] == 7 or heldType[2] == 7 or heldType[3] == 7 then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You cannot fuse tier 7 held items.") return false end -- Sortear qual held vira for i = 1, 3 do doRemoveItem(items[i].uid, 1) end tierSorteado = heldType[1] + 1 numeroSorte = math.random(1, 100) itemIDSorteado = sorteiaValor (tierSorteado, numeroSorte) doPlayerAddItem(cid, itemIDSorteado, 1) -- Mensagem exibida ao fundir com sucesso doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You received your new held item.") return true end -- Função retirada de https://pt.stackoverflow.com/questions/147884/sorteio-aleat%C3%B3rio-mas-com-diferentes-probabilidades function sorteiaValor (tierSorteado, numeroSorte) x = numeroSorte for i = 1, #config.helds[tierSorteado] do x = x - config.helds[tierSorteado][i].chance if x <= 0 then return config.helds[tierSorteado][i].ID end end end
Caso queira personalizar as mensagens eu deixei comentários encima de cada mensagem explicando quando são executadas, desculpe pelo meu inglês fisk, só consigo ler, quando vou escrever é um desastre.
P.S.: Note que o script só olha os 3 primeiros itens de dentro do contêiner, portanto, cabe ao utilizador do script limitar o slot desse contêiner para 3.
[EDIT] Link para compreender a configuração do stackpos:
-
brunei deu reputação a najatheus em Addon System - (PDA)System de addon, funciona da seguinte maneira:
- O item deve ser usado diretamente na pokebola, caso o player deseje colocar um novo addon no pokemon, evoluir ou transformar em shiny, devera ser utilizado o comando: !removeAddon
Instruções:
Insira na pasta datapack/actions/script/
Addon.lua
addonbox.lua
Insira na pasta datapack/lib/
Addon System.lua
Agora, em datapack/actions/actions.xml :
<action itemid="13103;13114;13107" event="script" value="Addon.lua"/> <!-- Aqui estarão os id dos addons que vão ser utilizados na pokebola --> <action itemid="2183" event="script" value="addonbox.lua"/> <!-- Id da addon box -->
Agora, em datapack/actions/scripts/goback.lua, abaixo de :
local pk = getCreatureSummons(cid)[1] if not isCreature(pk) then return true end Insira :
local pk = getCreatureSummons(cid)[1] if not isCreature(pk) then return true end local slot = getPlayerSlotItem(cid, CONST_SLOT_FEET) local addon = getItemAttribute(slot.uid, "pokeaddon") addonTransformOutfit(cid, addon, pokemon)
Agora, em datapack/actions/scripts/order.lua, abaixo de :
doSummonMonster(cid, pokemon) local pk = getCreatureSummons(cid)[1]
Insira :
local slot = getPlayerSlotItem(cid, CONST_SLOT_FEET) local addon = getItemAttribute(slot.uid, "pokeaddon") addonTransformOutfit(cid, addon, pokemon)
Agora, em datapack/actions/scripts/evolution.lua, abaixo de :
if not isMonster(item2.uid) or not isSummon(item2.uid) then return true end if #getCreatureSummons(cid) > 1 then return true --alterado v1.9 end Insira :
local poke_addon = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "pokeaddon") if(poke_addon)then return doPlayerSendCancel(cid, "Please remove addon before evolution, Command: !removeAddon") end
Agora, em datapack/actions/scripts/sh stone.lua, abaixo de :
if getPlayerSlotItem(cid, 8).uid == itemEx.uid then if #getCreatureSummons(cid) <= 0 then Insira :
local poke_addon = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "pokeaddon") if(poke_addon)then return doPlayerSendCancel(cid, "Please remove addon before evolution, Command: !removeAddon") end Agora, em datapack/creaturescripts/scripts/look.lua, abaixo de :
if getItemAttribute(thing.uid, "gender") == SEX_MALE then table.insert(str, "It is male.") elseif getItemAttribute(thing.uid, "gender") == SEX_FEMALE then table.insert(str, "It is female.") else table.insert(str, "It is genderless.") end Insira :
if(getItemAttribute(thing.uid, "pokeaddon"))then local table_addon = ADDON_CONFIG[getItemAttribute(thing.uid, "pokeaddon")] if not table_addon then return true end table.insert(str, "\n" .. "Addon : " .. table_addon.name_addon .. ".") end Agora, em datapack/lib/order.lua, abaixo de :
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", getCreatureHealth(getCreatureSummons(cid)[1]) / getCreatureMaxHealth(getCreatureSummons(cid)[1])) doRemoveCreature(getCreatureSummons(cid)[1]) setPlayerStorageValue(cid, 17000, 1) Insira :
local slot = getPlayerSlotItem(cid, CONST_SLOT_FEET) local addon = getItemAttribute(slot.uid, "pokeaddon") addonTransformOutfitAbility(cid, addon) Continuando em datapack/lib/order.lua, abaixo de :
elseif skill == "ride" then local pokemon = rides[getPokemonName(getCreatureSummons(cid)[1])] doChangeSpeed(cid, -getCreatureSpeed(cid)) local speed = 150 + PlayerSpeed + getSpeed(sid) * 5 * speedRate doChangeSpeed(cid, speed) setPlayerStorageValue(cid, 54844, speed) doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1) doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", getCreatureHealth(getCreatureSummons(cid)[1]) / getCreatureMaxHealth(getCreatureSummons(cid)[1])) doRemoveCreature(getCreatureSummons(cid)[1]) setPlayerStorageValue(cid, 17001, 1) Insira :
addonTransformOutfitAbility(cid)
Agora, em datapack/movements/scripts/surf.lua, abaixo de:
doSetCreatureOutfit(cid, {lookType = surfs[getPokemonName(getCreatureSummons(cid)[1])].lookType + 351}, -1) doCreatureSay(cid, ""..getPokeName(getCreatureSummons(cid)[1])..", lets surf!", 1) doChangeSpeed(cid, -(getCreatureSpeed(cid))) Insira :
addonTransformOutfitAbility(cid) Continuando, em datapack/movements/script/surf.lua, abaixo de:
doSummonMonster(cid, pokemon) local pk = getCreatureSummons(cid)[1] Insira :
local slot = getPlayerSlotItem(cid, CONST_SLOT_FEET) local addon = getItemAttribute(slot.uid, "pokeaddon") addonTransformOutfit(cid, addon, pokemon) Agora, em datapack/talkactions/scripts/ crie um arquivo .lua, coloque dentro :
function onSay(cid, words, param, channel) if(#getCreatureSummons(cid) >=1)then return false end local slot = getPlayerSlotItem(cid, CONST_SLOT_FEET) if not slot then return false end local addon_ball = getItemAttribute(slot.uid, "pokeaddon") if(addon_ball)then removeAddon(cid,slot,addon_ball) return true end end Agora, em datapack/talkactions/talkactions.xml registre :
<talkaction words="!removeAddon" hide="yes" event="script" value="nome do arquivo.lua"/>
Configurações :
ADDON_CONFIG ={ [1] = { -- Type do attribute do addon addon1 = 2079, -- Id da outfit pokemon = "Blastoise", -- O pokemon name_addon = "Red ninja pack", -- Nome do addon habilidade = 2089, -- Id da outfit correspondente com sua habilidade }, } local addon_type = { [13114] = { -- Id do item pokemon_use = "Blastoise", -- O pokemon type = 1, -- Valor do attribute }, } Return_addon_table = { [1] = { -- Type do attribute retu = 13114, -- o id do item que o player vai ganhar }, } Creditos :
Sr. Naja
20210725_201402.mp4 -
brunei deu reputação a MatteusDeli em (Resolvido)Npc task diaria@usoparagames Veja se é isso que você quer.
1 - INSTALANDO O SCRIPT NA LIB DO SERVIDOR
2 - CRIANDO O NPC DAILY
3 - CONFIGURANDO O CREATURESCRIPTS
4 - CONFIGURANDO UM NOVO POKEMON
-
brunei deu reputação a MatteusDeli em (Resolvido)Npc task diaria@leozincorsair Sim
-
brunei deu reputação a xFatality em Bank System por comandosBastante pessoa quer o sistema de Bank,que a maioria sempre ta bugada,então vou postar uma aqui,que está sem BUG.
1.Primeiramente vá na pasta talkactions crie uma pasta chamada Bank.Dentro da pasta Bank faça arquivos (.lua) chamados...
Balance
Deposit
Deposit_All
Transfer
Transfer_All
Withdraw
Withdraw_All
<!-- Bank --> <talkaction log="yes" words="!balance" script="bank\balance.lua"> <talkaction log="yes" words="!deposit" script="bank\deposit.lua"> <talkaction log="yes" words="!withdraw" script="bank\withdraw.lua"> <talkaction log="yes" words="!transfer" script="bank\transfer.lua"> <talkaction log="yes" words="!depositall" script="bank\deposit_all.lua"> <talkaction log="yes" words="!withdrawall" script="bank\withdraw_all.lua"> <talkaction log="yes" words="!transferall" script="bank\transfer_all.lua"> O Tutorial foi esse,espero que tenham gostado. e por ultimo : Comandos,e para que servem.
!balance ,Para você ver quanto você tem na sua conta bancaria. !deposit ,Para você depositar certa quantia Ex:!deposit 100. !withdraw ,Para você Retirar certa quantia Ex:!withdraw 100. !transfer ,Para você transferir certa quantia para outro player. !depositall ,Para você depositar tudo o que tem na Backpack. !withdrawall ,Para você retirar tudo o que tem na sua conta. !transferall ,Para você transferir tudo o que tem para outro player. Obrigado,
Abraços.