Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Olá gente, estou com um probleminha, estou com um script que dá 5 de todos skills ao usar um item, porém eu queria botar um exaust nele, tentei por uma storage mas não consegui... se alguém poder me ajudar agradeço!

function onUse(cid, item, frompos, item2, topos)
  if item.itemid == item.itemid then

         doPlayerAddSkillTry(cid,0,doPlayerAddSkill(cid, 0))
         doPlayerAddSkillTry(cid,1,doPlayerAddSkill(cid, 1))
         doPlayerAddSkillTry(cid,2,doPlayerAddSkill(cid, 2))
         doPlayerAddSkillTry(cid,3,doPlayerAddSkill(cid, 3))
         doPlayerAddSkillTry(cid,4,doPlayerAddSkill(cid, 4))
         doPlayerAddSkillTry(cid,5,doPlayerAddSkill(cid, 5))
         doPlayerAddSkillTry(cid,6,doPlayerAddSkill(cid, 6))
		 doPlayerAddSkillTry(cid,0,doPlayerAddSkill(cid, 0))
         doPlayerAddSkillTry(cid,1,doPlayerAddSkill(cid, 1))
         doPlayerAddSkillTry(cid,2,doPlayerAddSkill(cid, 2))
         doPlayerAddSkillTry(cid,3,doPlayerAddSkill(cid, 3))
         doPlayerAddSkillTry(cid,4,doPlayerAddSkill(cid, 4))
         doPlayerAddSkillTry(cid,5,doPlayerAddSkill(cid, 5))
         doPlayerAddSkillTry(cid,6,doPlayerAddSkill(cid, 6))
		 doPlayerAddSkillTry(cid,0,doPlayerAddSkill(cid, 0))
         doPlayerAddSkillTry(cid,1,doPlayerAddSkill(cid, 1))
         doPlayerAddSkillTry(cid,2,doPlayerAddSkill(cid, 2))
         doPlayerAddSkillTry(cid,3,doPlayerAddSkill(cid, 3))
         doPlayerAddSkillTry(cid,4,doPlayerAddSkill(cid, 4))
         doPlayerAddSkillTry(cid,5,doPlayerAddSkill(cid, 5))
         doPlayerAddSkillTry(cid,6,doPlayerAddSkill(cid, 6))
		 doPlayerAddSkillTry(cid,0,doPlayerAddSkill(cid, 0))
         doPlayerAddSkillTry(cid,1,doPlayerAddSkill(cid, 1))
         doPlayerAddSkillTry(cid,2,doPlayerAddSkill(cid, 2))
         doPlayerAddSkillTry(cid,3,doPlayerAddSkill(cid, 3))
         doPlayerAddSkillTry(cid,4,doPlayerAddSkill(cid, 4))
         doPlayerAddSkillTry(cid,5,doPlayerAddSkill(cid, 5))
         doPlayerAddSkillTry(cid,6,doPlayerAddSkill(cid, 6))
		 doPlayerAddSkillTry(cid,0,doPlayerAddSkill(cid, 0))
         doPlayerAddSkillTry(cid,1,doPlayerAddSkill(cid, 1))
         doPlayerAddSkillTry(cid,2,doPlayerAddSkill(cid, 2))
         doPlayerAddSkillTry(cid,3,doPlayerAddSkill(cid, 3))
         doPlayerAddSkillTry(cid,4,doPlayerAddSkill(cid, 4))
         doPlayerAddSkillTry(cid,5,doPlayerAddSkill(cid, 5))
         doPlayerAddSkillTry(cid,6,doPlayerAddSkill(cid, 6))
		  end
         doRemoveItem(item.uid,1)
         doSendMagicEffect(frompos, 28)
         doSendAnimatedText(getPlayerPosition(cid), "Skill Up", TEXTCOLOR_BLUE)
		
    return true
end
end

 

Link para o post
Compartilhar em outros sites

Este tópico foi movido para a área correta. Esta é uma mensagem automática!
Pedimos que leia as regras do fórum!

Spoiler

This topic has been moved to the correct area. This is an automated message!
Please read the forum rules.

 

