Histórico de Curtidas
-
Kyle Bellini deu reputação a luanluciano93 em Adicionar mais posicoeslocal monstersTable = { [1] = {name = "Witch", position = {x = 79, y = 88, z = 6}, removeTime = 20}, [2] = {name = "Hydra", position = {x = 79, y = 89, z = 6}, removeTime = 20}, [3] = {name = "Dragon", position = {x = 79, y = 90, z = 6}, removeTime = 20}, } function onThink(interval, lastExecution) for index, monster in ipairs(monstersTable) do local createMonster = doCreateMonster(monster.name, monster.position) if createMonster then addEvent(function() local creature = getCreatureByName(monster.name) if creature and isCreature(creature) then doRemoveCreature(creature) end end, monster.removeTime * 60 * 1000) end end return true end
-
Kyle Bellini recebeu reputação de What Member em erro no script de castspell itemvou dar uma olhada, e envio aqui
--------
testa aí
local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, 30000) setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVEL, 10) setConditionParam(condition, CONDITION_PARAM_SKILL_CLUB, 25) setConditionParam(condition, CONDITION_PARAM_SKILL_SWORD, 25) setConditionParam(condition, CONDITION_PARAM_SKILL_AXE, 25) setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, 25) setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, 25) setConditionParam(condition, CONDITION_PARAM_BUFF, true) setCombatCondition(combat, condition) local config = { exhaustionStorage = 13101, exhaustionTime = 30.0, ringId = 7116, effect = 112 } function onCastSpell(cid, var) if exhaustion.check(cid, config.exhaustionStorage) == TRUE then doPlayerSendCancel(cid, "Podera usar novamente dentro de 30 segundos.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return false end local ringName = getItemNameById(config.ringId) if getPlayerSlotItem(cid, CONST_SLOT_RING).itemid ~= config.ringId then return doPlayerSendCancel(cid, string.format("You do not have a %s equipped.", ringName)) end for k = 1, 100 do addEvent(function() if isCreature(cid) then local pos1 = {x = getPlayerPosition(cid).x + 0, y = getPlayerPosition(cid).y + 0, z = getPlayerPosition(cid).z} doSendMagicEffect(pos1, config.effect) end end, 1 + ((k-1) * 300)) end exhaustion.set(cid, config.exhaustionStorage, config.exhaustionTime) return doCombat(cid, combat, var) end
-
Kyle Bellini recebeu reputação de luanluciano93 em Storage na Talcaktionpara fazer com que seja necessário o jogador possuir uma storage pra utilizar o comando, basta adicionar uma verificação no código:
if getPlayerStorageValue(cid, storageNecessaria) ~= valorDaStorage then return doPlayerSendCancel(cid, "Você não possui tal tal tal") end
-
Kyle Bellini recebeu reputação de What Member em erro no script de castspell itemme informa o id do item, e a quantidade, pra eu arrumar tudo
-
Kyle Bellini recebeu reputação de What Member em erro no script de castspell itemagora o seu primeiro if tem dois "end", só precisa de um
-
Kyle Bellini recebeu reputação de What Member em erro no script de castspell itemvocê colocou duas onCastSpell(cid, var), e uma delas não está fechada (que é a primeira), pode deletar ela, e manter apenas a de baixo
daí só copiar o que tem dentro da primeira onCastSpell e jogar pra baixo, onde está a segunda
-
Kyle Bellini recebeu reputação de What Member em erro no script de castspell itemPrecisa fazer a verificação se o jogador possui tal item, para isso, basta utilizar a função getPlayerItemCount(cid, itemid)
function onGetFormulaValues(cid, level, maglevel) local levelTotal = level local min = (levelTotal * 4) / 5 + (maglevel * 25) / 2 local max = (levelTotal * 5) / 5 + (maglevel * 27) / 2 return -min, -max end local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 33) setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, 46) setCombatCallback(combat1, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") local function onCastSpell1(parameters) if not isPlayer(parameters.cid) then return true end doCombat(parameters.cid, parameters.combat1, parameters.var) end local config = { requiredItem = {itemid = 2675, count = 1} -- Coloque o id do item necessário em: 'itemid = aqui', e a quantidade necessária do item em: 'count = aqui' } function onCastSpell(cid, var) local parameters = {cid = cid, var = var, combat1 = combat1} local itemName = getItemNameById(config.requiredItem.itemid) if getPlayerItemCount(cid, config.requiredItem.itemid) < config.requiredItem.count then if config.requiredItem.count == 1 then doPlayerSendCancel(cid, string.format("You need %d %s to use this spell.", config.requiredItem.count, itemName)) else doPlayerSendCancel(cid, string.format("You need %d %ss to use this spell.", config.requiredItem.count, itemName)) end return end for k = 1, 10 do addEvent(function() if isCreature(cid) then addEvent(onCastSpell1, 1, parameters) end end, 1 + ((k-1) * 300)) end return true end
-
Kyle Bellini recebeu reputação de Doidodepeda em Script (nao equipar 2 items ao mesmo tempo)Não sei se é a melhor forma, mas depois testo com calma, e vejo se dá pra fazer algo melhorzinho
Comenta essa linha:
else if((item->getSlotPosition() & SLOTP_RIGHT) || (item->getSlotPosition() & SLOTP_LEFT)) ret = RET_PUTTHISOBJECTINYOURHAND; Ficando assim:
/*else if((item->getSlotPosition() & SLOTP_RIGHT) || (item->getSlotPosition() & SLOTP_LEFT)) ret = RET_PUTTHISOBJECTINYOURHAND;*/
-
Kyle Bellini recebeu reputação de Enenra em (SPELL) Spell com CooldownOlá,
Testa aí e me fala se está como quer. Coloquei uma mensagem tbm avisando os segundos pro jogador saber.
-
Kyle Bellini recebeu reputação de iyagod em [CreatureScript] Monstro que vira TP nao esta nascendo ao iniciar o sv!É bem simples, fiz um aqui pra ti:
local config = { bossPos = {x = 1091, y = 920, z = 7}, -- Position que o monstro será criado bossName = "Boss Monster" -- Nome do monstro } function onStartup() doCreateMonster(config.bossName, config.bossPos) return true end
No seu globalevents.xml você adiciona essa tag:
<globalevent name="CreateBoss" type = "start" event="script" value="createboss.lua"/>
-
Kyle Bellini recebeu reputação de elielder em Spell - Que tira StunSó removi algumas coisas, e organizei um pouco o código. Testa aí e me fala.
local config = { cooldown = 45, -- Cooldown para utilizar a spell novamente effect = 27, -- Efeito ao utilizar a spell storage = 5891, -- Storage responsável pelo cooldown } function onCastSpell(cid, var) if exhaustion.check(cid, config.storage) then doPlayerSendCancel(cid, "Aguarde " .. exhaustion.get(cid, config.storage) .. " segundos para usar a spell novamente.") return false end doCreatureSetNoMove(cid, false) doSendMagicEffect(getCreaturePosition(cid), config.effect) exhaustion.set(cid, config.storage, config.cooldown) return true end
-
Kyle Bellini deu reputação a EddyHavoc em [OTClient Showoff] Mostre seu Projeto/Módulo/Interface do seu OTClientAdição de informação do jogador na interface.
Avatar do jogador (Alterando automaticamente conforme o Outfit)
Name, Level, Health, Mana, Experience. (Atualizando corretamente.)
Inventário do jogador com equipamentos em nova disposição, exibindo o outfit atual e descrições do personagem.
-
Kyle Bellini deu reputação a Jepart em [OTClient Showoff] Mostre seu Projeto/Módulo/Interface do seu OTClientSistema de profissão e crafting
https://www.instagram.com/p/CKnZON6DOT0/?igshid=mv1aen100xwd
-
Kyle Bellini deu reputação a Calisto em [OTClient Showoff] Mostre seu Projeto/Módulo/Interface do seu OTClientEstou amando trabalhar com OTclient, e obrigado pelos design's que vc proporcionou!, não tenho muito conhecimento, mas estou estudando para melhorar meus conhecimentos, não manjo de puxar informações para por personagem, mas um dia vou conseguir!
-
Kyle Bellini deu reputação a Cat em Água transparente no Tibia 70% (psd + png + obd)ÁGUA TRANSPARENTE NO TIBIA
Amostra/teste:
Download Tibia.otfi -> Arquivo necessário para ativar transparência no seu client.
(coloque junto ao tibia.dat e tibia.spr)
Tibia.otfi
Para ativar a transparência nas versões 8.54 e 8.60 é necessário o uso de dll:
https://github.com/SaiyansKing/Tibia-Extended-Client-Library
Download Object Builder -> Programa usado para add sprites
https://github.com/ottools/ObjectBuilder/releases/tag/v0.4.8
Download Item Editor -> Usado para cadastrar as propriedades de itens novos e abrir no map editor.
https://github.com/ottools/ItemEditor/releases/tag/v0.5.1
Download Sprites
Contém:
- Sprites de piso d'água full ground + 1 estilo borda (recomendo usar todos como borda, tirar full ground)
- Sprites borda água-barranco.
- Sprites borda água-areia.
- Sprites borda areia-barranco-água.
- Sprites borda água solo.
- Sprites cachoeira + quedas d'água versão leste/norte
- Sprites água transparente versão córrego (12x)
sprites transparentes.rar
(Senha para abrir o arquivo: tibiaking)
-
-
Kyle Bellini recebeu reputação de Capitao wyz em Spell - Piertotum LocomotorE aí, pessoal!
Esses dias eu estava na vibe Harry Potter e antes de dormir acabei tendo a ideia de fazer uma spell inspirada na magia Piertotum Locomotor. Criei ela, e decidi compartilhar com vocês auhauah
Funcionamento:
Dois golems serão invocados e aprisionarão o inimigo com pedras durante um certo período. (R.I.P qualidade)
Vamos ao código (deixei alguns comentários explicando, mas está bem fácil de compreender o funcionamento, se tiver alguma dúvida pode comentar no tópico).
Primeiro, crie um arquivo.lua, e cole o script dentro:
Feito isso, no arquivo spells.xml recomendo que deixem o parâmetro (needtarget="1"). Exemplo de tag:
<instant name="Piertotum Locomotor" words="Piertotum Locomotor" lvl="200" mana="1000" needtarget="1" prem="0" exhaustion="10000" groups="1,1500" icon="87" needlearn="0" event="script" value="hogwarts/piertotum locomotor.lua"> <vocation id="1"/> <vocation id="2"/> </instant>
-
Kyle Bellini recebeu reputação de Jhonjhon775 em Runa de wall que acaba PEDIDO! AJUDAOie,
Basta utilizar a função doPlayerRemoveItem(cid, id do item, quantidade que deseja remover).
-
Kyle Bellini recebeu reputação de FeehLoveCes em Spell - Piertotum LocomotorE aí, pessoal!
Esses dias eu estava na vibe Harry Potter e antes de dormir acabei tendo a ideia de fazer uma spell inspirada na magia Piertotum Locomotor. Criei ela, e decidi compartilhar com vocês auhauah
Funcionamento:
Dois golems serão invocados e aprisionarão o inimigo com pedras durante um certo período. (R.I.P qualidade)
Vamos ao código (deixei alguns comentários explicando, mas está bem fácil de compreender o funcionamento, se tiver alguma dúvida pode comentar no tópico).
Primeiro, crie um arquivo.lua, e cole o script dentro:
Feito isso, no arquivo spells.xml recomendo que deixem o parâmetro (needtarget="1"). Exemplo de tag:
<instant name="Piertotum Locomotor" words="Piertotum Locomotor" lvl="200" mana="1000" needtarget="1" prem="0" exhaustion="10000" groups="1,1500" icon="87" needlearn="0" event="script" value="hogwarts/piertotum locomotor.lua"> <vocation id="1"/> <vocation id="2"/> </instant>
-
Kyle Bellini recebeu reputação de Breniinx em Exp HardcoreAs fórmulas são apenas cálculos comuns (adição, subtração, etc..) de acordo como você desejar. Irei pensar em um outro script, de modo que fique mais claro e envio aqui no tópico. ?
-
Kyle Bellini recebeu reputação de Cat em Spell - Piertotum LocomotorE aí, pessoal!
Esses dias eu estava na vibe Harry Potter e antes de dormir acabei tendo a ideia de fazer uma spell inspirada na magia Piertotum Locomotor. Criei ela, e decidi compartilhar com vocês auhauah
Funcionamento:
Dois golems serão invocados e aprisionarão o inimigo com pedras durante um certo período. (R.I.P qualidade)
Vamos ao código (deixei alguns comentários explicando, mas está bem fácil de compreender o funcionamento, se tiver alguma dúvida pode comentar no tópico).
Primeiro, crie um arquivo.lua, e cole o script dentro:
Feito isso, no arquivo spells.xml recomendo que deixem o parâmetro (needtarget="1"). Exemplo de tag:
<instant name="Piertotum Locomotor" words="Piertotum Locomotor" lvl="200" mana="1000" needtarget="1" prem="0" exhaustion="10000" groups="1,1500" icon="87" needlearn="0" event="script" value="hogwarts/piertotum locomotor.lua"> <vocation id="1"/> <vocation id="2"/> </instant>
-
Kyle Bellini recebeu reputação de Breniinx em Exp HardcoreA quantidade de XP que o jogador irá receber tu consegue definir nas variáveis "exp", "nexp", e "newexp", basta alterar as operações matemáticas que estão sendo feitas dentro delas. Modifiquei pra que o cálculo seja feito em cima do level do jogador inimigo, assim fica algo mais proveitoso e menos "fixo". Testa aí e me fala:
-
Kyle Bellini recebeu reputação de ITALOx em Spell - Piertotum LocomotorE aí, pessoal!
Esses dias eu estava na vibe Harry Potter e antes de dormir acabei tendo a ideia de fazer uma spell inspirada na magia Piertotum Locomotor. Criei ela, e decidi compartilhar com vocês auhauah
Funcionamento:
Dois golems serão invocados e aprisionarão o inimigo com pedras durante um certo período. (R.I.P qualidade)
Vamos ao código (deixei alguns comentários explicando, mas está bem fácil de compreender o funcionamento, se tiver alguma dúvida pode comentar no tópico).
Primeiro, crie um arquivo.lua, e cole o script dentro:
Feito isso, no arquivo spells.xml recomendo que deixem o parâmetro (needtarget="1"). Exemplo de tag:
<instant name="Piertotum Locomotor" words="Piertotum Locomotor" lvl="200" mana="1000" needtarget="1" prem="0" exhaustion="10000" groups="1,1500" icon="87" needlearn="0" event="script" value="hogwarts/piertotum locomotor.lua"> <vocation id="1"/> <vocation id="2"/> </instant>
-
Kyle Bellini recebeu reputação de Naze em Spell - Piertotum LocomotorE aí, pessoal!
Esses dias eu estava na vibe Harry Potter e antes de dormir acabei tendo a ideia de fazer uma spell inspirada na magia Piertotum Locomotor. Criei ela, e decidi compartilhar com vocês auhauah
Funcionamento:
Dois golems serão invocados e aprisionarão o inimigo com pedras durante um certo período. (R.I.P qualidade)
Vamos ao código (deixei alguns comentários explicando, mas está bem fácil de compreender o funcionamento, se tiver alguma dúvida pode comentar no tópico).
Primeiro, crie um arquivo.lua, e cole o script dentro:
Feito isso, no arquivo spells.xml recomendo que deixem o parâmetro (needtarget="1"). Exemplo de tag:
<instant name="Piertotum Locomotor" words="Piertotum Locomotor" lvl="200" mana="1000" needtarget="1" prem="0" exhaustion="10000" groups="1,1500" icon="87" needlearn="0" event="script" value="hogwarts/piertotum locomotor.lua"> <vocation id="1"/> <vocation id="2"/> </instant>
-
Kyle Bellini deu reputação a Tottin em Sistema de Estoque para NPC's.Explicação do Sistema
Recentemente foi levantada uma ideia de Sistema no Discord da Academia de Programação:
O sistema consiste em dar maior liberdade pro mercado e tirar a parte monótona dos NPCS que basicamente sempre vendem/compram tudo ao mesmo preço, assim ficando muito longe da realidade de 1 verdadeiro vendedor.
A ideia é que o NPC venda produtos com base no que ele tenha em estoque, logo para ele vender 1 Blusa ele 1° irá precisar comprá-la de alguém.
Exemplificando:
O NPC só irá vender aquilo que comprar, se ele comprar 1 Blusa ele irá disponibilizar para vender 1 Blusa, se ele comprar 7 Blusas, ele irá disponibilizar pra vender 7 Blusas, ao acabar elas, o seu estoque fica vazio e ele deixa de vender até comprar mais.
O preço que o NPC paga pelo seus produtos é baseado na quantidade de seu estoque, e o valor que ele cobra ao vender os produtos é definido previamente em 1 configuração.
Exemplo: Quanto + item do mesmo produto o NPC tiver, + barato ele irá pagar nos mesmos, visto que ele já possui 1 estoque grande e na teoria esse produto não é um produto que possui 1 saída muito fácil. Ao mesmo tempo, quanto menor a quantidade de 1 mesmo produto em seu estoque, mais caro ele irá pagar, já que seu estoque sobre aquele produto é pequeno, o que indica que: Ou ele é muito raro, ou ele vende muito fácil, por isso o NPC irá demonstrar + interesse por ele.
O preço que o NPC cobra é definido previamente e pode ser alterado sempre que desejar.
Abaixo, o preço de 1 Pearl Shield que o NPC não possui em estoque:
E agora, após o NPC ter comprado 10 Shields do mesmo:
Enfim, agora que o sistema já foi previamente explicado, vamos a instalação:
1º Vá para data/lib/ e crie 1 arquivo chamado npc_system.lua, nele você irá adicionar o seguinte código:
2º Agora vá para data/npcs, crie 1 arquivo chamado: negociante.xml, nele você irá adicionar o seguinte código:
3º Agora vá para data/npcs/scripts, crie 1 arquivo chamado: negociante.lua, nele você irá adicionar o seguinte código:
Instalação finalizada, as áreas configuráveis do sistema estão informadas na lib.
Créditos:
Academia de Programação: Por ter levantado a ideia do sistema.
@Endless: Por ter ajudado em uma questão de lógica.
E a mim por ter feito. (Eu acho).
Informações adicionais:
-> O sistema foi testado e não apresentou problemas, porém se vierem a encontrar falhas, favor reportar para que eu possa manter o tópico atualizado/corrigido.
-> Eu faço correções no sistema caso esteja errado, mas não faço adaptações pro seu servidor. Caso queira variações do sistema, favor enviar seu pedido no discord da Academia de Programação, ou em meu privado: Admin#9865.
-
Kyle Bellini recebeu reputação de Breniinx em (Resolvido)Actions teleportVi que o tópico já está resolvido, mas criei uma solução mais otimizada e de fácil manutenção para que facilite futuramente pra ti:
No arquivo actions.xml coloque a tag deste modo, irá evitar o spam de várias tags:
<action actionid="7010;7011;7012;7013;7014" event="script" value="teleports.lua"/>
Esse script que tu apresentou iria ficar bem mais pesado futuramente, por ter que criar várias linhas de código toda vez que quisesse adicionar um novo lugar. Utiliza esse que mandei porque aí tu só precisa alterar a tabela para colocar novos lugares (basta seguir o modelo dela), não vai precisar mexer no código.