Ir para conteúdo

Jeff Delay

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    Jeff Delay recebeu reputação de Under em Novo Narutibia aberto dia 02/08/2024   
    Servidor Online
    Aberto dia 02/08
    [+]Saga System
    [+]Kage System
    [+]Task System
    [+]Rarity System
    [+]Upgrade System
    [+]Refinament System
    [+]AutoLoot System
    [+]Rarity Loot System
    [+]Anbu/akatsuki System
    [+]Guild Castle War
    [+]Diversos Eventos
    [+]Old cliente customizado 
    [+]Old e otc com anti target
    [+]Mapa 100% proprio feito do zero
    [+]VocationDay System
    [+]Aura/buff System
    Tudo isso e muito mais, nos acompanhe em:
    https://www.ntoarmageddon.com/account/create
    https://discord.gg/82HfH5PH




  2. Gostei
    Jeff Delay deu reputação a KevinLuzetti em NPC Cassino   
    Oi gente, eu estava procurando aqui um npc de aposta de 21 e achei no meio das minhas coisas vou disponibilizar pra vcs.
     
    Testado em 0.3.6 e 0.4
     
    XML

    <?xml version="1.0"?> <npc name="Brian O'Conner" script="data/npc/scripts/dicer.lua" walkinterval="0" floorchange="0"> <health now="100" max="100"/> <look type="132" head="114" body="0" legs="0" feet="114" addons="3"/> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME|, quer {apostar} comigo? " /> </parameters> </npc>
     
     
     
     
    LUA

    price_21 = 1000 -- 1k ou 1000gold price_jogo6 = 5000 local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {}                                                                                                function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid if(msgcontains(msg, 'apostar')) then selfSay('Eu faco 2 jogos: {21}, e jogo do {6}, escolha um deles!', cid) talkState[talkUser] = 5 elseif (msgcontains(msg, '6') and talkState[talkUser] == 5)    then selfSay('O Jogo do 6 funciona assim: Eu vou rodar um dado, e se cair no numero 6 voce ganha o sextuplo (6 vezes) do valor apostado.', cid) selfSay('Caso nao caia no 6, voce perde apenas o dinheiro da aposta.', cid) selfSay('Esta pronto para {comecar}?.', cid) talkState[talkUser] = 3 elseif(msgcontains(msg, 'comecar') and talkState[talkUser] == 3) then selfSay('Voce possui o {dinheiro} da aposta ('..price_jogo6..')golds ?', cid) if doPlayerRemoveMoney(cid, price_jogo6) == TRUE then talkState[talkUser] = 2 else selfSay('Desculpe, mais voce nao tem dinheiro para apostar comigo.',cid) end elseif(msgcontains(msg, 'dinheiro') and talkState[talkUser] == 2) then sorteio6 = math.random(1,6) if sorteio6 == 6 then talkState[talkUser] = 3 selfSay('Parabens, o numero sorteado foi 6 e voce acaba de ganhar '..(price_jogo6*6) ..'golds, mais o dinheiro que voce pagou da aposta.',cid) doPlayerAddMoney(cid,price_jogo6*6) else talkState[talkUser] = 2 selfSay('Que azar, o numero sorteado foi '..sorteio6..', mais sorte na proxima.',cid) end elseif(msgcontains(msg, '21') and talkState[talkUser] == 5) then selfSay('O 21 funciona assim: Voce ira ganhar 1 numero e o numero tem quer ser 21, ou chegar o mais proximo possivel sem ultrapassar esse valor.', cid) selfSay('E a mesma coisa sera feita comigo, ganharei 1 numero.', cid) selfSay('Voce pode ir comprando mais numeros dizendo {comprar} e se quiser parar e so dizer {parar}.', cid) selfSay('Se voce ganhar de mim, voce leva o triplo do dinheiro apostado.', cid) selfSay('Esta pronto para {comecar}?.', cid) talkState[talkUser] = 0 elseif(msgcontains(msg, 'comecar') and talkState[talkUser] == 0) then selfSay('Voce possui o {dinheiro} da aposta ('..price_21..')golds ?', cid) talkState[talkUser] = 1 elseif(msgcontains(msg, 'dinheiro') and talkState[talkUser] == 1) then if doPlayerRemoveMoney(cid, price_21) == TRUE then talkState[talkUser] = 0 local mpn = math.random(1,21) setPlayerStorageValue(cid, 55411,mpn)   local pn = getPlayerStorageValue(cid, 55411)         selfSay('Seu numero e '..pn..', quer comprar mais ou parar?',cid) else selfSay('Desculpe, mais voce nao tem dinheiro para apostar comigo.',cid) end elseif(msgcontains(msg, 'comprar') and talkState[talkUser] == 0) then local cp = math.random(1,10) setPlayerStorageValue(cid, 55411, (getPlayerStorageValue(cid, 55411))+cp) selfSay('Seu numero e '..getPlayerStorageValue(cid, 55411)..', quer comprar mais ou parar?',cid) talkState[talkUser] = 0   elseif(msgcontains(msg, 'parar') and talkState[talkUser] == 0) then local npcn = math.random(1,21) setPlayerStorageValue(cid, 2224, npcn) if getPlayerStorageValue(cid, 55411) < getPlayerStorageValue(cid, 2224) then selfSay('Meu numero e '..getPlayerStorageValue(cid, 2224)..'.',cid)        selfSay('Seu numero final e '..getPlayerStorageValue(cid, 55411)..'.',cid)   selfSay('Ganhei, mais sorte na proxima vez.',cid)    talkState[talkUser] = 1 elseif getPlayerStorageValue(cid, 55411) == getPlayerStorageValue(cid, 2224) then selfSay('Meu numero e '..getPlayerStorageValue(cid, 2224)..'.',cid)        selfSay('Seu numero final e '..getPlayerStorageValue(cid, 55411)..'.',cid)   selfSay('Empato, portanto ninguem ganha nada.',cid) talkState[talkUser] = 1 elseif  getPlayerStorageValue(cid, 55411) > getPlayerStorageValue(cid, 2224) and getPlayerStorageValue(cid, 55411) <= 21 then selfSay('Meu numero e '..getPlayerStorageValue(cid, 2224)..'.',cid)        selfSay('Seu numero final e '..getPlayerStorageValue(cid, 55411)..'.',cid)   local somag = (price_21*3) selfSay('Voce ganhou '..somag..'golds, mais os seus '..price_21..'golds de volta. Parabens !!!',cid)    doPlayerAddMoney(cid, somag) doPlayerAddMoney(cid, price_21) talkState[talkUser] = 1 else selfSay('Você tirou um numero maior que 21, então você perdeu.',cid) end                        end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  3. Gostei
    Jeff Delay deu reputação a Mateus Robeerto em [TFS 1.4.2] Reward Chest System!!   
    Com esse sistema desenvolvido pelo TFS 0.4 8.60 do @Luan Luciano, peguei e adaptei para TFS 1x.
     
    Basicamente, o sistema funciona da seguinte forma :
     
    Você determina as criaturas que funcionarão com este sistema (geralmente chefes).
    Durante a batalha com a criatura, o sistema concede pontos aos jogadores por atacar, bloquear e apoiar (curar) aqueles em batalha.
    Quando a criatura é morta, o sistema cria o saque com base nos pontos e o envia para o depósito do jogador em uma sacola especificada nas configurações
    Aqui está o GIF, mostrando quando o chefe é morto e o saque é enviado pelo correio.
    https://imgur.com/AJiM1mh
     
     
     
    registre o evento em determinado arquivo de monstro.
    XML.
    <script> <event name="RewardChestDeath"/> <event name="RewardChestMonster"/> </script> defina o cadáver do chefe como 0.
    <look type="201" corpse="0" /> Isto é RevScripts. Coloque o script em qualquer lugar da pasta data/scripts, seja uma subpasta ou seu local preferido .
    Reward_Chest_System.lua
    local function addRewardLoot(uid, bossName, rewardTable) local money = math.random(10, 40) local msg = "The following items are available in your reward chest:" local player = Player(uid) local chest = Game.createItem(REWARDCHEST.rewardBagId) if not player or not chest then return end chest:setAttribute("description", "Reward System has kill the boss " .. bossName .. ".") for _, reward in ipairs(rewardTable) do if math.random(100) <= reward[3] then local count = math.random(1, reward[2]) chest:addItem(reward[1], count) msg = msg .. " " .. (count > 1 and count or "") .. " " .. ItemType(reward[1]):getName() .. "," end end chest:addItem(2152, money) chest:moveTo(player:getInbox()) player:sendTextMessage(MESSAGE_INFO_DESCR, msg .. " and " .. money .. " platinum coins.") local boss = REWARDCHEST.bosses[bossName] player:setStorageValue(boss.storage, 0) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) end local function addLoot(lootTable, rewardTable, allLoot) if allLoot then for _, loot in ipairs(lootTable) do table.insert(rewardTable, loot) end else table.insert(rewardTable, lootTable[math.random(#lootTable)]) end end local function rewardChestSystem(bossName) local players = {} local boss = REWARDCHEST.bosses[bossName] for _, player in ipairs(Game.getPlayers()) do local points = player:getStorageValue(boss.storage) if points > 0 then table.insert(players, {player = player, points = points}) end end table.sort(players, function(a, b) return a.points > b.points end) local topPoints = players[1] and players[1].points or 0 for i, playerData in ipairs(players) do local player = playerData.player local points = playerData.points local rewardTable = {} if i == 1 then addLoot(boss.common, rewardTable, false) addLoot(boss.semiRare, rewardTable, false) addLoot(boss.rare, rewardTable, false) addLoot(boss.always, rewardTable, true) elseif points >= math.ceil(topPoints * 0.8) then addLoot(boss.common, rewardTable, false) addLoot(boss.semiRare, rewardTable, false) addLoot(boss.rare, rewardTable, false) addLoot(boss.veryRare, rewardTable, false) elseif points >= math.ceil(topPoints * 0.6) then addLoot(boss.common, rewardTable, false) addLoot(boss.semiRare, rewardTable, false) addLoot(boss.rare, rewardTable, false) elseif points >= math.ceil(topPoints * 0.4) then addLoot(boss.common, rewardTable, false) addLoot(boss.semiRare, rewardTable, false) elseif points >= math.ceil(topPoints * 0.1) then addLoot(boss.common, rewardTable, false) end addRewardLoot(player:getId(), bossName, rewardTable) end end local RewardChestDeath = CreatureEvent("RewardChestDeath") function RewardChestDeath.onDeath(creature, corpse, killer) local boss = REWARDCHEST.bosses[creature:getName():lower()] if boss then addEvent(rewardChestSystem, 1000, creature:getName():lower()) end return true end RewardChestDeath:register() local RewardChestMonster = CreatureEvent("RewardChestMonster") function RewardChestMonster.onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin) if creature:isMonster() and primaryType == COMBAT_PHYSICALDAMAGE and attacker:isPlayer() then local boss = REWARDCHEST.bosses[creature:getName():lower()] if boss then local currentPoints = attacker:getStorageValue(boss.storage) local newPoints = currentPoints + math.ceil(primaryDamage / REWARDCHEST.formula.hit) attacker:setStorageValue(boss.storage, newPoints) end end return primaryDamage, primaryType end RewardChestMonster:register() local LoginPlayer = CreatureEvent("LoginPlayer") function LoginPlayer.onLogin(player) for _, value in pairs(REWARDCHEST.bosses) do if player:getStorageValue(value.storage) > 0 then player:setStorageValue(value.storage, 0) end end player:registerEvent("RewardChestStats") return true end LoginPlayer:register() local RewardChestStats = CreatureEvent("RewardChestStats") function RewardChestStats.onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin) if attacker and attacker:isMonster() and (primaryType == COMBAT_PHYSICALDAMAGE or secondaryType == COMBAT_PHYSICALDAMAGE) then local boss = REWARDCHEST.bosses[attacker:getName():lower()] if boss then local currentPoints = creature:getStorageValue(boss.storage) local newPoints = currentPoints + math.ceil(math.abs(primaryDamage) / REWARDCHEST.formula.block) creature:setStorageValue(boss.storage, newPoints) creature:setStorageValue(REWARDCHEST.storageExaust, os.time() + 5) end elseif attacker and attacker:isPlayer() and (primaryType == COMBAT_HEALING or secondaryType == COMBAT_HEALING) and (creature:getHealth() < creature:getMaxHealth()) and (creature:getStorageValue(REWARDCHEST.storageExaust) >= os.time()) then for _, valor in pairs(REWARDCHEST.bosses) do if creature:getStorageValue(valor.storage) > 0 then local add = math.min(primaryDamage, creature:getMaxHealth() - creature:getHealth()) local currentPoints = attacker:getStorageValue(valor.storage) local newPoints = currentPoints + math.ceil(add / REWARDCHEST.formula.suport) attacker:setStorageValue(valor.storage, newPoints) end end end return primaryDamage, primaryType end RewardChestStats:register() Agora, esta parte sobre raridades de loot de monstros... deve ser adicionada ao data/lib e criar um arquivo.lua chamado RewardChestSystem.lua e adicionar tudo isso.
    -- Reward system created by luanluciano93 for TFS 0.4, function adapted by Mateus Roberto for TFS 1.3+ using RevScripts. REWARDCHEST = { rewardBagId = 2595, formula = {hit = 3, block = 1, support = 9}, storageExhaust = 60000, town_id = 1, bosses = { ["ghazbaran"] = -- the boss's entire name in lower case. { common = { {2143, 10, 100}, -- white pearl {2146, 10, 100}, -- small sapphire {2145, 10, 100}, -- small diamond {2144, 10, 100}, -- black pearl {2149, 10, 100}, -- small emeralds {5954, 3, 100}, -- demon horn {7896, 1, 100}, -- glacier kilt {7590, 1, 100}, -- great mana potion {2179, 1, 100}, -- gold ring {2151, 1, 100}, -- talon }, semiRare = { {2152, 90, 100}, -- platinum coin {7368, 50, 100}, -- assassin star {2130, 1, 100}, -- golden amulet {2436, 1, 100}, -- skull staff {2447, 1, 100}, -- twin axe {2171, 1, 100}, -- platinum amulet {2158, 1, 100}, -- blue gem {2393, 1, 100}, -- giant sword {2164, 1, 100}, -- might ring {7454, 1, 100}, -- glorious axe {6553, 1, 100}, -- ruthless axe {9971, 1, 100}, -- gold ingot }, rare = { {2160, 3, 100}, -- crystal coin {8887, 1, 100}, -- frozen plate {2470, 1, 100}, -- golden legs {2472, 1, 100}, -- magic plate armor {7431, 1, 100}, -- demonbone {2520, 1, 100}, -- demon shield {5943, 1, 100}, -- morgaroth heart {2466, 1, 100}, -- golden armor {2514, 1, 100}, -- mastermind shield {2142, 1, 100}, -- ancient amulet {2123, 1, 100}, -- ring of the sky {1984, 1, 100}, -- blue tome }, veryRare = { {8866, 1, 100}, -- robe of the ice queen {6553, 1, 100}, -- ruthless axe {8884, 1, 100}, -- oceanborn leviathan armor {2421, 1, 100}, -- thunder hammer {2646, 1, 100}, -- golden boots {7455, 1, 100}, -- mythril axe }, always = { {2148, 90, 100}, -- gold coin {6500, 9, 100}, -- demonic essence {2177, 1, 100}, -- life crystal {2214, 1, 100}, -- ring of healing }, storage = 65479, }, ["orshabaal"] = -- the boss's entire name in lower case. { common = { {2143, 10, 100}, -- white pearl {2146, 10, 100}, -- small sapphire {2145, 10, 100}, -- small diamond {2144, 10, 100}, -- black pearl {2149, 10, 100}, -- small emeralds {5954, 3, 100}, -- demon horn {7896, 1, 100}, -- glacier kilt {2432, 1, 100}, -- fire axe {2462, 1, 100}, -- devil helmet {7590, 1, 100}, -- great mana potion {2179, 1, 100}, -- gold ring {2151, 1, 100}, -- talon }, semiRare = { {2195, 1, 100}, -- boots of haste {2436, 1, 100}, -- skull staff {2393, 1, 100}, -- giant sword {5954, 5, 100}, -- demon horn }, rare = { {2470, 1, 100}, -- golden legs {2472, 1, 100}, -- magic plate armor {2514, 1, 100}, -- mastermind shield {2520, 1, 100}, -- demon shield {1982, 1, 100}, -- purple tome {2123, 1, 100}, -- ring of the sky }, veryRare = { {8890, 1, 100}, -- robe of the underworld {2421, 1, 100}, -- thunder hammer }, always = { {5808, 1, 100}, -- orshabaal's brain {2171, 1, 100}, -- platinum amulet {2148, 90, 100}, -- gold coin {2146, 10, 100}, -- small sapphire }, storage = 65480, }, ["ferumbras"] = -- the boss's entire name in lower case. { common = { {2143, 10, 100}, -- white pearl {2146, 10, 100}, -- small sapphire {2145, 10, 100}, -- small diamond {2144, 10, 100}, -- black pearl {2149, 10, 100}, -- small emeralds {7416, 1, 100}, -- bloody edge {7896, 1, 100}, -- glacier kilt {2432, 1, 100}, -- fire axe {2462, 1, 100}, -- devil helmet {7590, 1, 100}, -- great mana potion {2179, 1, 100}, -- gold ring {2151, 1, 100}, -- talon }, semiRare = { {2195, 1, 100}, -- boots of haste {2472, 1, 100}, -- magic plate armor {2393, 1, 100}, -- giant sword {2470, 1, 100}, -- golden legs {2514, 1, 100}, -- mastermind shield }, rare = { {8885, 1, 100}, -- divine plate {2520, 1, 100}, -- demon shield {8930, 1, 100}, -- emerald sword {2522, 1, 100}, -- great shield {2421, 1, 100}, -- thunder hammer }, veryRare = { {5903, 1, 100}, -- ferumbras' hat }, always = { {2171, 1, 100}, -- platinum amulet {2148, 90, 100}, -- gold coin {2146, 10, 100}, -- small sapphire }, storage = 65481, }, ["zulazza the corruptor"] = --- the boss's entire name in lower case. { common = { {2158, 1, 100}, -- blue gem {2156, 1, 100}, -- red gem {2155, 1, 100}, -- green gem {2154, 1, 100}, -- yellow gem {2153, 1, 100}, -- violet gem }, semiRare = { {5944, 5, 100}, -- soul orb }, rare = { {2514, 1, 100}, -- mastermind shield }, veryRare = { {11114, 1, 100}, -- dragon scale boots {8882, 1, 100}, -- earthborn titan armor }, always = { {2152, 90, 100}, -- platinum coin {9971, 5, 100}, -- gold ingot }, storage = 65482, }, ["morgaroth"] = -- the boss's entire name in lower case. { common = { {2143, 10, 100}, -- white pearl {2146, 10, 100}, -- small sapphire {2145, 10, 100}, -- small diamond {2144, 10, 100}, -- black pearl {2149, 10, 100}, -- small emeralds {5954, 3, 100}, -- demon horn {7896, 1, 100}, -- glacier kilt {2432, 1, 100}, -- fire axe {2462, 1, 100}, -- devil helmet {7590, 1, 100}, -- great mana potion {2179, 1, 100}, -- gold ring {2151, 1, 100}, -- talon }, semiRare = { {2195, 1, 100}, -- boots of haste {2393, 1, 100}, -- giant sword {5954, 5, 100}, -- demon horn {2123, 1, 100}, -- ring of the sky }, rare = { {8886, 1, 100}, -- molten plate {2472, 1, 100}, -- magic plate armor {8867, 1, 100}, -- dragon robe {2514, 1, 100}, -- mastermind shield {2520, 1, 100}, -- demon shield {1982, 1, 100}, -- purple tome {8851, 1, 100}, -- royal crossbow }, veryRare = { {2421, 1, 100}, -- thunder hammer {2522, 1, 100}, -- great shield {8850, 1, 100}, -- chain bolter }, always = { {5943, 1, 100}, -- morgaroth's brain {2171, 1, 100}, -- platinum amulet {2148, 90, 100}, -- gold coin {2146, 10, 100}, -- small sapphire }, storage = 65483, }, } } Por último, adicione isto a data/lib/lib.lua e inclua-o.
    ----Reward Chest System dofile('data/lib/RewardChestSystem.lua') Incrível, você pode configurar os itens de saque de cada chefe individualmente. Está dentro da lib/RewardChestSystem, então aproveite.
     
    Para quem usa Nekiro ou qualquer base TFS 1.x Downgrades,
    basta alterar esta linha.
    chest:moveTo(player:getInbox()) para. local depotChest = player:getDepotChest(REWARDCHEST.town_id, true) chest:moveTo(depotChest)  
  4. Gostei
    Jeff Delay recebeu reputação de euromarfia em Base Wo-naruto shinobi Returns [WONSR]   
    Salve pessoal, como ja coletei mt conteudo daqui hoje vim compartilhar algo que na verdade já está free em alguns canais de discord, uma base de nto que eu abri em 2020/2021 até que deu certo e pegou 500/600 players no auge, porem com varios problemas fechei e vendi porem ela ja roda de graça em varios canais então tenho certeza que não tem problema divulgar ela aqui, oque a base tem?
    Sistema de elo [Rankeamento];
    Sistema edo tensei [Selamento de corpos];
    Sistemas de saga [historia];
    42 pessonagens completos, todos funcionais e com habilidades unicas;
    Sistema de vocação do dia [primeiro nto a ter];
    Sistema de raridade [Primeiro nto a ter];
    Sistema de fontes termais;
    Sistema anbu/akatsuki com bonus;
    Sistema de roleta [acredito nunca ter visto uma rotela parecida com a que nos fizemos]
    Sistema de cidadão;
    Sistema de jinchuriki;
    e outros ai que não lembro alem de alguns eventos, o jogo tem bastante coisa e eu dediquei bastante tempo nele, porem atualmente estou trabalhando em outro novamente assim que ficar disponivel iirei postar aqui.
    quem tiver curiosidade tem varios videos no yt sobre o jogo]
    Creditos a mim que começei o projeto e ao meu irmão jean, lembro como ta o nome dele aqui então vai ficar por isso mesmo.
    no arquivo contem Otc, server, site e sourcer.
    Base utilizada foi nto shinobi 8.54
    não pretendo dar suporte a nada até porque esta abandonado por mim desde 2021
     
    https://mega.nz/file/4cdxiJQT#AYXaTLB_Avkys9VrLKymzNY_I2UJcLxDLFLzIgjL-js VirusTotal - File - f9f1bc435cdfc98845ede6adbbc03763aaf5e2c942732f21efe3e1fe1c1b36fe









  5. Obrigado
    Jeff Delay recebeu reputação de NeGoGaBe em [8.60][OLD Client] Narutibia (NTO HARD) - Servidor Completo   
    so criar um mapa limpo com a mesma versão e importar o mapa do servidor nesse mapa limpo
  6. Obrigado
    Jeff Delay deu reputação a Yan Liima em Limite de players em guild in-game   
    Limite máximo de players em guild in-game ?

     
    Bom galera estou postando esse conteúdo como complemento do limite em WEBSITE
    Ao utilizar !joinguild esse code verifica se a guilda já atingiu o limite máximo de membros(configurado)
    Eu estarei disponibilizando de duas maneiras:
    1º Será um valor configurado no proprio config.lua, onde determinará o limite máximo de todas as guild.(já incluido na 0.4 rev3996)
    2º A verificação será feita por DB, onde terá um valor padrão para cada guilda criada, podendo ser alterado o valor de membros maximo.
    Ou seja, a guilda número UM pode ter máximo de 50 players, e a guilda número DOIS pode ter o máximo de 100.
    Vocês pode ser criativos e vender items que aumenta o limite ou fazer eventos/sorteios para aumentar...

     
    Enfim, vamos lá...
    Primeira maneira:
     
    Segunda maneira:
     
    Prontinho galera, espero que ajude algumas pessoas xD
  7. Obrigado
    Jeff Delay deu reputação a Vodkart em Deletar player   
    Usando desse jeito, você pode deletar o player com ele offline ou online:
     
     
    function onSay(cid, words, param) local t, k = string.explode(param:lower(), ","), "No Reason" if (param == "") then doPlayerSendCancel(cid, "use um comando valido") return true end local id = getPlayerGUIDByName(t[1]) if not id then doPlayerSendCancel(cid, "Desculpe, mas o jogador [" .. t[1] .. "] não existe.") return true end local pid = getPlayerByNameWildcard(t[1]) if isPlayer(pid) then doRemoveCreature(pid) end db.executeQuery("DELETE FROM `players` WHERE `id` = " .. id) broadcastMessage("o player "..t[1].." foi deletador por: "..(not t[2] and k or t[2])..".") return true end  
    obs: modifiquei a query, quem fez esse código é um baita de um noob.
  8. Obrigado
    Jeff Delay deu reputação a Vodkart em Alavanca que remova paredes   
    local hour = 1 local pos = {x=160, y=54, z=7} -- player posiiton local walls = { {1354,{x = 2741, y = 2320, z = 7, stackpos = 1}}, {1354,{x = 2741, y = 2321, z = 7, stackpos = 1}}, {1354,{x = 2741, y = 2322, z = 7, stackpos = 1}}, {1354,{x = 2732, y = 2330, z = 7, stackpos = 1}}, {1354,{x = 2733, y = 2330, z = 7, stackpos = 1}}, {1354,{x = 2734, y = 2330, z = 7, stackpos = 1}}, {1354,{x = 2735, y = 2330, z = 7, stackpos = 1}}, {1354,{x = 2736, y = 2330, z = 7, stackpos = 1}} } function RemoveAndCreateWalls() for i = 1, #walls do if getTileItemById(walls[i][2], walls[i][1]).uid == 0 then doCreateItem(walls[i][1], 1, walls[i][2]) else doRemoveItem(getThingfromPos(walls[i][2]).uid,1) doSendMagicEffect(walls[i][2], CONST_ME_POFF) end end end function onUse(cid, item, fromPosition, itemEx, toPosition) local m = getTopCreature(pos).uid if getTileItemById(walls[1][2], walls[1][1]).uid == 0 then doPlayerSendCancel(cid, 'As paredes ainda estão abertas.') return true elseif m == 0 or m ~= 0 and not isPlayer(m) then doPlayerSendCancel(cid, 'O jogador não está na posição.') return true end doPlayerSendTextMessage(cid, 21, 'a parede foi removida e voltara dentro de '..hour..' hora(s)!') RemoveAndCreateWalls() addEvent(RemoveAndCreateWalls, hour*3600000) return true end  
  9. Obrigado
    Jeff Delay deu reputação a ilLusioN em Pack de sprites free   
    Bom eu sou novo aq no TK, e resolvi postar umas sprites "minhas" por conta de desavenças com 1 certo ADM não vou citar nomes nem nd, bom é isso.
     
    Caso as sprites tenham algum bug de posição, peço q me desculpem pois teve algumas q não testei.


    Scan: https://www.virustotal.com/gui/file/a3e38f7b19163c088bb8b4efc33b2bdc780e580f90f3308607f6fdd606288d43/detection
     
    Download: http://www.mediafire.com/file/tcsum7vaqzgwqg6/Packzinho+de+gratís.rar/file
     
    Bom uso !
     

  10. Obrigado
    Jeff Delay deu reputação a Vodkart em [TFS] New Auto Loot Unlimited Edition 2.0   
    [ + ] Descrição: Autoloot refeito para VERSÃO TFS e adicionado algumas outras funções que estarei explicando ao decorrer do tópico.
     
    [ + ] Se você quer o Autoloot para VERSÃO OTX clica neste Link: AUTOLOOT OTX
     
     

     
     
    [ + ] Imagem do comando:
     

     
    [ + ] Features:
     
    [ - ] Você pode ativar ou desativar o autoloot a hora que achar necessário.
    [ - ] Também existe um comando para ativar ou desativar mensagens do loot que o autoloot coleta!
    [ - ] Você pode escolher a cor do texto em que irá aparecer a coleta do loot!
    [ - ] O autoloot informará para você se estiver com pouco slots na sua backpack, e o jogador poderá escolher se quer habilitar ou não está função no autoloot.
    [ - ] Versão ilimitada de itens(não ficam armazenadas em storages).
    [ - ] O jogador poderá optar por depositar direto no banco os golds que forem dropados.
     
    [ + ] Instalação:
     
    Primeiramente CRIE uma PASTA VAZIA chamanda "autoloot" em DATA/LOGS, ficando assim:
     

     
     
    Depois instale o MODS normalmente na pasta MODS do seu servidor.
     

     
     
    new_perfect_autoloot_tfs.xml
     
    Link: https://pastebin.com/raw/0xJR4nwr
     
     
     [ + ] Configuração:
     
    Dentro do mods tem essa tabela
    info = { distro = 1, -- 1 = TFS // 2 = talk modificada directory = "data/logs/autoloot", -- não mexer Warn_Bp_Slots = 5, -- quando tiver 5 ou menos slots na BP vai avisar o jogador Talkaction_delay = 5, -- em segundos // delay para remover e adicionar item BlockMonsters = {}, -- Lista de monstros que o autoloot nao vai funcionar BlockItemsList = {2123,2515}, -- Lista de itens que o autoloot nao coleta Money_ids = {2148, 2152, 2160}, -- id das moedas do ot Max_Slots = {free = 3, premium = 5}, -- quantidade de itens que podem ser adicionados no autoloot por free e premium Storages = {988801, 988802, 988803, 988804, 988805, 988806, 988807} -- não mexer }  
    Sobre o distro = 1
     
    Isso significa que ele usa versão padrão (1), pois existem 2 versões, caso aconteça esse error no seu console ao usar a talkaction do autoloot:
     
    [8/10/2020 19:19:58] [Error - TalkAction Interface]
    [8/10/2020 19:19:58] local words = "!autoloot"
    (...)
    [8/10/2020 19:19:59] return true
    [8/10/2020 19:19:59] Description: 
    [8/10/2020 19:19:59] (LuaInterface::luaGetItemIdByName) Item not found
     
    Você deverá colocar:
     
    distro = 2
     
    Pq? acontece que em alguns servidores não reconhecem o parâmetro "false" da função "getItemIdByName"
     
    OBS: Estarei anexando o autoloot já atualizado na versão 2.0 para quem tiver preguiça de copiar e colar!!
     
     
     
    new_perfect_autoloot_tfs.xml
  11. Obrigado
    Jeff Delay recebeu reputação de Kevin Araujo em (Resolvido)Monsters   
    adicione "0" na passive lá e teste
  12. Gostei
    Jeff Delay deu reputação a Cat em Script exori hur imitando o martelo de Thor   
    Muito genial, Cipsoft aprende kkkk.
     
    podia por um gif, embora a img mostre bem como funciona.
     
    Parabens pelo script e obrigado por postar pra nós.
  13. Gostei
    Jeff Delay deu reputação a Rogex Joyz em Script exori hur imitando o martelo de Thor   
    Fala galeritcha, este script imita o ''martelo de Thor'', ele funciona da seguinte forma: Após o knight falar a magia (no meu caso exori hur), um martelo vai girando em linha reta de acordo com o lado em que o player estiver virado. O martelo vai em efeito de boomerang, ele vai e volta para o dono da magia dando ataque em todos que estão no caminho, o dano é duplicado (são 2 danos), uma vez que 1 dano corresponde à ida e outro corresponde ao do martelo voltando.  0.x - 
    unknown credits, enjoy. Praticamente as principais coisas são editáveis dentro do script logo no começo, deixarei escrito dentro dele para ficar mais fácil. Let's go ?
    Em spells/scripts/attack coloque: 
     
    local config = { distance = 6, -- distância em que o martelo irá chegar (no caso ele está configurado para percorrer 6 sqm's e depois voltar) distEffect = 25, -- efeito que irá causar. Fale /x ingame junto com um número e veja os efeitos que mais te agrada, depois só substituir o 25 pelo número do efeito escolhido. No caso o efeito que eu escolhi é justamente de um martelo. minDamage = 200, --Qual o dano mínimo que você deseja que esta magia tire ? maxDamage = 500, -- Qual o dano máximo que você deseja que esta magia tire ? - Lembrando que são dois danos distintos de ida e outro de volta interval = 750 -- Após soltar a magia, quanto tempo levará para o martelo retornar para você ? - Coloque o tempo em milésimos de segundos } function getPosisBetween(fromPos, toPos) local posis = {} for i = 1, getDistanceBetween(fromPos, toPos) do local choices = {fromPos.x, fromPos.x + 1, fromPos.x - 1} if fromPos.x ~= toPos.x then table.sort(choices, function(a, b) if fromPos.x - toPos.x < 0 then return a > b else return a < b end end) fromPos.x = choices[1] end if fromPos.y ~= toPos.y then choices = {fromPos.y, fromPos.y + 1, fromPos.y - 1} table.sort(choices, function(a, b) if fromPos.y - toPos.y < 0 then return a > b else return a < b end end) fromPos.y = choices[1] end table.insert(posis, {x = fromPos.x, y = fromPos.y, z = fromPos.z}) end return posis end function onCastSpell(cid) local playerPos = getThingPos(cid) local toPos = { [0] = {x = playerPos.x, y = playerPos.y - config.distance, z = playerPos.z}, [1] = {x = playerPos.x + config.distance, y = playerPos.y, z = playerPos.z}, [2] = {x = playerPos.x, y = playerPos.y + config.distance, z = playerPos.z}, [3] = {x = playerPos.x - config.distance, y = playerPos.y, z = playerPos.z} } local spellToPos = toPos[getCreatureLookDirection(cid)] local posis = getPosisBetween(getThingPos(cid), spellToPos) doSendDistanceShoot(getThingPos(cid), spellToPos, config.distEffect) for i = 1, #posis do if not getTileInfo(posis[i]).protection then local pid = getTopCreature(posis[i]).uid if isMonster(pid) or isPlayer(pid) then doTargetCombatHealth(cid, pid, COMBAT_PHYSICALDAMAGE, -config.minDamage, -config.maxDamage, -1) end end end addEvent(function() if not isPlayer(cid) then return true end doSendDistanceShoot(spellToPos, getThingPos(cid), config.distEffect) posis = getPosisBetween(spellToPos, getThingPos(cid)) for i = 1, #posis do if not getTileInfo(posis[i]).protection then local pid = getTopCreature(posis[i]).uid if isMonster(pid) or isPlayer(pid) then doTargetCombatHealth(cid, pid, COMBAT_PHYSICALDAMAGE, -config.minDamage, -config.maxDamage, -1) end end end end, config.interval) return true end Em spells.xml coloque:
    <instant name="Whirlwind Throw" words="exori hur" lvl="200" mana="500" prem="1" needweapon="1" range="5" needtarget="1" blockwalls="1" exhaustion="1800" maglv="7" needlearn="0" script="attack/Whirlwind Throw.lua">
            <vocation id="4"/>
            <vocation id="8"/>
     
    -- em words = o nome que deverá ser dito para soltar a spell
        mana = quanto de mana gastará ?
        needweapon = precisa estar equipado com uma arma para soltá-la ?
       range = configurável dentro do script
       needtarget = Precisa estar targetando alguém para soltar esta magia ? - Lembrando que caso coloque ''1'', precisará targetar um alvo para soltar a spell, porém isso não influencia na direção da magia. Ela soltará para onde o personagem estiver virado, como um exevo gran vis lux por exemplo.
       maglv = Qual o magic level necessário para conjurar esta magia ?
     
    Espero que divirta bastante gente, eu dei uns berro aqui quando vi ela em pratica haha. See you !
     

  14. Gostei
    Jeff Delay deu reputação a Vodkart em Event BOSS   
    local config = { name = "Shuryu Boss", pos = {x = 60, y = 63, z = 3}, time = 20 } function onThink(interval, lastExecution) doCreateMonster(config.name, config.pos) broadcastMessage("O "..config.name.." apareceu, voce tem "..config.time.." para mata-lo", MESSAGE_STATUS_CONSOLE_ORANGE) addEvent(function() local creature = getCreatureByName(config.name) if creature ~= nil and not isPlayer(creature) then doRemoveCreature(getTopCreature(getCreaturePosition(creature)).uid) end end, config.time*60*1000) return true end  
  15. Curtir
    Jeff Delay recebeu reputação de Cat em (Resolvido)Skill Rate/Velocidade para upar skill   
    se pretende fazer isto em todas as skills aconselho remover esse sistema de stage e por o padrão do tibia mesmo, o que voce configura no vocation.xml e no config.xml, nada contra esse sistema mas acredito eu que eu não soube balancear bem isso ai mas tive grandes dor de cabeça, facilitou quando removi isso, acredito que na linha de skill se por a skill 1.0 e deixar o rat skill 1.0 tambem fica bem dificil de treinar ja que o limite fica mais baixo.
  16. Gostei
    Jeff Delay recebeu reputação de ashwese1 em AJUDA AQUI +REP problemas encontrados nas spels e monsters   
    erro dos monstro, procure esse monstro na pasta do seu servidor e remova essas 3 linhas que deve existir no monstro já que e este erro que ta dando.
    <script>
        <event name="questmadara"/>
      </script>
    caso saiba onde esta esse monstro de quest e deseje apenas reconfigurar faça isso;
    vá em creaturescripts\scripts e cole este arquivo lá (questmadara.lua)
    volte para pasta creaturescript e abra o arquivo creaturescripts.xml e cole esta linha la.
    <event type="death" name="QuestMadara" event="script" value="questmadara.lua"/> sobre as spells possivelmente os arquivos direcionados não existe então o melhor a fazer e apagar estas linhas e refazer os arquivos melhor
    vá para data/spell/spell.xml abra o spell.xml veja as spell que esta dando erro e remova elas lembrando que para evitar erro tem que remover a tag completamente, exemplo abaixo do que deve ser removido.
    <instant name="Rasengan Shuriken" words="Rasenshuriken" lvl="200" mana="1900" range="2" needtarget="1" blockwalls="1" exhaustion="500" event="script" value="naruto/rasen shuriken.lua"> <vocation id="1"/> </instant>  
     
    questmadara.lua
  17. Gostei
    Jeff Delay recebeu reputação de ashwese1 em Ajuda, problema no client, nao sei qual e o problema me ajudemmM!!   
    Por nada!
  18. Gostei
    Jeff Delay deu reputação a Cat em [otcv8] Como utilizar - Ip fixo, spr, encrypt, auto update   
    fiquei esperando surgir uma voz bonita mas nem audio tem, decepcionado..
    Obrigado pelo guia @marcoshps11, otcv8 é muito bacana, eu sempre uso quando precisa logar em algum Ot.
    Com certeza vai ser mt útil pra galera!
  19. Curtir
    Jeff Delay recebeu reputação de Cat em [otcv8] Como utilizar - Ip fixo, spr, encrypt, auto update   
    bacana, mesmo tutorial de criptografia tem na propria pasta do otc, mas foi legal ter trazido pra cá torna mais visível, reputado  
  20. Gostei
    * Áudio de saudação *
     
    Neste tutorial, irei ensinar alguns passos inicias para utilizar o OTClientV8
     
    1º Passo: Como fixar ip e colocar a spr no local correto
     
    - Faço o download no link: https://github.com/OTCv8/otclientv8
    - Extraia o arquivo
    - Dentro da pasta principal, vá até o arquivo init.lua
     
    Neste trecho, precisará remover os comentários --[[ e ]]:
    Servers = { --[[ OTClientV8 = "http://otclient.ovh/api/login.php", OTClientV8c = "otclient.ovh:7171", OTClientV8Test = "http://otclient.ovh/api/login2.php", LocalTestServ = "127.0.0.1:7171:1098:110:30:93" ]] }  
    Ficando assim:
    Servers = { Meuserver = "127.0.0.1:7171:1098" } ficando na seguinte configuração NOME = "IP:PORTA:VERSÃO"
     
     
    Para fixar e não aparecer a lista de servers, basta alterar:
    ALLOW_CUSTOM_SERVERS = true -- if true it shows option ANOTHER on server list  
    Para:
    ALLOW_CUSTOM_SERVERS = false -- if true it shows option ANOTHER on server list  
     
    Caso queira trocar o nome do aplicativo é só mudar
    g_app.setName("OTCv8") trocando o "OTCv8" para o nome desejado, lembrando que isto irá alterar apenas o nome da janela do aplicativo
     
     
    Incluir a SPR/Dat:

    Para incluir, basta ir na pasta data, criar uma nova pasta e renomear com o nome "things" e depois criar uma outra pasta dentro dela com o nome da versão que desejar utilizar, exemplos:
    * 800
    * 860
    * 910
    * 1100
    dentro desta pasta, incluir as respectivas spr/dat da versão correspondente 

    Um vídeo objetivo do conteúdo citado acima:
     
     
     

     
    2º Passo: Remover campo "Token" da tela inicial
     
    Apesar de ser algo simples, vejo muitos perguntarem como remover este campo, vamos lá:

    - Vá até a pasta modules -> client_entergame
    - Abra o arquivo entergame.lua
    - Na linha 380 remova ou comente o trecho:
    enterGame:getChildById('accountTokenTextEdit'):clearText()  
    - Na linha 412 remova ou comente o trecho:
    G.authenticatorToken = enterGame:getChildById('accountTokenTextEdit'):getText()  
    - salve o arquivo
    - na mesma pasta, abra o arquivo entergame.otui
    - da linha 32 a 44 remova ou comente o seguinte trecho:
    MenuLabel !text: tr('Token') anchors.left: prev.left anchors.top: prev.bottom text-auto-resize: true margin-top: 8 TextEdit id: accountTokenTextEdit anchors.left: parent.left anchors.right: parent.right anchors.top: prev.bottom margin-top: 2  
    Um vídeo objetivo do conteúdo citado acima:
     
     

    3º Passo: como encriptar os arquivos
     
    - Recomendo inicialmente criar uma cópia da pasta que ira encriptar, pois não é reversivo
    - Copie o endereço da pasta onde estão os arquivos
    - Abra o cmd e navegue até esta pasta utilizando o comando cd (link do endereço da pasta)
    - utilize o comando otclient_dx.exe --encrypt
    - Aguarde o sistema sinalizar que os arquivos foram encriptados 
     
    PS: a pasta do modulo bot ( modules -> game_bot ) não pode ser encriptado, remova ela antes deste processo.
     
    Um vídeo objetivo do conteúdo citado acima:
     
     

    4º Passo: Utilizando o auto update
     
    IMPORTANTE:
    Este processo precisa ser feito exatamente como demonstrado, qualquer link errado o sistema não irá funcionar.
     
    - Dentro da pasta API, abra o arquivo updater_advanced.php
     
    em $files_dir = "/var/www/otclient/files"; é a pasta onde conterá os arquivos do otclient para download, lembrando que o caminho precisa estar especificada desde a pasta inicial
    em $files_url = "http://otclient.ovh/files"; é o link que você pode utilizar o navegador para acessar a pasta "files" a mesma pasta do processo anterior.
    em $checksum_update_interval = 60; é o tempo em segundos, que o update levará para checkar se há alguma atualização ( não é necesário alterar )
     
    - Na sua vps, dentro da pasta do SITE, cria uma pasta chamada API e outra pasta dentro dela chamada FILES
    - Envie o arquivo updater_advanced.php para a pasta API
    - De permissão 777 para pasta e subpasta API
     
    * voltando aos arquivos do otclient * 
     
    - Abra o arquivo init.lua
     
    aconselho alterar o "APP_NAME = "otclientv8", pois é o nome da pasta que ficará salva nos arquivos temporários, isso evitará conflitos com versões já existe no pc
    altere o campo updater, colocando o endereço apontado para o arquivo updater_advanced.php enviado para o seu site nos passos anteriores.
     
    - Após as edições anteriores, salve o arquivo 
    - Compacte os arquivos data, layout, modules e init.lua, renomeando para data.zip ( obrigatoriamente precisa ser zip )
    - Exclua os arquivos zipados e os demais desnecessários para os jogadores.
     
    Atenção: o auto update só funcionará se os arquivos estiverem zipado conforme descrito.
     
    - Envie todos os arquivos para a pasta files em sua vps ( recomendo zipar para enviar, poupara processamento e tempo de envio )
    - Após enviar, extraia os arquivos NA VPS, os arquivos no pc devem continuar zipado
    - Atenção nesta parte, as pastas e arquivo data / layout / modules / init.lua necessáriamente precisam estar na mesma pasta do executáveis, conforme time 4:20 no vídeo que deixarei disponível no final.
     
    lembrando: o update só aceitará arquivos editados após o tempo estipulado em checksum_update_interval , se fizer edições antes deste tempo, o sistema não irá considerar
     
     
    Um vídeo objetivo do conteúdo citado acima:
     
     
     
  21. Gostei
    Jeff Delay deu reputação a Lyu em Death System 2016 versão frag consecutivo!   
    Fala rapaziada, quanto tempo sem publicar algo aqui! Bom, hoje eu venho trazer um sisteminha que é bem utilizado atualmente.
    Estou falando o Death System! Porém, com algumas coisinhas a mais.
     
    Testado em OTX Server 8.60..
     
    Como funciona?
    O Death System em alguns servidores possui um channel chamado "Mortes" ou "Death Channel",
    mas há alguns servidores que preferem que seja anunciado no default mesmo e a função é informar
    quem matou quem, ou quem foi morto por certo monstro.
     
    O que há de novo?
    Bom, agora quem matar x jogadores(configurável) e essa quantia for uma consecutiva, será anunciado isso :

     
    E se algum jogador derrotá-lo dentro a consecutiva, será anunciado isso :

     
    Vamos ao sistema :
    em data/XML/channels.xml, adicione isso :
    <channel id="15" name="Death Channel"/> em data/creaturescripts/creaturescripts.xml :
    <event type="death" name="deathchannel" event="script" value="deathchannel.lua"/> em data/creaturescripts/login.lua, adicione isso antes do último return true :
    registerCreatureEvent(cid, "deathchannel") em data/creaturescripts/scripts, crie um arquivo deathchannel.lua e cole isso dentro :
    -- Coded by Zoom.. local info, win, lose = "%s [Level: %s] foi mort%s pelo %s %s%s", "%s obteve %s frags seguidos após derrotar %s.", "%s acabou de impedir que %s fizesse uma sequência de %s frags seguidos." local frags, storage = {10, 15, 20, 25, 30, 35, 40, 45, 50}, 30045 function onDeath(cid, corpse, deathList) if(not isPlayer(cid)) then return true end local target = deathList[1] doCreatureSetStorage(target, storage, getCreatureStorage(target, storage) + (getCreatureStorage(target, storage) == -1 and 2 or 1)) for _, pid in ipairs(getPlayersOnline()) do doPlayerSendChannelMessage(pid, '', info:format(getCreatureName(cid), getPlayerLevel(cid), getPlayerSex(cid) == 1 and "o" or "a", isPlayer(target) and "player" or "monstro", getCreatureName(target), isPlayer(target) and " [Level: "..getPlayerLevel(target).."]." or "."), TALKTYPE_CHANNEL_ORANGE, 0xF) for _, frag in ipairs(frags) do if(getCreatureStorage(target, storage) == frag) then doPlayerSendChannelMessage(pid, '', win:format(getCreatureName(target), frag, getCreatureName(cid)), TALKTYPE_CHANNEL_MANAGEMENT, 0xF) end if(getCreatureStorage(cid, storage) >= frag) then doPlayerSendChannelMessage(pid, '', lose:format(getCreatureName(target), getCreatureName(cid), getCreatureStorage(cid, storage)+1), TALKTYPE_GAMEMASTER_CHANNEL, 0xF) end end end doCreatureSetStorage(cid, storage, 0) return true end Há uma única configuração, que é as consecutivas :
    local frags = {10, 15, 20, 25, 30, 35, 40, 45, 50}
    completou 10 frags? anuncia! e assim sucessivamente..
     
    Créditos : EU
  22. Gostei
    Jeff Delay deu reputação a LeoTK em [Raid Automatica] MOD Raid Automatica Edit: Brunds   
    Salve galera bom achei esse mod de raid do @Vodkart e Xotservx e resolvi dar uma embelezada, adicionar um mini-tutorial dentro do mod, algumas coisas a mais para facilitar a configuração, alguns efeitos quando os monstros da invasão é sumonado, porém não consegui colocar para aparecer efeito quando os monstros forem removidos, se alguém quiser contribuir e adicionar essa função pra mostrar um efeito nos monstros quando forem removidos sinta-se livre e se for o caso eu atualizo o tópico com essa modificação.
    Mod Abaixo
     
    Vídeo de demonstração
     
     
     
     
     
     
    Nota: 25/02/2019
    (Problemas corrigidos pelo @Vodkart, Efeito quando os monstros forem removidos, e mobs deixando de tentar nascer dentro de casas e área pz e nascendo ao lado)
     
     
    Espero que gostem do script  
     
    Créditos total ao
    @Vodkart
    xotservx
     
  23. Gostei
    Jeff Delay recebeu reputação de ashwese1 em Ajuda, problema no client, nao sei qual e o problema me ajudemmM!!   
    otfit não e pic, ele é para usar no remeres, baixe um cliente qualquer descompilado e pega o tibia.´pic
     
  24. Curtir
    Jeff Delay deu reputação a JZDJ em Cartoon Maps (mapas de desenho animado)   
    Olá galerinha do Tibia King.
    Alguns anos atrás eu comecei um projeto só com mapas de desenho animado que chamei de CARTOON SERVER.
    Hoje devido a falta de tempo, família e trabalho não tenho mais como levá-lo adiante.
    Então resolvi postar aqui o mapa que eu criei, na verdade são vários mapas em um único arquivo.
    O projeto está somente com a base que eu comecei e ainda precisa de 99% de trabalho para terminá-lo.
    Caso alguém se interesse por uma ou mais áreas fique a vontade para baixar e criar do seu jeito.
     
    Algumas imagens dos mapas:

     
    mapa cartoon.rar
    SCAN
     
    Fiquem a vontade para baixar, editar, compartilhar ou seja lá oq fizerem hehehehe.
    Espero que gostem.
     
  25. Gostei
    Jeff Delay deu reputação a Cat em [novo] » Mapas do Nolis   
    Em minhas caminhadas dentre as montanhas do vale do Itapocu e as ruínas antigas da Itália , gravei em minha memória a sensação única que é se aventurar na natureza.
    Ela é rica em detalhes, momentos arquitetados pelo tempo e pelas criaturas.
     
    Transmitir essa emoção no universo do mapping é minha missão.
     
     
    Shinobi Universe
     

     
    Outras amostras:
     
     

Informação Importante

Confirmação de Termo