
Miragem
Membro
-
Registro em
-
Última visita
Histórico de Curtidas
-
Miragem recebeu reputação de gustavoadp em Ajuda com OTPANELVim 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.
-
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++
-
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.
-
Miragem deu reputação a Strung em Ajuda com OTPANELBom 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.
-
Miragem deu reputação a grafit em Ajuda com OTPANELConfigurar 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!
-
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 -
Miragem deu reputação a Mek Fiuchem em [DUVIDA] Como Posso dar look No Player e ver os fragsCrie 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
-
Miragem deu reputação a Hankro em (Resolvido)Script multiplo teleportEu 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?
-
Miragem deu reputação a Antipush em [AJUDA] Problema com RP no meu OTdata/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
-
Miragem deu reputação a xWhiteWolf em (Resolvido)Spell que faz chover arrowslocal 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.
-
Miragem deu reputação a
otmanagerem Ajuda com OTPANELOlá,
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
-
Miragem recebeu reputação de
otmanagerem Ajuda com OTPANELComprei 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!
-
Miragem deu reputação a xWhiteWolf em (Resolvido)[Erro] Script de !rankacerto 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/
-
Miragem deu reputação a Fir3element em (Resolvido)[BUG NPC] Npc não vende wands e RodsTroque a pasta npc/lib por essa:lib.rar
-
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:
-
Miragem deu reputação a LeoTK em Ajuda com OTPANELtava 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
-
Miragem deu reputação a Ackerzin em (Resolvido)[PEDIDO] TFS 0.4Consegui maninho, Seguinte maninho aqui esta a DISTRO A SOURCE E AS DLL, tmj
https://mega.nz/#!044igQBQ!Gki0k_wJC3rBTpYZiiivzATkq0m44APv2JIoKjyqTQo
-
Miragem deu reputação a Natanael Beckman em DEV C++ Compilando TFS no WindowsDEV 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 \/ -
Miragem deu reputação a Adriano SwaTT em (Resolvido)Ring Anti-ParalyzeBoa 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.
-
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
-
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 é:
-
Miragem deu reputação a LeoTK em Resetando Seu Server Sem Deletar Players ou Itemsolá 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 -
Miragem deu reputação a Bruno Carvalho em [TalkAction] Notice SystemVersã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)
-
Miragem deu reputação a gabirucola em Preciso de ajuda para editar armadurasvá 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.
-
Miragem deu reputação a Jamison Collins em Ajustar Spell para usar MLBem, 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.