Ir para conteúdo
Banner com Efeitos

poko360

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    Nao sei se estou postando na area correta mas.... vamo la
     
    Um player esta visitando quase todos os server e derrubando por um sistema de party (ele se dá auto-party) com o bot fazendo enviar pacotes inválidos que acabam crashando a sua distro:
    depois que fiz isso, meu server voltou ao normal (ja esta 7 dias online, desde seu ultimo nuke)
     
    procurei e achei em outro forum, e vi um cidadão de deus que encontrou a solução. (Creditos: Gesior.pl)
     
    ele diz que o codigo é pra TFS 0.4 r3777
    vamos ao que interessa:
     
    Em game.cpp (nas sources) , procure por:

    adicione isso daqui A CIMA dessa linha
     
  2. Curtir
    poko360 recebeu reputação de Aragllov em nao consigo soltar magic wall black skull ajuda   
    funcionou perfeitamente, mt obrigado
  3. Curtir
    poko360 deu reputação a Aragllov em nao consigo soltar magic wall black skull ajuda   
    Magic wall não é runa de suporte, vc pode colocar como suporte e ver se funciona
  4. Curtir
    poko360 deu reputação a J The Creator em Somar storage a cada hit que eu atacar   
    Na function onUseWeapon, tente desta forma:
     
       function onUseWeapon(cid, var)     local ret = doCombat(cid, combat, var)     if(ret == LUA_ERROR) then         return LUA_ERROR     end     -- Aumenta a storage em +1     setPlayerStorageValue(cid, 51400, getPlayerStorageValue(cid, 51400) + 1)     return true end  
  5. Gostei
    poko360 deu reputação a marcoshps11 em [otcv8] Como utilizar - Ip fixo, spr, encrypt, auto update   
    * Áudio de saudação *
     
    Neste tutorial, irei ensinar alguns passos inicias para utilizar o OTClientV8
     
    1º Passo: Como fixar ip e colocar a spr no local correto
     
    - Faço o download no link: https://github.com/OTCv8/otclientv8
    - Extraia o arquivo
    - Dentro da pasta principal, vá até o arquivo init.lua
     
    Neste trecho, precisará remover os comentários --[[ e ]]:
    Servers = { --[[ OTClientV8 = "http://otclient.ovh/api/login.php", OTClientV8c = "otclient.ovh:7171", OTClientV8Test = "http://otclient.ovh/api/login2.php", LocalTestServ = "127.0.0.1:7171:1098:110:30:93" ]] }  
    Ficando assim:
    Servers = { Meuserver = "127.0.0.1:7171:1098" } ficando na seguinte configuração NOME = "IP:PORTA:VERSÃO"
     
     
    Para fixar e não aparecer a lista de servers, basta alterar:
    ALLOW_CUSTOM_SERVERS = true -- if true it shows option ANOTHER on server list  
    Para:
    ALLOW_CUSTOM_SERVERS = false -- if true it shows option ANOTHER on server list  
     
    Caso queira trocar o nome do aplicativo é só mudar
    g_app.setName("OTCv8") trocando o "OTCv8" para o nome desejado, lembrando que isto irá alterar apenas o nome da janela do aplicativo
     
     
    Incluir a SPR/Dat:

    Para incluir, basta ir na pasta data, criar uma nova pasta e renomear com o nome "things" e depois criar uma outra pasta dentro dela com o nome da versão que desejar utilizar, exemplos:
    * 800
    * 860
    * 910
    * 1100
    dentro desta pasta, incluir as respectivas spr/dat da versão correspondente 

    Um vídeo objetivo do conteúdo citado acima:
     
     
     

     
    2º Passo: Remover campo "Token" da tela inicial
     
    Apesar de ser algo simples, vejo muitos perguntarem como remover este campo, vamos lá:

    - Vá até a pasta modules -> client_entergame
    - Abra o arquivo entergame.lua
    - Na linha 380 remova ou comente o trecho:
    enterGame:getChildById('accountTokenTextEdit'):clearText()  
    - Na linha 412 remova ou comente o trecho:
    G.authenticatorToken = enterGame:getChildById('accountTokenTextEdit'):getText()  
    - salve o arquivo
    - na mesma pasta, abra o arquivo entergame.otui
    - da linha 32 a 44 remova ou comente o seguinte trecho:
    MenuLabel !text: tr('Token') anchors.left: prev.left anchors.top: prev.bottom text-auto-resize: true margin-top: 8 TextEdit id: accountTokenTextEdit anchors.left: parent.left anchors.right: parent.right anchors.top: prev.bottom margin-top: 2  
    Um vídeo objetivo do conteúdo citado acima:
     
     

    3º Passo: como encriptar os arquivos
     
    - Recomendo inicialmente criar uma cópia da pasta que ira encriptar, pois não é reversivo
    - Copie o endereço da pasta onde estão os arquivos
    - Abra o cmd e navegue até esta pasta utilizando o comando cd (link do endereço da pasta)
    - utilize o comando otclient_dx.exe --encrypt
    - Aguarde o sistema sinalizar que os arquivos foram encriptados 
     
    PS: a pasta do modulo bot ( modules -> game_bot ) não pode ser encriptado, remova ela antes deste processo.
     
    Um vídeo objetivo do conteúdo citado acima:
     
     

    4º Passo: Utilizando o auto update
     
    IMPORTANTE:
    Este processo precisa ser feito exatamente como demonstrado, qualquer link errado o sistema não irá funcionar.
     
    - Dentro da pasta API, abra o arquivo updater_advanced.php
     
    em $files_dir = "/var/www/otclient/files"; é a pasta onde conterá os arquivos do otclient para download, lembrando que o caminho precisa estar especificada desde a pasta inicial
    em $files_url = "http://otclient.ovh/files"; é o link que você pode utilizar o navegador para acessar a pasta "files" a mesma pasta do processo anterior.
    em $checksum_update_interval = 60; é o tempo em segundos, que o update levará para checkar se há alguma atualização ( não é necesário alterar )
     
    - Na sua vps, dentro da pasta do SITE, cria uma pasta chamada API e outra pasta dentro dela chamada FILES
    - Envie o arquivo updater_advanced.php para a pasta API
    - De permissão 777 para pasta e subpasta API
     
    * voltando aos arquivos do otclient * 
     
    - Abra o arquivo init.lua
     
    aconselho alterar o "APP_NAME = "otclientv8", pois é o nome da pasta que ficará salva nos arquivos temporários, isso evitará conflitos com versões já existe no pc
    altere o campo updater, colocando o endereço apontado para o arquivo updater_advanced.php enviado para o seu site nos passos anteriores.
     
    - Após as edições anteriores, salve o arquivo 
    - Compacte os arquivos data, layout, modules e init.lua, renomeando para data.zip ( obrigatoriamente precisa ser zip )
    - Exclua os arquivos zipados e os demais desnecessários para os jogadores.
     
    Atenção: o auto update só funcionará se os arquivos estiverem zipado conforme descrito.
     
    - Envie todos os arquivos para a pasta files em sua vps ( recomendo zipar para enviar, poupara processamento e tempo de envio )
    - Após enviar, extraia os arquivos NA VPS, os arquivos no pc devem continuar zipado
    - Atenção nesta parte, as pastas e arquivo data / layout / modules / init.lua necessáriamente precisam estar na mesma pasta do executáveis, conforme time 4:20 no vídeo que deixarei disponível no final.
     
    lembrando: o update só aceitará arquivos editados após o tempo estipulado em checksum_update_interval , se fizer edições antes deste tempo, o sistema não irá considerar
     
     
    Um vídeo objetivo do conteúdo citado acima:
     
     
     
  6. Gostei
    poko360 recebeu reputação de koyotestark em (Resolvido)Players comando !save   
    @ViitinG
    qual seria o !save para tfs 0.4?
  7. Gostei
    poko360 recebeu reputação de FeeTads em (Resolvido)exp potion de acordo com posição do rank   
    funcionou perfeitamente, mt obrigado man, Rep++
  8. Curtir
    poko360 deu reputação a FeeTads em (Resolvido)exp potion de acordo com posição do rank   
    tira o break desse segundo kkkkkk coloca assim:
    if NaoEstaCinco == 0 then if item.itemid == seuitem then doRemoveItem(item.uid,1) doPlayerSetExperienceRate(cid, expOutros) doSendMagicEffect(frompos,efeito2) setPlayerStorageValue(cid, limitedeuso, os.time() + 420) doPlayerSendTextMessage(cid,22,texto) return true end end  
  9. Curtir
    poko360 deu reputação a FeeTads em (Resolvido)exp potion de acordo com posição do rank   
    tenta trocar a função do top pra essa:

     
    function getNameTopServer() -- eu alteraria pra getNameTopCinco local i = 1 local query, name = db.getResult("SELECT `name`, `level` FROM `players` WHERE `group_id` < 2 ORDER BY `level` DESC LIMIT 5"), {} if (query:getID() ~= -1) then while(true) do name[i] = query:getDataString("name") i = i + 1 if not(query:next()) then break end end end return name end
    e troca a outra por essa, vou colocar pra printar, me manda o que aparece no console quando tenta usar
    local name = getNameTopServer() local exp = {5, 4, 3, 2, 1} local NaoEstaCinco = 0 local expOutros = 1 for j=1, 5 do if name[j] == getPlayerName(cid) and item.itemid == seuitem then doRemoveItem(item.uid,1) doPlayerSetExperienceRate(cid, exp[j]) doSendMagicEffect(frompos,efeito2) setPlayerStorageValue(cid, limitedeuso, os.time() + 420) doPlayerSendTextMessage(cid,22,texto) NaoEstaCinco = 1 break return true end end if NaoEstaCinco == 0 then if item.itemid == seuitem then doRemoveItem(item.uid,1) doPlayerSetExperienceRate(cid, expOutros) doSendMagicEffect(frompos,efeito2) setPlayerStorageValue(cid, limitedeuso, os.time() + 420) doPlayerSendTextMessage(cid,22,texto) end end  
  10. Curtir
    poko360 deu reputação a Kramer em Ping / Estabilidade / VPS   
    O Ping do Brasil é na faixa de 20 a 50.
    Em dallas é 150 a 250 é uma diferença gritante a latência que está alta mesmo.
  11. Gostei
    poko360 recebeu reputação de So volto tarde em Mostrar os segundos que faltam pro boss nascer   
    funcionou!, obg
  12. Curtir
    poko360 deu reputação a Sun em Mostrar os segundos que faltam pro boss nascer   
    local colorMsg = "orange" local tableBoss = { ["Amazon"] = {seconds = 10, newBoss = "Demon"} } local function timer(position, duration, color) for i = 0, (duration - 1) do addEvent(function() doSendAnimatedText(position, tostring(duration - i), color) end, i * 1000) end end function onKill(cid, target, damage, flags) if isPlayer(target) then return true end local boss = tableBoss[getCreatureName(target)] if not boss then return true end local position = getThingPos(target) doPlayerSendTextMessage(cid, MESSAGE_TYPES[colorMsg], "The boss will be born in " .. boss.seconds .. " seconds.") timer(position, boss.seconds, COLOR_RED) addEvent(doCreateMonster, boss.seconds * 1000, boss.newBoss, position) return true end
    creaturescript.xml
     
    <event type="kill" name="event nome" event="script" value="script name.lua"/> login.lua
    registerCreatureEvent(cid, "nome do evento")  
    @poko360 pelo que entendi foi isso, não entendi a necessidade de colocar verificação para não criar dois boss se você matou o anterior.
  13. Curtir
    poko360 deu reputação a So volto tarde em Mostrar os segundos que faltam pro boss nascer   
    você pode tirar o respawn e colocar um globalevent "onstartup" (se nao me falha a memoria) para que, quando o servidor iniciar, o monstro nascer em determinada posição
  14. Curtir
    poko360 deu reputação a Cerberus em (Resolvido)Summon que cura o Player   
    vai ser assim configurando monstro primeiro
     
    Tag do creatureevent
    <event type="cast" name="cura" event="script" value="Cura.lua"/> dentro do creatureevent o script com nome de Cura.lua
     
     
    agora vai no spelll na TAG.
     
    dentro da pasta Summon/Gnomo  cria o arquivo chamado Gnomo.lua e poe isso dentro
     
     
    pode marcar esse como melhor resposta ao terminar blz.... ai vai ajuda outros com a mesma duvida.
  15. Curtir
    poko360 deu reputação a LeoTK em Como faço pra meu summon dar exeta res?   
    ja fez o test com a skill original do exeta res porém colocar pro monstro usar?
     
    OBS: pra registrar no monstro esse tipo de ataque não é pelo nome exeta res e sim pelo nome Challenge ou para o nome que for usar
     
    Script
     
    XML
    <instant name="Challenge" words="exeta res" lvl="20" mana="30" prem="1" aggressive="0" exhaustion="1000" needlearn="0" event="script" value="support/challenge.lua"> <vocation id="0"/> </instant>  
  16. Curtir
    poko360 deu reputação a Sun em pvp enforced por creaturescript   
    Se quer deixar fixo deixe
    mLevel = 500
     
    Não se esqueça de deixar rep+ e colocar a resposta como solucao, para ajudar mais pessoas!
  17. Curtir
    poko360 deu reputação a Sun em pvp enforced por creaturescript   
    se você retirar a storage, todo player que morrer independente irá ganhar xp!
    só vc remover está linha
    if getPlayerStorageValue(target, 2310) == -1 then return true end  
  18. Curtir
    poko360 deu reputação a Sun em pvp enforced por creaturescript   
    function onDeath(cid, corpse, deathList) local position = getPlayerPosition(deathList[1]) local target = getCreatureTarget(deathList[1]) local mLevel = getPlayerLevel(cid) <= getPlayerLevel(target) and 500 or 5000 if getPlayerStorageValue(target, 2310) == -1 then return true end doSendAnimatedText(position, "+" .. tostring((getPlayerExperience(target) / mLevel) .. "exp", COLOR_RED) doCreatureAddHealth(deathList[1], 1000) doPlayerAddExperience(deathList[1], (getPlayerExperience(target) / mLevel)) return true end perdão a demora, está ai o script!
    não se esqueça de registrar no login.lua e colocar a tag no xml!
     
    <event type="death" name="PvpEnforced" event="script" value="death.lua"/> e em login.lua
    registerCreatureEvent(cid, "PvpEnforced")  
    lembrando!, não altere nada no script, você pode alterar apenas a storage
    tá ai o funcionamento!.

    @poko360
    lembrando se te ajudei rep+ e coloque como {Solução}
  19. Curtir
    poko360 deu reputação a 9k22 em Minha database nao aceita numero decimal   
    Seu value esta como INT. Troca ele para text e muda o collation como na imagem que mostrei.
    Creio que não vai bugar a não ser que você tenha algum script que puxe o valor da tabela retornando getDataInt
  20. Curtir
    poko360 recebeu reputação de Balkalima em Sword batendo por level   
    po meu patrão, os cara so manda script dificil

    toma ai meu xuxu, facinho facinho
     
    *em distance é o skill que voce quer botar (distance significa as skills axe,club,sword e bow)  (NAO USE PRA STAFF)
    *0.0023*2 <<< esse numero é um calculo que fiz, calculando skill vezes level vezes dano ( que é 0.0023*2) , vc pode mudar a seu gosto

    qualquer duvida so perguntar
  21. Gostei
    poko360 recebeu reputação de XboxStreet em [PEDIDO]Spell Drena Vida de Playerr   
    adicione a tag

    no script
  22. Curtir
    poko360 recebeu reputação de DouGlaS Mapper em (Resolvido)Ajuste em Script de DNT   
    function timeString(timeDiff)     local dateFormat = {         {"day", timeDiff / 60 / 60 / 24},         {"hour", timeDiff / 60 / 60 % 24},         {"minute", timeDiff / 60 % 60},         {"second", timeDiff % 60}     }     local out = {}     for k, t in ipairs(dateFormat) do         local v = math.floor(t[2])         if(v > 0) then             table.insert(out, (k < #dateFormat and (#out > 0 and ', ' or '') or ' and ') .. v .. ' ' .. t[1] .. (v ~= 1 and 's' or ''))         end     end     local ret = table.concat(out)     if ret:len() < 16 and ret:find("second") then         local a, b = ret:find(" and ")         ret = ret:sub(b+1)     end          return ret end function onSay(cid, words, param) if(words == "!donater") then if doPlayerRemoveItem(cid, 9663, 1) == TRUE then local days = 30 local daysvalue = days * 24 * 60 * 60 local storageplayer = getPlayerStorageValue(cid, 457382) local timenow = os.time() if getPlayerStorageValue(cid, 457382) - os.time() <= 0 then time = timenow + daysvalue else time = storageplayer + daysvalue end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. days .." dias de DNT no seu character.") setPlayerStorageValue(cid, 457382, time) local quantity = math.floor((getPlayerStorageValue(cid, 457382) - timenow)/(24 * 60 * 60)) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Voce tem ".. quantity .." dias de DNT restantes.") else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Voce precisa do item Donater Acess para usar este comando.") end elseif(words == "!donaterdays") then  local time = timeString(-(os.time() - getPlayerStorageValue(cid, 457382))) local timenow = os.time() local quantity = math.floor((getPlayerStorageValue(cid, 457382) - timenow)/(24 * 60 * 60)) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Voce tem ".. time .." de DNT no seu character.") elseif(words == "/adddonater") then local t = string.explode(param, ",") if not t[2] then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.") end local player = getPlayerByName(t[1]) local name = getCreatureName(player) local days = t[2] local pid = getPlayerByNameWildcard(t[1]) if(not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player with this name doesn\'t exist or is offline.") return TRUE end local daysvalue = days * 24 * 60 * 60 local storageplayer = getPlayerStorageValue(player, 457382) local timenow = os.time() local time = storageplayer <= 0 and (timenow + daysvalue) or (storageplayer + daysvalue) doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Foram adicionados "..days.." dias de DNT no seu character.") setPlayerStorageValue(player, 457382, time) local quantity = math.floor((getPlayerStorageValue(player, 457382) - timenow)/(24 * 60 * 60)) doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Voce tem "..quantity.." dias de DNT restantes.") end return true end testa ai, e me fala
  23. Obrigado
    poko360 recebeu reputação de Pifafa em (Resolvido)Client 8.60   
    só abrir o ObjectBuilder e jogar no seu cliente proprio
    female.obdmale.obd
  24. Curtir
    poko360 deu reputação a ikaroangelo21 em [Action] script de exp potion   
    Usa esse MOD, melhor.
    <?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Exp Potion" version="1.0" author="Vodkart" contact="DISCORD: vodkart#6090" enabled="yes"> <config name="exppotion"><![CDATA[ exp_info = {rate = 0.2, storage = {354870,354871,354872}, minutes = 30} -- rate 0.2 = 20% function convertTime(a) if(type(tonumber(a)) == "number" and a > 0) then if (a <= 3599) then local minute = math.floor(a/60) local second = a - (60 * minute) if(second == 0) then return ((minute)..((minute > 1) and " minutos" or " minuto")) else return ((minute ~= 0) and ((minute>1) and minute.." minutos e " or minute.." minuto e ").. ((second>1) and second.." segundos" or second.." segundo") or ((second>1) and second.." segundos" or second.. " segundo")) end else local hour = math.floor(a/3600) local minute = math.floor((a - (hour * 3600))/60) local second = (a - (3600 * hour) - (minute * 60)) if (minute == 0 and second > 0) then return (hour..((hour > 1) and " horas e " or " hora e "))..(second..((second > 1) and " segundos" or " segundo")) elseif (second == 0 and minute > 0) then return (hour..((hour > 1) and " horas e " or " hora e "))..(minute..((minute > 1) and " minutos" or " minuto")) elseif (second == 0 and minute == 0) then return (hour..((hour > 1) and " horas" or " hora")) end return (hour..((hour > 1) and " horas, " or " hora, "))..(minute..((minute > 1) and " minutos e " or " minuto e "))..(second..((second > 1) and " segundos" or " segundo")) end end end ]]></config> <event type="login" name="ExpPotionLogin" event="script"><![CDATA[ domodlib('exppotion') function onLogin(cid) if getPlayerStorageValue(cid, exp_info.storage[1]) - os.time() > 0 then registerCreatureEvent(cid, "ExpPotionThink") local rates = getPlayerRates(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você ainda tem "..convertTime(getPlayerStorageValue(cid, exp_info.storage[1]) - os.time()).." de Exp Potion.") doPlayerSetExperienceRate(cid, rates[SKILL__LEVEL]+exp_info.rate) setPlayerStorageValue(cid, exp_info.storage[3], 1) -- registro end return true end]]></event> <event type="think" name="ExpPotionThink" event="script"><![CDATA[ domodlib('exppotion') function onThink(cid, interval) if getPlayerStorageValue(cid, exp_info.storage[3]) > 0 and getPlayerStorageValue(cid, exp_info.storage[1]) - os.time() <= 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Sua Exp Potion acabou!") -- doPlayerSetExperienceRate(cid, getPlayerStorageValue(cid, exp_info.storage[2])) local rates = getPlayerRates(cid) doPlayerSetExperienceRate(cid, rates[SKILL__LEVEL]-exp_info.rate) setPlayerStorageValue(cid, exp_info.storage[3], 0) -- registro end return true end]]></event> <talkaction words="!exppotion;/exppotion;!exp;/exp" event="buffer"><![CDATA[ domodlib('exppotion') return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, getPlayerStorageValue(cid, exp_info.storage[1]) - os.time() <= 0 and "Você não possui Exp Potion ativa no momento." or "Você tem "..convertTime(getPlayerStorageValue(cid, exp_info.storage[1]) - os.time()).." de exp potion.")]]></talkaction> <action itemid="12698" event="script"><![CDATA[ domodlib('exppotion') function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerStorageValue(cid, exp_info.storage[1]) - os.time() > 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você não pode usar outra Exp Potion pois ainda possui uma ativa. Ainda restam: "..convertTime(getPlayerStorageValue(cid, exp_info.storage[1]) - os.time())..".") return true end local rates = getPlayerRates(cid) -- setPlayerStorageValue(cid, exp_info.storage[2], rates[SKILL__LEVEL]) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você ativou Exp potion por "..exp_info.minutes.." minutos! Durante este tempo, você receberá +20% exp de monstros. Para saber o tempo, digite: /exppotion") setPlayerStorageValue(cid, exp_info.storage[1], os.time()+exp_info.minutes*60) setPlayerStorageValue(cid, exp_info.storage[3], 1) -- registro doPlayerSetExperienceRate(cid, rates[SKILL__LEVEL]+exp_info.rate) registerCreatureEvent(cid, "ExpPotionThink") doRemoveItem(item.uid,1) return true end]]></action> </mod>  
  25. Curtir
    poko360 deu reputação a Vodkart em Tempo em Script   
    function timeString(timeDiff) local dateFormat = { {"day", timeDiff / 60 / 60 / 24}, {"hour", timeDiff / 60 / 60 % 24}, {"minute", timeDiff / 60 % 60}, {"second", timeDiff % 60} } local out = {} for k, t in ipairs(dateFormat) do local v = math.floor(t[2]) if(v > 0) then table.insert(out, (k < #dateFormat and (#out > 0 and ', ' or '') or ' and ') .. v .. ' ' .. t[1] .. (v ~= 1 and 's' or '')) end end local ret = table.concat(out) if ret:len() < 16 and ret:find("second") then local a, b = ret:find(" and ") ret = ret:sub(b+1) end return ret end function onSay(cid, words, param) if getPlayerStorageValue(cid,49015) - os.time() <= 0 then doPlayerSendTextMessage(cid, 23,"você não tem Exp Potion ativa.") return true end local time = timeString((os.time() - getPlayerStorageValue(cid, 49015))) return doPlayerSendTextMessage(cid, 23,"você ainda tem "..time.." de Exp Potion.") end  

Informação Importante

Confirmação de Termo