Ir para conteúdo

Break Dimension

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Haha
    Break Dimension deu reputação a Darkeyren em É necessário primeiro matar os summons   
    Qual TFS você está usando? Caso for TFS 0.3/0.4 se não estiver engando tem uma função no creaturescripts onTarget(cid, target)
    -- Vocações que só poderam ser atacadas caso não exista um summon da mesma! local vocations = { 1, 2 } function onTarget(cid, target) local target_voc = getPlayerVocation(target) if isInArray(vocations, target_voc) and getCreatureSummons(target) ~= 0 then doPlayerSendCancel(cid, "Desculpe mas você só poderá atacar esse jogador caso ele esteja sem summons!") return false end return true end  
    Acho que isso deve funcionar, caso não me avise!
    E não esqueça de adicionar o evento no creatureevents.xml e registra-lo quando o jogador logar!
     
    <event name="VocTarget" type="target" script="voctarget.lua"/>  
    E no seu login.lua
     
    registerCreatureEvent(cid, "VocTarget")  
    Boa sorte!
  2. Obrigado
    Break Dimension recebeu reputação de Malborus em (Resolvido)Akatsuki System Nto 8.6   
    --[Vocation] = ( Nova Vocation, New Outfit ) [1] = { 5, 128}, [2] = { 6, 129}, [3] = { 7, 130}, [4] = { 8, 131}, }   /\ Esta Vendo essa Parte , vc não configurou "o que ira acontecer" /\   --[Vocation] = ( Nova Vocation, New Outfit ) [1] = { 5, 128},   1 < ID DA VOCATION 5 < NOVA VOCATION (Quando ganhar a roupa da akatsuki....  vai ser promovindo para alguma outra vocation ? 128 <Outfit no caso o Id da Roupa da Akatsuki.
  3. Curtir
    Break Dimension deu reputação a Absolute em (Resolvido){Pedido} Efeito de Chuva   
    Globalevents/scripts/nome.lua
    local rain = Rain:new() function onThink(interval, lastExecution) local minX = 949 local minY = 965 local maxX = 1069 local maxY = 1020 local frompos = {x=math.random(minX, maxX), y=math.random(minY, maxY), z=7} local topos = {x=math.random(frompos.x, maxX), y=math.random(frompos.y, maxY), z=7} local effects = { snow = { disteffect = CONST_ANI_FIRE, effect = CONST_ME_FIREAREA }, rain = { disteffect = CONST_ANI_ICE, effect = CONST_ME_WATERSPLASH } } random = math.random(0, 10) if (random == 0) then rain.chance = math.random(10,50) rain:start({fromPos = frompos, toPos = topos}, effects.snow, 300, math.random(100, 500)) else rain.chance = math.random(40,100) rain.createItem = {chance = math.random(0,10), item = {itemid = 2016, type = 1}} rain:start({fromPos = frompos, toPos = topos}, effects.rain, math.random(300, 1000), math.random(100, 350)) end return TRUE end XML: 
    <globalevent name="rain" interval="-1" script="rain.lua"/> Créditos:
    body.
  4. Curtir
    Break Dimension deu reputação a Absolute em [Busque a cabeça] Mandato de morte! SCRIPT!   
    Se ele não tiver não vai, o script vai verificar a função:
    if doPlayerRemoveMoney(cid, prize*1000) == TRUE then
    e retornar a msg:
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[BUSQUE A CABEÇA] Você não tem dinheiro suficiente para oferecer a recompensa nessa cabeça!")            
            end
  5. Curtir
    Break Dimension deu reputação a MaXwEllDeN em [CTF] Capture The Flag   
    #Introdução

    Este é um sistema de rouba bandeira, no qual tem dois times, que se enfrentam e tentam se infiltrar na fortaleza do inimigo, roubar a bandeira dele e retornar para sua base com ela.




    #Instalação

    Faça o download do sistema e cole na pasta do seu servidor.



    Após ter instalado os arquivos nas suas respectivas pastas abra a pasta do seu servidor, e em seguida abra a pasta spells/scripts/support, e abra o arquivo invisible.lua com algum editor de texto, depois de

    function onCastSpell(cid, var)

    cole isso:

    if (getPlayerStorageValue(cid, _CTF_LIB.teamssto) > 0) then return doPlayerSendCancel(cid, "Você não pode usar invisible durante o CTF!") and doSendMagicEffect(getThingPos(cid), 2) end

    ficando assim:

    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) local condition = createConditionObject(CONDITION_INVISIBLE) setConditionParam(condition, CONDITION_PARAM_TICKS, 200000) setCombatCondition(combat, condition) function onCastSpell(cid, var) if (getPlayerStorageValue(cid, _CTF_LIB.teamssto) > 0) then return doPlayerSendCancel(cid, "Você não pode usar invisible durante o CTF!") and doSendMagicEffect(getThingPos(cid), 2) end return doCombat(cid, combat, var) end

    #Configuração
    Como na maioria dos meus códigos: as configurações ficam na lib, então:

    _CTF_LIB.flags = { [_CTF_LIB.redid] = {pos = {x = 744, y = 638, z = 6}, posEflag = {x = 744, y = 644, z = 6}, id = 1435, color = 180, na = "Vermelho", temple = 3,


    temple = 3,
    Esse é o id do templo que os players do time vermelho serão teletransportados.

    pos = {x = 744, y = 638, z = 6},

    Posição de onde a bandeira do time fica

    posEflag = {x = 744, y = 644, z = 6},
    Posição de onde os players do time entregam a bandeira.

    winp = 2, recompCTF = {{2160, 2}}, nopen = true, -- Precisa usar o comando para abrir? false não true sim TownExit = 1, -- Templo que o player será teletransportado quando acabar o evento ou ele sair dele. price = false, -- Preço para entrar no Evento, caso não precise Digite false.

    winp = 2, recompCTF = {{2160, 2}},
    winp : pontos que um time precisará fazer para ganhar o evento.
    recompCTF: recompensa que o time ganhará ao vencer o CTF. para adicionar mais só é você fzer assim:

    recompCTF = {{2160, 2}, {7542, 1}},
    2160 é o id do item que vai adicionar, e 2 é a quantidade.
    7542 é o id do item que vai adicionar, e 1, é a quantidade.

    nopen = true, -- Precisa usar o comando para abrir? false não true sim
    se precisar usar o comando /ctf open para abrir o evento coloque true, se não precisar coloque false.

    TownExit = 1, -- Templo que o player será teletransportado quando acabar o evento ou ele sair dele. price = false, -- Preço para entrar no Evento, caso não precise Digite false.
    TownExit: id do templo que o player será teletransportado quando ele sair do evento ou quando o adm usar /ctf close.
    price: preço para entrar no evento em gold coins, caso não precise deixe false.

    Não esqueçam de criar um teleport dentro do evento, com a actionid 47521, caso os players queiram sair do evento

    E aqui acabamos mais um código.. '-' Flw ae xD .
    Qualquer bug não se acanhe em falar

    Abraço.
  6. Curtir
    Break Dimension deu reputação a Absolute em [Chuva de Items] New Event   
    Olá TKzianos de plantão rs!
    Trago hoje um evento criado pelo mestre Collor e modificado por mim! É o evento RAIN ITEMS! O Nome já diz tudo, nada melhor para os players do que chover items não é? rs.
     

     

     
     
     
    Como funciona?
    Em dias marcados irá ocorrer uma chuva de determinados items (configuráveis). 
    Os Items irão cair em X posições que você irá configurar no sistema.
    Os players terão de ser ágeis para coletar o item em sua backpack.
     
     
     
    Vamos ao que interessa!
     
    Em data/mods crie um arquivo com o nome de w-rainItems.xml e dentro coloque o seguinte conteúdo:
    <?xml version="1.0" encoding="UTF-8"?> <mod name="Rain Item" version="1.0.0" author="Collor/Abs" contact="lu.lukinha" enabled="yes"> <config name="config_rain_item"> <![CDATA[ configRainItem = { days = { ['Monday'] = {'11:00:20', '19:00:20'}, ['Tuesday'] = {'11:00:20', '19:00:20'}, ['Wednesday'] = {'11:00:20', '19:00:20'}, ['Thursday'] = {'11:00:20', '19:00:20'}, ['Friday'] = {'11:00:10', '19:00:20'}, ['Saturday'] = {'11:00:00', '19:00:20'}, ['Sunday'] = {'11:00:20', '19:00:30'} }, items = { 2644, -- king 9778, -- yalaha mask 8865, -- dark lords cape 8890, -- robe of the underworld 3983, -- bast skirt 9933, -- firewalker boots 7735, -- star wand 2640, -- softy 9693, -- addon 8306, -- remover 2506, -- dragon scale helmet 8888, -- master archers armor 9777, -- yalahari leg piece 8850, -- chain bolter 6433, -- necromancer shield 8903, -- spellbook of lost souls 2496, -- horned helmet 9776, -- yalahari armor 2469, -- dragon scale legs 6391, -- nightmare shield 8925, -- solar 7422, -- jade hammer 2390, -- mls 7722, -- stamina 8300, -- upgrade 8266, -- koshei 2346 -- 100pkt }, positions = { {x=997, y=981, z=7}, {x=998, y=981, z=7}, {x=999, y=981, z=7}, {x=1000, y=981, z=7}, {x=1001, y=981, z=7}, {x=1002, y=981, z=7}, {x=997, y=982, z=7}, {x=998, y=982, z=7}, {x=999, y=982, z=7}, {x=1000, y=982, z=7}, {x=1001, y=982, z=7}, {x=1002, y=982, z=7}, {x=997, y=983, z=7}, {x=998, y=983, z=7}, {x=999, y=983, z=7}, {x=1000, y=983, z=7}, {x=1001, y=983, z=7}, {x=997, y=984, z=7}, {x=999, y=984, z=7}, {x=1000, y=984, z=7}, {x=1001, y=984, z=7}, {x=1002, y=984, z=7}, {x=994, y=985, z=7}, {x=995, y=985, z=7}, {x=996, y=985, z=7}, {x=997, y=985, z=7}, {x=998, y=985, z=7}, {x=999, y=985, z=7}, {x=1000, y=985, z=7}, {x=1001, y=985, z=7}, {x=1002, y=985, z=7}, {x=1003, y=985, z=7}, {x=1004, y=985, z=7}, {x=1005, y=985, z=7}, {x=1006, y=985, z=7}, {x=994, y=986, z=7}, {x=995, y=986, z=7}, {x=996, y=986, z=7}, {x=997, y=986, z=7}, {x=998, y=986, z=7}, {x=999, y=986, z=7}, {x=1000, y=986, z=7}, {x=1001, y=986, z=7}, {x=1002, y=986, z=7}, {x=1003, y=986, z=7}, {x=1004, y=986, z=7}, {x=1005, y=986, z=7}, {x=1006, y=986, z=7}, {x=996, y=987, z=7}, {x=996, y=988, z=7}, {x=996, y=989, z=7}, {x=996, y=990, z=7}, {x=996, y=991, z=7}, {x=996, y=992, z=7}, {x=996, y=993, z=7}, {x=1003, y=987, z=7}, {x=1003, y=988, z=7}, {x=1003, y=989, z=7}, {x=1003, y=990, z=7}, {x=1003, y=991, z=7}, {x=1003, y=992, z=7}, {x=1003, y=993, z=7}, {x=996, y=994, z=7}, {x=997, y=994, z=7}, {x=998, y=994, z=7}, {x=1001, y=994, z=7}, {x=1002, y=994, z=7}, {x=1003, y=994, z=7}, {x=996, y=995, z=7}, {x=997, y=995, z=7}, {x=998, y=995, z=7}, {x=999, y=995, z=7}, {x=1000, y=995, z=7}, {x=1001, y=995, z=7}, {x=1002, y=995, z=7}, {x=1003, y=995, z=7}, {x=996, y=996, z=7}, {x=997, y=996, z=7}, {x=998, y=996, z=7}, {x=1001, y=996, z=7}, {x=1002, y=996, z=7}, {x=1003, y=996, z=7}, {x=996, y=997, z=7}, {x=997, y=997, z=7}, {x=998, y=997, z=7}, {x=999, y=997, z=7}, {x=1000, y=997, z=7}, {x=1001, y=997, z=7}, {x=1002, y=997, z=7}, {x=1003, y=997, z=7}, {x=996, y=998, z=7}, {x=997, y=998, z=7}, {x=998, y=998, z=7}, {x=999, y=998, z=7}, {x=1001, y=998, z=7}, {x=1002, y=998, z=7}, {x=1003, y=998, z=7}, {x=996, y=999, z=7}, {x=998, y=999, z=7}, {x=999, y=999, z=7}, {x=1001, y=999, z=7}, {x=1002, y=999, z=7}, {x=1003, y=999, z=7}, {x=996, y=1000, z=7}, {x=997, y=1000, z=7}, {x=998, y=1000, z=7}, {x=999, y=1000, z=7}, {x=1001, y=1000, z=7}, {x=1002, y=1000, z=7}, {x=1003, y=1000, z=7}, {x=996, y=1001, z=7}, {x=997, y=1001, z=7}, {x=998, y=1001, z=7}, {x=999, y=1001, z=7}, {x=1000, y=1001, z=7}, {x=1001, y=1001, z=7}, {x=1002, y=1001, z=7}, {x=1003, y=1001, z=7}, {x=996, y=1002, z=7}, {x=997, y=1002, z=7}, {x=998, y=1002, z=7}, {x=999, y=1002, z=7}, {x=1000, y=1002, z=7}, {x=1001, y=1002, z=7}, {x=1002, y=1002, z=7}, {x=1003, y=1002, z=7}, {x=998, y=1003, z=7}, {x=999, y=1003, z=7}, {x=1000, y=1003, z=7}, {x=1001, y=1003, z=7}, {x=1002, y=1003, z=7}, {x=1003, y=1003, z=7}, {x=990, y=998, z=7}, {x=991, y=998, z=7}, {x=991, y=999, z=7}, {x=992, y=999, z=7}, {x=991, y=1000, z=7}, {x=992, y=1000, z=7}, {x=993, y=1000, z=7}, {x=994, y=1000, z=7}, {x=995, y=1000, z=7}, {x=982, y=1001, z=7}, {x=983, y=1001, z=7}, {x=984, y=1001, z=7}, {x=985, y=1001, z=7}, {x=986, y=1001, z=7}, {x=987, y=1001, z=7}, {x=988, y=1001, z=7}, {x=989, y=1001, z=7}, {x=990, y=1001, z=7}, {x=991, y=1001, z=7}, {x=992, y=1001, z=7}, {x=993, y=1001, z=7}, {x=994, y=1001, z=7}, {x=995, y=1001, z=7}, {x=983, y=1002, z=7}, {x=984, y=1002, z=7}, {x=988, y=1002, z=7}, {x=989, y=1002, z=7}, {x=990, y=1002, z=7}, {x=991, y=1002, z=7}, {x=992, y=1002, z=7}, {x=993, y=1002, z=7}, {x=994, y=1002, z=7}, {x=995, y=1002, z=7}, {x=984, y=1003, z=7}, {x=985, y=1003, z=7}, {x=986, y=1003, z=7}, {x=987, y=1003, z=7}, {x=988, y=1003, z=7}, {x=989, y=1003, z=7}, {x=990, y=1003, z=7}, {x=991, y=1003, z=7}, {x=992, y=1003, z=7}, {x=993, y=1003, z=7}, {x=984, y=1004, z=7}, {x=985, y=1004, z=7}, {x=986, y=1004, z=7}, {x=987, y=1004, z=7}, {x=988, y=1004, z=7}, {x=984, y=1005, z=7}, {x=985, y=1005, z=7}, {x=986, y=1005, z=7}, {x=987, y=1005, z=7}, {x=988, y=1005, z=7}, {x=983, y=1006, z=7}, {x=984, y=1006, z=7}, {x=985, y=1006, z=7}, {x=986, y=1006, z=7}, {x=987, y=1006, z=7}, {x=988, y=1006, z=7}, {x=980, y=1007, z=7}, {x=981, y=1007, z=7}, {x=982, y=1007, z=7}, {x=983, y=1007, z=7}, {x=984, y=1007, z=7}, {x=985, y=1007, z=7}, {x=986, y=1007, z=7}, {x=987, y=1007, z=7}, {x=988, y=1007, z=7}, {x=980, y=1008, z=7}, {x=981, y=1008, z=7}, {x=982, y=1008, z=7}, {x=983, y=1008, z=7}, {x=980, y=1009, z=7}, {x=981, y=1009, z=7}, {x=982, y=1009, z=7}, {x=983, y=1009, z=7}, {x=1004, y=998, z=7}, {x=1005, y=998, z=7}, {x=1006, y=998, z=7}, {x=1006, y=999, z=7}, {x=1002, y=993, z=7}, {x=1002, y=987, z=7}, {x=1002, y=988, z=7}, {x=996, y=984, z=7} }, delayTime = 1, -- pomiedzy broadcastem a zrzuceniem itemu amountOfPos = 20, storage = 51836 -- set free storage } ]]> </config> <lib name="lib_rain_item"> <![CDATA[ domodlib("config_rain_item") function throwItem() local i, itemPos = 1, {} repeat local pos = configRainItem.positions[math.random(#configRainItem.positions)] if isInArray(itemPos, pos) then pos = configRainItem.positions[math.random(#configRainItem.positions)] else itemPos[i] = pos i = i + 1 end until i == configRainItem.amountOfPos for _, pos in pairs(itemPos) do doSendDistanceShoot({x = pos.x - math.random(4, 6), y = pos.y - 5, z = pos.z}, pos, CONST_ANI_FIRE) for __, effect in pairs({34, 55, 56}) do doSendMagicEffect(pos, effect) end addEvent(doCreateItem, 100, configRainItem.items[math.random(#configRainItem.items)], 1, pos) doSetStorage(configRainItem.storage, -1) end end ]]> </lib> <globalevent name="Rain_Item_Days" interval="1000" event="script"> <![CDATA[ domodlib("lib_rain_item") local daysOpen = {} for k, v in pairs(configRainItem.days) do table.insert(daysOpen, k) end function onThink(interval) if isInArray(daysOpen, os.date('%A')) then if isInArray(configRainItem.days[os.date('%A')], os.date('%X', os.time())) then if getStorage(configRainItem.storage) ~= 1 then doBroadcastMessage('Rain Items will start in '..configRainItem.delayTime..' min. Go to temple or depot!') doSetStorage(configRainItem.storage, 1) addEvent(throwItem, configRainItem.delayTime * 60 * 1000) end end end return true end ]]> </globalevent> <talkaction words="!startrain" access="5" event="script"> <![CDATA[ domodlib("lib_rain_item") function onSay(cid, words, param) if getStorage(configRainItem.storage) > 0 then return doPlayerSendCancel(cid, 'Rain Item is already running.') end doBroadcastMessage('Rain Items will start in ' .. configRainItem.delayTime .. ' min. Go to temple or depot!') doSetStorage(configRainItem.storage, 1) addEvent(throwItem, configRainItem.delayTime * 60 * 1000) return true end ]]> </talkaction> <globalevent name="Rain_Item_Start" type="startup" event="script"> <![CDATA[ domodlib("lib_rain_item") function onStartup() doSetStorage(configRainItem.storage, -1) return true end ]]> </globalevent> </mod> Configurando:
    1-
    days = {
                        ['Monday'] = {'11:00:20', '19:00:20'}, = Aqui são os dias e horário que ocorrerão o evento, no caso do exemplo está Segunda Feira ás 11 horas e as 19 horas.
    Você deverá alterar o dia e a hora conforme desejar, o dia em inglês claro. Não sabe inglês faz cursinho na openenglish sqn.
     
    2-
    items = {
                        2644, -- king = 2644 é o ID do item que irá chover. O -- king não é anda apenas um exemplo pode deixar com o nome, o que vale é o ID!
     
    3-
    positions = {
                        {x=997, y=981, z=7}, = Mais do que claro, é as posições do mapa onde irá cair os items!
     
     

     
     
     
     
    Nota: Caso queira iniciar o evento manualmente fora de hora execute o comando !startrain com seu ADM.
     
     

     
     
     
     
    É isso aí galera, caso haja algum dúvida perguntem aqui no tópico!
     
     
     
    Não gostou? Não critica, só olha e tenta fazer melhor
     
     
     
    Absolute.
     
  7. Obrigado
    Break Dimension deu reputação a KotZletY em [Narutibia] Jinchuuriki System - Distro 0.4   
    Salve rápázyádá, recentemente estava de rolê pelo tk, e vi um tópico com o seguinte pedido: "Jinchuuriki System", pra que não conhece irei da um breve resumo.
     
    Para quem conhece o anime naruto sabe sobre as bijuus, e que elas foram seladas em shinobis destinados a carregar tamanha responsabilidade devido a cada biju ter um poder destruidor, como por exemplo a bijuu raposa de nove caldas(Kyuubi), selada dentro do personagem principal chamado de Naruto Uzumaki, a Kyuubi quando dominada, dá ao usuário uma grotesca quantidade de chakra, assim como jutsus e muito mais, cada bijuu tem sua especialidade, jutsus de defesa, assim como a própia defesa e resistência do usuário a tais jutsus, mas claro para você ter a bijuu, é necessário que você sele-a dentro de você, através de um dos jutsus proibidos, como o Shiki Fuujin usado por Minato o 4º Hokage e também pai de naruto, ao usar o selo ele consome a alma de quem usa levando-o a morte após o termino do jutsu, minato como hokage não poderia deixar a kyuubi destruir a vila, então ele invoca o Selo Consumidor do Demônio Morto(Shiki Fuujin) conhecido também como Selo Ceifeiro da Morte, e sela a kyuubi dentro de seu própio filho salvando a vila e morrendo como herói, e naruto desde então passa a ser o Jinchuuriki da raposa de nove caldas.
     
     
    Tendo uma ideia básica de como funciona, vamos a explicação do sistema, que não é diferente.
     
    Ao usar um jutsu(spell) de selo em algum bijuu(monstro), você terá ele selado dentro de você e obterá os jutsus de acordo com cada bijuu, mas para isso, a vida(hp) da bijuu deve está menor que 20%(configurável), e então você durante 2(configurável) dias, terá ele selado dentro de você e poderá usar os jutsus, ao acabar esse tempo você irá perdelo, assim como os jutsus.
    Sistema criado e testado na versão 8.60 usando uma distro na versão 0.4, mesmo assim pode funcionar em versões inferiores!!
     
    Siga os passos corretamente que é sucesso.
     
    Vá em data/lib e crie um arquivo chamado JinchuurikiSystem.lua e coloque o seguinte code dentro:
     
    A tabela está de acordo com a ordem de bijuus existente desde o bijuu de 1 calda, até a biju de nove caldas, então você irá mexer somente em qual ou quais jutsus(spells) cada bijuu irá usar, mais precisamente aqui:
    spells = {""} entre aspas coloque a quantidade que seja de jutsus(spell), como por exemplo:
    Tk no Jutsu 1- Tk no jutsu 2, separados por virgula, assim:
    spells = {"Tk no jutsu 1", "Tk no jutsu 2"} Lembrando que o nome das spells não é a que fica em words, é que  fica em name na xml, por exemplo:
    eu tenho um jutsu chamado kai, quem joga narutibia sabe pra que serve, para usar ela, usamos o nome que está em words, e a que fica em name, será que vai ser mostrada quando for usar, entretanto a função que faz o player aprender a spell, segui pelo nome:
    <instant name="Kai!" words="kai" note que contém uma exclamação no nome da spell, então vai ter que ir exclamação e tudo junto, ficando assim:
    spells = {"Tk no jutsu 1", "Tk no jutsu 2", "Kai!"} e então quando o player for usar a spell pelo words kai, a spell será usada.
     
    Agora vá em data/spells/scripts crie um arquivo chamado selojin.lua e coloque o seguinte code dentro:
     
    Agora vá em data/spells/scripts crie um arquivo chamado buff bijuu.lua e coloque o seguinte code dentro:
     
     
    a tag que você irá colocar na spells.xml para esse jutsu(spell) será a seguinte:
    <instant name="Shiki Fuujin" words="shiki fuujin" lvl="1" mana="1" prem="0" exhaustion="10" enabled="1" needtarget="1" event="script" value="selojin.lua"> </instant> <instant name="Buff Jin" words="buff jin" lvl="1" mana="0" prem="0" selftarget="1" exhaustion="1000" enabled="1" event="script" value="buff bijuu.lua"> </instant>  
     
    Agora vá em data/talkactions/scripts e crie um arquivo chamado jincheck.lua e coloque o seguinte code dentro:
     
    Nota: esse comando serve para você checar quanto tempo você tem de Jinchuuriki, e qual bijuu está selado dentro de você.
    A tag da talkactions.xml para esse jutsu(spell) é a seguinte:
    <talkaction words="!jincheck" event="script" value="jincheck.lua"/>  
    Agora vá em data/globalevents/scripts e crie um arquivo chamado jincheck.lua e coloque o seguinte code dentro:
     
    Nota: esse script checa a cada um minuto, os players online na qual o tempo de Jinchuuriki já expirou, e então remove, para assim ele não continuar com os jutsus.
     
    A tag do globalevents.xml desse script é a seguinte:
    <globalevent name="JinSystem" interval="60000" script="jincheck.lua"/>  
    Agora pra finalizar vá em data/creaturescripts/scripts e crie um arquivo chamado jinsystem.lua e adicione o seguinte code:
     
    e a tag do creaturescripts.xml desse script é a seguinte:
    <!-- Jinchuuriki System --> <event type="look" name="JinSystemLook" event="script" value="jinsystem.lua"/> <event type="death" name="JinSystemDeath" event="script" value="jinsystem.lua"/> <event type="login" name="JinSystemLogin" event="script" value="jinsystem.lua"/> <event type="logout" name="JinSystemLogout" event="script" value="jinsystem.lua"/>  
    Nota: na spells.xml que não precisam ter uma vocação especifica para ser usada e devem conter a tag:
    needlearn="1" contendo essa tag, a spell não irá aparecer para nenhum player e não poderá ser usado até que o player sele a bijuu, após ser aprendida quando o player sela a bijuu, irá aparecer no comando !jutsus que em servidores normais é o spellbook e o !spells, em quanto o player não selar, ele não ver e nem pode usar.
     
    bijuu_outfit é o id da looktype que o player vai ganhar ao usar o buff(se você tem outro buff ou speel que faça o mesmo, remova-o ou então remova a função doSetCreatureOutfit da minha buff, assim não gerando conflito e ficando o outfit que deseja).
    skill_p é a quantidade de pontos que ao usar o buff da bijuu, vai add no player.
    time_buff é quanto tempo o buff vai ficar no player valendo também para a looktype.
    effBuff é o id do efeito que vai sair em cima do player quando ele usar o buff.
     
    Pronto, basta configura a spells que cada bijuu(monstro), e pronto.
    Acho que não preciso explicar como configurar, no própio script deixei umas observações.
     
    É totalmente proibido levar meu sistema para outro blog, site ou fórum, fiz esse sistema exclusivamente para membros da comunidade do TibiaKing.
     
     
    Quaisquer erros, sugestões, críticas(construtivas), fiquem a vontade, caso tenha alguma duvida sobre tal parte do script, ou não entendeu alguma parte de como configurar, basta comentar que estarei dando suporte.
     
    Script feito por mim.
     
     
     
    Abraços, bom uso, e boa noite! xD
  8. Curtir
    Break Dimension deu reputação a Vodkart em [MODS] [8.6] Fire Storm Event - Automático   
    Evento for fun para colocar no seu ot, quem é atingido pelo fogo morre, o último a sobreviver ganha.
     
    O evento é automático, mas também possui um comando para dar inicio ao evento, só usar /firestart minutos
     
    exemplo: /firestart 1
     
     
     
     
    Fire_Storm_Event.xml
    <?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Fire Storm Event" version="8.6" author="Vodkart" contact="" enabled="yes"> <config name="fire_config"><![CDATA[ Fire = { storages = {172354, 172355}, -- storage Count players = {min = 2, max = 50}, -- min, max players no evento minLevel = 20, -- level minimo para entrar no event rewards = {{2160,10},{2494,1}}, -- premios que vai receber timeToStartEvent = 30, -- segundos para começar o evento CheckTime = 5, -- time to check event teleport = {{x=158, y=53, z=7}, {x=189 , y=58, z=7}}, -- posição do teleport, posição para onde o jogador vai arena = {{x=186,y=54,z=7},{x=193,y=60,z=7}} -- posição começo e final da area } Fire_Days = { ["Monday"] = {"13:00","18:00","20:00","22:00"}, ["Tuesday"] = {"13:00","18:00","20:00","22:00"}, ["Wednesday"] = {"13:00","18:00","20:00","22:00"}, ["Thursday"] = {"13:00","18:00","20:00","22:00"}, ["Friday"] = {"13:00","18:00","20:00","22:00"}, ["Saturday"] = {"13:00","18:00","20:00","22:00"}, ["Sunday"] = {"13:00","18:00","20:00","22:00"} } function removeFireTp() local t = getTileItemById(Fire.teleport[1], 1387).uid return t > 0 and doRemoveItem(t) and doSendMagicEffect(Fire.teleport[1], CONST_ME_POFF) end function ZerarStorFire() setGlobalStorageValue(Fire.storages[1], 0) setGlobalStorageValue(Fire.storages[2], 0) end function getPlayersInFireEvent() local t = {} for _, pid in pairs(getPlayersOnline()) do if isInRange(getPlayerPosition(pid), Fire.arena[1], Fire.arena[2]) then t[#t+1] = pid end end return t end function getFireRewards(cid, items) local backpack = doPlayerAddItem(cid, 1999, 1) -- backpackID for _, i_i in ipairs(items) 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 end function doFireInArea(n) if #getPlayersInFireEvent() > 1 then for i = 1, n do local pos = {x=math.random(Fire.arena[1].x, Fire.arena[2].x), y=math.random(Fire.arena[1].y,Fire.arena[2].y), z=Fire.arena[1].z} local m = getTopCreature(pos).uid doSendDistanceShoot({x = pos.x - math.random(4, 6), y = pos.y - 5, z = pos.z}, pos, CONST_ANI_FIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_HITBYFIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_FIREAREA) if m ~= 0 and isPlayer(m) then doSendMagicEffect(getCreaturePosition(m), CONST_ME_FIREAREA) doCreatureSay(m, "Ooh Burn Burn", TALKTYPE_ORANGE_1) local corpse = doCreateItem(3058, 1, getPlayerPosition(m)) doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(m) .. ". He was killed by Fire Field.") doSendMagicEffect(getPlayerPosition(m), CONST_ME_POFF) doTeleportThing(m, getTownTemplePosition(getPlayerTown(m))) doPlayerSendTextMessage(m, MESSAGE_EVENT_ADVANCE, "[Fire Storm Event] You died burned out.") end end local x = 2700-(200*n) addEvent(doFireInArea, x <= 0 and 500 or x, n+1) elseif #getPlayersInFireEvent() == 1 then local cid = getPlayersInFireEvent()[1] doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) getFireRewards(cid, Fire.rewards) doBroadcastMessage("Fire Storm Event have finished. The winner is ".. getCreatureName(cid).. ". Congratulations.", MESSAGE_EVENT_ADVANCE) ZerarStorFire() else doBroadcastMessage("No one Won the Fire Storm Event.", MESSAGE_EVENT_ADVANCE) ZerarStorFire() end end function CheckFireEvent(delay) if getGlobalStorageValue(Fire.storages[1]) ~= (Fire.players.max+1) then if delay > 0 and getGlobalStorageValue(Fire.storages[1]) < Fire.players.max then doBroadcastMessage("[Fire Stortm Event] Starting in " .. delay .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING) elseif delay == 0 and getGlobalStorageValue(Fire.storages[1]) < Fire.players.min then for _, cid in pairs(getPlayersInFireEvent()) do doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end removeFireTp() doBroadcastMessage("The Fire Storm event could not start because of to few players participating.\n At least " .. Fire.players.min .. " players is needed!", MESSAGE_STATUS_WARNING) ZerarStorFire() elseif delay == 0 and getGlobalStorageValue(Fire.storages[1]) >= Fire.players.min then removeFireTp() doBroadcastMessage("Good Lucky! The event will start on "..Fire.timeToStartEvent.." seconds. get ready!") addEvent(doFireInArea, Fire.timeToStartEvent*1000, 1) end addEvent(CheckFireEvent, 60000, delay-1) end end ]]></config> <globalevent name="Storm_Fire_Start" interval="60" event="script"><![CDATA[ domodlib('fire_config') function onThink(interval, lastExecution) if Fire_Days[os.date("%A")] then local hrs = tostring(os.date("%X")):sub(1, 5) if isInArray(Fire_Days[os.date("%A")], hrs) and getGlobalStorageValue(Fire.storages[2]) <= 0 then local tp = doCreateItem(1387, 1, Fire.teleport[1]) doItemSetAttribute(tp, "aid", 45111) CheckFireEvent(Fire.CheckTime) setGlobalStorageValue(Fire.storages[1], 0) end end return true end]]></globalevent> <event type="login" name="Storm_Fire_Login" event="script"><![CDATA[ domodlib('fire_config') function onLogin(cid) registerCreatureEvent(cid, "FireStormBatle") if isInRange(getPlayerPosition(cid), Fire.arena[1], Fire.arena[2]) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end return true end]]></event> <event type="combat" name="FireStormBatle" event="script"><![CDATA[ domodlib('fire_config') if isPlayer(cid) and isPlayer(target) and isInRange(getPlayerPosition(cid), Fire.arena[1], Fire.arena[2]) then doPlayerSendCancel(cid, "You may not attack this player.") return false end return true ]]></event> <movevent type="StepIn" actionid ="45111" event="script"><![CDATA[ domodlib('fire_config') function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end if getPlayerAccess(cid) > 3 then return doTeleportThing(cid, Fire.teleport[2]) end if getPlayerLevel(cid) < Fire.minLevel then doTeleportThing(cid, fromPosition, true) doPlayerSendCancel(cid, "You need to be at least level " .. Fire.minLevel .. ".") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return true end if getGlobalStorageValue(Fire.storages[1]) <= Fire.players.max then doTeleportThing(cid, Fire.teleport[2]) setGlobalStorageValue(Fire.storages[1], getGlobalStorageValue(Fire.storages[1])+1) doBroadcastMessage(getPlayerName(cid) .. " entered the fire stortm event! Currently " .. getGlobalStorageValue(Fire.storages[1]) .. " players have joined!", MESSAGE_STATUS_CONSOLE_RED) if getGlobalStorageValue(Fire.storages[1]) == Fire.players.max then setGlobalStorageValue(Fire.storages[1], getGlobalStorageValue(Fire.storages[1])+1) removeFireTp() doBroadcastMessage("The event will start on "..Fire.timeToStartEvent.." seconds. get ready!") addEvent(doFireInArea, Fire.timeToStartEvent*1000, 1) end end return true end]]></movevent> <talkaction words="/firestart;!firestart" access="5" event="buffer"><![CDATA[ domodlib('fire_config') if getGlobalStorageValue(Fire.storages[2]) > 0 then doPlayerSendCancel(cid, "The event is already starting.") return true elseif not param or not tonumber(param) then doPlayerSendCancel(cid, "Use only numbers.") return true end local param = tonumber(param) <= 0 and 1 or tonumber(param) local tp = doCreateItem(1387, 1, Fire.teleport[1]) doItemSetAttribute(tp, "aid", 45111) CheckFireEvent(tonumber(param)) setGlobalStorageValue(Fire.storages[1], 0) setGlobalStorageValue(Fire.storages[2], 1) ]]></talkaction> <globalevent name="FireDebug-Start" type="start" event="buffer"><![CDATA[ domodlib('fire_config') ZerarStorFire() return true]]></globalevent> </mod>  
    A configuração está explicita na lib do mods... valeu!
     
    fire lua.rar
  9. Curtir
    Break Dimension deu reputação a Dwarfer em Book System   
    Hail, Durin! Fiz esse sisteminha simples baseado na ideia do @Chriistian . Pode ter utilidade para servidores que queiram implementar o RPG, utilizando em quests dando dicas. Testado em TFS 0.4.
     
    Funcionamento: Ao usar uma estante de livros, o player ganha um livro.
     

     
    Comando !book : Mostra todos os livros que o player conseguiu.

     
    Ao usar outras estantes: 
     

     
    Comando !book Título_do_livro: Mostra o livro para o player.
     

     
    [MOD]
     
     
     
    Configuração:
    {aid = 17710, title = "Criar cerveja", icon = 4839} --> ActionID da estante, título do livro, ícone que aparecerá no livro
     
    stories = {
    [1] = {"Escreva a história do book[1] aqui. Separe por vírgulas para facilitar a escrita no script.",
             " Pode ser que o texto seja muito grande, então isso ajudará na visualização."},
     
    Coloquei para as estantes de id 1718 e 1721, caso queira colocar outras, adicione na linha:
    <action itemid="1718;1721" event="script">
     
    That's all folks! 
  10. Curtir
    Break Dimension deu reputação a xWhiteWolf em Magnus Challenger   
    Fala galera, hoje vim trazer o projeto pronto do Magnus Challenger pra vocês instalarem no servidor de vocês!   

    Pra quem não conhece é um sistema de Tasks baseado no Zezenia onde você pode escolher entre tasks de matar monstros ou de coletar certos items para o npc Magnus, um guerreiro famoso da cidade que está atolado de tarefas e precisa da sua ajuda!

    Peguei os aspectos que eu julguei serem os principais do modelo do Zezenia e editei com algumas coisas que eu achei que ficariam melhores.
    Quem quiser pode ver um vídeo comentado de como o sistema funciona:




    Dito isso vou ensinar vocês como instalar isso no server:
    Pra começar vá em data\creaturescripts\scripts e procure login.lua, agora vá até o final do arquivo e antes do último return true coloque essas linhas abaixo

    ainda em creaturescripts procure creaturescripts.xml e adicione essa linha junto com as outras que já estão lá (seguindo o padrão)
    <!-- TASK SYSTEM --> <event type="kill" name="tasksystem" script="tasksystem.lua"/> Agora crie um arquivo em creaturescripts\scripts com o nome de tasksystem.lua e adicione o seguinte à ele:




    Terminada a parte da contagem de kill vamos ao NPC em si.
    Crie um arquivo chamado Magnus.xml em data\npc e coloque isso dentro dele:




    Agora em data\npc\scripts crie um arquivo chamado zezeniaa.lua e adicione esse conteúdo dentro do arquivo:





    ~~~~~~~~~~~~~~~~ FEITO ISSO ESTÁ TERMINADO ~~~~~~~~~~~~~~~~~~

    Agora aprendendo a configurar:
     
    No tasksystem vc pode editar isso daqui:
    Eu fiz um sistema onde se vc estiver em party com alguém e a pessoa matar os bixos conta como se você tivesse matado; Assim incentiva o pessoal a ir numa cave de Dragon e ao invés de matar quem está lá pra ficar sozinho na cave, eles vão chamar party pra fazerem a task juntos.. assim fazer amigos fica mais fácil e com maiores laços é maior a chance do povo não abandonar o seu server.

    Apenas digite "true" ou "false" pra ativar/desativar esse sistema e em baixo temos a distancia máxima pro monstro estar do cara que está fazendo a task pra contar o kill. Se a distancia entre o monstro e a pessoa for maior que 7 não vai contar pra ele a kill.


    No zezeniaa.lua as coisas que dão pra configurar são maiores mas são igualmente simples:
    Toda vez que vc pedir uma task short (curta) vc vai ter de 100 a 400 monstros pra matar, ele gera um número de 0 a 6 e multiplica por 5 e soma com os 100 iniciais.. o mesmo vale pra todos os outros valores.

    levelcollect é o level mínimo pra fazer tasks do tipo collect.
    time é o tempo em segundos que você vai ficar sem poder falar com o npc caso desista de alguma task, o padrão é 8 * 60 * 60 (8 horas)
    bonus é por quanto vai multiplicar caso vc permita que o npc escolha aleatoriamente entre todas as opções.. o padrão é 20% de bonus (1.2)
    multiplicador é uma coisa que eu adicionei pra ficar mais fácil mexer na fórmula sem cometer cagadas, se vc tá ganhando 10% de exp e quer ganhar 80% é só colocar 8 no multiplicador.

     
    Isso daqui é o banco de dados principal do sistema de kill, toda vez que vc escolher uma task do tipo fácil, médio, dificil ele vai acessar essas tabelas contendo o nome das criaturas.. vc pode facilmente adicionar novos nomes, o npc já está programado pra lidar com isso, apenas siga o padrão e mantenha sempre o último sem vírgula!

    Ex: adicionando Morgaroth na tabela de hard
    local hard = { [1] = "Giant Spider", [2] = "Dragon Lord", [3] = "Grim Reaper", [4] = "Demon", [5] = "Crystal Spider", [6] = "Demon Skeleton", [7] = "Juggernaut", [8] = "Destroyer", [9] = "Hand of Cursed Fate", [10] = "Morgaroth" } atente-se também pra não repetir o número no index.. se o anterior era [9] use [10].

    O restante das tabelas são separadas para o banco de dados das tasks de collect:
     
    segue a mesma lógica da de kill só que aqui você tem o id dos itens que serão usados... aquela count não tem nada a ver com o item pois ele vai gerar tanto o item aleatoriamente quanto à count;
    Ex: 
    [1] = {id = 5880, count = 20}, -- iron ore isso não significa que se cair iron ore (id 5880) irá cair sempre 20.. até porque eu poderia escolher uma task long e easy e pegar a task de trazer até 50 iron ores, apenas tente manter os padrões que são os intervalos definidos.
    No easy ele varia de 10 a 20, no medium ele varia de 20 a 35 e no hard de 40 a 50.



    Espero que vocês tenham curtido, é um sistema grande mas bem simples de se mexer... se tiverem quaisquer problemas podem comentar aqui. Deu trabalho fazer isso então se você gostou deixe o seu comentário aí e o seu "Gostei" que vai me incentivar a trazer mais coisas desse tipo pra cá. Abraços do lobo.


    PS: Pra sumonar o npc digite com o GOD: /n Magnus ou coloque ele pelo map editor.
  11. Curtir
    Break Dimension deu reputação a Danihcv em [TUTORIAL] Resolvendo qualquer erro na data base   
    Opa, galerinha do TK, pro meu primeiro tutorial resolvi fazer uma solução de um problema que desde que cheguei no TK, vejo que ocorre com uma certa frequência. Os erros da data base.
     
    Neste tutorial vou ensinar a resolver os erros do tipo No such table, Insert into, No such column, ... has no column named... etc.
     
    1°) NO SUCH TABLE
     
    Bom, para o erro No such table, basta vc visualizar qual table está faltando. Para isso basta ler o erro na distro:

     
    No caso da imagem, está faltando a table: player_statements
    Para resolver este e qualquer outro problema deste tipo, caso sua data base seja sqlite,
    basta abrir sua data base pelo Sqlite Studio(download: http://sqlitestudio.pl/?act=download) e clicar em Open SQL query editor:



     
    Mas caso sua data base seja Mysql abra pelo phpMyadmin, ou por outro editor de sua preferencia.
     
    1.1°) EXECUTANDO OS COMANDOS PARA RESOLVER O PROBLEMA
      Bom, dependendo da table que estiver faltando, vc irá colocar seu respectivo comando, segue abaixo TODOS os comandos básicos necessários para que sua data base fique Ok! :   (VC VAI PEGAR O COMANDO REFERENTE À TABLE QUE VC QUER!!!)
     
     
    account_viplist



     
    Sqlite




     
    accounts



     
    Sqlite




     
    bans



     
    Sqlite




     
    environment_killers



     
    Sqlite




     
    global_storage



     
    Sqlite




     
    guild_invites



     
    Sqlite




     
    guild_kills



     
    Sqlite




     
    guild_ranks



     
    Sqlite




     
    guild_wars



     
    Sqlite




     
    guilds



     
    Sqlite




     
    house_auctions



     
    Sqlite




     
    house_data



     
    Sqlite




     
    house_lists



     
    Sqlite




     
    houses



     
    Sqlite




     
    killers



     
    Sqlite




     
    market_history



     
    Sqlite




     
    market_offers



     
    Sqlite




     
    player_deaths



     
    Sqlite




     
    player_depotitems



     
    Sqlite




     
    player_inboxitems



     
    Sqlite




     
    player_items



     
    Sqlite




     
    player_killers



     
    Sqlite




     
    player_namelocks



     
    Sqlite




     
    player_skills



     
    Sqlite




     
    player_spells



     
    Sqlite




     
    player_statements



     
    Sqlite




     
    player_storage



     
    Sqlite




     
    player_viplist



     
    Sqlite




     
    players



     
    Sqlite




     
    server_config



     
    Sqlite




     
    server_motd



     
    Sqlite




     
    server_record



     
    Sqlite




     
    server_reports



     
    Sqlite




     
    tile_items



     
    Sqlite




     
    tile_store



     
    Sqlite




     
    tiles



     
    Sqlite




     
    announcements



     
    Sqlite




     
    pagsegurotransacoes



     
    Sqlite




     
    player_advances



     
    Sqlite




     
    reports



     
    Sqlite




     
    thanks



     
    Sqlite




     
    z_bug_logs



     
    Sqlite




     
    z_featured_article



     
    Sqlite




     
    z_forum



     
    Sqlite




     
    z_helpdesk



     
    Sqlite




     
    z_monsters



     
    Sqlite




     
    z_network_box



     
    Sqlite




     
    z_news_tickers



     
    Sqlite




     
    z_ots_comunication



     
    Sqlite




     
    z_polls



     
    Sqlite




     
    z_polls_answers



     
    Sqlite




     
    z_poll_votes



     
    Sqlite




     
    z_shop_history_item



     
    Sqlite




     
    z_shop_history_pacc



     
    Sqlite




     
    z_shop_offer



     
    Sqlite




     
    z_spells



     
    Sqlite




     
    z_news_big



     
    Sqlite




     
     
    2°) No such column /  "NOME DA TABLE" has no column named "NOME DA COLUMN QUE FALTA" / Insert into
      Bom, para resolver esse problema vc deve identificar em qual TABLE está essa coluna que falta. Para isso, basta ler o erro como na imagem:

     
    No caso da imagem, está faltando a column WORLD_ID dentro da table MARKET_OFFERS. Para resolver, vc deve executar excluir a sua table MARKET_OFFERS existante em sua data base, e em seguida, executar o domando da da market_offers, encontrado acima, logicamente isso só se aplica ao caso da imagem, depende do seu caso, vc deve excutar o comando da table que estiver sendo referida no erro. Mas antes de executá-lo vc deve excluir a sua table EXISTENTE, para então executar o comando.
     
    ESTA FORMA DE RESOLUÇÃO SE APLICA AOS TRÊS CASOS: NO SUCH COLUMN, ...HAS NO COLUMN NAMED... e INSERT INTO.
     
     
     
    Bom galera, é isso.
     
    SE ENCONTRAREM, OU SE DEPARAREM COM ALGUM ERRO, BASTA ME PEDIR AJUDA QUE EU DAREI TOTAL SUPORTE PARA VOCÊS!
     
    SE ESTIVR FALTANDO MAIS ALGUMA TABLE QUE EU NÃO COLOQUEI AQUI, PF ME INFORMEM E EU ATUALIZAREI O TÓPICO!!!
     
     
    Lembrem-se, se eu te ajudei, por favor, deem REP++ pois foi meio trabolhoso fazer este tutorial todo...
     
    ESTOU A DISPOSIÇÃO DE TODOS! Tanto por PM quanto por SKYPE, e até mesmo por aqui, pois vou checar este tópico regularmente!!
     
     
    Espero ter ajudado!!
    Abraços.
  12. Curtir
    Break Dimension deu reputação a WhiteBubble em Dbo Rox V2 8.60 [Open Source][99% SEM BUGS]   
    Dragon Ball
    Rox
    Servidor 100% estável com mais de 200 horas online.
    38 Vocações sendo 9 delas vip que são:
    Shenron,Vegetto,Zaiko,Kagome,Tapion,Kame
    Chilled,C8 e King Vegetta.
    Spells de fast attack (Usa uma vez sai 10 hits).
    Eventos automaticos como: Castle,Battlefield,Run event.
    Reborn level maximo 600.
    Vamos aos bugs que eu encontrei:
    * Zombie event quando o zombie pega algum player todos do evento e mandando pra fora e evento encerra.
    * Erro quando usa spell e a pessoa morre antes da spell acabar no caso das de combo.
    * Erro nos eventos Battlefield e Run event quando vai adicionar a recompensa da erro por faltar uma tabela na database que não me recordo o nome agora.
     
    Update v2
     Adicionado 7 novas vocações vips sendo elas:
    Bills,Whiss,Golden Freeza,Vegetto Blue,Zamasu,Gogeta Blue e Goku Black Evo.
    Adicionado 3 vocações free sendo elas: Zeno, Vados e Vegetto Black.
    Vocações que antes era vip no update v1 agora são free.
    Fazer reborn não precisa mais fazer quest das esferas do dragão.
     Adicionado cassino que se ganha small diamonds que se troca por:
    Divine Stone(Usado para upgrade), Black Stone (Item para virar Vegetto Black) e Leviathan Amulet.
    Adicionado npc que vende Anti Loss Ring Protege 10% contra todos danos e funciona como a band of loss porem infinita. Ele fica no Yama.
    Adicionado sistema de pontuação por hora online, cada 1 hora online = 1 ponto que se pode trocar por itens no npc Points Trader no Yama.
    Adicionado sistema Anti-MC, podendo logar somente 2 contas por ip.
    Adicionado 3 bosses espalhados pelo mapa (Earth).
    Adicionado sistema de forja podendo criar o melhor set, armas free e o item para virar Zeno.
     Adicionado sistema de upgrade fazendo seu item ficar mais forte.
     Adicionado transformação ultra god para todas as vocações, sendo pega no templo de reset ao lado do esquerdo do templo. Necessário ter level 800 e possuir 100 God Essences que dropam do Ultra God Bills em God Island.Para entrar no templo de reset é necessário possuir 1 reset, para dar reset necessita ter level 800 e digitar o comando "!reset", você voltara para o level 100 com o hp/mp de um player level 100 mas ganhara acesso a área de reset que tem o npc de ultra god e a área de forja.
    Nova moeda acima de Gold sendo ela Blue God equivalente a 100 Gold Bars.
     Area de evento pvp e dice/bag adicionada no Yama.
     Area vip adicionada.
     Adicionado 2 sets novos free, 2 armas free, 2 shields free, senzu free (God Senzu), Senzu vip (Mystic Senzu), Vados staff free, Whiss staff vip.
     Vocações que antes era vip na v1 se pega na capsule ao lado direito do templo.
     Algumas modificações no mapa, hunts, quest.
    Por enquanto é só isso que estou lembrando,conforme eu lembro edito o tópico.
     
    Gostou ? Clique em Gostei logo abaixo.
     
    Para consertar o erro da loteria só executar essa query na sua database:
    CREATE TABLE `lottery` ( `id` int(11) NOT NULL auto_increment, `name` varchar(255) NOT NULL, `item` varchar(255) NOT NULL, `world_id` tinyint(2) unsigned NOT NULL default '0', `item_name` varchar(255) NOT NULL, `date` varchar(256) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;  
     
     
     Downloads
     
    Server (Distro para windows e linux já compilada)      Scan
    Cliente    Scan
    Sources     Scan
    Site (Modern Acc)    Scan
    Database     Scan
     
     
     
     
    Creditos server: Kramer, WhiteBubble
    Creditos site: @Hastafaru e a WhiteBubble por adaptar ao server
    Creditos source: Fir3element e WhiteBubble por aumentar limite de efeitos e por skill fist skill para aumentar attack speed.
     
  13. Curtir
    Break Dimension deu reputação a leozincorsair em (Resolvido)Erro Na Distro "Login"   
    Da uma olhada nesse tópico lá tem muita coisa talvez te ajude.
     
     
  14. Curtir
    Break Dimension deu reputação a .HuRRiKaNe em (Resolvido)Erro Na Distro "Login"   
    Execute essa query na sua db:
    DROP TABLE IF EXISTS z_ots_comunication; CREATE TABLE z_ots_comunication ( id INT( 11 ) NOT NULL, name VARCHAR( 255 ) NOT NULL, type VARCHAR( 255 ) NOT NULL, [action] VARCHAR( 255 ) NOT NULL, param1 VARCHAR( 255 ) NOT NULL, param2 VARCHAR( 255 ) NOT NULL, param3 VARCHAR( 255 ) NOT NULL, param4 VARCHAR( 255 ) NOT NULL, param5 VARCHAR( 255 ) NOT NULL, param6 VARCHAR( 255 ) NOT NULL, param7 VARCHAR( 255 ) NOT NULL, delete_it INT( 2 ) NOT NULL DEFAULT '1', PRIMARY KEY ( id ) );  
  15. Curtir
    Olá pessoal, resolvi criar um sistema de recompensa parecido com o sistema do tibia global para a versão 8.60, mas tie que fazer varias "gambiarras" para ele funcionar nesta versão.

    Para quem não conhece: http://www.tibiawiki.com.br/wiki/Loot#Sistema_de_Recompensas

    Basicamente meu sistema funciona da seguinte forma:
    • você determina as criaturas que irão funcionar com esse sistema (normalmente bosses).
    • durante a batalha com a criatura o sistema conta pontos aos jogadores por ataque, bloqueio e suporte ("healar" quem esta na batalha).
    • quando a criatura é morta o sistema cria um "loot" de acordo com os pontos e envia-o ao depot do jogador em uma bag determinada nas configurações.

    Primeiramente vamos criar o arquivo das configurações gerais, crie uma pasta dentro do "data" com o nome de sistemas e dentro cria um arquivo rewardchest.lua: 

    Depois em creaturescript crie dois arquivos:
    rewardchest_boss.lua:

    e rewardchest_pontos.lua: 

    Lembrando que em todas as criaturas que forem adicionadas ao sistema além de coloca-las no rewarchest.lua você deve add isso no xml do monstro: 
    <script> <event name="RewardChestDeath"/> <event name="RewardChestMonster"/> </script> E isso no creaturescript.xml: 
    <!-- Sistema de recompensa criado por luanluciano93 --> <event type="login" name="RewardChestLogin" event="script" value="rewardchest_pontos.lua"/> <event type="statschange" name="RewardChestStats" event="script" value="rewardchest_pontos.lua"/> <event type="death" name="RewardChestDeath" event="script" value="rewardchest_boss.lua"/> <event type="statschange" name="RewardChestMonster" event="script" value="rewardchest_boss.lua"/>
    Basicamente é isso, qualquer dúvida postem aqui ... abraços!

    LINK DO SCRIPT NO GITHUB: https://github.com/luanluciano93/ESTUDOS/tree/master/LUA/REWARD_SYSTEM_860

Informação Importante

Confirmação de Termo