Histórico de Curtidas
-
Amy Fear deu reputação a Wise em [PEDIDO] Spells ~ Bleeding com um temperinho a mais :PFaça uma checagem que retorne false caso a estrutura de controle seja true:
local swordf = 30 if getPlayerSkillLevel(cid, SKILL_SWORD) < swordf then doPlayerSendCancel(cid,'You need at least level '..swordf..' of sword fighting to cast this spell.') return false end -
-
Amy Fear deu reputação a Orochi Elf em (Resolvido)[Ajuda Urgente] Itens que fazer as skillsBom.. não seria necessariamente usar "onEquip, onDeEquip", seria apenas criar uma condição simples nas spells.
if not isInArray({2160, 2158}, getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid) then doPlayerSendCancel(cid, "Voce não pode usar esta magia.") return false end
Spell (Exura)
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) setHealingFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 1.5, 2) function onCastSpell(cid, var) if not isInArray({2160, 2158}, getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid) then doPlayerSendCancel(cid, "Voce não pode usar esta magia.") return false end return doCombat(cid, combat, var) end -
Amy Fear deu reputação a Wise em (Resolvido)[Ajuda Urgente] Itens que fazer as skillsVocê cria um movement script que atribui ao player determinado valor de uma storage ao equipar/remover o item de determinado slot.
local stor = 12345 -- storage function onEquip(cid, item, slot) setPlayerStorageValue(cid, stor, 1) -- já que é no callback de equipar, ele recebe o valor de ID 1 (como sendo positivo para a checagem do uso da spell) return true end function onDeEquip(cid, item, slot) setPlayerStorageValue(cid, stor, -1) -- ao remover o item, ele recebe o valor de ID -1 (como sendo negativo para a checagem do uso da spell) return true end
Configure as tags como movevents Equip / DeEquip.
Ex:
<movevent type="Equip" itemid="ITEMID" slot="ring" event="script" value="filename.lua"/> <movevent type="DeEquip" itemid="ITEMID" slot="ring" event="script" value="filename.lua"/>
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) setHealingFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 1.5, 2) function onCastSpell(cid, var) local stor = 12345 -- storage if getPlayerStorageValue(cid, stor) < 1 then -- checa se o valor da storage no player é menor que 1 (sendo que 1 seria o necessário) doPlayerSendCancel(cid, "You can't cast the spell without using the item that allows it.") -- a informação de que ele nao pode conjurar a spell é dada return false -- retorna false ao callback, resultando em não conjurar a spell end return doCombat(cid, combat, var) -- se a checagem acima for false, ou seja, maior ou igual a 1 (valor necessário), então significa que o player está com o item necessário equipado e a conjuração da spell é feita end
Qualquer dúvida ou problema, é só relatar por aqui.
-
Amy Fear deu reputação a Wise em (Resolvido)[Ajuda Urgente] Itens que fazer as skillsUm detalhe ou outro ficou um tanto quanto confuso, então me avise se eu não entendi muito bem o que você quis dizer.
Se por exemplo, todos os rings habilitassem determinada spell, então você poderia fazer uma checagem do slot antes do callback da mesma:
if getPlayerSlotItem(cid, CONST_SLOT_RING).uid < 1 then doPlayerSendCancel(cid, "You can't cast the spell without using a ring.") return false end
Se forem spells pra itens distintos, você pode fazer o uso de storages. Criando movements com callback de onEquip e onDeEquip que atribuam ao player um valor dessas storages (quando ele equipar/remover o item).
Depois é só fazer a checagem do valor da storage no callback da spell.
Exemplo:
movement script:
local stor = 12345 -- storage function onEquip(cid, item, slot) setPlayerStorageValue(cid, stor, 1) return true end function onDeEquip(cid, item, slot) setPlayerStorageValue(cid, stor, -1) return true end
Checagem na spell light healing (exura):
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) setHealingFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 1.5, 2) function onCastSpell(cid, var) local stor = 12345 -- storage if getPlayerStorageValue(cid, stor) < 1 then doPlayerSendCancel(cid, "You can't cast the spell without using the item that allows it.") return false end return doCombat(cid, combat, var) end -
Amy Fear deu reputação a AdmAlexandre em [Link Quebrado][8.6] Alissow OTs 4.11Alissow OTs 4.11! [11/07/ 2010]
Esta versão 4.11 foi meio apressada, só adicionamos as features novas do 8.6.
Aproveitem.
Créditos:
Alissow
Comedinha
Luis
Nirk
TFS Team
Viniply
Xedegux
Sobre o OT/Mapa:
Principais quests:
-Annihilator
-Inquisition Quest
-Pits of inferno
-Demon Oak
-Solar axe quest
-HOTA
-MPA quest
-The Challenger
Monstros:
-Total monstros: 10292
-Total spawn: 5587+
Cidades:
-12 Cidades
-200 Houses+-
Raids/Invasões:
-Rat
-Orshabaal
-Ghazbaran
-Giant spider/The old window
-Ferumbras
-Morgaroth
Spells:
-Magias editadas para balanceamento das vocações
Changelog
Atualização [3.4 BETA]:
Atualização nº 2 [3.4]:
Atualização 3.5 [06/08/2009]:
Atualização Patch 3.5.1 [07/08/2009]:
Atualização 3.6 [10/08/2009]:
Atualização 3.7! Beta [18/12/2009]:
Atualização 3.7 Patch 1 [27/12/2009]:
Atualização 3.8 [17/01/2010]:
Atualização 3.8 Minor Patch 1 [17/01/2010]:
Atualização 3.9 [15/02/2010]:
Atualização 4.0 [15/02/2010]:
Atualização 4.11! [11/07/2010]:
- Versão 8.6, todos os items, outfits e monstros novos (Comedinhasss, Fireelement)
- Adicionados os novos monstros 8.6 (Alissow)
- Bug das potions arrumado (Comedinha, Matheusmkalo, Gabriel linhares, Fireelement)
- Erros das runas arrumado (Comedinha, Gabriel linhares, Matheusmkalo, fireelement)
Novas screenshots da atualização 4.0
Mais tarde posto mais imagens, agora estou com um pouco de pressa :]
Ta ficando grandinho heim...
Download
Servidor: 4shared
Tamanho: 17,416 KB
Download: http://www.4shared.c...ow_Ots_411.html
Link protegido: http://lix.in/-8d4bc0
Scan VirusTotal: Clique aqui
Atenção
- Acc do God: god/god
- LEIA o tópico antes de postar qualquer coisa ou duvida
- Reportem se houver algum bug
- A database fica na pasta schemas+Database
- Proibido o uso do nosso distro sem o nosso consenso, obrigado.
- Se você gostou, clique noali embaixo ó.
Andei percebendo que há muitos mapas feitos por mim em outros servidores postados aqui no TibiaKing, eu não sei se vocês sabem, mas isso é PLÁGIO.
Eu não sou uma pessoa egoista, tudo que eu posto aqui no ##### é para ser compartilhado, mas desde que mantenham os devidos créditos.
Será denunciado qualquer tipo de "roubo" sem minha autorização para beneficio próprio. Eu sei que vocês não se importam muito com isso, eu também não deveria me
importar, mas é o tempo e a dedicação de outra pessoa que vocês estão roubando, então peço gentilmente aos que tem conhecimento desses mapas, que me apontem.
Não tem graça trabalhar horas e horas e ser roubado em dois minutos.
@Edit
Obs: Mapa Não é Meu,Não Fiz Nada Nele!!
-
Amy Fear deu reputação a Raell5 em [Link Quebrado][8.60] Nova Death Map RPG FULL - Frozen hell [Illumination] $ + War system + CTFOFF TOPIC !!
-
Amy Fear deu reputação a xWhiteWolf em [PEDIDO] mining systempelo descrição que você deu você quer isso daqui: http://www.tibiaking.com/forum/topic/35665-mining-system/
-
Amy Fear deu reputação a Kimoszin em Criando Spells para seu servidor!Ola gaaaaaaalera, é com muito prazer que venho trazer esse primeiro tutorial meu como Aprendiz do TibiaKing,
Spells:
Bom, spells sao as magias do nosso servidor, elas servem tanto para healar, atacar, dar suporte e etc ...
Criar magias é algo muito simples, vc mesmo poderam criar quantas magias quiserem para o seu servidor seguindo esse tutorial,
Muito bem, vamos começar ...
Spells de Curar (Healing)
Obrigado a Todos,
Estou terminando de fazer o SpellMaker para facilitar a vida de vc,
Abraços
-
Amy Fear deu reputação a KekezitoLHP em [SISTEMA] Colisão de MagiasNome: Sistema de Colisão de Magias V. 1.0 Autor: Ramza (Ricardo Ianelli) Versão Testada: TFS 0.3.6PL1 (8.54) "PODERÁ FUNCIONA EM VERSÃO 8.54+ FAÇA O TESTE" Introdução
video:
Funcionamento
Do ponto de vista do jogador:
O jogador usa uma magia, digamos, exori frigo. No mesmo momento, o inimigo usa um exori vis por exemplo. As magias voam, e se colidem no ar. Do ponto de vista do scripter: Toda magia antes de ser lançada, salva um storage value, e checa se o inimigo tem o mesmo storage. Caso tenha, ao invés de mandar a magia, manda os efeitos pra uma posição calculada entre os dois pontos, e um efeito de colisão. Caso o criador queira melhorar ainda a função (pra ficar como na versão 2.0 do sistema), pode-se fazer uma checagem de força pra saber qual das duas 'vence', fazendo com que ela atinja o oponente. Para melhores resultados, magias usando addEvent são mais usadas, por isso usarei um exemplo dessa forma aqui no tutorial. Instalação
Na pasta Data, crie um arquivo chamado colisionLIB.lua. Dentro dele, cole isto:
function checkColision(cid) -- Function by Ramza (Ricardo Ianelli) if getCreatureTarget(cid) ~= 0 then setPlayerStorageValue(cid, 9001, 'casting') local ppos, enemy = getCreaturePosition(cid), getCreatureTarget(cid) local epos = getCreaturePosition(enemy) if getPlayerStorageValue(enemy, 9001) == 'casting' and getCreatureTarget(enemy) == cid then setPlayerStorageValue(enemy, 9001, 'colision') setPlayerStorageValue(cid, 9001, 'colision') if ppos.x > epos.x and ppos.y > epos.y then cpos = {x = ppos.x - ((ppos.x - epos.x) / 2), y = ppos.y - ((ppos.y - epos.y) / 2), z = ppos.z} elseif ppos.x > epos.x and ppos.y < epos.y then cpos = {x = ppos.x - ((ppos.x - epos.x) / 2), y = epos.y - ((epos.y - ppos.y) / 2), z = ppos.z} elseif ppos.x < epos.x and ppos.y < epos.y then cpos = {x = epos.x - ((epos.x - ppos.x) / 2), y = epos.y - ((epos.y - ppos.y) / 2), z = ppos.z} elseif ppos.x < epos.x and ppos.y > epos.y then cpos = {x = epos.x - ((epos.x - ppos.x) / 2), y = ppos.y - ((ppos.y - epos.y) / 2), z = ppos.z} end doSendDistanceShoot(ppos, cpos, CONST_ANI_ENERGY) doSendDistanceShoot(epos, cpos, CONST_ANI_ENERGYBALL) local value = math.random(1, 3) doSendMagicEffect(cpos, 27+value) return true else return false end end end
Agora vamos pegar uma magia bem básica como exemplo para teste. Vamos usar a magia energy strike. Abra o arquivo da magia, estará mais ou menos assim:
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1) function onCastSpell(cid, var) return doCombat(cid, combat, var) end Vamos modificar um pouco para o nosso sistema. Deixe-a assim:
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 5, 5, 1.4, 2.1) local function spell(cid, var) if getPlayerStorageValue(cid, 9001) ~= 'colision' then doCreatureSay(cid, 'Strike!', TALKTYPE_ORANGE_1) setPlayerStorageValue(cid, 9001, nil) return doCombat(cid, combat, var) end end function onCastSpell(cid, var) checkColision(cid) doCreatureSay(cid, 'Energy...', TALKTYPE_ORANGE_1) addEvent(spell, 2000, cid, var) end
Agora adiciona essa função em todas as magias que você deseja a colisão.
function onCastSpell(cid, var) checkColision(cid) doCreatureSay(cid, 'Energy...', TALKTYPE_ORANGE_1) addEvent(spell, 2000, cid, var) end Hora de testar, a hora mais difícil! Bem, pra testar esse sistema você precisa de um amigo pra te ajudar, ou de ferramentas ilegais e agilidade. Vamos tomar como exemplo caso você fosse com um amigo testar. Simplesmente usem exori vis um no outro, e vejam o que acontece
Comentários
Quem já é mais experiente já deve ter sacado o tanto de possibilidades que isso abre, como fazer com magias mais avançadas, comparar magic level, fazer com que caso o ML de um seja maior que o do outro, ela anule a do inimigo mas a sua ainda acerte, fazer sistemas no estilo 'disputa de kame-hame-has' usando spriters sem ser as do tibia, e muitas outras coisas, só vai depender de você usar a sua CRIATIVIDADE. Esse sistema, apesar de simples, é considerado pra mim um dos meus sistemas mais avançados, pois como dizia o sábio programador: "O verdadeiro gênio não é aquele que usa pilhas, ponteiros, matrizes ou funções complexas, e sim aquele que usa a criatividade." Muita gente ofereceu grana preta nesse sistema já, mas eu postei aqui pra lembrar à todos vocês que o que faz um grande programador não é o quão complexas são as funções que você usa e os codes que você faz, e sim, o quão criativas einovadoras são suas criações.
É isso ai galera, deixo meu abraço pra todos vocês, qualquer dúvida é só me perguntar, e eu quero que vocês lembrem que o melhor code é sempre, de longe, aquele mais criativo, não importa se tenha 3, 100 ou 10.000 linhas. Lembrem-se disso, sempre.
-
Amy Fear deu reputação a Absolute em [MODS] EmoticonsFala galera, trouxe para vocês um simples script que fiz de "Emoticons" para seus servidores em MODS, isto mesmo basta colocar na pasta MODS do servidor e pronto, simples não?
Explicações;
Para alterar as falas basta substiuir as palavras: talkaction words="xd, =d, xp ou acrescentar mais palavras da mesma forma, seguindo o padrão.
Quando o player disser você pode optar em aparecer no log (says) e tanto em emotion aqui: hidden="yes", da forma que está ele vai ocultar no log e aparecer apenas o emoticon, caso queira que apareça ambos coloque hidden="no".
exhaust = 5 -- in seconds, aqui será o tempo que o player vai ter para usar outro emoticon
storage = 3000 -- storage value used to save exhaustion (Não mexa nesta linha pois este número é o que vai marcar o exhaust para o player usar de novo, digamos assim.
Exemplo de emoticon simples:
Simples mas legalzinho!
Até mais scripts que desenvolverei =D
Bom Dia.
-
Amy Fear deu reputação a Steeven em Mineração/Coleta (%)Hoje vou trazer um script que desenvolvi com ajuda de todos aqui do fórum, é meu primeiro tutorial e espero não estar fazendo nada de errado. O script é bem simples, mas funciona sem erros, pelo menos aqui.
O que faz?
-Você usa uma ferramenta para minerar em determinada pedra, de acordo com as chances você consegue extrair dela um minério como "iron ore" por exemplo. Lembrando que o item que você vai usar para minerar, tem de ser um item que você pode usar em outros, como a pick, shovel e outros...
Utilidade?
-Vai depender de você, em servidores com sistema de forja pode ser interessante, que é o meu caso.
Script
Em data/actions/scripts/ crie um arquivo .lua com o nome que deseja (ex.: ferramenta.lua) e cole o código a seguir dentro dele:
Explicando >>>
Eu utilizei 4 tipos diferentes de minério, Bronze, Silver, Gold e Mithril. Você pode utilizar quantos quiser.
Roxo, corresponde as chance para cada minério, note que as chances de minerar bronze é 23%, prata é de 9%, ouro é de 7% e mithril é de 1%.
Verde, é o ID do item sobre o qual você vai usar a ferramenta para minerar. Pode ser uma pedra o qualquer coisa que achar melhor.
Azul, é o ID do item adicionado ao jogador quando ele conseguir extrair algum minério e a quantidade(129,1).
Ótimo, mas como eu escolho com qual ferramenta minerar?
Agora, você vai em data/actions/actions.xml e adicione esta linha:
Em vermelho, é o ID da ferramenta usada para minerar.
Uma alerta, este script está limitado a 100% não podendo ultrapassar esta margem, para uma porcentagem maior, altere esta função:
math.random(1,100) <- mude o 100 para 200 ou mais.
Se eu quiser usar só um minério?
Como dito, eu usei 4 minérios, cada minério corresponde a esta função:
Do if ao end corresponde a um minério. daí você pode diminuir ou adicionar minério tirando uma ou acrescentando uma função. Mas note que cada função corresponde a uma variável, no caso acima, é o bronze. Para acrescentar um minério, você terá que fazer uma variável correspondente e configurar seguindo os passos anteriores.
O que mais posso fazer?
Bem, você pode usa este script para uma coleta de madeira, basta usar uma ferramenta como o Axe e mudar o itemEx.itemid para o ID de uma árvore, e por fim no doPlayerAddItem(cid, 126,1) pôr o ID de da madeira a ser coletada. doPlayerAddItem(cid, Id-do-Item,quantidade).
Espero ter ajudado! VLW!