@Adm Evolution não entendi, no titulo diz limite de uso, usar só uma vez por player ? No tópico em si diz exhaustion, quanto tempo de exhaustion ?

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
function onUse(cid, var, item, frompos, item2, topos)
  if item.itemid == item.itemid then
  		 local tempo = 20.0 -- em segundos
		  local guid = getPlayerGUID(cid)
          if exhaustion[guid] and exhaustion[guid] - os.clock() > 0 then
          return not doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Espere um pouco para poder usar novamente.")
		  end
	     exhaustion[guid] = os.clock() + tempo
         doPlayerAddSkillTry(cid,0,doPlayerAddSkill(cid, 0))
         doPlayerAddSkillTry(cid,1,doPlayerAddSkill(cid, 1))
         doPlayerAddSkillTry(cid,2,doPlayerAddSkill(cid, 2))
         doPlayerAddSkillTry(cid,3,doPlayerAddSkill(cid, 3))
         doPlayerAddSkillTry(cid,4,doPlayerAddSkill(cid, 4))
         doPlayerAddSkillTry(cid,5,doPlayerAddSkill(cid, 5))
         doPlayerAddSkillTry(cid,6,doPlayerAddSkill(cid, 6))
		 doPlayerAddSkillTry(cid,0,doPlayerAddSkill(cid, 0))
         doPlayerAddSkillTry(cid,1,doPlayerAddSkill(cid, 1))
         doPlayerAddSkillTry(cid,2,doPlayerAddSkill(cid, 2))
         doPlayerAddSkillTry(cid,3,doPlayerAddSkill(cid, 3))
         doPlayerAddSkillTry(cid,4,doPlayerAddSkill(cid, 4))
         doPlayerAddSkillTry(cid,5,doPlayerAddSkill(cid, 5))
         doPlayerAddSkillTry(cid,6,doPlayerAddSkill(cid, 6))
		 doPlayerAddSkillTry(cid,0,doPlayerAddSkill(cid, 0))
         doPlayerAddSkillTry(cid,1,doPlayerAddSkill(cid, 1))
         doPlayerAddSkillTry(cid,2,doPlayerAddSkill(cid, 2))
         doPlayerAddSkillTry(cid,3,doPlayerAddSkill(cid, 3))
         doPlayerAddSkillTry(cid,4,doPlayerAddSkill(cid, 4))
         doPlayerAddSkillTry(cid,5,doPlayerAddSkill(cid, 5))
         doPlayerAddSkillTry(cid,6,doPlayerAddSkill(cid, 6))
		 doPlayerAddSkillTry(cid,0,doPlayerAddSkill(cid, 0))
         doPlayerAddSkillTry(cid,1,doPlayerAddSkill(cid, 1))
         doPlayerAddSkillTry(cid,2,doPlayerAddSkill(cid, 2))
         doPlayerAddSkillTry(cid,3,doPlayerAddSkill(cid, 3))
         doPlayerAddSkillTry(cid,4,doPlayerAddSkill(cid, 4))
         doPlayerAddSkillTry(cid,5,doPlayerAddSkill(cid, 5))
         doPlayerAddSkillTry(cid,6,doPlayerAddSkill(cid, 6))
		 doPlayerAddSkillTry(cid,0,doPlayerAddSkill(cid, 0))
         doPlayerAddSkillTry(cid,1,doPlayerAddSkill(cid, 1))
         doPlayerAddSkillTry(cid,2,doPlayerAddSkill(cid, 2))
         doPlayerAddSkillTry(cid,3,doPlayerAddSkill(cid, 3))
         doPlayerAddSkillTry(cid,4,doPlayerAddSkill(cid, 4))
         doPlayerAddSkillTry(cid,5,doPlayerAddSkill(cid, 5))
         doPlayerAddSkillTry(cid,6,doPlayerAddSkill(cid, 6))
		 end
		 doPlayerRemoveItem(cid, item.uid, 1)
         doSendMagicEffect(frompos, 28)
         doSendAnimatedText(getPlayerPosition(cid), "Skill Up", TEXTCOLOR_BLUE)
    return true
