Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 07/03/15 em %
-
catch chanel
Bruno e um outro reagiu a FlamesAdmin por uma questão
Tente essa tag: <channel id="5" name="Catch-Channel" level="2" muted="120" conditionId="2" conditionMessage="You may only place one offer in two minutes."> <vocation id="1"/> </channel>2 pontos -
O Melhor Baiak 8.6 com mapa de cara nova, totalmente reformulado! Este é um projeto antigo meu que venho trazer agora para o xtibia, todo montado e configurado por min, livre de bugs e realmente muito inovador, espero que gostem. Mapa com cara totalmente Nova! War Of Emperium Event! DotA Event! Castle 24 Horas Event! 50+ Quests todas novas! 5+ Cidades! 3 Vips sendo 2 free e 1 Donate! Sistemas de brincadeiras! Totalmente Sem Bugs! Novos Bosses e Novos Teleportes! Pronto para Rodar em Linux e Windows sem bugs, porem esta com as sources windows. - Com TFS 0.4 REV 3884 - O MELHOR PARA WINDOWS Senha do God: god/god Templo: Cidade: Teleports e Quests: Download/Scan: http://www.4shared.com/zip/1QlvsWJVce/Hatera_Baiak.html https://www.virustotal.com/pt/url/71a15da95cb759baa7204553c711a487d4806fb54a14c3e0c9645bf235722eb3/analysis/1435225611/ Créditos:1 ponto
-
1 ponto
-
Mapa Wodbo 8.0 Compativel Wodbo By Crazzymaster
MarfTxp reagiu a proview110 por um tópico no fórum
Eae galera, bom esse é um dos meus primeiros tópicos que faço, eu fiz um mapa de wodbo por que eu ajudo o crazzy eo bianco, ai descidi postar esse que eu fiz e vou fasendo mapas e postando pra vocês de vez enquando se tiver tempo. Bom vou postar algumas screnshots. Nessa parte você vai no site e no config.lua na pasta acc do site, você edita onde o player vai nasce. Bota essas cordeenadas x:300 y:47 z:5 Eo player vai nascer aqui: Agora uma SS do Yama, o npc que te manda pra cidade: AVISO: ESTAS FOTOS FORAM TIRADAS DO WODBO MAP EDITOR OU SEJA NO JOGO O MAPA NAO VAI FICAR ASSIM PODEM FICAR TRANQUILOS, VAI FICAR TUDO NORMAL E BONITO Centro (templo) Mini Arena na parte de cima da cidade: Bom galera é isso espero que gostem, abaixo ta o download do mapa lembrando que é compativel com wodbo by crazzymaster. Download. 2Shared Scan. VirusTotal Obrigado por visitar meu tópico, se gostou da um REP+ ai custa nada nao. Mapa By Striker (powerbrass)1 ponto -
Fruit Picking Introdução: é um sistema simples, consiste em você pode colher a fruta da arvore e ela crescer depois de um tempo de novo. Instalar o script: em action/script crie: FruitHarvesting.lua adicione: -- Do not remove the credits -- -- [ACTION] Fruit Harvesting -- -- Developed by Rigby -- -- Especially for the Xtibia.com -- local config = { -- [ID_DA_ARVORE] = {FRUTA, QUANTIDADE{minimo, maximo}, ID_DA_ARVORE_SEM_FRUTO, TEMPO_PARA_ÀRVORE_FICA_COM_FRUTO} [5157] = {fruit = 5097, quantity = {0,1}, treeWithoutFruit = 5156, timeToGrow = 5}, [4006] = {fruit = 2675, quantity = {0,3}, treeWithoutFruit = 4008, timeToGrow = 20}, [5094] = {fruit = 2676, quantity = {3,6}, treeWithoutFruit = 5092, timeToGrow = 30}, [5096] = {fruit = 2678, quantity = {2,7}, treeWithoutFruit = 2726, timeToGrow = 70}, } function onUse(cid, item, fromPosition, itemEx, toPosition) for i, k in pairs(config) do if (isInArray(i, item.itemid) == true) then random = math.random(k.quantity[1],k.quantity[2]) doTransformItem(item.uid, k.treeWithoutFruit, 1) doPlayerAddItem(cid,k.fruit,random) addEvent(function() doTransformItem(getThingFromPos(toPosition).uid, i) end, k.timeToGrow * 1000) if random > 0 then doPlayerSendTextMessage(cid,27,"Você pego "..random.." "..getItemNameById(k.fruit).."!") else doPlayerSendTextMessage(cid,27,"Àrvore não deu nenhum fruto!") end end end return true end em action/action.xml adicione a tag: <action itemid="5157;4006;5094;5096" event="script" value="FruitHarvesting.lua"/> Se você adicionar mais arvore não esqueça de adiciona o id na tag também.1 ponto
-
VERSÃO 8.6 Ta cansado dos OT de war porco de hoje? Esse é o OT de war estilo das antigas War estilo Retro, mapa do Mega-War/ Shadowar editado Danos e Spells de 7.6 > diversos mapas (rook, venore, shadowar, edron, etc) > formulas, magias antigas (mort hur, mas pox, etc) > items com atributos antigos > knight de UH, mage de burst arrow Download: http://www.speedysha...ldTibiaWar.html Scan: https://www.virustot...sis/1411073909/ Script Change Map http://www.speedysha... lugar das city1 ponto
-
Test Server aberto a todos!
Kluivert reagiu a Piabeta Kun por um tópico no fórum
Finalmente os servidores de testes estão abertos para todos os jogadores que logaram durante os últimos 6 meses! Não deixe de verificar no site oficial do Test Server os detalhes do próximo update e fazer o download do client de testes! Lembre-se: para acessar, você deverá usar seu login do dia 22 de Junho de 2015.1 ponto -
ajuda com script de monstro!
VitinhoMapp reagiu a RigBy por uma questão
Pronto ai <?xml version="1.0" encoding="UTF-8"?> <monster name="King minotaur" nameDescription="a king minotaur" race="blood" experience="60000" speed="2000" manacost="330"> <health now="200000" max="200000"/> <look type="25" head="20" body="30" legs="40" feet="50" corpse="5969"/> <targetchange interval="2000" chance="0"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="0"/> <flag attackable="1"/> <flag hostile="1"/> <flag illusionable="0"/> <flag convinceable="0"/> <flag pushable="0"/> <flag canpushitems="0"/> <flag canpushcreatures="0"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="0"/> </flags> <attacks> <attack name="melee" interval="2000" skill="330" attack="300"/> <attack name="manadrain" interval="3000" chance="18" radius="12" target="0" min="-1000" max="-1800"/> <attribute key="areaEffect" value="bluebubble"/> <attack name="physical" interval="6000" chance="100" range="4" target="1" radius="4" min="-800" max="-1030"/> <attribute key="areaEffect" value="teleport"/> </attacks> <defenses armor="50" defense="50"/> <elements> <element icePercent="20"/> <element holyPercent="20"/> <element deathPercent="30"/> </elements> <immunities> <immunity physical="0"/> <immunity energy="0"/> <immunity fire="0"/> <immunity poison="0"/> <immunity lifedrain="0"/> <immunity paralyze="0"/> <immunity outfit="0"/> <immunity drunk="0"/> <immunity invisible="0"/> </immunities> <voices interval="4000" chance="10"> <voice sentence="I am the king"/> <voice sentence="MUAHAHAHA!"/> <voice sentence="You'll die!!"/> <voice sentence="kaplar!"/> </voices> <loot> <item id="2160" countmax="30" chance="23000"/><!-- gold coin --> <item id="5878" countmax="3" chance="3000"/><!-- minoleath --> <item id="5804" chance="1600"/><!-- ring --> <item id="11238" chance="7000"><!-- bag --> <inside> </inside> </item> </loot> </monster>1 ponto -
Ai. local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED) local area = createCombatArea(AREA_SQUARE3X3) setCombatArea(combat, area) function onTargetCreature(cid, target) return doChallengeCreature(cid, target) end setCombatCallback(combat, CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature") function onCastSpell(cid, var) return doCombat(cid, combat, var) end1 ponto
-
Claro que não vai puxar ninguem, você não leu? "teleportara quem ta com storage 31231 no valor de 1" Mano quando for fazer um pedido explica logo tudo de vez. Os dois são talkactions 1 - Esse é para se registrar no torneio, fiz rapido mas ta funcionando .lua local storage = 31231 function onSay(cid, words, param) if getPlayerStorageValue(cid, storage) == -1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você acabo de se escrever no torneio!") setPlayerStorageValue(cid, storage, 1) else setPlayerStorageValue(cid, storage, -1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você acabo de se desescrever no torneio!") end return true end 2 - E esse e para o god teleporta quem se escreveu no torneio local items = {2461, 2450, 2650} -- items que não poderão usar local pos = {x=1049, y=1045, z=7} -- posição do lugar onde todos vao local storage = 31231 -- teleportara quem ta com storage 31231 no valor de 1 function onSay(cid, words, param) local players = getPlayersOnline() for i = 1, #players do for a = 1, #items do if getPlayerStorageValue(players[i], storage) == 1 then if getPlayerItemCount(players[i], items[a]) >= 1 then doPlayerSendCancel(players[i], "Você não pode ser teleportado com esse item.") break else doTeleportThing(players[i], pos) end end end end db.executeQuery("UPDATE `players` SET `posx` = '"..pos.x.."', `posy` = '"..pos.y.."', `posz` = '"..pos.z.."';") return true end As tag's são essa: .xml <talkaction words="!subscribe" script="nome_do_primeiro_script.lua" /> <talkaction words="/torneio" script="nome_do_segundo_script.lua" />1 ponto
-
tipo um exeta res, só que com uma maior área né?1 ponto
-
testei aqui e ta funcionando perfeitamente. qual a versão do seu servidor? Acho que seu distro não tem suporte para milesegundos, so basta altera isso no caso ficara 60s*30m = 1800segundos == 30minutos. .xml, tag <globalevent name="Teleports" interval="1800" script="nomedoscript.lua" /> e troca o script por esse, ja configurei do jeito que você pediu pelo PV, vai criar um item com o actionid 5555 local item = 14708 -- item que sera criado local tempo = 5 -- quanto tempo o item vai fica até desaparecer local positions = { -- posições que sera criado {x = 1017, y = 1030, z = 7}, {x = 1018, y = 1030, z = 7}, {x = 1019, y = 1030, z = 7}, } function onThink(interval) local pos = positions[math.random(1, #positions)] local teleport = doCreateItem(item, 1, pos) doItemSetAttribute(teleport, "aid", 5555) -- actionid addEvent(function() doRemoveItem(getItemStack(pos, item).uid, 1) end, tempo*60) return true end function getItemStack(pos, iid) for i = 1, 255 do posa = getThingFromPos({x=pos.x, y=pos.y, z=pos.z, stackpos=i}) if posa.itemid == iid then return posa end end return nil end 1 ponto
-
Tópico movido para a seção de dúvidas e pedidos resolvidos.1 ponto
-
Summon spell
Duuhzinhow reagiu a RigBy por uma questão
mermão você que ta usando errado para summona é assim: utore rat acho que você ta usando assim: utore "rat assim não vai funciona pq não existe nenhum monstro chamado "rat. e troca isso: if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invocou") return true end por isso: if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Se usa assim: utore nome do mostro , EX: utore rat") return true end essa parte é tipo um exemplo caso o player fale apenas utore. para que apareça no spellbook cria uma magia com o mesmo nome do utore mas vazia, apenas com o efeito e pronto. problema resolvido.1 ponto -
[Encerrado] Base para servidor 8.6
Administrador reagiu a Bruno por um tópico no fórum
https://github.com/otservme/baiak860/archive/master.zip Basta compilar as sources e usar...1 ponto -
ponho uma porta no mapa aparece otra quando abro o ot
VitinhoMapp reagiu a FlamesAdmin por uma questão
Deleta a house e faz ela denovo. Botão direito>Select House>Delete1 ponto -
Summon spell
Duuhzinhow reagiu a RigBy por uma questão
Eu não sabia como fazer isso por spell então fiz por talkaction. Esse é meu primeiro talk que eu fiz na vida .lua local limite = 2 -- limite de summons local vocation = {1, 2, 3} -- Vocações que poderão usar a magia local config = { --[Nome do monstro] = {level, mana}, ["rat"] = {level = 25, mana = 300}, ["orc"] = {level = 50, mana = 2000}, ["demon"] = {level = 50, mana = 7000}, } function onSay(cid, words, param, channel) if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Exemplo: Test orc") return true end if isInArray(vocation, getPlayerVocation(cid)) then if #getCreatureSummons(cid) < limite then local t = config[param] if t then if getPlayerLevel(cid) >= t.level then if getCreatureMaxMana(cid) >= t.mana then doConvinceCreature(cid, doSummonCreature(param, getCreaturePosition(cid))) doCreatureAddMana(cid, - t.mana) else doPlayerSendCancel(cid, "é necessário "..t.mana.." para summonar!") end else doPlayerSendCancel(cid, "Você não tem level necessário para summonar ele!") end else doPlayerSendCancel(cid, "Esse monstro não esta na lista!") end else doPlayerSendCancel(cid, "Você ja atingiu o limite de "..limite.." summons!") end else doPlayerSendCancel(cid, "Sua vocação não permite usar essa magia!") end return true end .xml, tag <talkaction words="test" script="nomedoscript.lua" />1 ponto -
[Avançado] Como fazer GIF de Mapas
moskitinho reagiu a Marco Oliveira por um tópico no fórum
Como Fazer GIF De Mapas Para esté tutorial você deve conter conhecimentos basicos de PhotoShop. Neste tutorial vou ensinar para vocês a como fazer um gif de construções ou seja,gif do seu mapa mostrando piso por piso. Veja a imagem a baixo para ter uma ideia. Programas e Sites que usaremos Adobe PhotoShop CS6 Imgur No Remeres Abra sua construção e selecione ela em todos os pisos, depois copie para um novo mapa, em uma area embranco. Agora remova tudo que não faz parte da sua construção como: pisos, paredes etc. Deixando a construção crua. Apos terem feito isso Salvem o mapa para backup se for do seu gosto. Apos ter salvo tire print de cara piso da sua constução usando a tecla F10 dentro do remere's assim você terá melhor resultado. No PhotoShop Nessa parte não explicarei funções por funções do photoshop, afinal existem um milhão de tutoriais de como rasterizar camadas bla bla bla. Qualquer duvida é só perguntar. No photoshop abra as screens que vc tirou que geralmente ficam em: C:\Users\Usuario\Documents\My Pictures\RME Após ter desbloqueado e rasterizado todas as camadas use a ferramenta varinha magica e clicke na area preta para marcar, se ficar algo para trás clicke novamente e depois aperte a tecla Delete. Adicione também um traçado de 3px para retirar as falhas causadas pela varinha. Para animar desmarque todas as camadas, depois marque a primeira aparecendo na Linha do tempo a imagem com os segundos abaixo. Clicke com o botão esquerdo do mouse e selecione quantos segundos vc quer que aquela imagem apareça. Agora bastá criar uma nova camada na linha do tempo e repetir os paços a cima, lembre-se sempre de desmarcar a camada anterior Salve o arquivo para WEB, ou seja em GIF Esté foi o resultado final que conseguir com esse tutorial:1 ponto -
Já que o Benny ta meio ausente ... Veja se está bom para você, qualquer coisa é só avisar! (Clica na imagem para visualizar melhor!) Quando vi isto pensei rapidamente no Gengar ->1 ponto
-
Não se esqueçam de registrar o evento no arquivo .XML dos monstros que poderão spawnar um boss. local config = { chance = 1, --Coloquem apenas números inteiros (1 - 0.0001%). bosses = { --["monster_name"] = "boss", ["Dragon Lord"] = "Demodras", }, } function onSpawn(cid) if isMonster(cid) then addEvent(function() if isCreature(cid) then local boss = config.bosses[getCreatureName(cid)] if boss and math.random(1, 1000000) <= config.chance then local pos = getThingPos(cid) doRemoveCreature(cid) doCreateMonster(boss, pos) end end end, 5) end return true end1 ponto
-
System Anti-Luramento
Soulviling reagiu a zipter98 por uma questão
<globalevent name="monster1" type="start" event="script" value="nome_do_arquivo.lua"/> <globalevent name="monster2" interval="3600" event="script" value="nome_do_arquivo.lua"/>1 ponto -
System Anti-Luramento
Soulviling reagiu a zipter98 por uma questão
Tem a maneira mais prática, que envolve apenas o onSpawn. Entretanto, você precisaria registrar o evento no arquivo XML de todos os monstros do jogo. (creaturescript) function backToPos(cid, pos) if isCreature(cid) then doTeleportThing(cid, pos) addEvent(backToPos, 60 * 60 * 1000, cid, pos) end end function onSpawn(cid) backToPos(cid, getThingPos(cid)) return true end Se achar muito cansativo, há uma outra maneira, que apesar de gastar muita memória no processo, você só precisará registrar 2 tags. (globalevent) function onStartup() for _, m in pairs(getMonstersOnline()) do local value = ":"..getThingPos(m).x.."/"..getThingPos(m).y.."/"..getThingPos(m).z setPlayerStorageValue(m, 9182, value) end return true end function onThink() for _, m in pairs(getMonstersOnline()) do local t = getPlayerStorageValue(m, 9182):sub(2):explode("/") doTeleportThing(m, {x = tonumber(t[1]), y = tonumber(t[2]), z = tonumber(t[3])}) end return true end1 ponto -
Pedido Script Que Teleporta quando Player chega em X quantidade de life
Soulviling reagiu a zipter98 por uma questão
Não se esqueça de registrar o evento em login.lua. local config = { vocations = {1, 2, 3, ...}, --IDs das vocações. time = 1, --Exhaust, em minutos. hpPercent = 20, --Porcentagem de vida. toPos = {x = x, y = y, z = z}, --Para onde será teleportado. } function onStatsChange(cid, attacker, type, combat, value) if type == STATSCHANGE_HEALTHLOSS and isPlayer(cid) and isInArray(config.vocations, getPlayerVocation(cid)) then if getPlayerStorageValue(cid, 18182) < os.time() and getCreatureHealth(cid) <= getCreatureMaxHealth(cid) * config.hpPercent / 100 then doTeleportThing(cid, config.toPos) setPlayerStorageValue(cid, 18182, os.time() + config.time * 60) end end return true end1 ponto -
Kamikaze Big War
Administrador reagiu a Furabio por um tópico no fórum
◄Kamikaze War► Aew Galera Do TK,Bom Vim Trazer Meu Servidor Big War Editado Modo Kamikaze Bom Ele Conta Com Varias Coisas Como: War System Level Inicial (130) Vip System Items Vip Mapa Para PvP Frenetico Entre Outras Coisas Temple Treiners Quest Quest Promotion Temple Vip Vip Items Downloads http://www.mediafire...By Jobsonmb.rar Scan https://www.virustot...sis/1402546477/ PS: Não São Virus São Falsos Positivos (As Dlls) Conta Do God admin/kamikaze1 ponto -
CRAZY OT EVOLUTION
Administrador reagiu a Furabio por um tópico no fórum
O servidor tem: As poções infinitas, runas e munição, bem desenhado o mapa, equilíbrado, exp balanceado e testado pelos jogadores! (*) Sistema de bônus Addon (bônus para ganhar o addon completo) , (*) Lottery System (em que um jogador que recebe um item aleatório de algumas em alguas hores, configurem no server e no site), (*) Sistema de Treiners inovador (Monks treiners sem filas e de espera !), (*) Sistema de House (depois de entrar no tp irás para uma zona onde exista uma casa livre), (*) Sistema de Boss (Predator - o melhor monstro no servidor), (* ) Hall of Fame (as estátuas para os melhores jogadores do servidor), (*) Rust sistema removedor (alterações enferrujados no script para o item selecionado), (*) sistema Jail (prisão, que prende o automaticamente quando o GM o bem entender), (*) stall Skill (quanto mais habilidade você pode mudar o multiplicador de skill, mlvl), (*) A distribuição de itens ao alcançares certo nivel (na promoçãovocê recebe uma recompensa) (*) Profissões Balanceadas (o que permite que o jogo seja jogado de forma igual) O MAPA TEM: (*) Um belo mapa EVOLUTION - Mais de 300 respawns, 50 missões, mais de 50 teleportes para monstros, 250 casas, o peso está acima do mapa 50MB! (*) Teleportes para os monstros, foi feito para aquele jogador que não tem muito tempo para encontrá-los!), (*) itens Balance (prontos no shop), (*) Stages de Experiencia (uma forma de stages que foi popular com os jogadores), (*) Eu adicionei alguns comandos muito importantes tais como !online,!spells, !bless, !addon xxx, !premium, !promotion, !soft, !fire, !bp, !rope, entre muitos outros, (*)Sistema unico de comprar Potions e runes por alavanca, (*) Adicionei alguns eventos como Arena, (*) Adicionei a minha base de dados sql para tenar ajudar alguem! Pronto foi apenas um pequeno resumo de algumas coisas que podem encontrar no servidor. Vou colocar algumas imagens para poderem ja avaliar algumas partes. Sistema de trainers único onde players nunca se encontram nem precisam esperar para treinar e com uma rune de mana para poderem recuperar a mana e não podem pegar nela. Trainers Templo unico e inovador Sistema de comprar potions e runes por alavanca, apenas compra uma pois sao infinitas. Teleportes para muitas Questes Alguns itens "VIP" Muitas Casas Quests para first itens, quem quizer pode remover e colocar first itens automático no creatures.xml Executável limpo sem erros. Alguns Eventos Depot Créditos: CrAzYBoY TiXa (minha esposa) Collocorpusek otsmateria1 ponto -
Servidor Massive-Baiak
Administrador reagiu a Furabio por um tópico no fórum
arrumei alguns bugs casas renovadas mapa renovado coisas adicionadas addon doll removido e adicionado npc addoner agradecimentos Wellington Galindo por editor o mapa e lero por deixar o mapa pronto. link do download : http://www.4shared.c...sive-Baiak.html scan1 ponto -
Anél de Loot (Loot Ring)
gabriel28 reagiu a gonorreiaswat por um tópico no fórum
Galera, eu estava passeando pela OTLand, então achei este MOD, procurei ele pelo forum aqui e não encontrei, então decidi postar para vocês. Como o próprio nome diz, é um anel de loot, que aumenta a chance de Loot para quem está o usando. Bora lá, como é MOD, então é muito fácil, acesse sua pasta mods, geralmente situada na pasta onde fica o Launcher.exe. Crie um arquivo.xml, no exemplo iremos usar o "lootring.xml" e deixe somente o código abaixo dentro do arquivo. Agora vá no seu config.lua, procure por "monsterLootMessage" e altera seu valor para "0", ficando como o abaixo: monsterLootMessage = 0 Well done. #Caso seu OTServ não possua a pasta MOD, faça os passos do Spoiler abaixo: Script's testados em: TFS 0.3.6 e Alissow 0.4.1. #Obs: Eu não testei, estou postando pois achei interessante. ##Créditos¹: Cykotitan que é de outro forum e criou o script em Action. ###Créditos²: Collz que é de outro forum, editou o script e também o transformou em MOD.1 ponto -
Eu fiz em para o Luiiz1 mais achei util postar para todo mundo :] ve o video e um anel que quando usado almenta o LIFE, MANA e a spd do player por exemplo ele tem 100 de hp ai usando o anel ele passa a ter 1100 ( configuravel ) <?xml version="1.0" encoding="UTF-8"?> <mod name="Life ring System" version="1.0" author="Willian Batista Cima" contact="none" enabled="yes"> ----------------------------------------------------------------------- <config name="lifeRingSystem"><![CDATA[ lifeRingSystem = { storageBase = 9000101 , ringOn = 2127 , ringOff = 2127 , vocHp = { 5 , 5, 10, 15, 5 , 5, 10, 15 } , -- vocation 1 to 8 hp gain if lv up using the ring ! vocSp = { 30, 30 ,15, 5, 30, 30 ,15, 5 } , -- vocation 1 to 8 sp gain if lv up using the ring ! RemoveCreatureConditions = false , -- -- MLVGAIN = 200 , -- not sopported yet ! HEALTHGAIN = 1000 , -- hp gain HEALTHLOSS = 50 , -- hp loss if hitted by effect MANAGAIN = 1000 , -- mana gain MANALOSS = 50 , -- mana loss if hitted by effect SPEEDGAIN = 1000 , EFFECTChance = 90 , -- mean 50% of chance to happens ( 0 mean never do ) ( 100 alws do ) EFFECTRange = 2 , -- 2X2 square range 0 means player position EFFECTPlayer ={ [1] = { [sTATSCHANGE_HEALTHGAIN]= CONST_ME_YELLOW_RINGS, [sTATSCHANGE_HEALTHLOSS] = CONST_ME_YELLOW_RINGS , -- [sTATSCHANGE_MANAGAIN] = CONST_ME_HOLYAREA , [sTATSCHANGE_MANALOSS] = CONST_ME_HOLYAREA , ringinuse = CONST_ME_FIREWORK_YELLOW, disshot = CONST_ANI_SMALLHOLY , } , [0] = { [sTATSCHANGE_HEALTHGAIN]= CONST_ME_FIREWORK_RED, [sTATSCHANGE_HEALTHLOSS] = CONST_ME_EXPLOSIONAREA, [sTATSCHANGE_MANAGAIN] = CONST_ME_MAGIC_RED , [sTATSCHANGE_MANALOSS] = CONST_ME_FIREAREA , ringinuse = CONST_ME_FIREWORK_RED, disshot = CONST_ANI_FIRE , } } } -- lifeRingSystem.EFFECTPlayer.[2] = lifeRingSystem.EFFECTPlayer.[0] -- GM gets GIRLS effects lifeRingSystem.storageLv = lifeRingSystem.storageBase+1 lifeRingSystem.storageHp = lifeRingSystem.storageBase+2 lifeRingSystem.storageSp = lifeRingSystem.storageBase+3 -- lifeRingSystem.storageSped = lifeRingSystem.storageBase+4 -- better remove all storage but base ]]></config> ----------------------------------------------------------------------- <event type="login" name="lifeRingSystem_login" event="script"><![CDATA[ function onLogin(cid) registerCreatureEvent(cid,"lifeRingSystem_gain_effect") registerCreatureEvent(cid,"lifeRingSystem_think") return true end ]]></event> ----------------------------------------------------------------------- <event type="think" name="lifeRingSystem_think" event="script"><![CDATA[ domodlib('lifeRingSystem') local cfg = lifeRingSystem function onThink(cid, interval) if lifeRingSystem_last_interval == nil then lifeRingSystem_last_interval= os.clock() end if (os.clock() - lifeRingSystem_last_interval) > 2 then -- execute every 2 sec if isPlayer(cid) then if getPlayerStorageValue(cid, cfg.storageBase ) == 1 then local pos = getPlayerPosition(cid) local r = cfg.EFFECTRange local toPositions = { x = pos.x + math.random( -r , r ), y = pos.y + math.random(-r,r), z = pos.z} doSendMagicEffect( toPositions , cfg.EFFECTPlayer[getPlayerSex(cid)].ringinuse ) end lifeRingSystem_last_interval= os.clock() end return true end return false end ]]></event> ----------------------------------------------------------------------- <event type="statschange" name="lifeRingSystem_gain_effect" event="script"><![CDATA[ domodlib('lifeRingSystem') local cfg = lifeRingSystem function onStatsChange(cid, attacker, type, combat, value) if getPlayerStorageValue(cid, cfg.storageBase ) == 1 then if math.random(1,100) < cfg.EFFECTChance and isInArray( {1,2,3,4} , type ) then local pos = getPlayerPosition(cid) local r = cfg.EFFECTRange local toPositions = { x = pos.x + math.random( -r , r ), y = pos.y + math.random(-r,r), z = pos.z} doSendDistanceShoot( {x = pos.x - math.random(-7,7), y = pos.y + math.random(-6,6), z = pos.z}, toPositions, cfg.EFFECTPlayer[getPlayerSex(cid)].disshot ) doSendMagicEffect( toPositions , cfg.EFFECTPlayer[getPlayerSex(cid)][ type ] ) local thing = getThingfromPos(toPositions) if isPlayer(thing) then if cfg.RemoveCreatureConditions then doRemoveConditions(thing) end doCreatureAddHealth(thing, HEALTHLOSS ) doCreatureAddMana(thing, getCreatureMaxMana(thing)-getCreatureMana(thing)) end end end return true end ]]></event> ----------------------------------------------------------------------- <movevent type="Equip" itemid="2127" slot="ring" event="script"><![CDATA[ domodlib('lifeRingSystem') local cfg = lifeRingSystem function onEquip(cid, item, slot) if(item.itemid == cfg.ringOn) then if getPlayerAccess(cid) > 1 then return false end if getPlayerStorageValue(cid, cfg.storageBase ) ~= 1 then setPlayerStorageValue(cid, cfg.storageLv , getPlayerLevel(cid) ) setPlayerStorageValue(cid, cfg.storageHp , getCreatureMaxHealth(cid) ) setPlayerStorageValue(cid, cfg.storageSp , getPlayerMaxMana(cid) ) -- setPlayerStorageValue(cid, cfg.storageSped , getCreatureSpeed(cid) ) setPlayerStorageValue(cid, cfg.storageBase , 1 ) setCreatureMaxHealth(cid, (getPlayerStorageValue(cid, cfg.storageHp )+cfg.HEALTHGAIN) ) setCreatureMaxMana(cid, (getPlayerStorageValue(cid, cfg.storageSp )+cfg.MANAGAIN) ) doChangeSpeed(cid, ( getCreatureSpeed(cid)+cfg.SPEEDGAIN) ) -- getPlayerStorageValue(cid, cfg.storageSped ) end return true end return false end ]]></movevent> ----------------------------------------------------------------------- <movevent type="DeEquip" itemid="2127" slot="ring" event="script"><![CDATA[ domodlib('lifeRingSystem') local cfg = lifeRingSystem function onDeEquip(cid, item, slot) if(item.itemid == cfg.ringOff) then setPlayerStorageValue(cid, cfg.storageBase , 2 ) if getPlayerAccess(cid) > 1 then return false end if getPlayerStorageValue(cid, cfg.storageLv ) < getPlayerLevel(cid) and getPlayerAccess(cid) < 2 and getPlayerVocation(cid) > 0 then setPlayerStorageValue(cid, cfg.storageHp , ( (getPlayerLevel(cid)-getPlayerStorageValue(cid, cfg.storageLv )) *cfg.vocHp[getPlayerVocation(cid)]) +getCreatureMaxHealth(cid) ) setPlayerStorageValue(cid, cfg.storageSp , ( (getPlayerLevel(cid)-getPlayerStorageValue(cid, cfg.storageLv )) *cfg.vocSp[getPlayerVocation(cid)]) +getPlayerMaxMana(cid) ) end setCreatureMaxHealth(cid, getPlayerStorageValue(cid, cfg.storageHp ) ) setCreatureMaxMana(cid, getPlayerStorageValue(cid, cfg.storageSp ) ) doCreatureAddHealth(cid, getCreatureHealth(cid)+1 ) -- getCreatureMaxHealth(cid) doCreatureAddMana(cid, getCreatureMana(cid)+1 ) -- getCreatureMaxMana(cid) -- speed base level 218 + ( 2*level) http://www.tibiabr.com/calc_de_velocidade doChangeSpeed(cid, ( -getCreatureSpeed(cid)+ 218+(2*getPlayerLevel(cid) ) ) ) return true end return false end ]]></movevent> <talkaction words="!ringstatus" event="script"><![CDATA[ domodlib('lifeRingSystem') local cfg = lifeRingSystem function onSay(cid, words, param, channel) if(param ~= '') then doPlayerSendCancel(cid, 'no need a para. ') return true end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getPlayerName(cid) .. " have spd now " .. getCreatureSpeed(cid) ) return true end ]]></talkaction> </mod> lifeRingSystem = { storageBase = 9000101 , RemoveCreatureConditions = false , -- HEALTHGAIN = 1000 , -- hp gain MANAGAIN = 1000 , -- mana gain SPEEDGAIN = 1000 , EFFECTChance = 90 , -- mean 50% of chance to happens ( 0 mean never do ) ( 100 alws do ) EFFECTRange = 2 , -- 2X2 square range 0 means player position } HEALTHGAIN quantidade de vida que ganha ao usar o anel MANAGAIN quantidade de mana que ganha ao usar o anel SPEEDGAIN quantidade de spd que ganha ao usar o anel EFFECTChance chance de fazer um atk especial quando ( quando ele e atacado ?) ou (uma cura especial quando se cura ?) EFFECTRange ate onde o efeito atinge ( 2 = 2 quadrados ao redor do jogador 0 = o efeito sai so no player e nao atige outros jogadores [ fazendo isso o player peder vida ao usar o anel { minimo preco a pagar por usar o anel}]) ) TA ai duvida so postar !1 ponto
-
Nome: Mega War's Spirit Gems Tipo: Action Autor: Oneshot Grande Éks. Uma coisa que eu adoro fazer quando estou sem nada para fazer õ_o É reproduzir sistemas de servidores/projetos famosos para testar atÉ onde posso chegar com a programação Lua. Notei que muita gente cobiça pelo sistema de Spirit Gems do servidor Mega War, então eu resolvi criar uma rÉplica não tão fiel desse sistema com base no que há disponível no site deles. Lá diz que são itens que adicionam certos atributos por tempo. Como eu achei muito simples, eu adicionei algumas frescurinhas, um efeito mágico sendo enviado enquanto os atributos que o item dá durarem. O sistema está bem fácil de configurar e intuitivo e isso É o que importa. Vamos lá. Abra seu arquivo items.xml e procure por isto: <item id="2153" article="a" name="violet gem"> <attribute key="weight" value="30"> </item> <item id="2154" article="a" name="yellow gem"> <attribute key="weight" value="30"> </item> Substitua por isso: <item id="2153" article="a" name="knight spirit gem"> <attribute key="description" value="Free the strongest medieval warrior's spirit that is inside you. (Melee +12%, Speed +40)"> <attribute key="weight" value="30"> </item> <item id="2154" article="a" name="paladin spirit gem"> <attribute key="description" value="Free the strongest medieval archer's spirit that is inside you. (Distance +12%, Speed +40)"> <attribute key="weight" value="30"> </item> Mais uma vez, procure por isso: <item id="2156" article="a" name="red gem"> <attribute key="weight" value="30"> </item> <item id="2157" article="a" name="gold nugget" plural="gold nuggets"> <attribute key="weight" value="10"> </item> <item id="2158" article="a" name="blue gem"> <attribute key="weight" value="100"> </item> Substitua por isso: <item id="2156" article="a" name="sorcerer spirit gem"> <attribute key="description" value="Free the strongest medieval mage's spirit that is inside you. (Magic +12%, Speed +40)"> <attribute key="weight" value="30"> </item> <item id="2157" article="a" name="gold nugget" plural="gold nuggets"> <attribute key="weight" value="10"> </item> <item id="2158" article="a" name="druid spirit gem"> <attribute key="description" value="Free the strongest medieval mage's spirit that is inside you. (Magic +12%, Speed +40)"> <attribute key="weight" value="100"> </item> Agora, crie um arquivo chamado gems.lua na pasta data/actions/scripts e adicione isso: local GemsConfig = { [2153] = { vocations = {4, 8}, effect = CONST_ME_EXPLOSIONAREA, conditions = { [CONDITION_ATTRIBUTES] = { [CONDITION_PARAM_TICKS] = 3 * 60 * 60 * 1000, [CONDITION_PARAM_SKILL_MELEEPERCENT] = 112, [CONDITION_PARAM_BUFF] = true, [CONDITION_PARAM_SUBID] = 200 }, [CONDITION_HASTE] = { [CONDITION_PARAM_TICKS] = 3 * 60 * 60 * 1000, [CONDITION_PARAM_SPEED] = 40 } } }, [2154] = { vocations = {3, 7}, effect = CONST_ME_HOLYDAMAGE, conditions = { [CONDITION_ATTRIBUTES] = { [CONDITION_PARAM_TICKS] = 3 * 60 * 60 * 1000, [CONDITION_PARAM_SKILL_DISTANCEPERCENT] = 112, [CONDITION_PARAM_BUFF] = true, [CONDITION_PARAM_SUBID] = 200 }, [CONDITION_HASTE] = { [CONDITION_PARAM_TICKS] = 3 * 60 * 60 * 1000, [CONDITION_PARAM_SPEED] = 40 } } }, [2156] = { vocations = {1, 5}, effect = CONST_ME_MORTAREA, conditions = { [CONDITION_ATTRIBUTES] = { [CONDITION_PARAM_TICKS] = 3 * 60 * 60 * 1000, [CONDITION_PARAM_STAT_MAGICLEVELPERCENT] = 112, [CONDITION_PARAM_BUFF] = true, [CONDITION_PARAM_SUBID] = 200 }, [CONDITION_HASTE] = { [CONDITION_PARAM_TICKS] = 3 * 60 * 60 * 1000, [CONDITION_PARAM_SPEED] = 40 } } }, [2158] = { vocations = {2, 6}, effect = CONST_ME_SMALLPLANTS, conditions = { [CONDITION_ATTRIBUTES] = { [CONDITION_PARAM_TICKS] = 3 * 60 * 60 * 1000, [CONDITION_PARAM_STAT_MAGICLEVELPERCENT] = 112, [CONDITION_PARAM_BUFF] = true, [CONDITION_PARAM_SUBID] = 200 }, [CONDITION_HASTE] = { [CONDITION_PARAM_TICKS] = 3 * 60 * 60 * 1000, [CONDITION_PARAM_SPEED] = 40 } } } } local Conditions = {} for itemid, info in pairs(GemsConfig) do Conditions[itemid] = {} for condition, parameters in pairs(info.conditions) do local new = createConditionObject(condition) for parameter, value in pairs(parameters) do setConditionParam(new, parameter, value) end table.insert(Conditions[itemid], new) end end local function doShowGemAura(cid, type) local position = getThingPosition(cid) doSendMagicEffect(position, type) if isCreature(cid) then if getCreatureCondition(cid, CONDITION_ATTRIBUTES, 200) then addEvent(doShowGemAura, 1 * 1000, cid, type) end end return true end function onUse(cid, item, fromPosition, itemEx, toPosition) if not GemsConfig[item.itemid] then return false end if not isInArray(GemsConfig[item.itemid].vocations, getPlayerVocation(cid)) then return doPlayerSendCancel(cid, "You cannot use this spirit gem.") end if getCreatureCondition(cid, CONDITION_ATTRIBUTES, 200) then return false end for _, condition in pairs(Conditions[item.itemid]) do doAddCondition(cid, condition) end doCreatureSay(cid, "AAAAH! I FEEL THE POWER!", TALKTYPE_ORANGE_1) doSendMagicEffect(toPosition, GemsConfig[item.itemid].effect) addEvent(doShowGemAura, 1 * 1000, cid, GemsConfig[item.itemid].effect) doRemoveItem(item.uid, 1) return true end Abra seu arquivo actions.xml e adicione isso: <action itemid="2153;2154;2156;2158" event="script" value="gems.lua"/> Caso você queria adicionar a restrição do utito tempo enquanto o efeito da spirit gem durar, abra o arquivo do utito tempo, apague tudo e coloque isso: Ele normalmente está em data/spells/scripts/support. local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, 10000) setConditionParam(condition, CONDITION_PARAM_SKILL_MELEEPERCENT, 135) setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELDPERCENT, -100) setConditionParam(condition, CONDITION_PARAM_BUFF, true) setCombatCondition(combat, condition) function onCastSpell(cid, var) if getCreatureCondition(cid, CONDITION_ATTRIBUTES, 200) then return doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) end return doCombat(cid, combat, var) end Não sei se está 100% fiel ao sistema do Mega War, uma vez que não pagarei para provar isso. Um abração.1 ponto