Histórico de Curtidas
-
Break Dimension deu reputação a Darkeyren em É necessário primeiro matar os summonsQual 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!
-
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.
-
Break Dimension deu reputação a Absolute em (Resolvido){Pedido} Efeito de ChuvaGlobalevents/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.
-
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
-
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. -
Break Dimension deu reputação a Absolute em [Chuva de Items] New EventOlá 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.
-
Break Dimension deu reputação a KotZletY em [Narutibia] Jinchuuriki System - Distro 0.4Salve 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
-
Break Dimension deu reputação a Vodkart em [MODS] [8.6] Fire Storm Event - AutomáticoEvento 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
-
Break Dimension deu reputação a Dwarfer em Book SystemHail, 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!
-
Break Dimension deu reputação a xWhiteWolf em Magnus ChallengerFala 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.
-
Break Dimension deu reputação a Danihcv em [TUTORIAL] Resolvendo qualquer erro na data baseOpa, 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.
-
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.
-
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.
-
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 ) );
-
Break Dimension deu reputação a luanluciano93 em [8.60] Sistema de Recompensa Loot De Boss Compartilhado (reward chest)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