
higorsantos
Membro
-
Registro em
-
Última visita
Histórico de Curtidas
-
higorsantos deu reputação a Luizbaiak em LINK OFF [ORIGINAL] (10.10) New Baiak Yurots V1.0 SQLITE CAST SYSTEM E WAR SYSTEM 100%Confira Novo Servidor Baiak
Devilbaiak.ml
Olá Galerinha Tibiana!
Durante 3 anos o baiak ainda está se atualizando cada vez mais e agora eu venho trazer a nova versao 10.10 não esta 100% mais garanto que vao gostar,entao vamos ver oque há de novo nele ?
Essa Nova Versão eu conseguir criar em apenas 2 dias e meio e nao deu tempo de testar mais se houver bugs comentem por favor.
Versão x10.1- 1.0 Oque há de novo ?
• Todas as mountarias da versao 10.10
• Todos os outfits 10.10
• Todos os items 10.10
• Monsters ainda em andamento.
• Templo com cara de 10.10
• City Vip com novo visual 10.10
• War System 100%
- Comandos :/war invite,nomedaguildrival outra guild ativar a war /accept war,guildrival cancelar war . /war cancel,guildrival
• Cast System 100%
- Comandos:!cast list para ver casts abertos,!cast nomedoplayer para entrar, !cast exit para sair do cast que voce está !cast on para voce abrir um cast e !cast off para sair
• Novo Npc no templo que vende items 10.10
• Novo npc que vende items vip
• Bug das houses retirados
• Bug da Sql retirado
• Novos Comandos
/rank
!mount nomedamount
!addon nomedoaddon
!changesex
!buyhouse,!leavehouse,alana res,!sellhouse funcionando 100%
e muito mais que nao veio na cabeça mais quando eu lembrar posto.
O Servidor está em SQL pronto para por online e os erros do distro nao encomodam o server.
• Baiak Yurots V5.2 Oque Mudou ?
•Tirei bug das houses
•Tirei todos os erro do distro
•Arrumei o lado >> da city vip agora mais rox.
• Baiak Yurots V5.1 Oque Mudou ?
• Mudei a Quest do templo lv 150 ganha 2kk agora ganha só 500k
• Melhorei os teleports master lv 300+ agora tem 4 novas quest e 2 hunt +
• Mudei respaw de todas as hunts free , vip e master agora ta 5x melhor.
• Mudei Tempo da loteria tava 15 em 15 minutos agora ta de 1 em 1 hora.
• Melhorei a Exori gran do kina.
• Mudei os loot do monster bosses agora igual da versao 10.30 do global
• Adicionei quest do addon doll na area d lvel 300+
• Adicionei Quest do 2kk na area d Lvl 300+
• Adicionei Quest do necromancer shield na area de Lv 300+
• Adicionei Quest do Dwarven Set e hornede helmet na area de level 300+
• Adicionei o novo monster Master Medusa Lv 300+
• Adicionei 2 novas hunt de Master Medusa.
Se eu lembrar mas alguma coisa eu posto. :S
• Baiak Yurots V5.0 Oque Mudou ?
• Agora a City Está Maior Mais Bonita e Com Mais Houses.
• Novo Sistema de Treiner não prescisa andar muito para axar um livre.
• Novos monstros vip ( Sea Serpent Vip , Hellhound vip , night mare vip , fury vip ) novos monstros master ( hydra master , frost master , grim master e demon master).
• Nova Quest Master Com Armas Para todas as vocaçao.
• Agora o NPC VIP Vende e compra items vip, pois se voce pegar item vip de algum red algo assim voce pode vender mais so que o npc compra 60% mais barato ☺
• Novo Npc que vender Red Remover.
• Novo Templo.
• Novas Quests.
• Novo Depot.
• Novos Commandos ( !food Compra 100 , !topfrags Ver quem é o top frag , !glist ver as guild do server e !glist Nameguild para ver os player da guild.
• Teleports Free e vip Agora com nova cara.
• Novo Caminho Para Poi no mesmo lugar so que mais bonito.
• Addon agora é com addon doll npc Varkhal Vende.
• Systema de Loteria a cada 2 Horas.
• Nova arena de team god que organiza.
E muito Mais ..
Novos Items.
Master vip Quest
Teleports Master
Templo vip
Templo city
Teleports Master
Teleport Free
O Server Está FULL EM SQL Só Baixar e Por Online Abaixo !
DOWNLOAD
4shared
SCAN
VirusTotal
Testado 32bits windows 7.
ACC DO GOD
god/god
Creditos
10% GOD Bon | Por editar em 2008 90% Baiak Lula = Luizbaiak | Por editar2010 a 2014
Obrigado bom jogo! GOSTOU? DE REP+.
-
higorsantos deu reputação a xWhiteWolf em Passagem secreta diferenteEai pessoal, vim trazer hoje um sistema de passagem secreta que um amigo viu no Baiak-wars. Não sei qual server é esse e eu não jogo tibia então pra mim tanto faz mas ele gravou um vídeo, pediu um igual e obviamente eu não fiz um igual porque o sistema dos caras era muito ruim uhauheuhauheuhauheuhuhauhe
Enfim, comecei um script do 0 pra fazer exatamente oque ele queria e foi isso daqui que eu consegui:
Explicação: Você clica em algum item escondido pelo mapa e abre uma passagem secreta que vai durar X segundos (configurável), após esse tempo a passagem se fecha; Note que nessas imagens ele não tá escondido já que tem uma FUCKING ARVORE NO MEIO DE UM DESERTO mas você pode colocar uma tocha em cima de uma parede e colocar o actionid na tocha pra ativar e vai ficar super foda e com muito rpg
Ué, mas oque tem de diferente dos outros scripts?
Bem, ele é super fácil de configurar e ele dá a sensação de que o item foi arrastado :]
Bom, se isso não foi o bastante pra você entender então observe essas fotinhas
Tendo entendido tudo vamos à parte mais legal da coisa (SCRIPTAR!!!!)
Você vai precisar criar um arquivo em actions\scripts chamado hidden.lua com o seguinte conteúdo:
local positions = { [1] = {pos = {x=139, y=77, z=7}, id = 1718}, [2] = {pos = {x=140, y=77, z=7}, id = 1718}, [3] = {pos = {x=139, y=76, z=7}, id = 6855, toid = 6884}, [4] = {pos = {x=140, y=76, z=7}, id = 6855, toid = 6884}, } local createpos = { [1] = {pos = {x=138, y=77, z=7}, id = 1718}, [2] = {pos = {x=141, y=77, z=7}, id = 1718} } local tempo = 5 function onUse(cid, item, frompos, item2, topos) if getTileItemById(positions[1].pos, positions[1].id).uid < 100 then doPlayerSendCancel(cid, "Is already open.") return true end doCreatureSay(cid, "You have ".. tempo .." seconds.", 19) function criar_paredes() for i = 1, #positions do if i <= (#positions/2) then doCreateItem(positions[i].id, 1, positions[i].pos) local obst = getTileItemById(createpos[i].pos, createpos[i].id).uid doSendMagicEffect(createpos[i].pos, 2) doRemoveItem(obst, 1) elseif i > (#positions/2) then local obst = getTileItemById(positions[i].pos, positions[i].toid).uid doTransformItem(obst, positions[i].id) end end return true end for i = 1, #positions do local obst = getTileItemById(positions[i].pos, positions[i].id).uid if i <= (#positions/2) and obst ~= 0 then doRemoveItem(obst, 1) doSendMagicEffect(positions[i].pos, 2) doCreateItem(createpos[i].id, 1, createpos[i].pos) elseif i > (#positions/2) and obst ~=0 then doTransformItem(obst, positions[i].toid) end end addEvent(criar_paredes, tempo*1000) return true end Feito isso vc vai precisar declarar no actions.xml a forma que você quer utilizar o script
<action actionid="27004" script="hidden.lua"/> note que vc pode colocar algum itemid, actionid ou uniqueid de sua escolhe, só lembre de mudar no map editor dependendo da forma que vc escolher.
Agora eu vou ensinar vocês a configurarem o meu monstrinho *-*
aqui você tem o tempo que a passagem vai ficar aberta
aqui você vai editar o seguinte: na primeira são as posições dos itens e seus respectivos id's
posição das duas prateleiras e seus id's
posição das paredes, id dela e pra qual id ela vai ser transformada.
aqui você tem as posições que sua prateleira vai se mover e os id's dela.
Lembrando que você pode se sentir livre pra adicionar oque vc quiser e deixar do seu gosto, só lembrando que se vc quiser adicionar mais items ou diminuir itens é só alterar nas duas tabelas seguindo a mesma lógica. Metade pra prateleira, metade pra parede e uma tabela pra fazer as prateleiras se moverem.
Os créditos são 60% meus e 40% do @MaXwEllDeN por ter me dado um norte no começo do script.
Qualquer coisa comenta aí e dá aquele rep+ pra ajudar ;]
-
higorsantos deu reputação a Tricoder em CrossfireCategoria: Mapa.
Versão: 8.60
Créditos: Killzon32
Anexos: Download | Scan
Screenshot;
-
higorsantos deu reputação a Xagah em EVENTO - Last Man Standing - 100% funcional.Olá, bom dia a todos.
Como tenho visto muitíssimos pedidos neste sentido, lhes apresento o LMS - Last Man Standing com BroadCast
-
higorsantos deu reputação a Danihcv em Ajuda Com System MarketOpa, seu problema está em sua data base! Você precisa criar uma table chamada: player_statements e adicionar colunas e deixar ela igual a dessa imagem: http://i.imgur.com/wYBSU6W.png
Abr
E também precisa de uma table chamada: market_offers e fazer o mesmo esquema, deixar ela igual a dessa imagem: http://i.imgur.com/t5HntvQ.png
Espero ter ajudado!
Abraços
-
higorsantos deu reputação a Vampira em [Tutorial] Criando quest log*Criando quest log por Action*
Como eu não achei nenhum tutorial desse por aqui resolvi criar um, neste tutorial ensinarei vocês a criar um quest log para suas quests
Oque é quest log: Quest Log tem a função de armazenar as quests que você fez ou está fazendo, mostrar em que parte da QUEST você está e como seguir adiante, etc...
Em data/XML abra o arquivo chamado quests.xml nele vai ter mais ou menos assim:
Entendendo:
Vermelho = Nome da sua Quest
Verde = Storage ID da Quest que vai aparecer no Quest Log
Azul = Numéro de Início da Quest
Negrito = Nome da Missão
Rosa = Storage da Missão
Laranja = Valor de Início da Missão
Marrom = Valor de Finalização
Preto = Descrição da Missão
Bom, agora que nós já entendemos o que cada coisa faz, podemos dar continuidade com o SCRIPT. aonde estáNome da Quest você deve colocar o Nome que vai aparecer no Quest Log, depois que você inseriu o nome da sua Quest você deve ir na pasta data/actions/scripts e achar o arquivo .lua da sua Quest, nele você apertaCTRL+F e depois digita isso aqui:
Depois que você encontrar este comando clique em Cancelar, depois vai ter mais ou menos isso:
Exemplo:
Relembrando que a cor Verde é o nosso Storage ID e o Azul é o nosso Comando de Início
Agora que nós achamos o nosso Storage ID e o nosso Comando de Início podemos preencher a primeira linha da nossa Quest assim:
Explicando um pouco para poder continuarmos com nosso Tutorial, uma quest é composta de Storages Values, cada movimento que você avança em sua Quest é dado um Storage Value novo.
EX: Você pega a Quest (Ganhou seu primeiro Storage Value), Você abriu o Baú (Ganhou seu Storage Value Final.). Isso quando você está fazendo a Quest por Action.
Então nós entendemos que na primeira linha da Quest nós precisamos por o Value de quando você pega a Quest. Agora continuando com o SCRIPT...
Nós vimos que o nosso Storage ID era 1 e o nosso Comando de Início era 1, então nós acabamos de preencher a primeira linha com os números que encontramos.
Agora nós vamos para a segunda linha, primeiramente você deve colocar o nome da sua missão, dai você me pergunta:
- Nós já não colocamos o nome da nossa Quest?
Resposta: Sim, nós colocamos o NOME DA QUEST agora vamos colocar o NOME DA MISSÃO, ou seja, aqueles nomes que fica no retângulo de cima quando você da SHOW na QUEST, aquilo é uma Missão.
Bom, depois que você colocou o Nome da sua Missão, como eu havia explicado antes sobre Storages Values, nós devemos pegar agora o nosso primeiro Storage Value novamente e o nosso primeiro Comando de início, ficando assim:
Pronto, nós preenchemos o nosso StorageValue e o nosso Comando de Início agora nós precisamos inserir o valor de término, depois que você pega o Baú (como expliquei ali em cima) você recebe o seu segundo Storage Value digamos que o meu seja assim:
Observe que o Storage Value de quando você pega o Baú tem 2 em vez de 1, isto porque o 2 é o número de encerramento da missão, então nós devemos colocar assim na segunda linha:
Resumindo, a nossa missão começa logo quando você recebe a missão do NPC e ela se completa quando você abre o Baú. Agora que a parte mais difícil já foi, vamos para a parte mais fácil do nosso SCRIPT, a Descrição da missão (a frase que aparece no quadro de baixo).
Esse
é o número da descrição, no caso nós colocamos apenas uma Missão então seria uma Descrição, se você colocar 2 Missão, você vai colocar e na outra você vai colocar depois da nossa missionstate tudo que devemos fazer é colocar nossa descrição onde está "Descrição da Missão.", ficando assim:
Lembrando que nunca se deve usar carácteres especiais, como:
Terminamos aqui nosso tutorial espero que tenham gostado
Creditos: meu
Inspiração: joaovbz
-
higorsantos deu reputação a Vodkart em [Sistema] Battlefield Event! V.1Mapa BattleField Feito Por AnneMotta :
Mapa Battlefield.rar
Scan: https://www.virustot...sis/1346548669/
Imagens do mapa
Descrição:
- O evento é automático e acontece em determinado dia e hora da semana
- Logo após é aberto um teleport então apenar um número limitado de players entra no evento
- São formados por dois times, os "Black Assassins" e os "Red Barbarians"
- Os times são balanceados automaticamente, quando o último jogador entra, esse teleport é fechado e depois de 5 minutos o evento começa, os 5 minutos são para os players ter tempo de planejar um ataque.
- O sistema tem por finalidade matar todos do time inimigo, e os players que sobreviverem recebem um prêmio.
Bônus:
- Durante o evento é mostrado na tela somente dos jogadores que estão no evento um placar de times.
- Até o último player entrar no evento, ficam mandando broadcast dizendo quanto players faltam para dar inicio ao jogo.
- Se o evento abrir e não atingir a meta de players colocada, o evento é finalizado e os players voltam para o templo.
Lembre-se:
- De colocar Pvp Tool na área
- De colocar área NoLogout
Imagens:
Instalação:
Data > Lib Data > CreatureScript > Script Data > GlobalEvents > Scripts Data > Movements > Script Configurações do evento -
higorsantos deu reputação a Fausto32 em PERFECT ZOMBIE SYSTEM EVENT!Script/Tutorial+ Php +Map +Talkaction +Portal.
Ps: Antes de falar q o topico já existe no forum teste os outros scripts
Então começando por informações basícas :
Para abrir o evento : /zombiestart numero de players . exemplo : /zombiestart 2
Para Iniciar o evento sem o numero maximo de players: /zombiestart force.
Apos aberto sempre q um player ente no portal do evento e avisado por broadcast quem
entrou na arena e o numero de players restantes para o evento ser iniciado.
Apos o evento ser iniciado um zombie e sumonado a cada 20 segundos, o player que for infectado e teleportado para o templo vence o ultimo player restante na arena.
Ao terminar o evento e anuciado por broadcast o nome do player vencedor tempo q durou na arena e por quantos zombies ele sobreviveu, entrega de premio automatica, premio configuravel.
Garantia de funcionabilidade perfeita em TFS 0.4 se configurado corretamente, não testado em outras versões de distros.
Creditos: Me .. não criei mais montei peguei de varios servers/topicos e corigi os varios bugs de distro colocaria os creditos de onde peguei a maioria do script mais foi de um server sem creditos q nem era pra ter sido postado.
Enfim Vamos ao Evento !
Primeiro vou estar postando a pagina classica do Zombie event no Gesior que seria a parte PHP para informar os players sobre o evento.
Pagina PHP + Tutorial de como implementar ela no seu site.
Agora alguns mapas para o zombie event:
Então Agora vamos ao script !
data\creaturescripts\scripts\zombie – A pasta ‘zombie’ deve ser criada no diretorio citado.
\data\creaturescripts\scripts\Zombie\onattack.lua
function loseOnZombieArena(cid) kickPlayerFromZombiesArea(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "BOOM! You are dead.") local players = getZombiesEventPlayers() if(#players <= 1) then local winner = players[1] if(winner) then doPlayerAddItem(winner, 2157, 5, true) doPlayerAddItem(winner, 6119, 1, true) doPlayerSendTextMessage(winner, MESSAGE_STATUS_CONSOLE_BLUE, "You won zombies arena event.") doBroadcastMessage("After " .. os.time() - getPlayerZombiesEventStatus(winner) .. " seconds of fight " .. getCreatureName(winner) .. " won Zombie Arena Event in game versus " .. getStorage(ZE_ZOMBIES_SPAWNED) .. " zombies!") kickPlayerFromZombiesArea(winner) else doBroadcastMessage("Zombie arena event finished! No one win?!?!?! WTF!") end doSetStorage(ZE_STATUS, 0) doSetStorage(ZE_PLAYERS_NUMBER, ZE_DEFAULT_NUMBER_OF_PLAYERS) doSetStorage(ZE_ZOMBIES_TO_SPAWN, 0) doSetStorage(ZE_ZOMBIES_SPAWNED, 0) local width = (math.max(ZE_spawnFromPosition.x, ZE_spawnToPosition.x) - math.min(ZE_spawnFromPosition.x, ZE_spawnToPosition.x)) / 2 + 1 local height = (math.max(ZE_spawnFromPosition.y, ZE_spawnToPosition.y) - math.min(ZE_spawnFromPosition.y, ZE_spawnToPosition.y)) / 2 + 1 local centerPos = {x=math.min(ZE_spawnFromPosition.x, ZE_spawnToPosition.x)+width,y=math.min(ZE_spawnFromPosition.y, ZE_spawnToPosition.y)+height,z=ZE_spawnFromPosition.z} for z = math.min(ZE_spawnFromPosition.z, ZE_spawnToPosition.z), math.max(ZE_spawnFromPosition.z, ZE_spawnToPosition.z) do centerPos.z = z for i, uid in pairs(getSpectators(centerPos, width, height, false)) do if(isMonster(uid)) then doRemoveCreature(uid) end end end end end function onStatsChange(target, cid, changetype, combat, value) if((cid and isMonster(cid) and getCreatureName(cid) == "Zombie Event") or (isInRange(getThingPosition(target), ZE_spawnFromPosition, ZE_spawnToPosition) and changetype == STATSCHANGE_HEALTHLOSS and math.abs(value) >= getCreatureHealth(target))) then doCreatureAddHealth(target, getCreatureMaxHealth(target)) loseOnZombieArena(target) return false end return true end \data\creaturescripts\scripts\Zombie\ondeath.lua
function onDeath(cid) setZombiesToSpawnCount(getZombiesToSpawnCount() + 2) doCreatureSay(cid, "I'll be back!", 19) return true end \data\creaturescripts\scripts\Zombie\onthink.lua
function onThink(cid) local target = getCreatureTarget(cid) if(target ~= 0 and not isPlayer(target)) then doRemoveCreature(target) end return true end \data\globalevents\scripts\zombie\ onstartup.lua
function onstartup() db.executeQuery("UPDATE `player_storage` SET `value` = 0 WHERE `key` = " .. ZE_isOnZombieArea .. ";") doSetStorage(ZE_STATUS, 0) doSetStorage(ZE_PLAYERS_NUMBER, ZE_DEFAULT_NUMBER_OF_PLAYERS) doSetStorage(ZE_ZOMBIES_TO_SPAWN, 0) doSetStorage(ZE_ZOMBIES_SPAWNED, 0) addZombiesEventBlockEnterPosition() return true end \data\globalevents\scripts\zombie\onthink.lua
function onThink(interval, lastExecution, thinkInterval) if(getStorage(ZE_STATUS) == 2) then setZombiesToSpawnCount(getZombiesToSpawnCount()+1) local players = getZombiesEventPlayers() for i=1, getZombiesToSpawnCount() * 2 do if(getZombiesToSpawnCount() > 0 and spawnNewZombie()) then setZombiesToSpawnCount(getZombiesToSpawnCount()-1) end end end return true end \data\lib\zombie_event.lua
-- CONFIG ZE_DEFAULT_NUMBER_OF_PLAYERS = 20 ZE_ACCESS_TO_IGNORE_ARENA = 4 -- POSITIONS ZE_blockEnterItemPosition = {x=32341, y=32213, z=7} -- onde nasce o teleport? ZE_enterPosition = {x=32154, y=32578, z=7} -- onde os players nascem dentro da arena zombie? ZE_kickPosition = {x=32368, y=32241, z=7} -- quando morre vai para onde? ZE_spawnFromPosition = {x=32140,y=32566,z=7} -- para sumonar zombie (de) ZE_spawnToPosition = {x=32168,y=32590,z=7} -- para sumonar zombie (ate) -- ITEM IDS --ZE_blockEnterItemID = 2700 ZE_blockEnterItemID = 1387 -- STORAGES -- - player ZE_isOnZombieArea = 34370 -- - global ZE_STATUS = 34370 -- =< 0 - off, 1 - waiting for players, 2 - is running ZE_PLAYERS_NUMBER = 34371 ZE_ZOMBIES_TO_SPAWN = 34372 ZE_ZOMBIES_SPAWNED = 34373 -- FUNCTION function setZombiesEventPlayersLimit(value) doSetStorage(ZE_PLAYERS_NUMBER, value) end function getZombiesEventPlayersLimit() return getStorage(ZE_PLAYERS_NUMBER) end function addPlayerToZombiesArea(cid) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) doTeleportThing(cid, ZE_enterPosition, true) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) if(getPlayerAccess(cid) < ZE_ACCESS_TO_IGNORE_ARENA) then setPlayerZombiesEventStatus(cid, os.time()) end end function kickPlayerFromZombiesArea(cid) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) doTeleportThing(cid, ZE_kickPosition, true) doSendMagicEffect(getThingPosition(cid), CONST_ME_TELEPORT) setPlayerZombiesEventStatus(cid, 0) end function getPlayerZombiesEventStatus(cid) return getCreatureStorage(cid, ZE_isOnZombieArea) end function setPlayerZombiesEventStatus(cid, value) doCreatureSetStorage(cid, ZE_isOnZombieArea, value) end function getZombiesEventPlayers() local players = {} for i, cid in pairs(getPlayersOnline()) do if(getPlayerZombiesEventStatus(cid) > 0) then table.insert(players, cid) end end return players end function getZombiesCount() return getStorage(ZE_ZOMBIES_SPAWNED) end function addZombiesCount() doSetStorage(ZE_ZOMBIES_SPAWNED, getStorage(ZE_ZOMBIES_SPAWNED)+1) end function resetZombiesCount() doSetStorage(ZE_ZOMBIES_SPAWNED, 0) end function getZombiesToSpawnCount() return getStorage(ZE_ZOMBIES_TO_SPAWN) end function setZombiesToSpawnCount(count) doSetStorage(ZE_ZOMBIES_TO_SPAWN, count) end function addZombiesEventBlockEnterPosition() -- remove tp -- remove o TP local item = getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID) if(item.uid ~= 0) then doRemoveItem(item.uid) end --doRemoveItem(getThingFromPos(Castle.desde).uid) --[[ if(getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID).uid == 0) then doCreateItem(ZE_blockEnterItemID, 1, ZE_blockEnterItemPosition) end ]]-- end function removeZombiesEventBlockEnterPosition() -- add tp if(getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID).uid == 0) then --doCreateItem(ZE_blockEnterItemID, 1, ZE_blockEnterItemPosition) local tp = doCreateTeleport(ZE_blockEnterItemID, ZE_enterPosition, ZE_blockEnterItemPosition) doItemSetAttribute(tp, "aid", "5555") end --[[ local item = getTileItemById(ZE_blockEnterItemPosition, ZE_blockEnterItemID) if(item.uid ~= 0) then doRemoveItem(item.uid) end ]]-- end function spawnNewZombie() local posx = {} local posy = {} local posz = {} local pir = {} for i=1, 5 do local posx_tmp = math.random(ZE_spawnFromPosition.x ,ZE_spawnToPosition.x) local posy_tmp = math.random(ZE_spawnFromPosition.y ,ZE_spawnToPosition.y) local posz_tmp = math.random(ZE_spawnFromPosition.z ,ZE_spawnToPosition.z) local pir_tmp = 0 local spec = getSpectators({x=posx_tmp, y=posy_tmp, z=posz_tmp}, 3, 3, false) if(spec and #spec > 0) then for z, pid in pairs(spec) do if(isPlayer(pid)) then pir_tmp = pir_tmp + 1 end end end posx[i] = posx_tmp posy[i] = posy_tmp posz[i] = posz_tmp pir[i] = pir_tmp end local lowest_i = 1 for i=2, 5 do if(pir[i] < pir[lowest_i]) then lowest_i = i end end local ret = doCreateMonster("Zombie Event", {x=posx[lowest_i], y=posy[lowest_i], z=posz[lowest_i]}, false) if type(ret) == "number" then addZombiesCount() setGlobalStorageValue(201201051801, ret) end return type(ret) == "number" end \data\movements\scripts\zombie\ onenter.lua
function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if(not isPlayer(cid)) then return true end if(getPlayerAccess(cid) >= ZE_ACCESS_TO_IGNORE_ARENA) then addPlayerToZombiesArea(cid) elseif(#getZombiesEventPlayers() < getZombiesEventPlayersLimit() and getStorage(ZE_STATUS) == 1) then addPlayerToZombiesArea(cid) local players_on_arena_count = #getZombiesEventPlayers() if(players_on_arena_count == getZombiesEventPlayersLimit()) then addZombiesEventBlockEnterPosition() -- removeTP doSetStorage(ZE_STATUS, 2) doBroadcastMessage("Zombie Arena Event started.") else doBroadcastMessage(getCreatureName(cid) .. " has entered a Zombie Arena. We still need " .. getZombiesEventPlayersLimit() - players_on_arena_count .. " players.") end else doTeleportThing(cid, fromPosition, true) addZombiesEventBlockEnterPosition() end return true end \data\talkactions\scripts\zombie\ onsay.lua
function onSay(cid, words, param, channel) if(getStorage(ZE_STATUS) ~= 2) then local players_on_arena_count = #getZombiesEventPlayers() if(param == 'force') then if(players_on_arena_count > 0) then setZombiesEventPlayersLimit(players_on_arena_count ) addZombiesEventBlockEnterPosition() doSetStorage(ZE_STATUS, 2) doBroadcastMessage("Zombie Arena Event started.") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Zombies event started.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Cannot start Zombies event. There is no players on arena.") end else if(param ~= '' and tonumber(param) > 0) then setZombiesEventPlayersLimit(tonumber(param)) end removeZombiesEventBlockEnterPosition() doSetStorage(ZE_STATUS, 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Event started.") doPlayerBroadcastMessage(cid, "Zombie Arena Event teleport is opened. We are waiting for " .. getZombiesEventPlayersLimit() - players_on_arena_count .. " players to start.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Zombies event is already running.") end return true end data\monster\zombie_event.xml
<monster name="Zombie Event" nameDescription="an event zombie" race="undead" experience="480" speed="170" manacost="0"> <health now="20000" max="20000"/> <look type="311" corpse="9875"/> <targetchange interval="5000" chance="50"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="0"/> <flag attackable="1"/> <flag hostile="1"/> <flag illusionable="0"/> <flag convinceable="0"/> <flag pushable="0"/> <flag canpushitems="1"/> <flag canpushcreatures="1"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="0"/> </flags> <attacks> <attack name="melee" interval="1000" min="-1500" max="-2350"/> </attacks> <defenses armor="0" defense="0"/> <immunities> <immunity paralyze="1"/> <immunity invisible="1"/> <immunity fire="1"/> <immunity energy="1"/> <immunity poison="1"/> </immunities> <voices interval="5000" chance="10"> <voice sentence="You wont last long!"/> <voice sentence="Mmmmh.. braains!"/> </voices> <script> <event name="ZombieThink"/> <event name="ZombieDeath"/> </script> <loot> </loot> </monster> Agora as Tags nos xml’s . /data/creaturescripts/creaturescripts.xml
<event type="think" name="ZombieThink" event="script" value="zombie/onthink.lua"/> <event type="statschange" name="ZombieAttack" event="script" value="zombie/onattack.lua"/> <event type="death" name="ZombieDeath" event="script" value="zombie/ondeath.lua"/> /data/globalevents/globalevents.xml
<globalevent name="ZombieGlobalThink" interval="5000" event="script" value="zombie/onthink.lua"/> <globalevent name="ZombieGlobalStartup" type="start" event="script" value="zombie/onstartup.lua"/> /data/movements/movements.xml
<movevent type="StepIn" actionid="5555" event="script" value="zombie/onenter.lua"/> /data/talkactions/talkactions.xml
<talkaction log="yes" words="/zombiestart" access="4" event="script" value="zombie/onsay.lua"/> /data/monster/monsters.xml
<monster name="Zombie Event" file="zombie_event.xml"/> Script Terminado ! Next: Tutorial de como configurar o zombie event ! Estarei postando apenas as partes q podem ou devem ser editadas em cada script. data\creaturescripts\scripts\zombiez\onattack.lua
Next: \data\lib\zombie_event.lua
Então galera eh isso ai .-. meu primeiro post não mim crucifiquem k Duvidas, reclamações elogios chigamentos u.u só comentar como dizia o mestre o topico ta explicado nos minimos detalhes e ''de forma bem entendida'' (entendedoresentenderam) então eh isso vlw ai a todos q mim ajudaram nisso e nem sabem ?
-
higorsantos deu reputação a .HuRRiKaNe em [CreatureScript] Trade LogsEsse sistema consiste em criar um log .txt em data/logs/trades mostrando quais itens foram passados entre os jogadores dentro do seu servidor!
Em data/creaturescripts/scripts/ crie um arquivo .lua chamado: checktrades.lua e dentro coloque:
local servers = {[0] = 'server1', [1] = 'server2', [2] = 'server3'} local function getType(item) return (item.type > 0) and item.type or 1 end Log = {} Log.__index = Log function Log.create() local t = {} setmetatable(t, Log) t.file = servers[getConfigValue("worldId")] .. "/" .. os.date("%B-%d-%Y", os.time()) .. ".txt" t.str, t.cstr, t.con = '', '', 0 return t end function Log:write() local f = io.open("data/logs/trades/" .. self.file, "a+") if not f then return false end f:write(self.str) f:close() end function Log:containerString() self.cstr = '' for i = 1, self.con do self.cstr = self.cstr .. '-> ' end end function Log:addContainer() self.con = self.con + 1 self:containerString() end function Log:closeContainer() self.con = self.con - 1 self:containerString() end function Log:setLine(txt) self.str = self.str .. self.cstr .. txt .. '\n' end function Log:kill() self.file, self.cstr, self.str, self.con = "", "", "", -1 end function onTradeAccept(cid, target, item, targetItem) local this = Log.create() local name, tname = getCreatureName(cid), getCreatureName(target) this:setLine("Trade between " .. name .. " and " .. tname .. " || [" .. os.date("%d/%m/%Y %H:%M:%S") .. "]") local function logging(cid, item) this:setLine(getCreatureName(cid) .. " traded:") local function scanContainer(cid, uid) for k = (getContainerSize(uid) - 1), 0, -1 do local tmp = getContainerItem(uid, k) this:setLine(getItemNameById(tmp.itemid) .. " x " .. getType(tmp) .. " || itemid: " .. tmp.itemid) if isContainer(tmp.uid) then this:addContainer() scanContainer(cid, tmp.uid) this:closeContainer() end end end this:setLine(getItemNameById(item.itemid) .. " x " .. getType(item) .. " || itemid: " .. item.itemid) if isContainer(item.uid) then this:addContainer() scanContainer(cid, item.uid) this:closeContainer() end end logging(cid, item) logging(target, targetItem) this:setLine("END OF THIS TRADE --------------\n") this:write() this:kill() return true end Em data/creaturescripts adicione no creaturescripts.xml a seguinte linha:
<event type="trade" name="tradeCheck" event="script" value="checktrades.lua"/> Em data/creaturescripts/scripts/ abra o arquivo login.lua e adicione:
registerCreatureEvent(cid, "tradeCheck") Pronto, agora você poderá monitorar os trades em seu servidor!
Créditos:
Anonimo
-
higorsantos deu reputação a Vodkart em [Mod] Automatic Raids [Dia E Hora Marcada]Automatic Raids.xml
<?xml version="1.0" encoding="UTF-8"?> <mod name="Automatic Raids" version="1.0" author="Vodkart And xotservx" contact="tibiaking.com" enabled="yes"> <config name="raids_func"><![CDATA[ days = { ["Monday"] = { ["21:30"] = {nome = "Orshabaal", pos = {fromPosition = {x=184, y=55, z=7},toPosition = {x=188, y=58, z=7}},m = {"5 Fire Devil", "2 Orshabaal"}, Time = 15}, ["21:33"] = {nome = "Dragon", pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}},m = {"100 Dragon"}, Time = 20} }, ["Sunday"] = { ["10:08"] = {nome = "Demon", pos = {fromPosition = {x=202, y=11, z=7},toPosition = {x=204, y=12, z=7}}, m = {"1 Demon"}, Time = 15}, ["10:46"] = {nome = "Hydra", pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}}, m = {"7 Hydra", "4 Cyclops"}, Time = 20} } } ]]></config> <globalevent name="AutomaticRaids" interval="60" event="script"><![CDATA[ domodlib('raids_func') function onThink(interval, lastExecution) if days[os.date("%A")] then hours = tostring(os.date("%X")):sub(1, 5) tb = days[os.date("%A")][hours] if tb then function removeCreature(tb) for x = ((tb.pos.fromPosition.x)-10), ((tb.pos.toPosition.x)+10) do for y = ((tb.pos.fromPosition.y)-10), ((tb.pos.toPosition.y)+10) do local m = getTopCreature({x=x, y=y, z= tb.pos.fromPosition.z}).uid if m ~= 0 and isMonster(m) then doRemoveCreature(m) end end end end doBroadcastMessage("The invasion of " .. tb.nome .. " started") for _,x in pairs(tb.m) do for s = 1, tonumber(x:match("%d+")) do pos = {x = math.random(tb.pos.fromPosition.x, tb.pos.toPosition.x), y = math.random(tb.pos.fromPosition.y, tb.pos.toPosition.y), z = tb.pos.fromPosition.z} doSummonCreature(x:match("%s(.+)"), pos) end end addEvent(removeCreature, tb.Time*60*1000, tb) end end return true end ]]></globalevent> </mod> Configuração: days = { ["Monday"] = { ["21:30"] = {nome = "Orshabaal", pos = {fromPosition = {x=184, y=55, z=7},toPosition = {x=188, y=58, z=7}},m = {"5 Fire Devil", "2 Orshabaal"}, Time = 1}, ["21:33"] = {nome = "Dragon", pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}},m = {"100 Dragon"}, Time = 2} }, ["Tuesday"] = { ["10:44"] = {nome = "Demon", pos = {fromPosition = {x=184, y=55, z=7},toPosition = {x=188, y=58, z=7}}, m = {"5 Demon", "8 Fire Devil"}, Time = 1}, ["10:46"] = {nome = "Hydra", pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}}, m = {"7 Hydra", "4 Cyclops"}, Time = 2} } } ["DIA"] = { ["HORA DA INVASÃO"] = {nome = "NOME DA INVASÃO", pos = {começo e final da área}, monster = {"MONSTROS"}, Time = para remover os monstro} } O dia da invasão é colocada entre " " e somente dia em inglês e a primeira letra maiúscula, exemplo: "Saturday" Depois são as hora da invasão, que é colocada entre " " e somente a hora e minuto, segundos não precisa exemplo: "15:00" As Posições estão entre { } adicionando as posições x, y e z, é o começo e final da área exemplo: pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}} fromPosition -- começo da área onde vai acontecer a raid toPosition -- final da área onde vai acontecer a raid Os monters tem um modo especial de configurar, vc coloca entre { }, e cada monstro entre " ", e entre as " " vc adiciona "QUANTIDADE MONSTRO", e para adicionar mais tipos de monstro se separa por virgulas, exemplo: {"40 Water Elemental", "5 Cyclops"} Time é uma função extra, é para caso ninguém participe do evento os monstros não fiquem pelo mapa, e é em minutos, exemplo: Time = 15
-
higorsantos deu reputação a Qwizer em [v32] GlobalFull 11/12 - New Asuras, Falcons, Warzones 4,5,6 . (Updates Frequentes)Global 11/12x [v32]
- New Falcons
- New Asuras
- Warzone 4,5,6
- Exercise Training
- Raids 100%
- Monstros 100%
- Trainer Offline 100%
- Trainer Online 100%
- Taming system funcionando 100%;
- Database completa
- War System 100%
- Global MAP Full
- Store 100%
- Imbuement
- Prey System
- Entre outros sistemas.
Projeto no: GITHUB
Scan Vírus Total
IMAGES
Créditos:
-
higorsantos deu reputação a Tricoder em [VIDEO AULA] Colocando OT online nas versões atuais 10.xDescrição
Há MUITAS pessoas com esse tipo de dúvida sobre como abrir servidor atualmente, andei fuçando até que achei esse video e resolvi compartilhar com vocês.
O tutorial é longo, possui mais de uma hora mas é completamente explicativo. No tutorial é utilizado a versão 10.8x, mas lembrando que serve para todas as versões atuais. Os downloads se encontram ao final do tópico!
Agradecimentos à @hpjp, conteúdo feito totalmente por ele!
Compatibilidade
Windows e Linux.
Video Aula
Comandos uteis/necessários
Downloads
Máquina Virtual: http://www.oracle.com/technetwork/pt/server-storage/virtualbox/downloads/index.html xUbuntu Torrent: http://torrent.ubuntu.com/xubuntu/releases/trusty/release/desktop/xubuntu-14.04.3-desktop-amd64.iso.torrent Arquivo Install PHP: http://www.4shared.com/file/UH9Mtrd-ce/install.html Database (senha admin/admin e players 1/1): http://www.4shared.com/document/7mkM6cZxba/global.html
Servidor: http://www.mediafire.com/download/f7jacdzac7w5a4w/server.rar Sources com cast system: http://www.mediafire.com/download/bt2b2kj6eblfz2j/sources.rar Website compativel: http://www.mediafire.com/download/ssmgo9ko8j354so/www.zip Database: http://www.mediafire.com/download/vn0gbf75qgbi5ge/global-8.sql -
higorsantos deu reputação a Danihcv em [TUTORIAL] Adicionando novas mountsAqui no TK tem alguns tutoriais ensinando a botar novas mounts em seus servers, porém não achei nenhum que trouxesse uma informação fundamental: existe um limite de mounts que vc pode ter em seu server ao mesmo tempo.
Por exemplo, em meu server o limite é de 50 mounts. Se eu colocar, no arquivo mounts.xml, 51 mounts, o player quando abrir a tela pra escolher a mount ou irá tomar debug, ou a mount simplesmente não estará lá.
Tendo isso em mente, vamos ao tutorial:
1°) Colocando a criatura como mount
Abra seu arquivo mounts.xml que se encontra na pasta data/XML.
Dentro dele adicione a seguinte tag:
Em vermelho vc irá colocar o id da mount. Para descobrir qual o id da mount que vc está adicionando, basta ver o id da mount anterior e colocar o numero seguinte. Por exemplo, a mount anterior a essa tem o id 19.
Em azul vc irá colocar o looktype da criatura (monstro). Para descobrir o looktype do monstro que vc qr adicionar, basta ver o looktype no arquivo .xml do monstro. Por exemplo no arquivo Crystal spider.xml:
Em verde vc irá colocar o nome que irá aparecer para os players na tela de escolher a mount. Por exemplo, se eu tivesse colocado essa tag em mounts.xml:
O player iria visualizar o seguinte:
Em laranja vc irá colocar a speed da mount, ou seja, a velocidade com que o player irá se locomover quando estiver montado na mount.
E por fim em roxo vc irá colocar se pra usar a mount é necessário ser premium (premium="yes") ou se qualquer player, premium ou não, poderá usar a mount (premium="no").
2°) Colocando mounts proprias
É o mesmo jeito de configurar, porém o outfit (looktype) vc irá pegar pelo seu dat (e spr) editor. Por exemplo, eu peguei a mount Emperor Deer da versão 10.71 e coloquei em meu client 10.10. No meu editor de dat e spr, ficou assim:
Ou seja, a minha tag pra essa mount ficaria assim:
Em breve farei um tutorial de como adicionar essas sprites de mounts proprias pra seu client. Quando o fizer, postarei o link aqui para complementar mais o tutorial.
E isso é tudo, pessoal! Se gostaram do tutorial, não esquece o REP+ sahusahusa
Se têm alguma sugestão de tutorial para me dar, manda pm.
-
higorsantos deu reputação a MauroelBrizola em (Resolvido)[PEDIDO] MUSIC BOX [MONTARIAS] TFS 1.0Esta ai... adaptei o script postado para funcionar como Music Box, doma todos os que estão configurados.
Se precisar de ajuda para configurar alguma outra mount ( O script suporta domar itens, monstros e até NPCs... ) só pedir.
No arquivo actions.xml adicione a seguinte tag:
<action itemid="18511" script="musicbox.lua"/> Crie o arquivo musicbox.lua em otserver/data/actions/scripts e coloque nele:
local ACTION_RUN, ACTION_BREAK, ACTION_NONE, ACTION_ALL = 1, 2, 3, 4 local TYPE_MONSTER, TYPE_NPC, TYPE_ACTION, TYPE_UNIQUE = 1, 2, 3, 4 local config = { ["Gnarlhound"] = {NAME = 'Gnarlhound', ID = 32, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The gnarlhound ran away."}, {2, "Oh no! The golem Wrench broke."}, {3, "The gnarlhound has fled."} }, SUCCESS_MSG = "You have tamed the gnarlhound."}, ["Magma Crawler"] = {NAME = 'Magma Crawler', ID = 30, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The magma crawler ran away."}, {2, "Oh no! The glow wine broke."}, {3, "The magma crawler has fled."} }, SUCCESS_MSG = "You have tamed the magma crawler."}, ["Dragonling"] = {NAME = 'Dragonling', ID = 31, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The dragonling ran away."}, {2, "Oh no! The decorative ribbon broke."}, {3, "The dragonling has fled."} }, SUCCESS_MSG = "You have tamed the dragonling."}, ["Ironblight"] = {NAME = 'Ironblight', ID = 29, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The ironblight ran away."}, {2, "Oh no! iron loadstone broke."}, {3, "The ironblight has fled."} }, SUCCESS_MSG = "You have tamed the ironblight."}, ["Shock Head"] = {NAME = 'Shock Head', ID = 42, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The shock head ran away."}, {2, "Oh no! The nightmare horn broke."}, {3, "The shock head has fled."} }, SUCCESS_MSG = "You have tamed the shock head."}, ["Bear"] = {NAME = 'Bear', ID = 3, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The bear ran away."}, {2, "Oh no! The slingshot broke."}, {3, "The bear is trying to hit you with its claws."} }, SUCCESS_MSG = "You have tamed the bear."}, ["Black Sheep"] = {NAME = 'Black Sheep', ID = 4, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The black sheep ran away."}, {2, "Oh no! The reins were torn."}, {3, "The black sheep is trying to run away."} }, SUCCESS_MSG = "You have tamed the sheep."}, ["Midnight Panther"] = {NAME = 'Midnight Panther', ID = 5, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The panther has escaped."}, {2, "The whip broke."} }, SUCCESS_MSG = "You have tamed the panther."}, ["Terror Bird"] = {NAME = 'Terror Bird', ID = 2, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The bird ran away."}, {3, "The terror bird is pecking you."} }, SUCCESS_MSG = "You have tamed the bird."}, ["Boar"] = {NAME = 'Boar', ID = 10, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The boar has run away"}, {3, "The boar attacks you."} }, SUCCESS_MSG = "You have tamed the boar."}, ["Crustacea Gigantica"] = {NAME = 'Crustacea Gigantica', ID = 7, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The crustacea has run away."}, {2, "The crustacea ate the shrimp."} }, SUCCESS_MSG = "You have tamed the crustacea."}, ["Undead Cavebear"] = {NAME = 'Undead Cavebear', ID = 12, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The undead bear has run away."} }, SUCCESS_MSG = "You have tamed the skeleton."}, ["Wailing Widow"] = {NAME = 'Wailing Widow', ID = 1, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The widow has run away."}, {2, "The widow has eaten the sweet bait."} }, SUCCESS_MSG = "You have tamed the widow."}, ["inoperative tin lizzard"] = {NAME = 'inoperative tin lizzard', ID = 8, TYPE = TYPE_ITEM, CHANCE = 100, FAIL_MSG = { {2, "The key broke inside."} }, SUCCESS_MSG = "You have started the Tin Lizzard!"}, ["Draptor"] = {NAME = 'Draptor', ID = 6, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The draptor has run away."}, {3, "The draptor has fled."} }, SUCCESS_MSG = "You have tamed the draptor."}, ["Crystal Wolf"] = {NAME = 'Crystal Wolf', ID = 16, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The wolf has run away."} }, SUCCESS_MSG = "You have tamed the wolf."}, ["Enraged White Deer"] = {NAME = 'Enraged White Deer', ID = 18, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {2, "The cone broke."}, {3, "The deer has fled in fear."} }, SUCCESS_MSG = "You have tamed the deer."}, ["Panda"] = {NAME = 'Panda', ID = 19, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {4, "Panda ate the leaves and ran away."} }, SUCCESS_MSG = "You have tamed the panda."}, ["Dromedary"] = {NAME = 'Dromedary', ID = 20, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "Dromedary has run away."} }, SUCCESS_MSG = "You have tamed the dromedary."}, ["Sandstone Scorpion"] = {NAME = 'Sandstone Scorpion', ID = 21, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The scorpion has vanished."}, {2, "Scorpion broken the sceptre."} }, SUCCESS_MSG = "You have tamed the scorpion"}, ["Donkey"] = {NAME = 'Donkey', ID = 13, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The witch has escaped!"} }, SUCCESS_MSG = "You have tamed the mule."}, ["inoperative uniwheel"] = {NAME = 'inoperative uniwheel', ID = 15, TYPE = TYPE_ITEM, CHANCE = 100, FAIL_MSG = { {2, "The oil is having no effect."} }, SUCCESS_MSG = "You have found an Uniwheel."}, ["Slug"] = {NAME = 'Slug', ID = 14, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The slug has run away."}, {3, "The drug had no effect."} }, SUCCESS_MSG = "You have tamed the slug."}, ["Wild Horse"] = {NAME = 'Wild Horse', ID = 17, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The horse runs away."}, {2, "The horse ate the oats."} }, SUCCESS_MSG = "You have tamed the horse."}, ["Manta Ray"] = {NAME = 'Manta Ray', ID = 28, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The manta ray fled."}, {3, "The manta ray is trying to escape."} }, SUCCESS_MSG = "You have tamed the manta ray."}, ["Lady Bug"] = {NAME = 'Lady Bug', ID = 27, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The ladybug got scared and ran away."}, {3, "The ladybug is trying to nibble."} }, SUCCESS_MSG = "You tame a ladybug."}, ["Water Buffalo"] = {NAME = 'Water Buffalo', ID = 35, TYPE = TYPE_MONSTER, CHANCE = 100, FAIL_MSG = { {1, "The water buffalo got scared and ran away."}, {3, "The water buffalo is trying to nibble."} }, SUCCESS_MSG = "You tamed a water buffalo."} } local function doFailAction(cid, mount, pos, item, itemEx) local action, effect = mount.FAIL_MSG[math.random(1, table.maxn(mount.FAIL_MSG))], CONST_ME_POFF if(action[1] == ACTION_RUN) then Creature(itemEx.uid):remove() elseif(action[1] == ACTION_BREAK) then effect = CONST_ME_BLOCKHIT Item(item.uid):remove(1) elseif(action[1] == ACTION_ALL) then Creature(itemEx.uid):remove() Item(item.uid):remove(1) end Position(pos):sendMagicEffect(effect) Player(cid):say(action[2], TALKTYPE_ORANGE_1) return action end function onUse(cid, item, fromPosition, itemEx, toPosition) local player = Player(cid) if not Monster(itemEx.uid) then return true end local monster = Monster(itemEx.uid) local npc = Npc(itemEx.uid) local targetitem = Item(itemEx.uid) local mount = config[monster:getName()] if mount == nil then return false end if player:hasMount(mount.ID) then player:say("You already own this mount!", TALKTYPE_ORANGE_1) return false end local rand = math.random(1, 100) --Monster Mount if monster ~= nil and mount.TYPE == TYPE_MONSTER then if Creature(itemEx.uid):getMaster() then player:say("You cant tame a summon!", TALKTYPE_ORANGE_1) return true end if mount.NAME == monster:getName() then if rand > mount.CHANCE then doFailAction(cid, mount, toPosition, item, itemEx) return true end player:addMount(mount.ID) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, mount.SUCCESS_MSG) player:say(mount.SUCCESS_MSG, TALKTYPE_ORANGE_1) monster:remove() toPosition:sendMagicEffect(CONST_ME_MAGIC_GREEN) Item(item.uid):remove(1) return true else toPosition:sendMagicEffect(CONST_ME_POFF) end --NPC Mount elseif npc ~= nil and mount.TYPE == TYPE_NPC then if mount.NAME == npc:getName() then if rand > mount.CHANCE then doFailAction(cid, mount, toPosition, item, itemEx) return true end player:addMount(mount.ID) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, mount.SUCCESS_MSG) player:say(mount.SUCCESS_MSG, TALKTYPE_ORANGE_1) toPosition:sendMagicEffect(CONST_ME_MAGIC_GREEN) Item(item.uid):remove(1) return true end --Item Mount elseif targetitem ~= nil and mount.TYPE == TYPE_ITEM then if mount.NAME == targetitem:getName() then if rand > mount.CHANCE then doFailAction(cid, mount, toPosition, item, itemEx) return true end player:addMount(mount.ID) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, mount.SUCCESS_MSG) player:say(mount.SUCCESS_MSG, TALKTYPE_ORANGE_1) toPosition:sendMagicEffect(CONST_ME_MAGIC_GREEN) Item(item.uid):remove(1) return true end --Action Mount elseif itemEx.actionid > 0 and mount.TYPE == TYPE_ACTION then if(mount.NAME == itemEx.actionid) then if rand > mount.CHANCE then doFailAction(cid, mount, toPosition, item, itemEx) return true end player:addMount(mount.ID) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, mount.SUCCESS_MSG) player:say(mount.SUCCESS_MSG, TALKTYPE_ORANGE_1) toPosition:sendMagicEffect(CONST_ME_MAGIC_GREEN) Item(item.uid):remove(1) return true end --Unique Mount elseif itemEx.uid <= 65535 and mount.TYPE == TYPE_UNIQUE then if mount.NAME == itemEx.uid then if rand > mount.CHANCE then doFailAction(cid, mount, toPosition, item, itemEx) return true end player:addMount(mount.ID) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, mount.SUCCESS_MSG) player:say(mount.SUCCESS_MSG, TALKTYPE_ORANGE_1) toPosition:sendMagicEffect(CONST_ME_MAGIC_GREEN) Item(item.uid):remove(1) return true end end return false end -
higorsantos deu reputação a Lucas Barreto em [Atualização C1] Colossus Server 10.77 - Servidor NOVOCOLOSSUS SERVER 10.77
Bom Galera do TK, ai vai a minha primeira contribuição para o site. Espero não ter errado ai na postagem e conseguir passar todas informações necessárias para o bom entendimento do Leitor. Sem mais delongas, apresento-lhes o Colossus server.
CIDADES:
Colossus*
Edron
Ankrahmun
Gnombase
Mineland*
Yalahar
Svargrond
Roshamuul
Gray Beach
Rathleton
Alpha Base*
*Cidades Novas do servidor.
- Warzone 1, 2, 3;
- Bank System;
- Gray Beach City completa 100% (incluindo Subsolo);
- Monstros 100%;
- Trainer Offline 100%;
- Trainer Online 100%;
- Todas montarias;
- Taming system funcionando 100%;
- Database completa;
- Wrath of Emperor Quest;
- War System 100%;
- Market System 100%;
- Roshamull Completa100% (incluindo subsolo);
- Oramond Full;
- POI;
- Children of a Revolution Quest;
- The New Frontier Quest;
- Colossus quest;
- Varias quests Items Espalhadas pelo mapa;
- Novos Montros.
- Todas as Magias Balanceadas para um melhor desempenho. (Foi mudado todos os cálculos das magias). Essa mudança foi feita visando obter um maior empenho do jogador para crescer no jogo, pois as formulas antigas cresciam linearmente. Adotei formulas que crescem exponencialmente. Resultado, quem se dedica ao jogo, treina, upa e busca os melhores itens, sera realmente o mais forte.
- Itens vips criados.
- Npcs de Addon postos em uma ilha, todas as quest e execuções de addons são idênticas aos métodos do global, e todos os caminhos são direcionados no mapa.
- Todas as questes requerem missão. A inquisition, por exemplo, segue o mesmo raciocínio da quest global.
- Muitas Hunts novas, todo mapa foi readequado, com isso, talvez as hunts que você encontre no global, não serão as mesma deste servidor.
- A Knightwatch Tower, da dream chalange quest, foi reformulada, seus teleportes levam a Incríveis desafios.
- Praticamente todos os items são acessíveis.
- Wands e rods readequados para uma maior exploração destes items.
- Todos os monstros do Global. Os novos monstros só poderão ser acessados com a conclusão da Colossus quest, que é um desafio e tanto.
- Senha do god = god/god
Dediquei um pouco do meu tempo para estar criando este servidor. Baseei-me no servidor aqui postado pelo Mitsuig
Porem, o mapa foi totalmente editado por mim. Cidade Colossus e Alpha Base foram criadas por mim. As demais cidades foram readequadas para suprir minhas expectativas de jogabilidade do servidor. Todas as quests Globais (Exemplo: POI, Inqui, Children of revolution, The new Frontier, etc.) foram reformuladas para proporcionar mais jogabilidade e iteração no jogo.
Todo mapa foi Sinalizado para guiar os jogadores à seus devidos destinos.
ATENÇÃO: O mapa Não é global, Não é Global Compacto também, Não é Baiak.
Tentei construir um servidor que conduza o jogador para o maior aproveitamento. O mapa é praticamente 100% utilizável, todas as hunts e quests disponibilizam items e recompensas interessantes. Creio que criei um bom servidor pra galera por online ai. Espero que gostem!!
Bom, eu ja disponibilizei com o TFS compilado em Windows. Recomendo que Compilem vocês mesmo.
Esse servidor foi feito usando de modelo o do link acima. Contudo, o mais importante mesmo aquié o SERVIDOR e a DATABASE. O resto podem fazer o download de lá que vai funcionar certinho.
Downloads:
SERVIDOR
Database
WEBSITE
TFS-SDK-2.0
MAP EDITOR
Imagens:
Yalahar
Colossus Quest
Alpha Base
Mineland
Mapa Detalhado
Mapa Detalhado - Colossus City
Colossus
Créditos: Os mesmos do link acima citado. OTLAND - TFS TEAM; Lucas Barreto.
-
higorsantos deu reputação a Absolute em Como Aumentar Great Mana Potion !Vá em actions/scripts/liquids/potions.lua
Dentro do script vai ter:
[7591] = {empty = 7635, splash = 42, health = {425, 575}, level = 80, vocations = {4, 8}, vocStr = "knights"}, -- great health potion {425, 575} = 425 mínimo 575 máximo (altere como quiser)
level = 80 = levle mínimo pra usar.
O resto creio que entenda.