Ir para conteúdo

Miragem

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    Miragem recebeu reputação de gustavoadp em Ajuda com OTPANEL   
    Vim reportar a experiencia com o OTPanel caso alguem se interesse.
    RESUMINDO: se vc tem um servidor pronto e quer só colocar online, diga adeus ao sonho!
    Eles oferecem suporte via ticket e email somente aos servidores que eles lhe dispoem.
    Neles estão as sources completas, servers pré prontos pra rodar sem nenhum trabalho, até "ajudam" a compilar oque eles oferecem, mas repetindo, caso queira suporte para oque vc ja possui, E-S-Q-U-E-Ç-A!
    Quanto ao ping e desempenho, é bem simples, você consegue rodar o server legal, sem problemas, não fica liso mas não afeta a jogabilidade.
    Pra não perder meu dinheiro eu adaptei todo o meu projeto a um dos servers que tinha disponivel, não ficou igual o original mas deu pra enganar, porem, você terá todo o trabalho de edição de arquivos e adaptação como se estivesse começando seu projeto do zero.
    Enfim, é ruim? Não se você quer tudo mastigado e sem nada original. Agora se quer apenas upar seu projeto pronto e desligar seu pc, então é ruim sim.
  2. Curtir
    Miragem deu reputação a Cjaker em Como baixar o tempo de duração da mensagem na tela?   
    O cliente só recebe a informação de que tem novas mensagens no Chat, mas ele mesmo manipula o intervalo de que vai sumir, portanto é necessário aplicar engenharia reversa e fazer com que todos baixem o cliente, a menos que use OTClient que lá tudo é possível com .lua e c++
  3. Curtir
    Miragem deu reputação a Heyron em Como baixar o tempo de duração da mensagem na tela?   
    Eu também sempre quis saber isso, mas não consegui encontrar a tag responsável pelo delay ou atraso das mensagens, vasculhando tanto a lib quanto nas sources não achei nada.
  4. Gostei
    Miragem deu reputação a Strung em Ajuda com OTPANEL   
    Bom eu uso a otpanel e recomendo, o que deixa a desejar é o suporte por ticket, mas se você quiser uma ajuda pra compilar seu servidor me manda uma pm aqui.
  5. Gostei
    Miragem deu reputação a grafit em Ajuda com OTPANEL   
    Configurar um servidor tanto em Linux como no Windows é muito simples, só necessita de atenção.

    Além do mais existe a comunidade do Tibia King pra auxiliar as pessoas.


    Esses sistemas aí pra ajudar a configurar servidor serve só pra pegar o dinheiro de quem é bobo, sem falar que usando isso você não aprende a configurar um servidor e vai sempre depender desse suporte "24h".

    Qualquer dúvida eu me disponho a ajudar, e o melhor, sem cobrar nada.

    Abraço!
  6. Gostei
    Miragem deu reputação a Jamison Collins em [Medio] CreatureScript ajuda na criação.   
    Aqui está, tente de novo :
    function getPlayerFrags(cid) local time = os.time() local times = {today = (time - 86400), week = (time - (7 * 86400))} local contents, result = {day = {}, week = {}, month = {}}, db.getResult("SELECT `pd`.`date`, `pd`.`level`, `p`.`name` FROM `player_killers` pk LEFT JOIN `killers` k ON `pk`.`kill_id` = `k`.`id` LEFT JOIN `player_deaths` pd ON `k`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `pk`.`player_id` = " .. getPlayerGUID(cid) .. " AND `k`.`unjustified` = 1 AND `pd`.`date` >= " .. (time - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC") if(result:getID() ~= -1) then repeat local content = {date = result:getDataInt("date")} if(content.date > times.today) then table.insert(contents.day, content) elseif(content.date > times.week) then table.insert(contents.week, content) else table.insert(contents.month, content) end until not result:next() result:free() end local size = { day = table.maxn(contents.day), week = table.maxn(contents.week), month = table.maxn(contents.month) } return size.day + size.week + size.month end function onLogin(cid) registerCreatureEvent(cid, "fraglook") return true end function onLook(cid, thing, position, lookDistance) if isPlayer(thing.uid) and thing.uid ~= cid then doPlayerSetSpecialDescription(thing.uid,'[Frags: '..getPlayerFrags(thing.uid)..'] ['..(isPremium(thing.uid) == true and "VIP" or "FREE")..']') return true elseif thing.uid == cid then doPlayerSetSpecialDescription(cid,'[Frags: '..getPlayerFrags(cid)..'] ['..(isPremium(cid) == true and "VIP" or "FREE")..']') local string = 'You see yourself.' if getPlayerFlagValue(cid, PLAYERFLAG_SHOWGROUPINSTEADOFVOCATION) then string = string..' You are '.. getPlayerGroupName(cid) ..'.' elseif getPlayerVocation(cid) ~= 0 then string = string..' You are '.. getPlayerVocationName(cid) ..'.' else string = string..' You have no vocation.' end string = string..getPlayerSpecialDescription(cid)..'' if getPlayerGuildId(cid) > 0 then string = string..' You are ' .. (getPlayerGuildRank(cid) == '' and 'a member' or getPlayerGuildRank(cid)) ..' of the '.. getPlayerGuildName(cid) string = getPlayerGuildNick(cid) ~= '' and string..' ('.. getPlayerGuildNick(cid) ..').' or string..'.' end if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEECREATUREDETAILS) then string = string..'nHealth: ['.. getCreatureHealth(cid) ..' / '.. getCreatureMaxHealth(cid) ..'], Mana: ['.. getCreatureMana(cid) ..' / '.. getCreatureMaxMana(cid) ..'].' string = string..'nIP: '.. doConvertIntegerToIp(getPlayerIp(cid)) ..'.' end if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEEPOSITION) then string = string..'nPosition: [X:'.. position.x..'] [Y:'.. position.y..'] [Z:'.. position.z..'].' end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string) return false end return true end
  7. Gostei
    Miragem deu reputação a Mek Fiuchem em [DUVIDA] Como Posso dar look No Player e ver os frags   
    Crie na pasta Data/Creaturescripts/script o arquivo fraglook.lua
    e cole isso

    function getPlayerFrags(cid) local time = os.time() local times = {today = (time - 86400), week = (time - (7 * 86400))} local contents, result = {day = {}, week = {}, month = {}}, db.getResult("SELECT `pd`.`date`, `pd`.`level`, `p`.`name` FROM `player_killers` pk LEFT JOIN `killers` k ON `pk`.`kill_id` = `k`.`id` LEFT JOIN `player_deaths` pd ON `k`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `pk`.`player_id` = " .. getPlayerGUID(cid) .. " AND `k`.`unjustified` = 1 AND `pd`.`date` >= " .. (time - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC") if(result:getID() ~= -1) then repeat local content = {date = result:getDataInt("date")} if(content.date > times.today) then table.insert(contents.day, content) elseif(content.date > times.week) then table.insert(contents.week, content) else table.insert(contents.month, content) end until not result:next() result:free() end local size = { day = table.maxn(contents.day), week = table.maxn(contents.week), month = table.maxn(contents.month) } return size.day + size.week + size.month end function onLogin(cid) registerCreatureEvent(cid, "fraglook") return true end function onLook(cid, thing, position, lookDistance) if isPlayer(thing.uid) and thing.uid ~= cid then doPlayerSetSpecialDescription(thing.uid,'[Frags: '..getPlayerFrags(thing.uid)..']') return true elseif thing.uid == cid then doPlayerSetSpecialDescription(cid,'[Frags: '..getPlayerFrags(cid)..']') local string = 'You see yourself.' if getPlayerFlagValue(cid, PLAYERFLAG_SHOWGROUPINSTEADOFVOCATION) then string = string..' You are '.. getPlayerGroupName(cid) ..'.' elseif getPlayerVocation(cid) ~= 0 then string = string..' You are '.. getPlayerVocationName(cid) ..'.' else string = string..' You have no vocation.' end string = string..getPlayerSpecialDescription(cid)..'' if getPlayerNameByGUID(getPlayerPartner(cid), false, false) ~= nil then string = string..' You are '.. (getPlayerSex(cid) == 0 and 'wife' or 'husband') ..' of '.. getPlayerNameByGUID(getPlayerPartner(cid)) ..'.' end if getPlayerGuildId(cid) > 0 then string = string..' You are ' .. (getPlayerGuildRank(cid) == '' and 'a member' or getPlayerGuildRank(cid)) ..' of the '.. getPlayerGuildName(cid) string = getPlayerGuildNick(cid) ~= '' and string..' ('.. getPlayerGuildNick(cid) ..').' or string..'.' end if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEECREATUREDETAILS) then string = string..'nHealth: ['.. getCreatureHealth(cid) ..' / '.. getCreatureMaxHealth(cid) ..'], Mana: ['.. getCreatureMana(cid) ..' / '.. getCreatureMaxMana(cid) ..'].' string = string..'nIP: '.. doConvertIntegerToIp(getPlayerIp(cid)) ..'.' end if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEEPOSITION) then string = string..'nPosition: [X:'.. position.x..'] [Y:'.. position.y..'] [Z:'.. position.z..'].' end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string) return false end return true end Agora no Data/Creaturescripts/creaturescripts.xml adicione essas tags: <event type="login" name="fraglook_register" event="script" value="fraglook.lua"/> <event type="look" name="fraglook" event="script" value="fraglook.lua"/>


    Ajudei ? Rep+ Please
  8. Gostei
    Miragem deu reputação a Hankro em (Resolvido)Script multiplo teleport   
    Eu coloquei de forma alternada, se ele foi teleportado para a posição 1, próxima vez que ele entrar será teleportado para a 2, sempre alternando entre as duas.
    Espero que eu tenha entendido certo haha
     
    Na pasta movements/scripts crie uma cópia de algum arquivo.lua e renomeie para: tpmulti
    Dentro dele, apague seu conteúdo e substitua por:
     
    em movements.xml adicione a linha:


    Para adicionar este teleport, basta adicionar um magic field no seu mapa com o actionid "10088"




    EDIT: Desculpe, agora que li que você pôs aleatoriamente ali, você poderia ser mais claro?
    Você quer que cada vez que o player passe, seja selecionado aleatoriamente um local entre duas posições diferentes?
    Posições predefinidas ou aleatórias também?
  9. Gostei
    Miragem deu reputação a Antipush em [AJUDA] Problema com RP no meu OT   
    data/Actions/liquids/great_spirit.lua
    em xml/vocations.lua 
    troca royal paladin por 
    se for so com a arma vai em weapons e adicione no id da arma 
     
  10. Gostei
    Miragem deu reputação a xWhiteWolf em (Resolvido)Spell que faz chover arrows   
    local waves = 8 --- numero de vezes que vão cair as flechas local water = {490, 491, 492, 493, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625} local combat = createCombatObject() local meteor = createCombatObject() setCombatParam(meteor, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(meteor, COMBAT_PARAM_USECHARGES, TRUE) setCombatParam(meteor, COMBAT_PARAM_EFFECT, 9) setCombatFormula(meteor, COMBAT_FORMULA_LEVELMAGIC, -30, -50, -40, -55) local meteor_water = createCombatObject() setCombatParam(meteor_water, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(meteor_water, COMBAT_PARAM_USECHARGES, TRUE) setCombatParam(meteor_water, COMBAT_PARAM_EFFECT, 1) setCombatFormula(meteor, COMBAT_FORMULA_LEVELMAGIC, -30, -50, -40, -55) combat_arr = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 3, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} } local combat_area = createCombatArea(combat_arr) setCombatArea(combat, combat_area) local function meteorCast(p) doCombat(p.cid, p.combat, positionToVariant(p.pos)) end local function stunEffect(cid) doSendMagicEffect(getThingPos(cid), CONST_ME_STUN) end function onTargetTile(cid, pos) if (math.random(0, 6) == 6) then local ground = getThingfromPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}) if (isInArray(water, ground.itemid) == TRUE) then local newpos = {x = pos.x - 7, y = pos.y - 6, z = pos.z} doSendDistanceShoot(newpos, pos, CONST_ANI_HOLY) addEvent(meteorCast, 200, {cid = cid, pos = pos, combat = meteor_water}) else local newpos = {x = pos.x - 7, y = pos.y - 6, z = pos.z} doSendDistanceShoot(newpos, pos, CONST_ANI_ARROW) addEvent(meteorCast, 200, {cid = cid,pos = pos, combat = meteor}) end end end setCombatCallback(combat, CALLBACK_PARAM_TARGETTILE, "onTargetTile") function onCastSpell(cid, var) for i = 0, waves do addEvent(function() if isCreature(cid) then doCombat(cid, combat, var) end end, 200 * i) end return true end <instant name="Supreme Paladin" words="exevo mas gran con" lvl="350" mana="1500" prem="1" needtarget="1" exhaustion="2000" needlearn="0" event="script" value="especiais/paladin.lua"> <vocation id="7"/> </instant> Prontinho, editei e agr tá igualzinho vc quer.
  11. Gostei
    Miragem deu reputação a otmanager em Ajuda com OTPANEL   
    Olá,
     
    No caso do OTManager nós fornecemos um tutorial completo passo a passo de como executar esse procedimento, nosso painel é muito mais completo e bonito
  12. Gostei
    Miragem recebeu reputação de otmanager em Ajuda com OTPANEL   
    Comprei um dedicado basico da OTPANEL e estou com um problema, achei que só precisaria upar meu servidor nos servidores deles e dar um "play", mas não deu certo, pelo que entendi, meu server tem que se adequar aos padrões deles, sei la. 
    Alguem que use OTPANEL ou tenha um pouco de conhecimento pode me ajudar a colocar meu servidor on?
    Obrigado desde ja!
  13. Gostei
    Miragem deu reputação a xWhiteWolf em (Resolvido)[Erro] Script de !rank   
    acerto miseravi, sua TFS não foi compilada com a função utilizada no script, use esse sistema aqui que é via db.
    http://www.tibiaking.com/forum/topic/51430-suporte-sistema-de-rank-sem-gods/
  14. Gostei
    Miragem deu reputação a Fir3element em (Resolvido)[BUG NPC] Npc não vende wands e Rods   
    Troque a pasta npc/lib por essa:lib.rar
  15. Gostei
    Miragem deu reputação a Qwizer em Erro Stack e Bueiros.   
    <!-- Teleport (stairs, ladders) -->
    <action itemid="430;1369;1386;3678;5543;8580;8599;10035;13010" event="script" value="other/teleport.lua"/>

    teleport.lua 
     
       
    depois em actions/lib/actions.lua troque ou adicione por:
     
     
  16. Gostei
    Miragem deu reputação a LeoTK em Ajuda com OTPANEL   
    tava pensando em contratar o serviços deles por causa disso e gostaria de saber sobre isso também se alguém puder dar uma força agradeço
  17. Gostei
    Miragem deu reputação a Ackerzin em (Resolvido)[PEDIDO] TFS 0.4   
    Consegui maninho, Seguinte maninho aqui esta a DISTRO A SOURCE E AS DLL, tmj
     
    https://mega.nz/#!044igQBQ!Gki0k_wJC3rBTpYZiiivzATkq0m44APv2JIoKjyqTQo

  18. Gostei
    Miragem deu reputação a Natanael Beckman em DEV C++ Compilando TFS no Windows   
    DEV C++,  aprenda a compila uma source TFS!
     
    Downloads(Baixe de acordo as configurações do seu windows):
    DEV C++ CONFIGURADO PARA 32BITS
    DEV C++ CONFIGURADO PARA 64BITS
    REV 3884 TFS 0.4
     
    Certo, feitos os downloads, extrai DEV C++ no Disco C e REV 3884 em Documentos.
    ======================================
    Abra o DEV C++:
    ======================================

    ======================================
    Abra a Source:
    ======================================

    ======================================
    Localize a pasta da Source e abra o arquivo TheForgottenServer.dev, Documentos> trunk.r3884> dev-cpp> TheForgottenServer.dev:
    ======================================

    =============================================================

    ======================================
    Aguarde carregar todos os arquivos:
    ======================================

    ======================================
    Vamos adicionar o parâmetro -D__CONSOLE__ no teclado digita ALT + P, clique em parameters e adicione o parâmetro... Feito? clique em OK:
    ======================================

    ======================================
    Vamos compilar Source, no teclado digite CTRL+F9 e aguarde finalizar o processo:
    ======================================

    ======================================
    Se der tudo certo em Log vai estar como mostra a imagem abaixo:
    ======================================

    ======================================
    Verifique na pasta Documentos> trunk.r3884> dev-cpp você vai encontrar o arquivo TheForgottenServer.exe e pronto meu parabéns você compilou!
    ======================================

    ===========================================
    Só isso galera tutorial rápido resumido e útil!
    Créditos Natanael Beckman!    
    ===========================================     
     
    Caso você adquira uma source com apenas os arquivos .cpp e .h e não sabe como compilar o projeto, abaixo vamos explicar:
    Na pasta onde está localizado os arquivos .cpp e .h crie uma pasta chamada dev-cpp, e dentro dela adicione uma imagem icone.
     

     
    Abra o DEV-C++, clique em  File> New> Project:
     

     
    Logo em seguida selecione Empty Project, em name terá o nome Project1 altere utilize o nome quer quiser, após isso clique em OK e em seguida selecione a pasta dev-cpp que criamos:
     

     
    Agora selecione a opção Win32GUI caso use source OTX ou TFS selecione Win32Console ao lado << Browse selecione a imagem do icone que está na pasta Dev-Cpp.
     

     
    No mesmo menu na aba Parameters em C++ compiler adicione os seguintes parâmetros:
    -D__ENABLE_SERVER_DIAGNOSTIC__ -D__ROOT_PERMISSION__ -D__GROUND_CACHE__ -D__USE_SQLITE__ -D__USE_MYSQL__ -D__CONSOLE__ -D__WAR_SYSTEM__ E em Linker adicione as seguintes libs:
    -lboost_filesystem -lboost_thread -lboost_system -lboost_regex -lsqlite3 -lwsock32 -llua5.1 -lws2_32 -leay32 -lmysql -lxml2 -lgmp -lz -s   No mesmo Menu na aba Build Option escreva na segunda coluna horizontal escreva Obj e dê OK.     Na lateral terá o nome do seu projeto o meu no caso é The Forgotten Server, clique com o botão direito do mouse em cima do nome e clique na opção Add Project:      Selecione na pasta da sua source todos os arquivos .cpp e .h após isso salva o projeto e já pode compilar CTRL+F9:         OpenSSL 0.9.8   1º baixe http://devpaks.org/details.php?devpak=73 2° abra Dev-Cpp > Tools > Packager Manager > Install > Seleciona o arquivo baixado e instala, fecha abre e testa!
      Clica aqui \/
  19. Gostei
    Miragem deu reputação a Adriano SwaTT em (Resolvido)Ring Anti-Paralyze   
    Boa noite, após alguns testes na distro Alissow 0.3.6...
    Segue abaixo:
     
    Primeiramente, precisaremos adicionar um pequeno detalhe à runa paralyze.
    Em spells/scripts/support/paralyze rune.lua, adicione as funções em negrito e ficará como abaixo:



     
    Agora em CreatureScripts.xml, adicione a tag abaixo:

    <event type="combat" name="RingParalyze" event="script" value="ring_paralyze.lua" />  
    Agora o script ring_paralyze.lua terá o script abaixo:



     
    Agora em login.lua, adicione a tag abaixo junto com as do gênero:

    registerCreatureEvent(cid, "RingParalyze")  
    Boa sorte.
    Aguardo retorno se foi útil.
  20. Gostei
    Miragem deu reputação a tirso em Baú de Itens por classe.   
    Opa! 
    Consegui o sistema de itens por vocação...
     
    Crie um arquivo .Lua em Actions com...
    local vocs = { [1] = {{2190,1},{2175,1},{8820,1},{8819,1}}, [2] = {{2182,1},{2175,1}, {8820,1}, {8819,1}}, [3] = {{2410,1},{2530,1}, {2480,1}, {2464,1}}, [4] = {{2409,1},{2530,1},{2480,1},{2464,1}} } local storage = 548747 function onUse(cid, item, frompos, item2, topos) local var = vocs[getPlayerVocation(cid)] if not var then return true end if getPlayerStorageValue(cid, storage) > 0 then doPlayerSendTextMessage(cid,22,"It is empty.") return true end local backpack = doPlayerAddItem(cid, 1999, 1) -- backpackID for _, i_i in ipairs(var) do local item, amount = i_i[1],i_i[2] if isItemStackable(item) or amount == 1 then doAddContainerItem(backpack, item, amount) else for i = 1, amount do doAddContainerItem(backpack, item, 1) end end end setPlayerStorageValue(cid, storage, 1) doPlayerSendTextMessage(cid,22,"You have found a set from your vocation.") return true end [1]... São os IDs das classes
    {{2190,1},{2175,1},{8820,1},{8819,1}}, O item que irá dar para a classe.
     
    Agora em Actions XML adicione...
    Depois disso é só adicionar o ID no baú (Pelo RME) que você escolheu!
    Bem simples e funcional
    Fiz na versão 8.6 TFS 0.4!
     
    Créditos 100% do @Vodkart (Até onde eu sei! )
    Postei só pra ajudar o amigo ali...
    Espero que dê certo ai também! 
    Valeuu
     
  21. Gostei
    Miragem deu reputação a xWhiteWolf em Broadcast System 100%   
    Fala galera do TK, hoje vim trazer um script que eu já fiz a algum tempo prum cara no suporte, é nada mais e nada menos doque um sistema de broadcast onde players maiores que um determinado level pagam um determinado valor de gp's para soltarem uma mensagem para o server todo. 

    talkactions\scripts\broadcast22.lua:
    local config = { storage = 19400, -- storage em que será salvo o tempo cor = "advance", -- de acordo com o constant.lua da lib tempo = 2, -- em minutos price = 1000, -- preço pra usar o broadcast level = 100 -- level pra poder utilizar o broadcast } function onSay(cid, words, param, channel) if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return true end if getPlayerLevel(cid) >= config.level then if getPlayerStorageValue(cid, config.storage) - os.time() <= 0 then if doPlayerRemoveMoney(cid, config.price) then setPlayerStorageValue(cid, config.storage, os.time() + (config.tempo*60)) doBroadcastMessage("[BROADCAST] "..getCreatureName(cid)..": "..param.."", config.cor) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "You have successfully sent a broadcast, now you'll have to wait " ..config.tempo.. " minute(s) until you broadcast again.") return false else doPlayerSendCancel(cid, "You don't have " ..config.price.. " gp's for broadcasting.") return false end else doPlayerSendCancel(cid, "You have to wait " ..(getPlayerStorageValue(cid, config.storage) - os.time()).. " seconds until you can broadcast again.") return false end else doPlayerSendCancel(cid, "You have to be level " ..config.level.. " or more in order to use broadcast.") end end e em talkactions.xml adicione essa linha:
    <talkaction log="yes" words="/all" event="script" value="broadcast22.lua"/> Da forma que tá configurado os players nv 100 ou mais poderão digitar /all Mensagem e por apenas 1000 gp's eles falarão a mensagem para o server inteiro, feito isso ele terá que esperar 2 minutos para mandar outro broadcast. Se você quiser mudar a cor é só ir no constant.lib e procurar algo parecido com isso daqui: MESSAGE_TYPES = { ["advance"] = MESSAGE_EVENT_ADVANCE, ["event"] = MESSAGE_EVENT_DEFAULT, ["white"] = MESSAGE_EVENT_DEFAULT, ["orange"] = MESSAGE_STATUS_CONSOLE_ORANGE, ["info"] = MESSAGE_INFO_DESCR, ["green"] = MESSAGE_INFO_DESCR, ["small"] = MESSAGE_STATUS_SMALL, ["blue"] = MESSAGE_STATUS_CONSOLE_BLUE, ["red"] = MESSAGE_STATUS_CONSOLE_RED, ["warning"] = MESSAGE_STATUS_WARNING, ["status"] = MESSAGE_STATUS_DEFAULT } Uma imagem pra vcs verem como é:



  22. Gostei
    Miragem deu reputação a LeoTK em Resetando Seu Server Sem Deletar Players ou Items   
    olá galera do tibiaking esse é meu primeiro topico então desculpem erros de português bom vamos lá
     
    essa função é para server em sqlite que querem resetar sem deletar players ou items. bom primeiro vou falar que essa função pode ser editada por você mais darei algumas opções
     
    vejá abaixo algumas funções
     

      como editar mais tags siga abaixo \/  

      é isso espero que tenha ajudado   alguma dúvida comente para resolver-mos juntos   obs¹: para executar as funções na sqlite procure na parte superior open SQL query editor   coloque as funções nele e aperte f9
  23. Gostei
    Miragem deu reputação a Bruno Carvalho em [TalkAction] Notice System   
    Versão do Script: V0.1 By Comedinha
    Versão testada: 9.4+ (pode funcionar em versões anteriores).
    Descrição: Quem não se lembra do velho Notice System feito pelo esk? Aquele que toda a noticia nova você tinha que abrir o txt e escrever nele as novidades? Agora não precisa mais disso.
    Nota: O script no momento está mais parecido com um ticker system do que um notice system.

    Novas Funções:
    - Adicionar noticias em tempo real para todo o servidor com a data.
    - Limpar a janela de noticias em tempo real para todo o servidor.

    TAG:


    <talkaction words="!notice;!news;/notice;/news" event="script" value="notice.lua"/>
    [/code] [i][b]Script:[/b][/i] [code]
    local config = {
    add = {"add", "adicionar", "new"},
    clean = {"clean", "limpar"}
    }

    function onSay(cid, words, param, channel)
    local t = string.explode(param, ",")
    if(table.isStrIn(param, config.add)) then
    if getPlayerGroupId (cid) >= 5 then
    file = io.open('data/txt/notice.txt','a+')
    if(param == '') then
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.")
    return true
    end
    notice = file:write("\n"..getPlayerName(cid).." at " .. os.date("%d %B %Y - %X ", os.time()) .."\n"..t[2].."\n")
    file:close()
    return true
    end
    elseif(table.isStrIn(param, config.clean)) then
    if getPlayerGroupId (cid) >= 5 then
    file = io.open('data/txt/notice.txt','w')
    if(param == '') then
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.")
    return true
    end
    notice = file:write("Server News\n")
    file:close()
    return true
    end
    return false
    end
    file = io.open('data/txt/notice.txt','r')
    notice = file:read(-1)
    doShowTextDialog(cid, 7528, notice)
    file:close()
    return true
    end


    Aviso:
    Na pasta data crie uma pasta chamada txt e dentro dela um arquivo chamado notice.txt.
    Após a instalação do script dentro do servidor digite /notice clean para não ter problemas futuros.

    Como usar:
    Para ver as noticias digite /notice
    Para adiconar noticias digite /notice add, (texto)
    Para limpar a janela de noticias digite /notice clean

    Créditos:
    Esk
    Comedinha (Bruno Carvalho)
  24. Gostei
    Miragem deu reputação a gabirucola em Preciso de ajuda para editar armaduras   
    vá em moviments.xml
     
    de um Ctrl+f e procure pelo ID do Item desejado "vamos usar como exemplo a Magic Plate Armor"
     
    você encontrará ela desta forma, basta apenas colocar as novas vocations que podem usar a armor
    <movement type="Equip" itemid="2472" slot="armor" event="function" value="onEquipItem">
            <vocation name="Knight"/>
            <vocation name="Paladin"/>
            <vocation name="Elite Knight"/>
            <vocation name="Royal Paladin"/>
        </movement>
     
    Obs:
    caso queira que todas vocações possam usar a Magic Plate armor, basta epenas apagar ela e pronto.
  25. Gostei
    Miragem deu reputação a Jamison Collins em Ajustar Spell para usar ML   
    Bem, eu não consegui entender muito bem o que essa spell faz analisando o script (não sei mexer muito bem com spells)
    Mas eu tenho uma formula mais fácil de calcular o dano desejado, como essa seguinte spell :
    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA) local area = createCombatArea(AREA_CROSS5X5) setCombatArea(combat, area) function onGetFormulaValues(cid, level, maglevel) min = -((level*0.2) + (maglevel*7)) max = -((level*0.2) + (maglevel*14)) return min, max end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") function onCastSpell(cid, var) return doCombat(cid, combat, var) end Bem, como você pode ver, o dano é variado entre um minimo e um máximo, exemplo : 
    min = -((level*0.2) + (maglevel*7)) max = -((level*0.2) + (maglevel*14)) Bem, o dano minimo tem uma formula definida, mas também pode ser alterada por você...
    De acordo com a formula minima acima, a cada level que o player tem, o dano é aumentado em 0.2, ou seja, a cada 5 levels, o dano da magia aumenta em 1, e a cada magic level que o player tiver o dano aumenta em 7. No final das contas o dano calculado pelo level é somado ao dano calculado pelo magic level. Serve a mesma coisa para o dano máximo e assim um minimo e um máximo é definido, e na hora de usar a spell o valor do dano será variado entre os dois, lembrando que há monstros e players que tem defesa com certo elemento.
     
    Eu postei essa spell (Hells core - exevo gran mas flam) para que você pegue-a de molde, e recontrua a sua spell do jeito que você quiser. 
    Desculpa de eu não conseguir te ajudar mais do que isso.

Informação Importante

Confirmação de Termo