end

Para ajustar o time do exhaust, é só alterar o "local tempo" (em segundos).

Link para o post
Compartilhar em outros sites

Identei esse código , tava meio feio e tinha um end onde não devia

local storage = 43214
local time = 5.0 -- Segundos de exhaust

function onUse(cid, item, frompos, item2, topos)

         if exhaustion.check(cid, storage) then
             doPlayerSendCancel(cid, "Você tem que espera " .. exhaustion.get(cid, storage) .. " segundos.")
             return false 
         end

         if item.itemid == item.itemid then

            doPlayerAddSkillTry(cid,0,doPlayerAddSkill(cid, 0))
            doPlayerAddSkillTry(cid,1,doPlayerAddSkill(cid, 1))
            doPlayerAddSkillTry(cid,2,doPlayerAddSkill(cid, 2))
            doPlayerAddSkillTry(cid,3,doPlayerAddSkill(cid, 3))
            doPlayerAddSkillTry(cid,4,doPlayerAddSkill(cid, 4))
            doPlayerAddSkillTry(cid,5,doPlayerAddSkill(cid, 5))
            doPlayerAddSkillTry(cid,6,doPlayerAddSkill(cid, 6))
		    doPlayerAddSkillTry(cid,0,doPlayerAddSkill(cid, 0))
            doPlayerAddSkillTry(cid,1,doPlayerAddSkill(cid, 1))
            doPlayerAddSkillTry(cid,2,doPlayerAddSkill(cid, 2))
            doPlayerAddSkillTry(cid,3,doPlayerAddSkill(cid, 3))
            doPlayerAddSkillTry(cid,4,doPlayerAddSkill(cid, 4))
            doPlayerAddSkillTry(cid,5,doPlayerAddSkill(cid, 5))
            doPlayerAddSkillTry(cid,6,doPlayerAddSkill(cid, 6))
		    doPlayerAddSkillTry(cid,0,doPlayerAddSkill(cid, 0))
            doPlayerAddSkillTry(cid,1,doPlayerAddSkill(cid, 1))
            doPlayerAddSkillTry(cid,2,doPlayerAddSkill(cid, 2))
            doPlayerAddSkillTry(cid,3,doPlayerAddSkill(cid, 3))
            doPlayerAddSkillTry(cid,4,doPlayerAddSkill(cid, 4))
            doPlayerAddSkillTry(cid,5,doPlayerAddSkill(cid, 5))
            doPlayerAddSkillTry(cid,6,doPlayerAddSkill(cid, 6))
		    doPlayerAddSkillTry(cid,0,doPlayerAddSkill(cid, 0))
            doPlayerAddSkillTry(cid,1,doPlayerAddSkill(cid, 1))
            doPlayerAddSkillTry(cid,2,doPlayerAddSkill(cid, 2))
            doPlayerAddSkillTry(cid,3,doPlayerAddSkill(cid, 3))
            doPlayerAddSkillTry(cid,4,doPlayerAddSkill(cid, 4))
            doPlayerAddSkillTry(cid,5,doPlayerAddSkill(cid, 5))
            doPlayerAddSkillTry(cid,6,doPlayerAddSkill(cid, 6))
		    doPlayerAddSkillTry(cid,0,doPlayerAddSkill(cid, 0))
            doPlayerAddSkillTry(cid,1,doPlayerAddSkill(cid, 1))
            doPlayerAddSkillTry(cid,2,doPlayerAddSkill(cid, 2))
            doPlayerAddSkillTry(cid,3,doPlayerAddSkill(cid, 3))
            doPlayerAddSkillTry(cid,4,doPlayerAddSkill(cid, 4))
            doPlayerAddSkillTry(cid,5,doPlayerAddSkill(cid, 5))
            doPlayerAddSkillTry(cid,6,doPlayerAddSkill(cid, 6))
            doRemoveItem(item.uid,1)
            exhaustion.set(cid, storage, time)
            doSendMagicEffect(frompos, 28)
            doSendAnimatedText(getPlayerPosition(cid), "Skill Up", TEXTCOLOR_BLUE)
            return true
         end
