Ir para conteúdo

luiz.marsilio

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    luiz.marsilio recebeu reputação de Trunksontibia em [TFS 1.1+] Area Hardcore   
    Adicione uma storage ao player quando ele entra na área.
    Verifique no login se o player tem essa storage, se tiver, remove a redskull e a storage.
  2. Gostei
    luiz.marsilio recebeu reputação de Augusto em Bau diário   
    Olá
    Reescrevi o código para TFS 1.3 com itens aleatórios.
    Obs: só recebe 1 item (quantidade), mesmo os agrupáveis.
    local config = { level = 99, items = { 11258, -- phoenix charm 11259, -- unity charm 11260, -- spiritual charm 11261, -- twin charm 11262, -- solitude charm 2160, -- crystal coin 2195 -- boots of haste }, tempo = 24*3600, -- horas storage = 31402 } function onUse(player, item, fromPosition, itemEx, toPosition) local player = Player(player) if not player then return end if player:getLevel() < config.level then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You must be level 100 or higher.") return end if player:getStorageValue(config.storage) - os.time() > 0 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You must wait 24 hours before getting new daily reward.") return end player:setStorageValue(config.storage, os.time() + config.tempo) player:addItem(config.items[math.random(1, #config.items)]) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have received a random item.") return true end  
  3. Gostei
    luiz.marsilio recebeu reputação de wizinx em Bau diário   
    Olá
    Reescrevi o código para TFS 1.3 com itens aleatórios.
    Obs: só recebe 1 item (quantidade), mesmo os agrupáveis.
    local config = { level = 99, items = { 11258, -- phoenix charm 11259, -- unity charm 11260, -- spiritual charm 11261, -- twin charm 11262, -- solitude charm 2160, -- crystal coin 2195 -- boots of haste }, tempo = 24*3600, -- horas storage = 31402 } function onUse(player, item, fromPosition, itemEx, toPosition) local player = Player(player) if not player then return end if player:getLevel() < config.level then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You must be level 100 or higher.") return end if player:getStorageValue(config.storage) - os.time() > 0 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You must wait 24 hours before getting new daily reward.") return end player:setStorageValue(config.storage, os.time() + config.tempo) player:addItem(config.items[math.random(1, #config.items)]) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have received a random item.") return true end  
  4. Obrigado
    Utilize o znoteaac para logar com o client 11.
    O nome do server deve ser o mesmo no config.php do site e no config.lua
  5. Curtir
    luiz.marsilio recebeu reputação de mateusico em (3º) | [8.60] - Epic Server   
    O server é bem interessante. Baixei ele e joguei um bom tempo no meu PC pra dar uma olhada. Acho que alguns ajustes ainda são necessários, loot, velocidade dos monstros e algumas coisas no mapa.
    O server é uma ótima base para criar em cima, já tem muita coisa feita e funcionando muito bem. Parabéns pelo projeto.
     
     
    Quem quer resolver o problema do char não morrer, vai até o arquivo login.lua que está localizado em data/creaturescripts/scripts/login.lua e cole o código abaixo:
     
  6. Gostei
    luiz.marsilio deu reputação a jNo em (3º) | [8.60] - Epic Server   
    TKs,
     
    Olá, hoje eu trago esse OTServer com o objetivo de mudar a perspectiva dos usuários e OT-Admins em relação aos baiaks, bom, tentar mudar... enfim, esse servidor foi basicamente construído do “0”, diferente dos demais OTServer disponibilizados no fórum que são versões, e mais versões modificadas da base do Yurots (GOD BON), não que seja uma crítica, afinal, eu mesmo já fiz isso 2x, mas, tudo nessa vida precisa mudar ou para pior, ou para melhor, certo?
    Nesse server eu tentei desenvolver algumas mudanças drásticas, mas sem perder muito a essência de um Baiak padrão, é claro, que em relação a cidade principal algumas coisas ficaram diferente, mas a jogabilidade, hunts, sistemas e quests (bem elaborados por sinal), ficaram bem shows.
    O Epic Server foi construído e auxiliado com algumas partes de mapping e scripts de contribuintes do fórum, portanto o crédito não e só meu quando se olha esse aspecto, é de todo o fórum. Todos os sistemas e partes que compõe o server são atualizados, até a maioria dos scripts, e a datapack fornecida pelo grande @Fir3element
     
    Por conta da faculdade estar me tomando muito tempo e o meu desempenho não tem sido muito bom, deixei alguns itens sem solução, mas estarei fazendo as atualizações assim que possível (no momento o server esta 99/100%), então por enquanto descreverei abaixo alguns avisos.
     
    ALGUNS AVISOS:
     
    1 – O server foi produzido para SQL, dentro da pasta Others contém uma database já com as querrys instalada, e também a lista das mesmas, se quiser por em MYSQL, vai ter que achar uma database que funcione com um site, e inserir essas querrys que consta na pasta "querrys sql" e converter em mysql (algumas ja foram convertidas, e no próprio arquivo do ot tem um link que redireciona para uma database mysql+site). 2 – Sobre as Houses, eu não criei elas no RME, por motivos óbvios, vai facilitar que membros que tenham interesse em fazer algumas mudanças estéticas no mapa as façam facilmente. (Você vai perder no máximo 30 mins criando no mapa, só lembre de cria-las usando a town principal "epic city"). 3 – O Evento Six e Chest Bps estão incompletos por enquanto, ainda estou aguardando um auxílio do portal para finalizar, e quando isso acontecer eu vou atualizando o tópico aqui com esses eventos finalizados, mas você pode facilmente inserir outros no lugar. 4 – A senha do admin é tibiaking/juliano 5 – O server possui o bug do elfbot, o bug do fast attack, eu inseri nas sources os códigos que corrigem esse bug, porém eu não estava conseguindo recompilar o projeto, se você souber, facilmente corrigira esse bug. (Não que seja um problema, mas, é mais interessante você deixar um fast attack editável pelo ot e não por um bug de compilação) E o @fir3element quando voltar a ativa vai corrigir isso no tópico. 6.1 - Também possui o bug do openchat, ja modifiquei nas sources também, e no server ja tem os arquivos e codigos instalados, basta mesmo compilar novamente. http://www.tibiaking.com/forum/forums/topic/67233-860-the-forgotten-server-04-sqlite-e-mysql/ 7 – Eu não sou scripter, então vai ficar difícil eu resolver algumas dúvidas relacionadas, eu sei o básico, mas posso tentar auxiliar, basta postar a foto com o erro, ou criar um tópico na seção de suporte que é o mais indicado. 8 - Recomendo deixar o server com os avisos em english, até os comandos etc... pois pelo que andei observando, bastantes grigos tem jogado os servers BR. 9 - O Server ja possui um sistema de points donate, bastar usar o comando /addpoints Fulano, 15 (Caso insira site, não sei, acho que não tera conflito com esse sistema, só lembre de converter as querys sql para mysql necessárias do script) 10 - O Baiak foi desenvolvido para um padrão, low>middle>high, mas nada exagerado, podendo alcançar em média, level 1200 no max. Você pode editar isso também, como as experiências das criaturas são padronizadas, basta diminuir a exp stage no config.lua, ou, no arquivo xml você muda e coloca uns stages melhores.  
     
    Qualquer bug demais não citados, ou critica/sugestões, comente aqui no tópico!
     
     
    Obrigado aos usuários @Dwarfer, @Vodkart, @MaXwEllDeN, @Sekk, @pablobion, @JcA, @KotZletY, @DboExplorer, @rogaforyn2 @joadson e a toda comunidade! É nós, sem mais delongas:
     

     
     
     
     
     
     

     
     
  7. Gostei
    luiz.marsilio recebeu reputação de Bruxo Ots em Bless Automático [TFS 1.2+]   
    Olá tibianos.
     
    Criei um script de bless automático com base nessa solicitação:
     
    A bless será aplicada somente se o player estiver carregando X item.
    A bless não será aplicada se o player já tiver bless.
    Essa bless é somente aplicada no momento em que o player morrer.
     
    Configurações:
    ID do item que o player deve ter para receber a bless automática;
    Quantidade de bless disponíveis no servidor (para servidores custom);
    Remover o item ao ativar o sistema ou mantê-lo (bless infinita);
    Level mínimo para o sistema ser ativado.
     
     
    deathBless.lua
     
    config = { id = 2195, -- id do item bless = 6, -- quantidade de blessings do servidor remover = true, -- remover item? true/false minLvl = 100 -- level minimo } -- hasAllBlessings(player) by Luiz Henrique Marsilio. function hasAllBlessings(player) --Verifica se o player tem todas blessings local cont = 0 for i=1,config.bless do if player:hasBlessing(i) then cont = cont+1 end end if cont >= config.bless then -- se nao tiver alguma bless prossegue com o sitema return true else return false end end function onPrepareDeath(creature, killer) if not creature:isPlayer() then return true end if hasAllBlessings(creature) then -- function by Luiz Henrique Marsilio creature:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You are already protected by blessings.") return true end if creature:getLevel() >= config.minLvl then if creature:getItemCount(config.id) >= 1 then for i = 1, config.bless do creature:addBlessing(i) end if config.remover then creature:removeItem(config.id, 1) creature:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You were protected by a blessing charm.") end creature:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You have been blessed by the charm before dying.") else creature:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You were not wearing a blessing charm and was not blessed when died.") end else creature:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You need level " .. config.minLvl .. " or higher to be automatic blessed.") end return true end  
  8. Obrigado
    luiz.marsilio recebeu reputação de Bruxo Ots em Sistema de Honra Básico [TFS 1.2+]   
    Olá tibianos.
    Trago um sistema de honra bem simples. Basicamente, é constituído por três funções, addHonor, remHonor e getHonor.
    Essas três funções adicionam, removem e buscam a pontuação atual de honra do jogador.
    Escolhi gravar os dados no banco de dados para ficar mais fácil de manipular.
    Pode ser aplicado em diversos sistemas, por exemplo:
    Comprar por Honra; Recompensa em Eventos; Acesso à NPCs; Acesso à Quests; Ganhar desconto em NPCs; Ganhar mais ao vender para NPCs; enfim, a criatividade é o limite.
     
    function addHonor(self, value) -- luiz henrique marsilio db.query("UPDATE `players` SET `honor` = `honor` + " .. value .. " WHERE `players`.`id` = ".. self:getGuid().. ";") return true end function remHonor(self, value) -- luiz henrique marsilio db.query("UPDATE `players` SET `honor` = `honor` - " .. value .. " WHERE `players`.`id` = ".. self:getGuid().. ";") return true end function getHonor(self) -- luiz henrique marsilio local query = db.storeQuery("SELECT `honor` FROM `players` WHERE `players`.`id` = " .. self:getGuid() .. ";") if query ~= false then local val = result.getNumber(query, "honor") result.free(query) return val end return -1 end Você precisará inserir uma coluna de nome honor, tipo INT, tamanho 11 e default 0 na sua tabela de players (mysql). Existem tutoriais aqui no fórum que explicam como fazer isso.
     
    Deixo um exemplo de aplicação do sistema em um script que dá pontos de honra ao matar outros players.
    function onKill(player, target) if not target:isPlayer() then return true end -- exemplo de honra sendo adicionada ao matar outro player local honor = math.floor(target:getLevel()/10) addHonor(player, honor) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Your honor points have been increased in " .. honor .. ".") player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You have now " .. getHonor(player) .. " honor points.") -- pode ser estabelecido para condições serem satisfeitas para que a honra seja adicionada nesse caso -- por exemplo config = {level = 100} if target:getLevel() >= config.level then /stuff end entre outros end  
    Outro exemplo é essa talkaction que usei para criar um simples método de troca dos pontos de honra por items.
    -- lista dos items a serem comercializados pelo sistema de honra item = { ["boots of haste"] = {id = 2195, price = 100} -- id = id do item, price = valor para trocar por pontos de honra } function onSay(player, words, param) choise = item[param] -- seta o indice da tabela que sera acessado id e price if choise then -- se foi digitado alguma coisa de parametro continuar if getHonor(player) >= choise.price then -- verifica se a honra do player é suficiente para esse item escolhido (choise) player:addItem(choise.id, 1) -- add o item escolhido (id) remHonor(player, choise.price) -- desconta honor do player (price) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You have received " .. ItemType(choise.id):getName()) -- mensagem confirmando o recebimento. busca o nome do item por id player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Your current Honor balance is " .. getHonor(player)) -- informa o saldo de honra atual else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Your Honor is not enough to buy this item.") -- mensagem de erro caso nao tenha honra suficiente end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Available items on Honor Store: ") -- se nao houver parametro for i, j in pairs(item) do -- busca na lista os dados dos items disponiveis player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Item: [" .. i .. "]. Price: [" .. j.price .. "].") -- informa os dados encontrados através de mensagem end end return false -- retornar false impede que o comando seja falado pelo player na tela "Player says: !exemplo" end  
    Era isso galera! Se você tem sugestão para um sistema simples deixe nos comentários para que eu possa avaliar e fazer se estiver dentro dos meus conhecimentos.
  9. Gostei
    luiz.marsilio recebeu reputação de KotZletY em Bless Automático [TFS 1.2+]   
    Olá tibianos.
     
    Criei um script de bless automático com base nessa solicitação:
     
    A bless será aplicada somente se o player estiver carregando X item.
    A bless não será aplicada se o player já tiver bless.
    Essa bless é somente aplicada no momento em que o player morrer.
     
    Configurações:
    ID do item que o player deve ter para receber a bless automática;
    Quantidade de bless disponíveis no servidor (para servidores custom);
    Remover o item ao ativar o sistema ou mantê-lo (bless infinita);
    Level mínimo para o sistema ser ativado.
     
     
    deathBless.lua
     
    config = { id = 2195, -- id do item bless = 6, -- quantidade de blessings do servidor remover = true, -- remover item? true/false minLvl = 100 -- level minimo } -- hasAllBlessings(player) by Luiz Henrique Marsilio. function hasAllBlessings(player) --Verifica se o player tem todas blessings local cont = 0 for i=1,config.bless do if player:hasBlessing(i) then cont = cont+1 end end if cont >= config.bless then -- se nao tiver alguma bless prossegue com o sitema return true else return false end end function onPrepareDeath(creature, killer) if not creature:isPlayer() then return true end if hasAllBlessings(creature) then -- function by Luiz Henrique Marsilio creature:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You are already protected by blessings.") return true end if creature:getLevel() >= config.minLvl then if creature:getItemCount(config.id) >= 1 then for i = 1, config.bless do creature:addBlessing(i) end if config.remover then creature:removeItem(config.id, 1) creature:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You were protected by a blessing charm.") end creature:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You have been blessed by the charm before dying.") else creature:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You were not wearing a blessing charm and was not blessed when died.") end else creature:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You need level " .. config.minLvl .. " or higher to be automatic blessed.") end return true end  
  10. Gostei
    luiz.marsilio recebeu reputação de KotZletY em Sistema de Honra Básico [TFS 1.2+]   
    Olá tibianos.
    Trago um sistema de honra bem simples. Basicamente, é constituído por três funções, addHonor, remHonor e getHonor.
    Essas três funções adicionam, removem e buscam a pontuação atual de honra do jogador.
    Escolhi gravar os dados no banco de dados para ficar mais fácil de manipular.
    Pode ser aplicado em diversos sistemas, por exemplo:
    Comprar por Honra; Recompensa em Eventos; Acesso à NPCs; Acesso à Quests; Ganhar desconto em NPCs; Ganhar mais ao vender para NPCs; enfim, a criatividade é o limite.
     
    function addHonor(self, value) -- luiz henrique marsilio db.query("UPDATE `players` SET `honor` = `honor` + " .. value .. " WHERE `players`.`id` = ".. self:getGuid().. ";") return true end function remHonor(self, value) -- luiz henrique marsilio db.query("UPDATE `players` SET `honor` = `honor` - " .. value .. " WHERE `players`.`id` = ".. self:getGuid().. ";") return true end function getHonor(self) -- luiz henrique marsilio local query = db.storeQuery("SELECT `honor` FROM `players` WHERE `players`.`id` = " .. self:getGuid() .. ";") if query ~= false then local val = result.getNumber(query, "honor") result.free(query) return val end return -1 end Você precisará inserir uma coluna de nome honor, tipo INT, tamanho 11 e default 0 na sua tabela de players (mysql). Existem tutoriais aqui no fórum que explicam como fazer isso.
     
    Deixo um exemplo de aplicação do sistema em um script que dá pontos de honra ao matar outros players.
    function onKill(player, target) if not target:isPlayer() then return true end -- exemplo de honra sendo adicionada ao matar outro player local honor = math.floor(target:getLevel()/10) addHonor(player, honor) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Your honor points have been increased in " .. honor .. ".") player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You have now " .. getHonor(player) .. " honor points.") -- pode ser estabelecido para condições serem satisfeitas para que a honra seja adicionada nesse caso -- por exemplo config = {level = 100} if target:getLevel() >= config.level then /stuff end entre outros end  
    Outro exemplo é essa talkaction que usei para criar um simples método de troca dos pontos de honra por items.
    -- lista dos items a serem comercializados pelo sistema de honra item = { ["boots of haste"] = {id = 2195, price = 100} -- id = id do item, price = valor para trocar por pontos de honra } function onSay(player, words, param) choise = item[param] -- seta o indice da tabela que sera acessado id e price if choise then -- se foi digitado alguma coisa de parametro continuar if getHonor(player) >= choise.price then -- verifica se a honra do player é suficiente para esse item escolhido (choise) player:addItem(choise.id, 1) -- add o item escolhido (id) remHonor(player, choise.price) -- desconta honor do player (price) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You have received " .. ItemType(choise.id):getName()) -- mensagem confirmando o recebimento. busca o nome do item por id player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Your current Honor balance is " .. getHonor(player)) -- informa o saldo de honra atual else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Your Honor is not enough to buy this item.") -- mensagem de erro caso nao tenha honra suficiente end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Available items on Honor Store: ") -- se nao houver parametro for i, j in pairs(item) do -- busca na lista os dados dos items disponiveis player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Item: [" .. i .. "]. Price: [" .. j.price .. "].") -- informa os dados encontrados através de mensagem end end return false -- retornar false impede que o comando seja falado pelo player na tela "Player says: !exemplo" end  
    Era isso galera! Se você tem sugestão para um sistema simples deixe nos comentários para que eu possa avaliar e fazer se estiver dentro dos meus conhecimentos.
  11. Gostei
    luiz.marsilio recebeu reputação de Chriistian em Sistema de Honra Básico [TFS 1.2+]   
    Olá tibianos.
    Trago um sistema de honra bem simples. Basicamente, é constituído por três funções, addHonor, remHonor e getHonor.
    Essas três funções adicionam, removem e buscam a pontuação atual de honra do jogador.
    Escolhi gravar os dados no banco de dados para ficar mais fácil de manipular.
    Pode ser aplicado em diversos sistemas, por exemplo:
    Comprar por Honra; Recompensa em Eventos; Acesso à NPCs; Acesso à Quests; Ganhar desconto em NPCs; Ganhar mais ao vender para NPCs; enfim, a criatividade é o limite.
     
    function addHonor(self, value) -- luiz henrique marsilio db.query("UPDATE `players` SET `honor` = `honor` + " .. value .. " WHERE `players`.`id` = ".. self:getGuid().. ";") return true end function remHonor(self, value) -- luiz henrique marsilio db.query("UPDATE `players` SET `honor` = `honor` - " .. value .. " WHERE `players`.`id` = ".. self:getGuid().. ";") return true end function getHonor(self) -- luiz henrique marsilio local query = db.storeQuery("SELECT `honor` FROM `players` WHERE `players`.`id` = " .. self:getGuid() .. ";") if query ~= false then local val = result.getNumber(query, "honor") result.free(query) return val end return -1 end Você precisará inserir uma coluna de nome honor, tipo INT, tamanho 11 e default 0 na sua tabela de players (mysql). Existem tutoriais aqui no fórum que explicam como fazer isso.
     
    Deixo um exemplo de aplicação do sistema em um script que dá pontos de honra ao matar outros players.
    function onKill(player, target) if not target:isPlayer() then return true end -- exemplo de honra sendo adicionada ao matar outro player local honor = math.floor(target:getLevel()/10) addHonor(player, honor) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Your honor points have been increased in " .. honor .. ".") player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You have now " .. getHonor(player) .. " honor points.") -- pode ser estabelecido para condições serem satisfeitas para que a honra seja adicionada nesse caso -- por exemplo config = {level = 100} if target:getLevel() >= config.level then /stuff end entre outros end  
    Outro exemplo é essa talkaction que usei para criar um simples método de troca dos pontos de honra por items.
    -- lista dos items a serem comercializados pelo sistema de honra item = { ["boots of haste"] = {id = 2195, price = 100} -- id = id do item, price = valor para trocar por pontos de honra } function onSay(player, words, param) choise = item[param] -- seta o indice da tabela que sera acessado id e price if choise then -- se foi digitado alguma coisa de parametro continuar if getHonor(player) >= choise.price then -- verifica se a honra do player é suficiente para esse item escolhido (choise) player:addItem(choise.id, 1) -- add o item escolhido (id) remHonor(player, choise.price) -- desconta honor do player (price) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You have received " .. ItemType(choise.id):getName()) -- mensagem confirmando o recebimento. busca o nome do item por id player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Your current Honor balance is " .. getHonor(player)) -- informa o saldo de honra atual else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Your Honor is not enough to buy this item.") -- mensagem de erro caso nao tenha honra suficiente end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Available items on Honor Store: ") -- se nao houver parametro for i, j in pairs(item) do -- busca na lista os dados dos items disponiveis player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Item: [" .. i .. "]. Price: [" .. j.price .. "].") -- informa os dados encontrados através de mensagem end end return false -- retornar false impede que o comando seja falado pelo player na tela "Player says: !exemplo" end  
    Era isso galera! Se você tem sugestão para um sistema simples deixe nos comentários para que eu possa avaliar e fazer se estiver dentro dos meus conhecimentos.
  12. Gostei
    luiz.marsilio recebeu reputação de Vodkart em Sistema de Honra Básico [TFS 1.2+]   
    Olá tibianos.
    Trago um sistema de honra bem simples. Basicamente, é constituído por três funções, addHonor, remHonor e getHonor.
    Essas três funções adicionam, removem e buscam a pontuação atual de honra do jogador.
    Escolhi gravar os dados no banco de dados para ficar mais fácil de manipular.
    Pode ser aplicado em diversos sistemas, por exemplo:
    Comprar por Honra; Recompensa em Eventos; Acesso à NPCs; Acesso à Quests; Ganhar desconto em NPCs; Ganhar mais ao vender para NPCs; enfim, a criatividade é o limite.
     
    function addHonor(self, value) -- luiz henrique marsilio db.query("UPDATE `players` SET `honor` = `honor` + " .. value .. " WHERE `players`.`id` = ".. self:getGuid().. ";") return true end function remHonor(self, value) -- luiz henrique marsilio db.query("UPDATE `players` SET `honor` = `honor` - " .. value .. " WHERE `players`.`id` = ".. self:getGuid().. ";") return true end function getHonor(self) -- luiz henrique marsilio local query = db.storeQuery("SELECT `honor` FROM `players` WHERE `players`.`id` = " .. self:getGuid() .. ";") if query ~= false then local val = result.getNumber(query, "honor") result.free(query) return val end return -1 end Você precisará inserir uma coluna de nome honor, tipo INT, tamanho 11 e default 0 na sua tabela de players (mysql). Existem tutoriais aqui no fórum que explicam como fazer isso.
     
    Deixo um exemplo de aplicação do sistema em um script que dá pontos de honra ao matar outros players.
    function onKill(player, target) if not target:isPlayer() then return true end -- exemplo de honra sendo adicionada ao matar outro player local honor = math.floor(target:getLevel()/10) addHonor(player, honor) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Your honor points have been increased in " .. honor .. ".") player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You have now " .. getHonor(player) .. " honor points.") -- pode ser estabelecido para condições serem satisfeitas para que a honra seja adicionada nesse caso -- por exemplo config = {level = 100} if target:getLevel() >= config.level then /stuff end entre outros end  
    Outro exemplo é essa talkaction que usei para criar um simples método de troca dos pontos de honra por items.
    -- lista dos items a serem comercializados pelo sistema de honra item = { ["boots of haste"] = {id = 2195, price = 100} -- id = id do item, price = valor para trocar por pontos de honra } function onSay(player, words, param) choise = item[param] -- seta o indice da tabela que sera acessado id e price if choise then -- se foi digitado alguma coisa de parametro continuar if getHonor(player) >= choise.price then -- verifica se a honra do player é suficiente para esse item escolhido (choise) player:addItem(choise.id, 1) -- add o item escolhido (id) remHonor(player, choise.price) -- desconta honor do player (price) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You have received " .. ItemType(choise.id):getName()) -- mensagem confirmando o recebimento. busca o nome do item por id player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Your current Honor balance is " .. getHonor(player)) -- informa o saldo de honra atual else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Your Honor is not enough to buy this item.") -- mensagem de erro caso nao tenha honra suficiente end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Available items on Honor Store: ") -- se nao houver parametro for i, j in pairs(item) do -- busca na lista os dados dos items disponiveis player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Item: [" .. i .. "]. Price: [" .. j.price .. "].") -- informa os dados encontrados através de mensagem end end return false -- retornar false impede que o comando seja falado pelo player na tela "Player says: !exemplo" end  
    Era isso galera! Se você tem sugestão para um sistema simples deixe nos comentários para que eu possa avaliar e fazer se estiver dentro dos meus conhecimentos.
  13. Gostei
    luiz.marsilio recebeu reputação de Storm em Sistema de Honra Básico [TFS 1.2+]   
    Olá tibianos.
    Trago um sistema de honra bem simples. Basicamente, é constituído por três funções, addHonor, remHonor e getHonor.
    Essas três funções adicionam, removem e buscam a pontuação atual de honra do jogador.
    Escolhi gravar os dados no banco de dados para ficar mais fácil de manipular.
    Pode ser aplicado em diversos sistemas, por exemplo:
    Comprar por Honra; Recompensa em Eventos; Acesso à NPCs; Acesso à Quests; Ganhar desconto em NPCs; Ganhar mais ao vender para NPCs; enfim, a criatividade é o limite.
     
    function addHonor(self, value) -- luiz henrique marsilio db.query("UPDATE `players` SET `honor` = `honor` + " .. value .. " WHERE `players`.`id` = ".. self:getGuid().. ";") return true end function remHonor(self, value) -- luiz henrique marsilio db.query("UPDATE `players` SET `honor` = `honor` - " .. value .. " WHERE `players`.`id` = ".. self:getGuid().. ";") return true end function getHonor(self) -- luiz henrique marsilio local query = db.storeQuery("SELECT `honor` FROM `players` WHERE `players`.`id` = " .. self:getGuid() .. ";") if query ~= false then local val = result.getNumber(query, "honor") result.free(query) return val end return -1 end Você precisará inserir uma coluna de nome honor, tipo INT, tamanho 11 e default 0 na sua tabela de players (mysql). Existem tutoriais aqui no fórum que explicam como fazer isso.
     
    Deixo um exemplo de aplicação do sistema em um script que dá pontos de honra ao matar outros players.
    function onKill(player, target) if not target:isPlayer() then return true end -- exemplo de honra sendo adicionada ao matar outro player local honor = math.floor(target:getLevel()/10) addHonor(player, honor) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Your honor points have been increased in " .. honor .. ".") player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You have now " .. getHonor(player) .. " honor points.") -- pode ser estabelecido para condições serem satisfeitas para que a honra seja adicionada nesse caso -- por exemplo config = {level = 100} if target:getLevel() >= config.level then /stuff end entre outros end  
    Outro exemplo é essa talkaction que usei para criar um simples método de troca dos pontos de honra por items.
    -- lista dos items a serem comercializados pelo sistema de honra item = { ["boots of haste"] = {id = 2195, price = 100} -- id = id do item, price = valor para trocar por pontos de honra } function onSay(player, words, param) choise = item[param] -- seta o indice da tabela que sera acessado id e price if choise then -- se foi digitado alguma coisa de parametro continuar if getHonor(player) >= choise.price then -- verifica se a honra do player é suficiente para esse item escolhido (choise) player:addItem(choise.id, 1) -- add o item escolhido (id) remHonor(player, choise.price) -- desconta honor do player (price) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You have received " .. ItemType(choise.id):getName()) -- mensagem confirmando o recebimento. busca o nome do item por id player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Your current Honor balance is " .. getHonor(player)) -- informa o saldo de honra atual else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Your Honor is not enough to buy this item.") -- mensagem de erro caso nao tenha honra suficiente end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Available items on Honor Store: ") -- se nao houver parametro for i, j in pairs(item) do -- busca na lista os dados dos items disponiveis player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Item: [" .. i .. "]. Price: [" .. j.price .. "].") -- informa os dados encontrados através de mensagem end end return false -- retornar false impede que o comando seja falado pelo player na tela "Player says: !exemplo" end  
    Era isso galera! Se você tem sugestão para um sistema simples deixe nos comentários para que eu possa avaliar e fazer se estiver dentro dos meus conhecimentos.
  14. Gostei
    luiz.marsilio deu reputação a Storm em Bless Automático [TFS 1.2+]   
    Parabéns, seu tópico de conteúdo foi aprovado!
    Muito obrigado pela sua contribuição, nós do Tibia King agradecemos.
    Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.
     
  15. Gostei
    luiz.marsilio recebeu reputação de Storm em Bless Automático [TFS 1.2+]   
    Olá tibianos.
     
    Criei um script de bless automático com base nessa solicitação:
     
    A bless será aplicada somente se o player estiver carregando X item.
    A bless não será aplicada se o player já tiver bless.
    Essa bless é somente aplicada no momento em que o player morrer.
     
    Configurações:
    ID do item que o player deve ter para receber a bless automática;
    Quantidade de bless disponíveis no servidor (para servidores custom);
    Remover o item ao ativar o sistema ou mantê-lo (bless infinita);
    Level mínimo para o sistema ser ativado.
     
     
    deathBless.lua
     
    config = { id = 2195, -- id do item bless = 6, -- quantidade de blessings do servidor remover = true, -- remover item? true/false minLvl = 100 -- level minimo } -- hasAllBlessings(player) by Luiz Henrique Marsilio. function hasAllBlessings(player) --Verifica se o player tem todas blessings local cont = 0 for i=1,config.bless do if player:hasBlessing(i) then cont = cont+1 end end if cont >= config.bless then -- se nao tiver alguma bless prossegue com o sitema return true else return false end end function onPrepareDeath(creature, killer) if not creature:isPlayer() then return true end if hasAllBlessings(creature) then -- function by Luiz Henrique Marsilio creature:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You are already protected by blessings.") return true end if creature:getLevel() >= config.minLvl then if creature:getItemCount(config.id) >= 1 then for i = 1, config.bless do creature:addBlessing(i) end if config.remover then creature:removeItem(config.id, 1) creature:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You were protected by a blessing charm.") end creature:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You have been blessed by the charm before dying.") else creature:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You were not wearing a blessing charm and was not blessed when died.") end else creature:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You need level " .. config.minLvl .. " or higher to be automatic blessed.") end return true end  
  16. Gostei
    luiz.marsilio recebeu reputação de Adm Evolution em [Pedido] Item de Bless   
    config = { id = ITEM_ID -- id do item } function onPrepareDeath(creature, killer) if not creature:isPlayer() then return true end if creature:getItemCount(config.id) >= 1 then for i = 1, 5 do creature:addBlessing(i) end creature:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Você morreu com bless.") else creature:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Você morreu sem bless.") end return true end  
    Para TFS 1.2. Não testei.

Informação Importante

Confirmação de Termo