Histórico de Curtidas
-
Breaky recebeu reputação de LeoTK em [DUVIDA] Nessa spell de summonsEu Tenho Um Script Parecido ve se eh Util :
function onCastSpell(cid, var)
local from,to = {x=962, y=885, z=7},{x=973, y=892, z=7} -- começo e final do mapa
local from2,to2 = {x=979, y=901, z=7},{x=991, y=905, z=7} -- começo e final do mapa
local playerpos = getPlayerPosition(cid)
local cloth = getCreatureOutfit(cid)
local health = getCreatureHealth(cid)
local maxhealth = getCreatureMaxHealth(cid)
local MaximoSummon = 4 --- Maximo de Monstros Sumonados!! No Caso So Posso Sumonar 4 Clones
local summons = getCreatureSummons(cid)
if isInRange(getCreaturePosition(cid), from, to) or isInRange(getCreaturePosition(cid), from2, to2) then
doPlayerSendCancel(cid, "Você não pode usar esse jutsu aqui!") return true
end
if(table.maxn(summons) < MaximoSummon) then -- no summons
local Clone = doCreateMonster("Best Summon", playerpos)
local Clone2 = doCreateMonster("Best Summon", playerpos)
local Clone3 = doCreateMonster("Best Summon", playerpos)
local Clone4 = doCreateMonster("Best Summon", playerpos)
doConvinceCreature(cid, Clone)
doConvinceCreature(cid, Clone2)
doConvinceCreature(cid, Clone3)
doConvinceCreature(cid, Clone4)
setCreatureMaxHealth(Clone, maxhealth)
setCreatureMaxHealth(Clone2, maxhealth)
setCreatureMaxHealth(Clone3, maxhealth)
setCreatureMaxHealth(Clone4, maxhealth)
doCreatureAddHealth(Clone, health)
doCreatureAddHealth(Clone2, health)
doCreatureAddHealth(Clone3, health)
doCreatureAddHealth(Clone4, health)
doSetCreatureOutfit(Clone, cloth, -1)
doSetCreatureOutfit(Clone2, cloth, -1)
doSetCreatureOutfit(Clone3, cloth, -1)
doSetCreatureOutfit(Clone4, cloth, -1)
return TRUE
end
end
-
Breaky deu reputação a xWhiteWolf em Volatile SpiderlingFala galera do TK, hoje eu venho mais uma vez trazer uma das magias mais incríveis que eu já vi até hoje (sério). A magia original foi feita em outro fórum mas para a versão 10.1... como eu vi que ninguém conseguiu adaptar pra versões inferiores eu decidi criar a minha própria volatile spiderling.
Confesso que no começo eu tive muita dificuldade em achar as funções certas mas depois de tentar ajudar o membro @234567890z no suporte eu tive uma epifania. Sem mais delongas eu vou explicar oque o script faz e em seguida ensinar a colocá-lo no seu server.
• Explicação: A magia foi feita baseada na personagem Elise do jogo League of Legends: você faz uma cria que anda até os oponentes e se explodem causando dano em area e deixando eles envenenados. Aqui tem um gif da magia funcionando
obs: note que esse gif não fui eu que fiz mas ele demonstra exatamente como a magia funciona.
• Instalação: Pra instalá-lo no seu servidor vai ser um pouco complicado pois ele requer diversas modificações... antes de mais nada, coloque essas linhas no seu spells.xml:
<instant name="Volatile Spiderling" words="utevo res tera" lvl="40" mana="20" prem="1" selftarget="1" exhaustion="2000" groups="1,2000" icon="88" needlearn="0" event="script" value="especiais/spiderling.lua"> <vocation id="3"/> <vocation id="7"/> </instant> <instant name="poison explosion" words="poison explosion" lvl="0" mana="0" prem="0" aggressive="1" exhaustion="3000" needlearn="1" event="script" value="especiais/newspider.lua"> </instant> Agora você vai ter que criar os dois arquivos na pasta spells\scripts\especiais.
Em newspider.lua coloque o seguinte:
agora em spiderling.lua coloque o seguinte: Agora feito isso vc vai precisar criar o monstro que usará essa spell.. vá em monster\monsters.xml e adicione a seguinte linha: <monster name="Clone Spider" file="arachnids/newspider.xml"/> agora crie o arquivo data\monsters\arachnids\newspider.xml e adicione o seguinte nele:
Agora eu vou ensinar vocês a editarem... não tem muito oque mudar, apenas se vc quiser alterar os danos da spell vá em newspider.lua e será possível editar os danos do poison e da explosão:
local damageTable = { {4, -3}, {9, -2}, {20, -1} } aqui você muda quantos danos serão e quanto cada um tirará.. no caso serão 4 hits de -3, depois 9 hits de -2 e por fim 20 hits de -1 até o poison parar. Lembrando que esses danos saem de 4 em 4 segundos. Se você quiser que eles sejam mais rápidos é só editar aqui:
addDamageCondition(poisonpowder, t[1], 4000, t[2]) (4000 significa 4 segundos).
Feito isso será possível editar também a area e o dano da explosão respectivamente em: Area:
Dano:
doAreaCombatHealth(cid, 1, getThingPos(cid), area, -1, -30, 20)
Em vermelho temos o dano mínimo, analogamente, em azul, temos o dano máximo.
Em verde é possível editar o efeito da explosão
Só lembrando que as edições que forem feitas no newspider.lua devem ser feitas no spider.lua para que a magia tenha graça.. se não o dano da explosão/poison ao explodir será diferente caso ela morrer antes. Em spiderling.lua vc pode editar a quantidade máxima de crias que um player pode ter... o normal está setado para 2 mas vc pode sentir-se livre pra colocar quantas queira.
local maxsummon = 2 (Só lembre-se que ao explodir uma aranha pode acertar outra então não é muito bom deixar um numero maior que 3);
Se você for daqueles bem chatinhos com a magia você ainda pode editar algumas coisas importantes tais como:
O efeito que sai quando ela explode por morte ou pela spell:
doSendMagicEffect(getThingPos(cid), 16) O tempo em que ela executa a spell, a chance da spell sair naquele tempo e quantos sqm de distancia a criatura alvo deve estar pra aranha se explodir:
<attack name="poison explosion" interval="1000" range="1" chance="50"/> interval = de quantos em quantos segundos ela executa a spell
range = distancia em sqm que o alvo deve estar pra que ela execute a spell
chance = chance de executar a spell a cada interval (nesse caso a cada 1 segundo tem 50% de chance dela soltar a magia)
Você ainda pode editar aqui em vermelho:
o tempo que leva pra criatura executar a magia.. Por padrão eu deixei 2 segundos, ou seja... eu sumono a aranha, ela vai até o alvo e a cada segundo q ela passa grudada no alvo (1 sqm de distancia) ela tem 50% de chance de ativar a spell e ficar parada no lugar durante 2 segundos até explodir. Se você quiser que ela leve menos tempo pra explodir é só baixar o 2000 (em milisegundos).. Se você quiser aumentar o dano e deixar ela parada por mais tempo até explodir pode editar a vontade aumentando os 2000.
• Bom, isso é tudo que dava pra eu explicar... é óbvio que dá pra editar muito mais coisa mas se você não é scripter e não tem muita idéia de como editar eu dei uma ensinada básica doque você está autorizado a mexer. Espero que vocês curtam a spell e deem aquele REP+ pra fortalecer kkkk
Eu não pretendia liberar essa spell visto que ela é extremamente complexa e nenhum servidor tem ela, mas, acho que seria muito babaca da minha parte ficar guardando um script tão bonito hahaha. Qualquer erro ou dúvida postem nos comentários que eu tento ajudar.
ah, mais uma coisa: Os créditos são 90% meus visto que eu fiz praticamente tudo.. 9% é pro cara que fez a magia original (se vcs derem uma procurada vcs vão ver que não tem quase nada a ver com a minha mas os créditos dele são por ele ter me dado a idéia) e 1% pro cara no suporte que me pediu ajuda numa spell do mesmo gênero e me fez correr atrás de uma forma de fazer essa magia pra versões inferiores a TFS 1.0
-
Breaky deu reputação a Cat em [Resolvido] Encher life/mana ao uparComo faço para fazer o char se curar toda vez que upa lvl? '-' Os chars tão estão se curando quando upam quis dizer não estão se curando' certo?
vá em data/creaturescripts/scripts e crie um script com o nome hmup
function onAdvance(cid, skill, oldlevel, newlevel) if skill == SKILL__LEVEL then doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) doCreatureAddMana(cid, getCreatureMaxMana(cid)) end return TRUE end ainda em data/creaturescripts/script abra o login.lua e adicione em baixo das linhas
registerCreatureEvent(cid, "hmup") em data/creaturescripts/creaturescripts.xml
<event type="advance" name="hmup" event="script" value="hmup.lua"/> -
Breaky deu reputação a VitinhoMapp em Baiak 8.60 by Victor (vale apena dar uma olhada)Baiak 8.60 by Victor
Esse baiak eu fiz em cima de um baiak ice do bryaan, sim aquele mesmo, tinha uma infinidade de bugs os quais todos foram solucionados, não dão erros na hora de abrir o server, no baiak ice eram tantos que se tornava quase impossível contar. Eu ja postei esse OT não lembro quando, mas ele não tinha alguns sistema que esse tem e não estava tão bem explicado. Sem mais delongas vamos ao que interessa:
1. Oque há de novo?
1.1 Templo; 1.2 Área de TPS free; 1.3 Área de eventos; 1.3.1 War event; 1.3.2 XP Event (bugzin); 1.3.3 BP Event; 1.4 City of Champions - pode ser considerada uma extensão da VIP1; 1.5 Sistema de Castle 24 Horas; 1.5.1 Cidadezinha acessada pela guild que dominar o Castle 24 Horas; 1.5.2 Central de TPS para quem domina o Castle 24 Horas; 1.6 Sistema de Forja para obter as armas mais fortes do server; 1.7 Sistema de casamento (NPC Celest em frente ao Templo); 1.8 Mod de Reputação (REP) Desbugado; 1.9 NPC Comerciante; 1.10 Sistema de addons; 1.10.1 Bosses para dropar items de addons; 1.11 Templo VIP1; 1.12 Templo VIP2; 1.13 Área VIP3; 1.14 Área Account Manager; 1.15 Gold nugget ao dar use em crystal coin
2. Explicando como tudo funciona:
1.3.1 - War event:
Aquele TP que tem no canto superior esquerdo da área do war event leva até uma salinha, nessa salinha tem três corredores, um para cada troféu: ouro, prata e bronze, o interessante é que o nome do player é adicionado ao troféu:
1.5 - Castle 24 Horas:
Bem, vo explicar este porque ele é um pouquinho diferente dos outros, eu fiz algumas modificações dentre elas um TP para quem dominou o castelo por ultimo chegar no barco isso porque estava bugado as talkactions.
Também coloquei otro teleport na sala do trono pois quando se chega lá não tinha como voltar pro templo. Esse TP só pode ser acessado por quem dominou o Castle por ultimo.
No mais funciona da mesma forma que os outros, ao subir no trono sua guild consegue acesso a uma cidadezinha que tem uma central de TPS com 8 hunts com monstros VIP e VIP2.
1.6 Sistema de Forja:
Bem esse sistema que eu "criei" é diferente de tudo que eu ja vi, fiz um item de forja chamado "aço especial" que por sua vez serve para realizar forjas, pra obter esse item você da use em um crucible e então você recebe um aço especial (caso tenha 60kk) o preço é editável pois depende muito de como está o loot rate.
Não é porque eu que fiz mas isso foi bem pensado.
Ta bem organizadinho o comando !forjas como vocês podem ver.
Essas armas que aparecem ai são as mais fortes do server, a forja tem 20% de chance de dar certo.
1.7 Sistema de Casamento:
A igreja fica em frente ao templo, para se casar o diálogo é o seguinte: Hi - Marriage - Yes - Nome de quem você pretende se casar. Se a pessoa aceitar os dois recebem um anel de casamento gravado o nome do cônjuge e a data e também ganham o outfit Husband (homem) e Wife (mulher).
1.9 NPC Comerciante:
Esse npc eu fiz para vender stamina potion e pedra de refinamento.
1.10 Sistema de addons:
Bom, nesse sistema não tem segredo na parte da Bulma com o Varkhal, você adquire os items correspondente a cada addon e depois troca no Varkhal, o que eu preciso explicar é a parte dos King Bosses, eu os criei com o intuito de dropar alguns items que a bulma não vende: King Minotaur: nose ring, King Knight: damage steel helmet, King Magician: soul stone, King Hunter: sniper gloves, King Carniphila: mandrake, King Pirate: ron the ripper's sabre. Os três primeiros que citei tem seu TP liberado a cada 1 hora, os demais tem seu acesso livre porém o respaw demora 15 minutos.
OBS: Reparem que em todos os bosses os detalhes do ambiente onde o boss está foram o diferencial, eu poderia ter feito um quadrado e o boss no meio sem nada em volta (como muitos fazem).
O Único addon que não pode ser obtido no Varkhal é o Warmaster, ele é conseguido ao abrir o baú da área VIP3 aqui:
1.12 Templo VIP2:
Bom, não ha muito oque explicar aqui mas no segundo piso do templo vocês podem observar um TP com raios, aquela é a quest de acesso à VIP3 vou explicar como ela é feita:
Entre no TP na VIP2 passe pela porta e siga reto o caminho até chegar aqui: Depois de ter usado a alavanca o caminho é liberado e então você desce aquela escada e chegará aqui: Então de use no corpo que está no chão: Suba o buraco e continue pelo caminho. Até chegar nessa parte: Depois é só seguir o caminho até concluir a quest.
DOWNLOAD: 4shared - Mediafire
SCAN: VírusTotal - Jotti
3. Créditos
Essa parte é complicado pois faz tempo que eu comecei a edição (eu mexi nesse OT um pouco, parei e só depois de um tempo que voltei a mexer). Se esqueci alguém comenta que eu coloco.
Baiak Lula(criador do mapa)
Bryaan(fez o mapa base para o meu)
Victor(eu)
Bruno Minervino(ajudou muito com os scripts)
Absolute e ViitinG(script castle 24hrs e mapa do mesmo)
No momento eu estou hosteando esse mapa não tem ninguém online além de mim, abri mais pra testar e fazer mudanças, e ir testando abri publicamente pra se alguém entrasse me ajudar.
IP: baiakiceeditado.servegame.com
-
Breaky deu reputação a LukazGiovanni em [10.90] LKing OT {Reward Chest, Battlefield Event, 3 VIP}Fala galerinha!
Criei e arrumei o servidor para que todos possa colocar online e fazer um ótimo uso do mesmo.
Coloquei ele online por umas semanas e fui arrumando tudo, agora creio eu que está em 70% o projeto.
Porfavor, ninguém publique esse servidor em algum outro fórum a não ser que venha me pedir permissão.
Vamos ao que interessa.
LKing OT
TFS 1.2
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
• King Itens Quest
• King Set (Vendida no Npc)
• Divine Itens Quest
• Super Divine Itens Quest
• Epic Divine Itens Quest
~#~
VIP I, II e III (Quest)
~#~
Pits Of Inferno (POI)
Anihi
Demon Oak
Yalahari Quest
Firewalker Boots Quest
Warzone I, II e III
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
♦ Cast System (!cast on // !cast off)
♦ Reward Chest
♦ Critical e Dodge System
♦ War System
♦ Battlefield Event
♦ Zombie Event
♦ Bank System
♦ Market System
♦ Training Offline
♦ All Mounts 10.90 (Só com Mount Doll, vendida no npc)
♦ All Addons 10.90 (Só com Addon Doll, vendida no npc)
♦ Mágias modificadas (retirado um pouco do exhausted)
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Fuon City (Cidade principal)
3 Cidades VIP
Roshamuul
Grey Island
Gnomebase (Warzone I, II e III)
~#~
+15 Quests
+25 Teleports (com monstros editados)
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
◄ IMAGENS ►
Minimap
Templo (+sub solo)
Depot
Teleports
Quests (1 e 2)
Entrada Área Vip I, II e III
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
◄ DOWNLOAD ►
Servidor + Mapa + Executável 64bits ~ Clique aqui
Executável 32bits ~ Clique aqui
Vírus Total ~ Clique aqui
~#~
Sources ~ Clique aqui
Vírus Total ~ Clique aqui
~#~
Website Gesior Acc + Database ~ Clique aqui
Vírus Total ~ Clique aqui
~#~
LKing - Remere's Map Editor 10.90 ~ Clique aqui
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
◄ CRÉDITOS ►
Executável 10.90 ~ Marco Oliveira
Mapa, npcs, quests, teleports, vip, itens, magias.. 80% do Servidor ~ Lukaz Giovanni (EU )
Espero que vocês goste do servidor.
Se eu ver que a galera curtiu e quer mais atualizações, vou modificando e publicando atualizações sempre.
-
Breaky 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:
-
Breaky deu reputação a Absolute em [Link Quebrado]GLOBAL FULL DOWNLOAD 10.95 [TFS 1.2/FERUMBRAS QUEST/KRAILOS/NEW ARENA/CAST/NEW ITEMS/REWARD/EVENTS/CASINO] ~ AtualizaçõesDISPONÍVEL PARA DOWNLOAD!
Índice
A seguir vocês acompanharão:
1. Introdução
2. Features
3. Imagens
4. Versão
5. Downloads/Scans
6. Notas Finais
PARA TUDO!
Algo jamais visto para download, algo completo!
Tenho hoje o prazer de traze-los o download do servidor que será ESTÁ disponibilizado para galera do TIBIAKING!
Introdução:
Há alguns dias atrás eu e Ciroc resolvemos desenvolver um servidor na versão atual contendo tudo jamais disponibilizado na internet, ou seja; tudo foi realizado do zero e estará sendo disponibilizado para vocês.
Pegamos como base o servidor ORTS do próprio theforgottenserver e trabalhamos arduamente em cima do mesmo, para disponibiliza-los.
Features:
• Novas áreas 10.82/10.90
• Novos items 10.90
• Novos monstros/npcs/montarias 10.90
• Umbral creation
• Reward system Full Global
• Bosses prison roshamuul
• Oramond full incluindo seacrest ground e glooth factory
• Cast system work
• Casino automático
• Raids Full
• Battlefield Event
• Zombie Event
• Exp Shared
• Krailos
• New Arena Tibia.com
• Ferumbras' Ascendant Quest
• Equip HOTKEY
Imagens:
• Depot Thais (Entrada para nova arena)
• Nova arena PVP 10.90
• Cassino dice automático
• Treiners online aquatic room
• Seacrest Ground Cave
• Roshamuul prison key (incluido golden key)
• Novos monstros, novos items e novas outfits/montarias
• Boss Feroxa invasão 100%, mapa também.
• Local para duelar na arena (5vs5)
• Ao dar use, os players serão teleportados pra arena.
• Ferumbras' Ascendant Quest
• Entrada 7 bosses Ferumbras Quest
• Coletando recompensa com questlog.
• Entregando as demonic essences ao npc Mazarius
• Respawn Krailos Otimizado
Versão atual (Atualizaremos juntamente com o tibia.com)
~
Downloads/Scan (DISPONÍVEL):
Atenção: o servidor foi postado em um novo site de upload para tibia que iremos inaugurar oficialmente em breve, agradecimentos otupload.com ao @Guilherme pelo desenvolvimento em si.
Download do servidor completo + database + sources [LINUX]: http://otupload.com/file/1456169626_G1091_ABSOLUTE_CIROC_FOR_TK
Download do servidor completo + database + sources [LINUX] (LINK ALTERNATIVO, PROVISÓRIO): https://www.sendspace.com/file/1ctint
Download do servidor completo + database + sources [WINDOWS]: (Ainda não disponível, caso alguém queira se habilitar e compilar nossas sources, nós e a comunidade TK deixamos os sinceros votos de agradecimentos)
Scan do servidor: https://www.virustotal.com/pt/file/2f5fe15d174d47ec9080e1a9db3d33767e8536794a7b331c4c9646229567de97/analysis/1458112382/
Github: https://github.com/absoluten/absoluteglobal (O projeto será lançado em breve no github para as demais atualizações, sigam lá).
Notas Finais:
Este servidor é completo, é uma base/prévia do meu servidor em que trabalho.
O servidor é completo e encontra-se livre de quaisquer bugs graves.
Estaremos atualizando o servidor juntamente com a versão do tibia.com
Vocês poderão opinar e contribuir com o projeto de qualquer forma; sugestões, reports e etc.
Atenção: em breve nós estaremos trabalhando em um website na altura deste projeto, vocês poderão acompanhar aqui no fórum, fiquem atentos.
Créditos:
*Absolute
*@ciroc
*Orts
*Theforgottenserver
*@xWhiteWolf
Absolute/Ciroc Global, um servidor completo e perfeito, aproveitem.
-
Breaky deu reputação a Pedriinz em [TFS 1.x] Anti BotComo o nome do tópico diz, eu trouxe para vocês um sistema de anti bot.
Minha intenção é atualizar este código ao máximo, deixando o mesmo bastante customizável.
Quaisquer erros ou problemas por favor me deixe saber.
Como ele funciona?
Após um jogador matar uma quantidade x de monstros, o sistema irá realizar uma verificação com ele para saber se o mesmo está ou não 100% afk.
Essa verificação é feita através de um channel que se abre após o jogador matar a quantidade de monstros, realizando uma pergunta para o jogador.
O que é possível configurar?
Praticamente tudo! Você também pode adicionar quantas perguntas desejar! Organizei o script para que qualquer um possa realizar as configurações que desejar. Confira:
ANTI_BOT_SYSTEM = { config = { minMonstersToCheck = 2, -- O sistema irá escolher aleatoriamente um número de monstros entre esses dois valores para verificar. maxMonstersToCheck = 4, channelId = 10, -- Id do channel que será aberto para realizar a verificação. timeToAnswer = 10, -- Quanto tempo em segundos o jogador tem para responder a verificação. monstersForNotCheck = {'rat', 'bug', 'tiger'}, -- Monstros que não serão verificados pelo sistema. notations = 3, -- Quantas notificações o jogador pode receber antes de ser banido. banDays = 1, -- Quantidade de dias o personagem vai ficar banido por utilizar bot. storageForNotations = 1222, -- Storage onde ficará salvo as notations. storageForOpenChat = 10383, -- Storage que permitira o chat ser aberto. (Aconselho não mudar). }, questions = { [1] = {question = 'Digite quantas letras possui a palavra: Carro', answer = '5'}, [2] = {question = 'O que significa Ying e Yang?', answer = 'bem e o mal'}, [3] = {question = 'Qual é a cor do sol?', answer = 'amarelo'}, --[numero seguinte] = {question = 'pergunta', answer = 'resposta'}, }, cache = { players = { --[player:getId()] = {count = 1} }, question = 0, }, messages = { reason = {msg = 'Você foi banido por utilizar bot 100% AFK.'}, notation = {msg = 'Você foi penalizado e recebeu um notificação. Lembre-se que após receber 3 notificações você será banido. Você possui %d notificações no momento.', type = MESSAGE_EVENT_ADVANCE}, attention = {msg = '[Anti-Bot] Atenção! Você só possui %d segundos para responder a verificação.', type = TALKTYPE_CHANNEL_O}, channel_enter = {msg = '[Anti-Bot] Você está sobre suspeitas de uso aplicativos não autorizados.\nPor favor, confirme a verificação a seguir, você possui %d segundos para isso.', type = TALKTYPE_CHANNEL_O}, channel_close = {msg = '[Anti-Bot] Para sua segurança, não é possivel fechar este channel antes da verificação. Por favor responda o que lhe foi perguntado para que não seja penalizado.', type = TALKTYPE_CHANNEL_O}, wrong_answer = {msg = '[Anti-Bot] Resposta errada, por favor tente novamente.', type = TALKTYPE_CHANNEL_O}, correct_answer = {msg = '[Anti-Bot] Você respondeu corretamente, obrigado e bom jogo! Você já pode fechar este channel.', type = TALKTYPE_CHANNEL_O}, unconfirmed = {msg = 'Você não realizou a verificação corretamente, por isso você foi penalizado. Este channel já pode ser fechado.', type = TALKTYPE_CHANNEL_O}, } }
Tudo dentro desses espaços pode ser configurado sem nenhuma complicação!
Instalação:
Vá na pasta creaturescript/scripts do seu servidor e crie um arquivo com o nome de antibot.lua e adicione o seguinte conteúdo:
--[[ ## SCRIPT BY: Pedriinz ## ## CONTACT SKYPE: pedrosz4 ## ]] ANTI_BOT_SYSTEM = { config = { minMonstersToCheck = 2, -- O sistema irá escolher aleatoriamente um número de monstros entre esses dois valores para verificar. maxMonstersToCheck = 4, channelId = 10, -- Id do channel que será aberto para realizar a verificação. timeToAnswer = 10, -- Quanto tempo em segundos o jogador tem para responder a verificação. monstersForNotCheck = {'rat', 'bug', 'tiger'}, -- Monstros que não serão verificados pelo sistema. notations = 3, -- Quantas notificações o jogador pode receber antes de ser banido. banDays = 1, -- Quantidade de dias o personagem vai ficar banido por utilizar bot. storageForNotations = 1222, -- Storage onde ficará salvo as notations. storageForOpenChat = 10383, -- Storage que permitira o chat ser aberto. (Aconselho não mudar). }, questions = { [1] = {question = 'Digite quantas letras possui a palavra: Carro', answer = '5'}, [2] = {question = 'O que significa Ying e Yang?', answer = 'bem e o mal'}, [3] = {question = 'Qual é a cor do sol?', answer = 'amarelo'}, --[numero seguinte] = {question = 'pergunta', answer = 'resposta'}, }, cache = { players = { --[player:getId()] = {count = 1} }, question = 0, }, messages = { reason = {msg = 'Você foi banido por utilizar bot 100% AFK.'}, notation = {msg = 'Você foi penalizado e recebeu um notificação. Lembre-se que após receber 3 notificações você será banido. Você possui %d notificações no momento.', type = MESSAGE_EVENT_ADVANCE}, attention = {msg = '[Anti-Bot] Atenção! Você só possui %d segundos para responder a verificação.', type = TALKTYPE_CHANNEL_O}, channel_enter = {msg = '[Anti-Bot] Você está sobre suspeitas de uso aplicativos não autorizados.\nPor favor, confirme a verificação a seguir, você possui %d segundos para isso.', type = TALKTYPE_CHANNEL_O}, channel_close = {msg = '[Anti-Bot] Para sua segurança, não é possivel fechar este channel antes da verificação. Por favor responda o que lhe foi perguntado para que não seja penalizado.', type = TALKTYPE_CHANNEL_O}, wrong_answer = {msg = '[Anti-Bot] Resposta errada, por favor tente novamente.', type = TALKTYPE_CHANNEL_O}, correct_answer = {msg = '[Anti-Bot] Você respondeu corretamente, obrigado e bom jogo! Você já pode fechar este channel.', type = TALKTYPE_CHANNEL_O}, unconfirmed = {msg = 'Você não realizou a verificação corretamente, por isso você foi penalizado. Este channel já pode ser fechado.', type = TALKTYPE_CHANNEL_O}, } } function vericationBot(cid) local player = Player(cid) local timeNow = os.time() if not player then return true end if not ANTI_BOT_SYSTEM.cache.players[player:getId()] or ANTI_BOT_SYSTEM.cache.players[player:getId()].verified == false then return true else player:sendChannelMessage("", ANTI_BOT_SYSTEM.messages.unconfirmed.msg, ANTI_BOT_SYSTEM.messages.unconfirmed.type, ANTI_BOT_SYSTEM.config.channelId) ANTI_BOT_SYSTEM.cache.players[player:getId()] = nil if player:getStorageValue(ANTI_BOT_SYSTEM.config.storageForNotations) < ANTI_BOT_SYSTEM.config.notations then if player:getStorageValue(ANTI_BOT_SYSTEM.config.storageForNotations) ~= -1 then player:setStorageValue(ANTI_BOT_SYSTEM.config.storageForNotations, math.max(player:getStorageValue(ANTI_BOT_SYSTEM.config.storageForNotations) + 1)) else player:setStorageValue(ANTI_BOT_SYSTEM.config.storageForNotations, 1) end player:teleportTo(player:getTown():getTemplePosition()) player:sendTextMessage(ANTI_BOT_SYSTEM.messages.notation.type, string.format(ANTI_BOT_SYSTEM.messages.notation.msg, math.max(player:getStorageValue(ANTI_BOT_SYSTEM.config.storageForNotations)))) else player:teleportTo(player:getTown():getTemplePosition()) db.query("INSERT INTO `account_bans` (`account_id`, `reason`, `banned_at`, `expires_at`, `banned_by`) VALUES (" ..getAccountNumberByPlayerName(player:getName())..", "..db.escapeString(ANTI_BOT_SYSTEM.messages.reason.msg)..", "..timeNow..", "..timeNow + (ANTI_BOT_SYSTEM.config.banDays * 86400) ..", 1)") player:remove() end end return true end function onKill(creature, target) local targetMonster = target:getMonster() local player = creature:getPlayer() local random = math.random(ANTI_BOT_SYSTEM.config.minMonstersToCheck, ANTI_BOT_SYSTEM.config.maxMonstersToCheck) if not targetMonster then return true end if isInArray(ANTI_BOT_SYSTEM.config.monstersForNotCheck, targetMonster:getName():lower()) then return true end if not ANTI_BOT_SYSTEM.cache.players[player:getId()] then ANTI_BOT_SYSTEM.cache.players[player:getId()] = {count = 1, verified = false} else if ANTI_BOT_SYSTEM.cache.players[player:getId()].count >= random then ANTI_BOT_SYSTEM.cache.players[player:getId()] = {count = math.max(ANTI_BOT_SYSTEM.cache.players[player:getId()].count), verified = true} player:openChannel(ANTI_BOT_SYSTEM.config.channelId) player:getPosition():sendMagicEffect(CONST_ME_TUTORIALSQUARE) else ANTI_BOT_SYSTEM.cache.players[player:getId()] = {count = math.max(ANTI_BOT_SYSTEM.cache.players[player:getId()].count) + 1, verified = false} end end return true end Após feito isso, abre o arquivo creaturescript/creaturescript.xml e adicione esta linha:
<!-- Anti Bot by Pedriinz --> <event type="kill" name="AntiBot" script="antibot.lua" /> Feito isso, abra o arquivo: creaturescript/scripts/others/login.lua e registre o script com a tag:
'AntiBot', Exemplo:
local events = { 'ElementalSpheresOverlords', 'BigfootBurdenVersperoth', 'Razzagorn', 'Shatterer', 'Zamulosh', 'The Hunger', 'AntiBot', } Agora, abre o arquivo chatchannels/chatchannels.xml e adicione a seguinte tag:
<channel id="10" name="Anti Bot" public="1" script="antibot.lua" /> Lembre-se que o ID deve ser o mesmo que você configurou no script principal lá em cima.
Agora abra a pasta chatchannels/scripts/ crie um script chamado antibot.lua e adicione:
function onJoin(player) if not player then return true end if not ANTI_BOT_SYSTEM.cache.players[player:getId()] or ANTI_BOT_SYSTEM.cache.players[player:getId()].verified == false then player:popupFYI('You can\'t open this channel.') return false end addEvent(function() player:sendChannelMessage("", string.format(ANTI_BOT_SYSTEM.messages.channel_enter.msg, ANTI_BOT_SYSTEM.config.timeToAnswer), ANTI_BOT_SYSTEM.messages.channel_enter.type, ANTI_BOT_SYSTEM.config.channelId) end, 300) addEvent(function() local random = math.random(#ANTI_BOT_SYSTEM.questions) player:sendChannelMessage("", ANTI_BOT_SYSTEM.questions[random].question, TALKTYPE_CHANNEL_R1, ANTI_BOT_SYSTEM.config.channelId) ANTI_BOT_SYSTEM.cache.question = random end, 2000) addEvent(vericationBot, ANTI_BOT_SYSTEM.config.timeToAnswer * 1000, player:getId()) return true end function onLeave(player) if not player then return true end if ANTI_BOT_SYSTEM.cache.players[player:getId()] then player:openChannel(ANTI_BOT_SYSTEM.config.channelId) addEvent(function() player:sendChannelMessage("", ANTI_BOT_SYSTEM.messages.channel_close.msg, ANTI_BOT_SYSTEM.messages.channel_close.type, ANTI_BOT_SYSTEM.config.channelId) end, 300) end end function onSpeak(player, type, message) player:sendChannelMessage(player:getName(), message, TALKTYPE_CHANNEL_Y, ANTI_BOT_SYSTEM.config.channelId) if message ~= ANTI_BOT_SYSTEM.questions[ANTI_BOT_SYSTEM.cache.question].answer then addEvent(function() player:sendChannelMessage("", ANTI_BOT_SYSTEM.messages.wrong_answer.msg, ANTI_BOT_SYSTEM.messages.wrong_answer.type, ANTI_BOT_SYSTEM.config.channelId) end, 300) else addEvent(function() player:sendChannelMessage("", ANTI_BOT_SYSTEM.messages.correct_answer.msg, ANTI_BOT_SYSTEM.messages.correct_answer.type, ANTI_BOT_SYSTEM.config.channelId) end, 300) ANTI_BOT_SYSTEM.cache.players[player:getId()] = nil end return false end Pronto! O seu antibot foi instalado com sucesso!
O código foi totalmente feito por mim, então os créditos são meus.
Qualquer sugestão para melhorias, por favor poste para que eu possa fazer
Abraços!
-
Breaky deu reputação a NatsU em [Link Quebrado] All-In-One (10.98)Olá galera, como estão as festas? Muito tempo que não posto nada aqui pois estou meio desligado desse meio, mas venho trazer pra vocês, preguiçosos, um "pacote" All-In-One, com vários programas de edição (já compilados), o cliente 10.98 e um servidor TFS 1.2, VIRGEM. Lembrando que todos esses foram programas testados e alguns compilados em Windows 8.1 (x64), com Visual Studio 2017 RC.
O pacote contém:
Ferramentas:
Dat_Spr Editor (Object Builder 0.3.3) Item Editor (0.4) Pic Editor Map Editor (RME 3.2)
Client:
Tibia 10.98
Server:
OTX Server 3.7 (TFS 1.2)
OBS: Nenhum desses programas são de minha autoria, a maioria é do "Mignari" ou otimizado por ele.
OBS²:Vou disponibilizar um link de um tutorial de como colocar um servidor online nas versões atuais, ele é bem prático e objetivo: Tutorial
OBS³: Eu recomendo fortemente vocês extraírem esse pacote no diretório raiz do seu computador (geralmente C:/).
Download: Mediafire
Scan: VirusTotal
Obrigado e até um dia!
-
Breaky deu reputação a Wakon em Cliente 8.60 - TraduzidoFala ai pessoal, tranquilo?
Estou trazendo para vocês 1 cliente traduzido do Tibia 8.60 feito por mim, eu traduzi pelo XVI21 ( HexEditor ).
Não está 100% traduzido, mas vou atualizando nesse post conforme eu traduzo o resto do cliente, algumas imagens da tradução:
Exit:
Quando tenta fechar o Client com o char online.
Hotkeys:
CTRL + K
Login:
Opções:
Skills:
Tempo de stamina:
Ainda está uns 30% completo, pois preciso traduzir os outros stats da stamina.
Atualização: 12/02/2015 - 12:39
Inventario: CTRL+H
Escadas: CTRL+H
Aba de Ajuda:
Portas:
Outros:
Aba de Report: CTRL+R
Bom é isso, espero que gostem apesar de ser algo meio "Inutil", vou terminar de traduzir esse e atualizo, talvez eu continue com isso e traduza outras versões populares e outros clientes como o OTClient.
Atualizado: 12/02/2015 - 12:54
Download: Tibia - TraduzidoV1.1.exe
Scan: Tibia - TraduzidoV1.1.exe
Basta colocar na pasta do Tibia mantendo o resto dos arquivos como .dat, .spr, .pic e tals.
Por que eu fiz isso? Char no bot, tedio monstro, poaskpoask.
-
Breaky deu reputação a D i M i T r E s C u em Summons se Explodemja existe esse script estou procurando pra você
-
Breaky deu reputação a DeathRocks em [8.60] Baiak ROX ! Editado By DeathRocks [Cast + Wars System]Eae Galera do TibiaKing
É o seguinte Hoje trago a vocês o Baiak Rox Editado por Min
Espero que Gostem
Oque eu Fiz ?
| Novo Visual do Templo Totalmente ICE
| Critical System
| Task System
| Dodge System
| Run Event (CORRIDA MALUCA)
| Reset System (ÁREA EXCLUSIVA COM CASTELO E HUNTS) para resetar fale !reset
| Guild Frags System ( ACESSO AO PROMOTE E ITENS EXCLUSIVOS )
| War System (100% RODANDO EM SQLITE)
| Cast System (100% Roda em Mysql ) ( Para Ativar vai em Config.lua e ache | enableCast = false | mude para true ) Duvidas entrem em http://www.tibiaking...os-na-distro/
| PvP Balanceado Agora com mais RPG
| Armas Arrumadas Para Melhor PvP
| Varios Eventos Automaticos
| Battle Field Event
| Capture The Flag Event
| City War
| Adicionado CASTLE 24HORAS (COM CASTELO) e AVISOS DE INVASORES
| Itens DONATES
| Área DONATE ~~ (Só Entra Quem Usar o Itens de Premium Days)
| Vários Novos Script
| Fast Atk Arrumado
| Distro 0.4 Rodando 100% ( Se For 64x Bits)
| Refinamento ( Aprimora seus Equipamentos )
| Frags no Look
| Npc Hero Seller (Vende Itens Exclusivos para quem tiver honor points) Obs:Consegue no GFS)
| Entre Outras Coisas
| SENHA DO GOD: rox/styller
| Aqui Vai Umas Prints
| Castelo Reset System
| Nova Imagem do Templo
| Área Donate
| Mostra de Itens Donate + Eventos
| Download
| Scan
| Créditos
| Gostou ? Então dei um REP
-
Breaky recebeu reputação de tataboy67 em [Ajuda] Teleporte quando o pokemon morreObrigatoriamente vc deve botar no monstro :
<script>
<event name="tp24"/>
</script>
em baixo das tags do FLag , no arquivo do monstro.
Caso desse geito nao funcione mude o seu script para esse :
local tps = {
["Deidara MVP"] = {pos = {x=1710, y=531, z=9}, toPos = {x=1682, y=554, z=9}, time = 30},
}
local function removeTp(tp)
local t = getTileItemById(tp.pos, 5023).uid
return t > 0 and doRemoveItem(t) and doSendMagicEffect(tp.pos, CONST_ME_POFF)
end
function onDeath(cid)
local tp = tps[getCreatureName(cid)]
if tp then
doCreateTeleport(5023, tp.toPos, tp.pos)
doCreatureSay(cid, "O Teleport Irá Sumir em "..tp.time.." Segundos.", TALKTYPE_ORANGE_1)
addEvent(removeTp, tp.time*1000, tp)
end
return true
end
-
Breaky deu reputação a
PedroSTTem [NTO] Kamui me do obitoOlá galera , venho trazer pra voces o kamui me do obito , pra quem não sabe , é um jutsu que teleporta vc e o target para uma dimensão diferente e lah , vai ter monstros com o nome Gedou Kay que irão attackar somente o target.
Vá em spells/spells.xml e colé a seguinte tag ( coloque o id das voc que poderão usar )
agora em spells/scripts crie um arquivo .lua com o nome kamuime e cole a seguinte script
Agorá vá em monster/monsters.xml e cole a tag
Vá em monster e crie um arquivo .xml com o nome gedou kay e cole isso dentro
Agora vá em creaturescripts/creaturescripts.xml e cole a seguinte tag
Agora vá em creaturescripts/scripts crie um arquivo .lua com o nome mtarget e cole isso dentro
Créditos
-
Breaky deu reputação a Dieguiin XP em [Link Quebrado] IceWars Baiak (8.60)Fala galera, hoje venho trazer um mapa editado por mim umpouco parecido com o "BaiakWars" vamos lá oque contem nesse baiak? -Novo Templo -Castle 24HRS (Unico) com aviso de invasores -Paladin arrumado, agóra pode healar com potion e atacar ao mesmo tempo -Utito Tempo San Arrumado Agóra não da mais Exausted em outras magias -Dodge System -Critical System -Itens Donates para vender no Site ou no Jogo -Itens VIP a mostra no templo -Todos itens DONATES dando as skills normalmente -Vários Teleports -Novas Hunts -Look Frags -Potions Editadas -War System -Muitas quests -City editada para um PvP muito melhor -Arena PVP -Fast Attack ROX Para melhor PvP -Quest de set free para Pally/Kinas -Quest de set free para Mages -quest para armas editadas -Treiners com novos visual -30% a mais de experiencia para players donates -10% a mais de experiencia para guild que domina o Castle 24HRS E muito mais! Comandos principais: !dodoge !critical !stamina !aol !bless !notice. Vamos as imagens: templo http://imgur.com/eY4hWyI teleports http://imgur.com/Xd8YUg8 Quests http://imgur.com/o9beGwi castle http://imgur.com/CfAiSBI hunts do castle http://imgur.com/4ix1RD7 area donate http://imgur.com/NGWOA7H Acc do GOD: 5/god Download :http://www.4shared.com/rar/hlajskCyce/DiegoWars.html Scan: https://www.virustotal.com/pt/file/7585ec4867213d5f9230eb1f554a4f320756c37db53406f2b9b80e1d75037cbf/analysis/1413409264/ Créditos Dieguiin XP Marcos Vinicius OBS: Decupem se o tópico ficou meio bagunçado Gostou? Da um Rep+
-
Breaky deu reputação a DarkWore em Passando Narutibia 8 5.4 para 8.60Você precisará das seguintes coisas:
Source 854 do seu Narutibia Nova Source 860 de Tibia Limpo. Cliente 854 do seu Narutibia (Incluindo SPR e DAT) Cliente 860 Limpo de Tibia (Incluindo SPR e DAT do seu Narutibia) Após isso será necessário passar á SPR e DAT Para 860 basta usar o Object Builder e Compilar na versão desejada, após isso basta, passar todos os códigos da versão 854 e seu devido tfs para á versão 860 e compilar á source e fazer na source para o seu distro aceitar os ITENS OTB E XML na versão 860 (Existe Tutorial aqui no fórum)
Se ajudei REP+
-
Breaky deu reputação a Sekk em (Resolvido)Correção em um script actionAcho que assim ta certo, testa ai @Breaky
function onUse(cid, item, itemEx, toPosition, fromPosition) local s = 89745 local outfitF = 136 -- outfit Female citizen local outfitM = 128 -- outfit Male citizen local condo = createConditionObject(CONDITION_OUTFIT) if getPlayerStorageValue(cid, s) == 4 then doPlayerRemoveItem(cid, item.uid, 1) if getPlayerSex(cid) == 0 then addOutfitCondition(condo, {lookType = outfitF, lookHead = 114, lookBody = 114, lookLegs = 114, lookFeet = 114}) -- escolhe a cor de cada membro do outfit ai doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_BLUE) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Now, you cannot change your outfit!") else addOutfitCondition(condo, {lookType = outfitM, lookHead = 114, lookBody = 114, lookLegs = 114, lookFeet = 114}) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_BLUE) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Now, you cannot change your outfit!") end else doPlayerSendCancel(cid, "Sorry, you can't use this item yet.") end return true end
-
Breaky recebeu reputação de Micheel15 em monstro morre todos players que atacaram recebem uma recompensatem varios topicos eh só procurar.
-
Breaky deu reputação a Bryan Robert em Passar um Ot de NTO do 8.54 peo 8.6 AJUDAAssunto:
Passando o seu servidor de narutibia de 8.54 para 8.60.
Tutorial:
Baixe o servidor "Crying Dasmon Forgotten Server 8.60" & o "RME" (ou qualquer outro editor que funcione na versão 8.60).
Abra o mapa do Forgotten Server e vá em:
File > Import > Map
Depois de importado dê save e apague tudo da pasta data do Forgotten Server (menos a pasta World do mapa) e coloque as do NTO Shinobi. Após isto configure a config.lua para mysql (phpmyadmin) e pronto.
Bugs:
Caso dê bug nos Monsters/NPC do seu server, abra seu mapa no RME e vá em:
File > Import > NPC or Monster
Selecione todos os arquivos .xml de npc e monster da sua pasta data.
Downloads:
Crying Dasmon Forgotten Server 8.60 RME Creditos:
Vegettotaku (eu, pelo tutorial)
Naruto Shinobi [Hoobin Hood] (Pelo Server)
Crying Dasmon (Pelo Server)
-
Breaky deu reputação a Vodkart em [MODS] - [8.6] Perfect Zombie System [Automático] [V1.0]Qual dúvida ou erro poste no tópico que estarei respondendo.
Obs: Antes que me falem besteiras, coloquei para os GM'S, CM'S E GOD'S não contarem no evento, então testem apenas com jogadores.
Zombie.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Perfect Zombie System" version="8.6" author="Vodkart" contact="tibiaking.com" enabled="yes"> <config name="zombie_config"><![CDATA[ zombie_config = { storages = {172100, 172101, 172102}, -- n edite players = {min = 2, max = 30}, -- min, max players no evento rewards = {items ={{2160,10},{2494,1}}, trophy = 5805}, timeToStartEvent = 30, -- segundos para começar o evento CheckTime = 5, -- tempo que o TP fica aberto para os jogadores adrentarem o evento teleport = {{x=147, y=55, z=7}, {x=125 , y=304, z=7}}, -- position do tp onde aparece, position para onde o jogador vai ao entrar no tp arena = {{x=110,y=297,z=7},{x=145,y=321,z=7}}, -- area positions monster_name = "Zombie Event", timeBetweenSpawns = 20, min_Level = 20 } zombie_days = { ["Monday"] = {"13:00","18:00","20:00","22:00"}, ["Tuesday"] = {"13:00","18:00","22:50","22:00"}, ["Wednesday"] = {"21:57","18:00","20:00","23:17"}, ["Thursday"] = {"13:00","18:00","20:00","22:00"}, ["Friday"] = {"13:00","18:00","21:45","22:00"}, ["Saturday"] = {"13:00","18:00","20:00","22:00"}, ["Sunday"] = {"13:00","18:00","20:00","22:00"} } function removeZombieTp() local t = getTileItemById(zombie_config.teleport[1], 1387).uid return t > 0 and doRemoveItem(t) and doSendMagicEffect(zombie_config.teleport[1], CONST_ME_POFF) end function ZerarStoragesZombie() for _, stor in pairs(zombie_config.storages) do setGlobalStorageValue(stor, 0) end end function getPlayersInZombieEvent() local t = {} for _, pid in pairs(getPlayersOnline()) do if isInRange(getPlayerPosition(pid), zombie_config.arena[1], zombie_config.arena[2]) and getPlayerAccess(pid) < 3 then t[#t+1] = pid end end return t end function getZombieRewards(cid, items) local backpack = doPlayerAddItem(cid, 1999, 1) -- backpackID for _, i_i in ipairs(items) do local item, amount = i_i[1],i_i[2] if isItemStackable(item) or amount == 1 then doAddContainerItem(backpack, item, amount) else for i = 1, amount do doAddContainerItem(backpack, item, 1) end end end end function isWalkable(pos, creature, proj, pz)-- by Nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end if getTileInfo(pos).protection and pz then return false, true end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function HaveCreatureZombie(area, remove) for x = area[1].x - 1, area[2].x + 1 do for y = area[1].y - 1, area[2].y + 1 do local pos = {x=x, y=y, z=area[1].z} local m = getTopCreature(pos).uid if remove ~= false and m ~= 0 and isMonster(m) then doRemoveCreature(m) end end end end function spawnZombie() if #getPlayersInZombieEvent() > 1 then local pos = {x=math.random(zombie_config.arena[1].x, zombie_config.arena[2].x), y=math.random(zombie_config.arena[1].y,zombie_config.arena[2].y), z=zombie_config.arena[1].z} if not isWalkable(pos, false, false, false) then spawnZombie() else doSummonCreature(zombie_config.monster_name, pos) doSendDistanceShoot({x = pos.x - math.random(4, 6), y = pos.y - 5, z = pos.z}, pos, CONST_ANI_FIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_HITBYFIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_FIREAREA) doSendMagicEffect(pos, CONST_ME_MORTAREA) setGlobalStorageValue(zombie_config.storages[2], getGlobalStorageValue(zombie_config.storages[2]) <= 0 and 1 or getGlobalStorageValue(zombie_config.storages[2])+1) doBroadcastMessage("A zombie has spawned! There is currently " .. getGlobalStorageValue(zombie_config.storages[2]) .. " zombies in the zombie event!", MESSAGE_STATUS_CONSOLE_RED) addEvent(spawnZombie, zombie_config.timeBetweenSpawns *1000) end end end function CheckZombieEvent(delay) if getGlobalStorageValue(zombie_config.storages[1]) ~= (zombie_config.players.max+1) then if delay > 0 and getGlobalStorageValue(zombie_config.storages[1]) < zombie_config.players.max then doBroadcastMessage("Zombie event starting in " .. delay .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING) elseif delay == 0 and getGlobalStorageValue(zombie_config.storages[1]) < zombie_config.players.min then for _, cid in pairs(getPlayersInZombieEvent()) do doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT) end removeZombieTp() doBroadcastMessage("The Zombie event could not start because of to few players participating.\n At least " .. zombie_config.players.min .. " players is needed!", MESSAGE_STATUS_WARNING) ZerarStoragesZombie() elseif delay == 0 and getGlobalStorageValue(zombie_config.storages[1]) >= zombie_config.players.min then removeZombieTp() doBroadcastMessage("The Zombie event is now full [" .. getGlobalStorageValue(zombie_config.storages[1]) .. " players]! The event will soon start.") for _, var in pairs(getPlayersInZombieEvent()) do doPlayerSendTextMessage(var, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. zombie_config.timeToStartEvent .. " seconds! Good luck!") end addEvent(spawnZombie, zombie_config.timeToStartEvent*1000) end addEvent(CheckZombieEvent, 60000, delay-1) end end]]></config> <event type="statschange" name="ZombieStats" event="script"><![CDATA[ domodlib('zombie_config') if isPlayer(cid) and isMonster(attacker) and getCreatureName(attacker) == zombie_config.monster_name then if isInRange(getPlayerPosition(cid), zombie_config.arena[1], zombie_config.arena[2]) then if #getPlayersInZombieEvent() > 1 then doBroadcastMessage(getPlayerName(cid) .. " have been eated by Zombies!", MESSAGE_STATUS_CONSOLE_RED) local corpse = doCreateItem(getPlayerSex(cid) == 1 and 3058 or 6081, 1, getPlayerPosition(cid)) doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT) if #getPlayersInZombieEvent() == 1 then local winner = getPlayersInZombieEvent()[1] doBroadcastMessage(getCreatureName(winner)..' has survived at zombie event!') local goblet = doPlayerAddItem(winner, zombie_config.rewards.trophy, 1) doItemSetAttribute(goblet, "description", "Awarded to " .. getPlayerName(winner) .. " for winning the Zombie event.") getZombieRewards(winner, zombie_config.rewards.items) doTeleportThing(winner, getTownTemplePosition(getPlayerTown(winner)), false) doSendMagicEffect(getPlayerPosition(winner), CONST_ME_TELEPORT) doBroadcastMessage(getPlayerName(winner).." won the Zombie event! Congratulations!") HaveCreatureZombie(zombie_config.arena, true) ZerarStoragesZombie() end else doBroadcastMessage("No one survived in the Zombie Event.", MESSAGE_EVENT_ADVANCE) HaveCreatureZombie(zombie_config.arena, true) ZerarStoragesZombie() end return false end end return true]]></event> <globalevent name="Zombie_Start" interval="60000" event="script"><![CDATA[ domodlib('zombie_config') function onThink(interval, lastExecution) if zombie_days[os.date("%A")] then local hrs = tostring(os.date("%X")):sub(1, 5) if isInArray(zombie_days[os.date("%A")], hrs) and getGlobalStorageValue(zombie_config.storages[3]) <= 0 then local tp = doCreateItem(1387, 1, zombie_config.teleport[1]) doItemSetAttribute(tp, "aid", 45110) CheckZombieEvent(zombie_config.CheckTime) setGlobalStorageValue(zombie_config.storages[1], 0) setGlobalStorageValue(zombie_config.storages[2], 0) HaveCreatureZombie(zombie_config.arena, true) end end return true end]]></globalevent> <event type="login" name="Zombie_Login" event="script"><![CDATA[ domodlib('zombie_config') function onLogin(cid) registerCreatureEvent(cid, "ZombieBattle") registerCreatureEvent(cid, "ZombieStats") if isInRange(getPlayerPosition(cid), zombie_config.arena[1], zombie_config.arena[2]) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end return true end]]></event> <event type="combat" name="ZombieBattle" event="script"><![CDATA[ domodlib('zombie_config') if isPlayer(cid) and isPlayer(target) and isInRange(getPlayerPosition(cid), zombie_config.arena[1], zombie_config.arena[2]) then doPlayerSendCancel(cid, "You may not attack this player.") return false end return true ]]></event> <movevent type="StepIn" actionid ="45110" event="script"><![CDATA[ domodlib('zombie_config') function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end if getPlayerAccess(cid) > 3 then return doTeleportThing(cid, zombie_config.teleport[2]) end if getPlayerLevel(cid) < zombie_config.min_Level then doTeleportThing(cid, fromPosition, true) doPlayerSendCancel(cid, "You need to be at least level " .. zombie_config.min_Level .. ".") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return true end if getGlobalStorageValue(zombie_config.storages[1]) <= zombie_config.players.max then doTeleportThing(cid, zombie_config.teleport[2]) setGlobalStorageValue(zombie_config.storages[1], getGlobalStorageValue(zombie_config.storages[1])+1) doBroadcastMessage(getPlayerName(cid) .. " entered the Zombie event! Currently " .. getGlobalStorageValue(zombie_config.storages[1]) .. " players have joined!", MESSAGE_STATUS_CONSOLE_RED) if getGlobalStorageValue(zombie_config.storages[1]) == zombie_config.players.max then setGlobalStorageValue(zombie_config.storages[1], getGlobalStorageValue(zombie_config.storages[1])+1) removeZombieTp() doBroadcastMessage("The Zombie event is now full [" .. getGlobalStorageValue(zombie_config.storages[1])-1 .. " players]! The event will soon start.") for _, var in pairs(getPlayersInZombieEvent()) do doPlayerSendTextMessage(var, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. zombie_config.timeToStartEvent .. " seconds! Good luck!") end addEvent(spawnZombie, zombie_config.timeToStartEvent*1000) end end return true end]]></movevent> <talkaction words="/zombiestart;!zombiestart" access="5" event="buffer"><![CDATA[ domodlib('zombie_config') if getGlobalStorageValue(zombie_config.storages[3]) > 0 then doPlayerSendCancel(cid, "The event is already starting.") return true elseif not param or not tonumber(param) then doPlayerSendCancel(cid, "Use only numbers.") return true end local param = tonumber(param) <= 0 and 1 or tonumber(param) local tp = doCreateItem(1387, 1, zombie_config.teleport[1]) doItemSetAttribute(tp, "aid", 45110) CheckZombieEvent(tonumber(param)) ZerarStoragesZombie() setGlobalStorageValue(zombie_config.storages[3], 1) HaveCreatureZombie(zombie_config.arena, true) ]]></talkaction> <globalevent name="ZombieDebug-Start" type="start" event="buffer"><![CDATA[ domodlib('zombie_config') ZerarStoragesZombie() return true]]></globalevent> </mod>
OBS: Quem serve em milesegundos, mude essa parte:
<globalevent name="Zombie_Start" interval="60" event="script"><![CDATA[
para
<globalevent name="Zombie_Start" interval="60000" event="script"><![CDATA[
----------------------------------------------------- // --------------------------------------------------
o monstro você instala em data/monsters
zombie event.xml
<?xml version="1.0" encoding="UTF-8"?> <monster name="Zombie Event" nameDescription="an zombie event" race="undead" experience="280" speed="100" manacost="0"> <health now="500" max="500"/> <look type="311" corpse="9875"/> <targetchange interval="5000" chance="50"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="0"/> <flag attackable="0"/> <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="2000" min="-35000" max="-35000"/> </attacks> <defenses armor="15" defense="10"/> <immunities> <immunity paralyze="1"/> <immunity invisible="1"/> </immunities> <voices interval="5000" chance="10"> <voice sentence="You wont last long!"/> <voice sentence="Mmmmh.. braains!"/> </voices> <loot> <item id="2148" countmax="1" chance="100000"/><!-- gold coin --> </loot> </monster>
e a tag em monsters.xml
<monster name="Zombie Event" file="zombie event.xml"/>
Configuração
Sistema
zombie_config = {
storages = {172100, 172101}, -- não edite
players = {min = 2, max = 30}, -- número minimo e máximo para jogadores no evento
rewards = {items ={{2160,10},{2494,1}}, trophy = 5805}, -- premiações do jogador
timeToStartEvent = 30, -- segundos para começar o evento após dar start
CheckTime = 5, -- tempo que o TP fica aberto para os jogadores adrentarem o evento
teleport = {{x=145, y=50, z=7}, {x=176 , y=54, z=5}}, -- posiçãodo tp onde aparece, posição para onde o jogador vai ao entrar no tp
arena = {{x=173,y=52,z=5},{x=179,y=56,z=6}}, -- posição começo e final da area do evento
monster_name = "Zombie Event", -- nome do monstro que será sumonado
timeBetweenSpawns = 20, -- a cada quantos segundos é dado o respaw time do zombie no evento
min_Level = 20 -- level minimo para participar do evento
}
Dia e Horário
zombie_days = {
["Monday"] = {"13:00","18:00","20:00","22:00"},
["Tuesday"] = {"13:00","18:00","20:00","22:00"},
["Wednesday"] = {"13:00","18:00","20:00","22:00"},
["Thursday"] = {"13:00","18:00","20:00","22:00"},
["Friday"] = {"13:00","18:00","20:00","22:00"},
["Saturday"] = {"13:00","18:00","20:00","22:00"},
["Sunday"] = {"13:00","18:00","20:00","22:00"}
}
["Dia em inglês"] = {"horário do evento"}
Configurando a área:
zombie lua.rar
-
Breaky deu reputação a Kimoszin em Criando suas RaidsOlá galerinha, hoje vou ensinar como vocês podem criar suas proprias Raids.
- Mais oque são Raids?
São invasões, eventos, que em determinado tempo podem acontecer.
- Para que servem?
Deixar seu servidor mais legal, as raids acontecem automaticamente, ou seja, você nao precisa estar com o GOD, CM, GM online para que as invasões começem.
- Opa, gostei... como eu começo?
Simples, vou ensinar a vocês agora mesmo.
1. Vá para \data\raids e crie um arquivo .xml com o nome de um monstre (Exemplo: Monk)
2. Logo em seguida, adicione os seguintes codigos:
<raid> <announce delay="0" type="event" message="Message1"> Quando executar a raid, com o tempo do delay ira mandar a Message1 /> <announce delay="2000" type="event" message="Message2"> Quando executar a raid, com o tempo do delay ira mandar a Message2 /> <announce delay="4000" type="event" message="Message3"> Quando executar a raid, com o tempo do delay ira mandar a Message3 /> <singlespawn delay="6000" name="Monk" x="XXXX" y="YYYY" z="ZZ"> Quando executar a raid, com o tempo do delay ira summonar o Monk, nas posições X, Y, Z. /> </raid> 3. Seja coerente, sempre bote umas diferença de tempo (delay) para funcionar tudo perfeitamente. 4. Agora para a Raid funcionar, você deve adicionar ela em \data\raids\raids.xml a seguinte linha <raid name="MonkRaid" file="Monk.xml" chance="10" interval2="60" margin="0"> A cada 60 minutos tem a chance de 10% da raid iniciar /> 5. Para você adicionar mais de um bixo na raid, basta adicionar as seguintes linhas. <singlespawn delay="1500" name="Rat" x="592" y="603" z="6"> <singlespawn delay="1500" name="Cave Rat" x="602" y="573" z="7"> <singlespawn delay="1500" name="Bat" x="607" y="573" z="7"> Variaveis: delay=" " -- Tempo para executar message=" " -- Mensagem quando executar. name=" " -- Nome do monstro que ira summonar x=" " y=" " z=" " -- Posição que ira summonar o monstro raid name=" " -- Nome da raid file=" " -- Nome do arquivo xml da raid chance=" " -- Quanto de chance tem para executar a raid, porcentagem interval2=" " -- Tempo em minutos
Bom é isso, tentei explicar ao maximo para vocês conseguirem criar suas proprias raids.
Qualquer duvida estarei aqui.
Abraços.
-
Breaky deu reputação a joadson em [Resolvido] [Pedido] NPC dá storage e outro que reconheceAqui o NPC que dá storage
crie um arquivo chamado storage.xml e coloque isso dentro
<?xml version="1.0" encoding="UTF-8"?> <npc name="NOME" script="data/npc/scripts/storage.lua" walkinterval="0" floorchange="0"> <health now="100" max="100"/> <look type="130" head="9" body="85" legs="9" feet="0" addons="3"/> <parameters> <parameter key="message_greet" value="Coloque aqui sua mensagem"/> </parameters> </npc> e depois vá em /npc/scripts e crie um arquivo chamado storage.lua e coloque isso dentro
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, 'servicos') or msgcontains(msg, 'SERVICOS')) then selfSay("você irá receber uma storage de acesso ao proximo NPC, você aceita?") talkState[talkUser] = 1 elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 1) then setPlayerStorageValue(cid, 6000, 1) selfSay("Parabéns, você ganhou o acesso.",cid) talkState[talkUser] = 0 elseif msg == "no" and talkState[talkUser] >= 1 then selfSay("Okay Entao", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Testei e está sem erros, dando a storage apenas se falar "servicos".
E para fazer o que só fala se tiver a storage, preciso que você me dê mais especificações sobre o npc.
-
Breaky deu reputação a Vodkart em [Resolvido] [PEDIDO] npc outfitslocal 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 local price = 2000 local msg= string.lower(msg) if msgcontains(msg, 'black anbu') then outID,storage,name,check = 47,78410,msg,true elseif msgcontains(msg, 'white anbu') then outID,storage,name,check = 50,78411,msg,true end if check == true then npcHandler:say('você quer comprar a outfit '..name..' por '..price..' gps? {yes}', cid) talkState[talkUser] = 1 check = false end if msgcontains(msg, 'yes') and talkState[talkUser] == 1 then if getPlayerStorageValue(cid, storage) == -1 then if doPlayerRemoveMoney(cid, price) then doPlayerAddOutfit(cid, outID, 1) setPlayerStorageValue(cid, storage, 1) npcHandler:say('aqui está sua outfit!', cid) talkState[talkUser] = 0 else npcHandler:say('você precisa de '..price..' gps para comprar.', cid) talkState[talkUser] = 0 end else npcHandler:say('você já tem está outfit.', cid) talkState[talkUser] = 0 end elseif msg == "no" then selfSay("Tudo bem então", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
-edited
tinha colocado a função errado, tava dando addon de vez de outfit kk
arrumada ja
-
Breaky deu reputação a Sekk em Equipar Item So com Storage , Ganhando Atributolocal outfit = {lookType = 1147} -- looktype local pos = getCreaturePosition(cid) -- pode usar isso pra economizar letras no script, olhe nas funções doSendMagicEffect, reduziu o tamanho viu? function onEquip(cid, item, slot) if getPlayerStorageValue(cid, 34279) <= 0 then -- aqui ta perguntando se a storage ta como 0 doPlayerSendCancel(cid, "Este Item so Pode ser Usado Por Anbus Que Fizeram a Quest Ultimate Anbu.") else -- vc deve ter feito alguma quest que deixa a storage com valor 1, então esse else é tipo o contrario da função get ali em cima, vai perguntar se o valor é 1 doCreatureChangeOutfit(pid, outfit) doSendMagicEffect(pos, 224) end return true end function onDeEquip(cid, item, slot) doRemoveCondition(cid, CONDITION_OUTFIT) doSendMagicEffect(pos, 224) return true end
-
Breaky deu reputação a Mathwsz em [Item] - Almentar life quando estiver usando!Eaí galera, estava parado aqui sem fazer nada e lembrei de um script que da +life quando esta usando! Obs: Não sei se já tem algum tutorial sobre isso aqui, mas irei postar!
Vá na pasta Data/Movements/ e crie um arquivo chamado helmetlife.lua
Dentro dele coloque isto:
function onEquip(cid, item, slot) local strg = 50030 if getPlayerStorageValue(cid, strg) >= 1 then doPlayerSendCancel(cid, "Sua vida já foi alterada") else setCreatureMaxHealth(cid, getCreatureMaxHealth(cid)+150) setPlayerStorageValue(cid, strg, 1) return true end end function onDeEquip(cid, item, slot) local strg = 50030 setCreatureMaxHealth(cid, getCreatureMaxHealth(cid)-150) setPlayerStorageValue(cid, strg, 0) doPlayerSendTextMessage(cid, 22, "Você removeu seu helmet e sua vida modificou!") return true end Depois, vá em Movements.xml e adicione isto:
<movevent type="Equip" itemid="ID DO ITEM" slot="head" event="script" value="helmetlife.lua"/> <movevent type="DeEquip" itemid="ID DO ITEM" slot="head" event="script" value="helmetlife.lua"/>
Dúvidas poste aí, caso gostou dê um REP+ Aí :D