end

 

Link para o post
Compartilhar em outros sites

@Sttorm Tipo, eu digo pra usar apenas uma vez, entende? para não poder abusar e usar várias vezes.

3 horas atrás, KotZletY disse:

Este tópico foi movido para a área correta. Esta é uma mensagem automática!
Pedimos que leia as regras do fórum!

  Mostrar conteúdo oculto

This topic has been moved to the correct area. This is an automated message!
Please read the forum rules.

 

@Adm Evolution não entendi, no titulo diz limite de uso, usar só uma vez por player ? No tópico em si diz exhaustion, quanto tempo de exhaustion ?

Isso ,usar apenas uma vez, eu que me embananei ao escrever ali.

Link para o post
Compartilhar em outros sites
local storage = 43214

function onUse(cid, item, frompos, item2, topos)

         if getCreatureStorage(cid, storage) == 1 then
            doPlayerSendTextMessage(cid, 27, "Você só pode usar esse item uma vez")           
            return true
         end

         if item.itemid == item.itemid then

            doPlayerAddSkillTry(cid,0,doPlayerAddSkill(cid, 0))
            doPlayerAddSkillTry(cid,1,doPlayerAddSkill(cid, 1))
            doPlayerAddSkillTry(cid,2,doPlayerAddSkill(cid, 2))
            doPlayerAddSkillTry(cid,3,doPlayerAddSkill(cid, 3))
            doPlayerAddSkillTry(cid,4,doPlayerAddSkill(cid, 4))
            doPlayerAddSkillTry(cid,5,doPlayerAddSkill(cid, 5))
            doPlayerAddSkillTry(cid,6,doPlayerAddSkill(cid, 6))
		    doPlayerAddSkillTry(cid,0,doPlayerAddSkill(cid, 0))
            doPlayerAddSkillTry(cid,1,doPlayerAddSkill(cid, 1))
            doPlayerAddSkillTry(cid,2,doPlayerAddSkill(cid, 2))
            doPlayerAddSkillTry(cid,3,doPlayerAddSkill(cid, 3))
            doPlayerAddSkillTry(cid,4,doPlayerAddSkill(cid, 4))
            doPlayerAddSkillTry(cid,5,doPlayerAddSkill(cid, 5))
            doPlayerAddSkillTry(cid,6,doPlayerAddSkill(cid, 6))
		    doPlayerAddSkillTry(cid,0,doPlayerAddSkill(cid, 0))
            doPlayerAddSkillTry(cid,1,doPlayerAddSkill(cid, 1))
            doPlayerAddSkillTry(cid,2,doPlayerAddSkill(cid, 2))
            doPlayerAddSkillTry(cid,3,doPlayerAddSkill(cid, 3))
            doPlayerAddSkillTry(cid,4,doPlayerAddSkill(cid, 4))
            doPlayerAddSkillTry(cid,5,doPlayerAddSkill(cid, 5))
            doPlayerAddSkillTry(cid,6,doPlayerAddSkill(cid, 6))
		    doPlayerAddSkillTry(cid,0,doPlayerAddSkill(cid, 0))
            doPlayerAddSkillTry(cid,1,doPlayerAddSkill(cid, 1))
            doPlayerAddSkillTry(cid,2,doPlayerAddSkill(cid, 2))
            doPlayerAddSkillTry(cid,3,doPlayerAddSkill(cid, 3))
            doPlayerAddSkillTry(cid,4,doPlayerAddSkill(cid, 4))
            doPlayerAddSkillTry(cid,5,doPlayerAddSkill(cid, 5))
            doPlayerAddSkillTry(cid,6,doPlayerAddSkill(cid, 6))
		    doPlayerAddSkillTry(cid,0,doPlayerAddSkill(cid, 0))
            doPlayerAddSkillTry(cid,1,doPlayerAddSkill(cid, 1))
            doPlayerAddSkillTry(cid,2,doPlayerAddSkill(cid, 2))
            doPlayerAddSkillTry(cid,3,doPlayerAddSkill(cid, 3))
            doPlayerAddSkillTry(cid,4,doPlayerAddSkill(cid, 4))
            doPlayerAddSkillTry(cid,5,doPlayerAddSkill(cid, 5))
            doPlayerAddSkillTry(cid,6,doPlayerAddSkill(cid, 6))
            doRemoveItem(item.uid,1)
            doCreatureSetStorage(cid, storage, 1)
            doSendMagicEffect(frompos, 28)
            doSendAnimatedText(getPlayerPosition(cid), "Skill Up", TEXTCOLOR_BLUE)
            return true
         end
