Ir para conteúdo

Kyle Bellini

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Curtir
    Kyle Bellini deu reputação a luanluciano93 em Adicionar mais posicoes   
    local 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  
  2. Gostei
    Kyle Bellini recebeu reputação de What Member em erro no script de castspell item   
    vou 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  
  3. Gostei
    Kyle Bellini recebeu reputação de luanluciano93 em Storage na Talcaktion   
    para 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  
  4. Obrigado
    Kyle Bellini recebeu reputação de What Member em erro no script de castspell item   
    me informa o id do item, e a quantidade, pra eu arrumar tudo
  5. Curtir
    Kyle Bellini recebeu reputação de What Member em erro no script de castspell item   
    agora o seu primeiro if tem dois "end", só precisa de um
  6. Curtir
    Kyle Bellini recebeu reputação de What Member em erro no script de castspell item   
    você 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
  7. Curtir
    Kyle Bellini recebeu reputação de What Member em erro no script de castspell item   
    Precisa 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  
  8. Obrigado
    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;*/  
  9. Obrigado
    Kyle Bellini recebeu reputação de Enenra em (SPELL) Spell com Cooldown   
    Olá,
     
    Testa aí e me fala se está como quer. Coloquei uma mensagem tbm avisando os segundos pro jogador saber.
     
     
     
  10. Curtir
    É 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"/>  
  11. Obrigado
    Kyle Bellini recebeu reputação de elielder em Spell - Que tira Stun   
    Só 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  
  12. Gostei
    Adiçã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.
     

  13. Gostei
    Sistema de profissão e crafting

     
    https://www.instagram.com/p/CKnZON6DOT0/?igshid=mv1aen100xwd
  14. Gostei
    Estou 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!
     

     

     
  15. Gostei
    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)

     
  16. Gostei
    Kyle Bellini recebeu reputação de Capitao wyz em Spell - Piertotum Locomotor   
    E 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>  
  17. Obrigado
    Kyle Bellini recebeu reputação de Jhonjhon775 em Runa de wall que acaba PEDIDO! AJUDA   
    Oie,
     
    Basta utilizar a função doPlayerRemoveItem(cid, id do item, quantidade que deseja remover).
     
     
     
  18. Obrigado
    Kyle Bellini recebeu reputação de FeehLoveCes em Spell - Piertotum Locomotor   
    E 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>  
  19. Gostei
    Kyle Bellini recebeu reputação de Breniinx em Exp Hardcore   
    As 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. ?
  20. Gostei
    Kyle Bellini recebeu reputação de Cat em Spell - Piertotum Locomotor   
    E 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>  
  21. Gostei
    Kyle Bellini recebeu reputação de Breniinx em Exp Hardcore   
    A 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:
     
     
  22. Curtir
    Kyle Bellini recebeu reputação de ITALOx em Spell - Piertotum Locomotor   
    E 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>  
  23. Curtir
    Kyle Bellini recebeu reputação de Naze em Spell - Piertotum Locomotor   
    E 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>  
  24. Gostei
    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.
  25. Gostei
    Kyle Bellini recebeu reputação de Breniinx em (Resolvido)Actions teleport   
    Vi 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.

Informação Importante

Confirmação de Termo