end

 

Link para o post
Compartilhar em outros sites

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.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.


  • Conteúdo Similar

    • Por Imperius
      O propósito é criar uma nova função em creaturescripts que será acionada toda vez que um novo report (CTRL + R) for aberto.
       
      Eu implementei para enviar uma notificação no grupo do Telegram, contendo os dados do report.
       
      Isso garantirá que os GMs tenham acesso aos reports dos jogadores mesmo quando não estiverem logados, e também evitará que algum report seja perdido caso o jogador saia do servidor.
      A parte do Telegram é apenas um exemplo. Você pode ajustar o script para executar outras ações desejadas.
       
      creatureevent.cpp:
      Dentro deste arquivo, localize a função:
       
      uint32_t CreatureEvent::executeChannelLeave(Player* player, uint16_t channelId, UsersMap usersMap)  
      abaixo dela, adicione:
       
      uint32_t CreatureEvent::executeOpenRuleViolation(Player* player, std::string message) { if (!m_interface->reserveEnv()) { std::clog << "[Error - CreatureEvent::executeOpenRuleViolation] Call stack overflow." << std::endl; return 0; } ScriptEnviroment* env = m_interface->getEnv(); env->setScriptId(m_scriptId, m_interface); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(player)); lua_pushstring(L, message.c_str()); bool result = m_interface->callFunction(2); m_interface->releaseEnv(); return result; }  
      Após, procure por:
       
      std::string CreatureEvent::getScriptEventName() const  
      abaixo de:
       
      case CREATURE_EVENT_CHANNEL_LEAVE: return "onLeaveChannel";  
      adicione:
       
      case CREATURE_EVENT_OPEN_RULE_VIOLATION: return "onOpenRuleViolation";  
      Agora, procure por:
       
      std::string CreatureEvent::getScriptEventParams() const  
      abaixo de:
       
      case CREATURE_EVENT_CHANNEL_LEAVE: return "cid, channel, users";  
      adicione:
       
      case CREATURE_EVENT_OPEN_RULE_VIOLATION: return "cid, message";  
      Procure por:
       
      bool CreatureEvent::configureEvent(xmlNodePtr p)  
      abaixo de:
       
      else if(tmpStr == "leavechannel") m_type = CREATURE_EVENT_CHANNEL_LEAVE;  
      adicione:
       
      else if(tmpStr == "openruleviolation") m_type = CREATURE_EVENT_OPEN_RULE_VIOLATION;  
       
      creatureevent.h:
      Dentro deste arquivo, localize:
       
      enum CreatureEventType_t  
      adicione "CREATURE_EVENT_OPEN_RULE_VIOLATION" como o último item de enum CreatureEventType_t
       
      Exemplo:
       
      enum CreatureEventType_t { // ... CREATURE_EVENT_OPEN_RULE_VIOLATION };  
      Agora, procure por:
       
      uint32_t executeChannelLeave(Player* player, uint16_t channelId, UsersMap usersMap);  
      abaixo dela, adicione:
       
      uint32_t executeOpenRuleViolation(Player* player, std::string message);  
      game.cpp:
      Dentro deste arquivo, localize:
       
      bool Game::playerReportRuleViolation(Player* player, const std::string& text)  
      e substitua por:
       
      bool Game::playerReportRuleViolation(Player* player, const std::string& text) { //Do not allow reports on multiclones worlds since reports are name-based if(g_config.getNumber(ConfigManager::ALLOW_CLONES)) { player->sendTextMessage(MSG_INFO_DESCR, "Rule violation reports are disabled."); return false; } cancelRuleViolation(player); boost::shared_ptr<RuleViolation> rvr(new RuleViolation(player, text, time(NULL))); ruleViolations[player->getID()] = rvr; ChatChannel* channel = g_chat.getChannelById(CHANNEL_RVR); if(!channel) return false; for(UsersMap::const_iterator it = channel->getUsers().begin(); it != channel->getUsers().end(); ++it) it->second->sendToChannel(player, SPEAK_RVR_CHANNEL, text, CHANNEL_RVR, rvr->time); CreatureEventList joinEvents = player->getCreatureEvents(CREATURE_EVENT_OPEN_RULE_VIOLATION); for(CreatureEventList::iterator it = joinEvents.begin(); it != joinEvents.end(); ++it) (*it)->executeOpenRuleViolation(player, text); return true; }  
      Agora é só compilar a source.
       
      depois em "data > creaturescripts > creaturescripts.xml", adicione:
       
      <event type="login" name="loginNotifyRuleViolation" script="notifyRuleViolation.lua"/> <event type="openruleviolation" name="openNotifyRuleViolation" script="notifyRuleViolation.lua"/>  
      em "data > creaturescripts > scripts", crie um arquivo notifyRuleViolation.lua e adicione:
       
      function onOpenRuleViolation(cid, message) local config = { token = "", -- Token do seu BOT no Telegram chatId = "" -- ID do chat do Telegram que será enviado a notificação. } local message = "Player: "..getCreatureName(cid).."\n\nReport:\n"..message.."" message = string.gsub(message, "\n", "%%0A") local url = "https://api.telegram.org/bot"..config.token.."/sendMessage" local data = "chat_id="..config.chatId.."&text="..message.."" local curl = io.popen('curl -d "'..data..'" "'..url..'"'):read("*a") return true end function onLogin(cid) registerCreatureEvent(cid, "openNotifyRuleViolation") return true end  
       
      Demonstração:
      1. Jogador abre um novo report (CTRL + R)

      2. notifyRuleViolation.lua, definido em creaturescripts.xml, é acionado para enviar uma notificação ao grupo do Telegram.
       

       
    • Por Imperius
      Olá, pessoal! Acabei encontrando um script que tinha feito a um tempo atrás. Estou compartilhando aqui para quem quiser usar ou melhorar.
       
      É bem parecido com os outros sistemas de roleta, igual deste tópico: https://tibiaking.com/forums/topic/101557-action-cassino-roleta-de-items/
       
      Como funciona?
       
      O "Treasure Chest" é um item custom, onde o jogador têm a possibilidade de ganhar itens raros ou bem meia boca. Tudo dependerá da sorte.
       
      O jogador precisa tacar o treasure chest na bancada e acionar a alavanca. O treasure chest irá se transformar em vários itens de forma randômica no qual o jogador poderá ou não ganhar. No final, apenas um item é entregue ao jogador.
       
      Para entender melhor o seu funcionamento, segue o GIF abaixo:
       

       
       
      em data > actions > actions.xml
       
       
      em data > actions > scripts > crie um arquivo chamado leverTreasureChest.lua
       
       
      no banco de dados do servidor, adicione o seguinte código em "SQL":
       
       
       

      Também estou disponibilizando uma página PHP, para quem quiser usar no site do servidor. Na página tem informações sobre o funcionamento, quais são os possíveis prêmios e a lista de jogadores que ganharam os itens raros.
       

       
       
      Espero ter ajudado de alguma forma! : )
       
      treasure_chest.php
    • Por amoxicilina
      Action: Remover skull
       
       
    • Por Erimyth
      Fala galerinha eu estava e um amigo meu me pediu um script de health e mana por talkaction por MSN, fiz ele e resolvi postar-lo aqui no TK para a galera usar-lo.

      Vá em data > talkactions > talkactions.xml e adicione a seguinte tag:

      <talkaction words="!buyhealth;!buymana" event="script" value="buylife.lua">
      Agora vá até a pasta scripts dentro de talkactions, crie um arquivo chamado buylife.lua com isto dentro:
      -- [( Script created by Matheus for TibiaKing.com )] -- function onSay(cid, words, param) local health = 1000 -- Vida que será adicionada ao player após ele usar o comando! local mana = 1000 -- Mana que será adicionada ao player após ele usar o comando! local cost = 10000 -- Preço para você comprar mana ou health! if (words == "!buymana") then if (doPlayerRemoveMoney(cid, cost) == TRUE) then doCreatureAddMana(cid, mana) doSendMagicEffect(getCreaturePosition(cid), 12) else doPlayerSendCancel(cid, "Sorry, you need "..cost.." gold coins to buy mana.") return TRUE end elseif (words == "!buyhealth") then if (doPlayerRemoveMoney(cid, cost) == TRUE) then doCreatureAddHealth(cid, health) doSendMagicEffect(getCreaturePosition(cid), 12) else doPlayerSendCancel(cid, "Sorry, you need "..cost.." gold coins to buy mana.") end return TRUE end end
      Prontinho, espero que gostem, é um script bem simples mas pode ser útil para alguns.  
        Você gostou deste conteúdo!? Este conteúdo te ajudou!? Isso será realmente útil pra você!? Então, se possível, faça uma doação (de qualquer valor) que estará me ajudando também!  
    • Por Leu
      Usando o script do Cjaker como base (e a descrição do tópico dele, na cara dura mesmo!), otimizei as operações no banco de dados (tava muito zuado) e adicionei um range de accounts protegidas pra evitar apagar os gms/samples/contas de spoofers do otservlist/etc... ;
      Salve galera, mais um script para quem está precisando dar aquela limpada no banco de dados e otimizar o Servidor.
       
      -- Especificações --
      TFS 1.1+ Objetivo é limpar as contas inativas/vazias e os players Inativos assim removendo os usuários que estão inativos e ocupando espaço no banco de dados.
        -- Instruções --
       
      Em globalevents.xml insira essa linha <globalevent type="startup" name="CleanDatabases" script="cleandatabase.lua" />  
      Crie um script chamado cleandatabase.lua na pasta globalevents/scripts e cole isso dentro dele. --- --- Generated by EmmyLua(https://github.com/EmmyLua) --- Created by leu. --- DateTime: 04/04/18 18:42 --- --[[ Clean Database by Cjaker | Refactor and SQL Optimizations by Leu ]]-- local inactiveMonths = 1 --> Quantos meses o player ficou inativo local createdMonths = 1 --> Quantos meses a conta foi criada e não possui character criado. local protectedAccIdEnd = 20 --ignorar accounts com id <= 20 local function clearInactivePlayers() local inactiveTimestamp = os.time() - (86400 * (inactiveMonths*30)) local totalClear=0 local fromClause = "`players` WHERE `account_id` > ".. protectedAccIdEnd .." AND lastlogin <= "..inactiveTimestamp local resultId = db.storeQuery("SELECT COUNT(*) as num_inativos FROM "..fromClause) if resultId ~= false then totalClear = result.getDataInt(resultId, 'num_inativos') result.free(resultId) if totalClear > 0 then db.query("DELETE FROM "..fromClause) end end return totalClear end local function clearEmptyAccounts() local totalClear = 0 local createdTimestamp = os.time() - (86400 * (createdMonths*30)) local fromClause = "`accounts` ACCS WHERE `id` > ".. protectedAccIdEnd .." AND `creation` <= "..createdTimestamp.." AND (SELECT COUNT(*) from `players` WHERE `account_id` = ACCS.`id`) > 0" local resultId = db.storeQuery("SELECT COUNT(*) as num_inativas FROM "..fromClause) if resultId~= false then totalClear = result.getDataInt(resultId,'num_inativas') result.free(resultId) if totalClear > 0 then db.query("DELETE ACCS FROM "..fromClause) end end return totalClear end function onStartup() print('>> ' ..clearInactivePlayers().. " players inativos deletados.") print('>> ' ..clearEmptyAccounts().. " contas vazias deletadas.") end  
       
      é isso senhores, paganois, flw!
       
      EDIT 24-04-2018: correção DELETE accs QUERY
       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo