Jump to content
Close

Joaovettor

Member
  • Content Count

    138
  • Joined

  • Last visited

About Joaovettor

  • Rank
    João Vítor
  • Birthday 08/08/2002

Profile Information

  • Gender
    Masculino
  • Localization
    Brasil, Minas Gerais
  • I am
    Scripter
  • Favorite OTServ
    FoxWorld OT
  • Bot preferred
    Elf Bot
  • Interests
    Criar e Editar OTS

Recent Profile Visitors

758 profile views
  1. Ah sim, pelo visto o problema é causado porque o ao deslogar o Efeito persiste, porém como não há creature, o server crasha, mas não é um BUG, é apenas um pequeno erro de lógica. A Resolução seria você fazer uma versão deste item, só que em SPELLS local config = { cooldown = 35, -- tempo entre uma magia e outra storage = 134813, effect = 49, --- efeito que vai sair } local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, config.effect) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) function onGetFormulaValues(cid, level, skill) local multiplier = (100*level/100)*(100*skill/100) return (10*getCreatureMaxHealth(cid)/100)+multiplier, (10*getCreatureMaxHealth(cid)/100)+multipliercura end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") function onCastSpell(cid, var) if os.time() - getPlayerStorageValue(cid, config.storage) >= config.cooldown then if getPlayerSoul(cid) <= 49 then doPlayerSendTextMessage(cid,20,'Desculpe, você não tem Souls suficiente.') return true else doPlayerAddSoul(cid,-50) addEvent(doCombat, 0, cid, combat, var) addEvent(doCombat, 2000, cid, combat, var) addEvent(doCombat, 4000, cid, combat, var) addEvent(doCombat, 6000, cid, combat, var) addEvent(doCombat, 8000, cid, combat, var) addEvent(doCombat, 10000, cid, combat, var) addEvent(doCombat, 12000, cid, combat, var) addEvent(doCombat, 14000, cid, combat, var) addEvent(doCombat, 16000, cid, combat, var) addEvent(doCombat, 18000, cid, combat, var) addEvent(doCombat, 20000, cid, combat, var) addEvent(doCombat, 22000, cid, combat, var) addEvent(doCombat, 24000, cid, combat, var) addEvent(doCombat, 26000, cid, combat, var) addEvent(doCombat, 28000, cid, combat, var) addEvent(doCombat, 30000, cid, combat, var) end setPlayerStorageValue(cid, config.storage, os.time()) else doPlayerSendCancel(cid, "cooldown "..(config.cooldown - (os.time() - getPlayerStorageValue(cid, config.storage))).." seconds.") end return true end Ai em spells.xml você coloca assim V <rune name="Nome Qualquer" id="ID DO ITEM" allowfaruse="1" charges="1" lvl="1" maglv="0" exhaustion="0" blocktype="solid" event="script" value="nomedoscript.lua"/>
  2. Um script mais completo e menos complexo V local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) -- Tipo de Dano function onGetFormulaValues(cid, level) local skill = getPlayerSkill(cid, 2) -- 2 é sword local dmginicial = 1000 -- Este é o dano base, ou seja ele irá inicialmente bater 1000 local lvlmult = (10 * level/100) -- Esta é a formula para o level damage (10%) local dmgfinal = (lvlmult*dmginicial/100) -- Aqui ele irá retornar 10% do seu level e o valor será o Dano aumentando, por exemplo: Se você for level 100, ele irá aumentar 10% do seu Dano base return -dmgfinal, -dmgfinal end setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") local area = createCombatArea({ {0, 0, 0}, {0, 3, 0}, {0, 0, 0} }) setCombatArea(combat, area) function onUseWeapon(cid, var) local target = getThingPosition(getCreatureTarget(cid)) local pos = {x=target.x+0, y=target.y+0, z=target.z+0} doSendMagicEffect(pos, 5) --efeito que vai aparecer no target ao dar dano return doCombat(cid, combat, var) end
  3. Se você usa um sistema de reset, coloque-o aqui para eu editar para tu
  4. A spell deve estar registrar no Spells.xml <attack name="Nome da Spell" interval="5000" chance="15000" range="1" min="-2850" max="-25050"> OBS: Você deve colocar o nome de conjuração, por exemplo "exori mort"
  5. getPlayerSkill(cid, skillid) - checa o skill especificado do player (0- fist,1-club, 2-sword, 3-axe, 4-distance, 5 -shield, 6 – fishing). Na formula das poções você pode utilizar isso como variável por exemplo: 500 + (8*getPlayerSkill(cid, 2)) Ele irá somar 500 + 8 * SWORD > 500 + 8*100 = 500 + 800 = 1300
  6. Opa amigo agora não está dando erro, porém ele executa a ação a todo momento, mesmo se não tiver players em volta de mim
  7. Opa mano, obrigado pela ajuda, mas deu esse seguinte erro V [29/1/2019 13:37:54] [Error - Action Interface] [29/1/2019 13:37:54] data/actions/scripts/testeitem.lua:onUse [29/1/2019 13:37:54] Description: [29/1/2019 13:37:54] data/actions/scripts/testeitem.lua:5: attempt to index a boolean value [29/1/2019 13:37:54] stack traceback: [29/1/2019 13:37:54] data/actions/scripts/testeitem.lua:5: in function 'checkPlayersAround' [29/1/2019 13:37:54] data/actions/scripts/testeitem.lua:27: in function <data/actions/scripts/testeitem.lua:26> Eu deixei o script dessa maneira V function checkPlayersAround(uid) local players = {} -- Deixe vazio local pos = getCreaturePosition(uid) local positions = { [1] = {x = pos.x -1, y = pos.y, z = pos.z}, [2] = {x = pos.x +1, y = pos.y, z = pos.z}, [3] = {x = pos.x, y = pos.y +1, z = pos.z}, [4] = {x = pos.x, y = pos.y -1, z = pos.z} } for _, var in pairs(positions) do for i = 0, 255 do var.stackpos = i tile = getTileThingByPos(var) if tile.uid > 0 and isPlayer(tile.uid) then table.insert(players, tile.uid) end end end if not players then return false end return players end function onUse(cid, item, frompos, item2, topos) if checkPlayersAround(uid) then doSendMagicEffect(getCreaturePos(cid), 17) end return true end
  8. Olá galera do TibiaKing, venho aqui pedir a vocês que me ajudem em um scripting de verificar a posição de um Player, vou resumir abaixo. Eu quero que o script cheque se tem um player ao redor do Player que executou x ação (qualquer ação), exemplo: If playerpos.x=x-1 then executar ação end Ele deveria checar se tem 1 Player na posx -1, mas não sei muito bem como funciona os checkin de Position
  9. Para fazer por Skill você deve mudar > getPlayerMagLevel(cid) < para getPlayerSkillLevel(cid, skillid) em Skill ID você coloca o ID da skill que vai checar SKILL_CLUB = 1 SKILL_SWORD = 2 SKILL_AXE = 3 SKILL_DISTANCE = 4 SKILL_SHIELD = 5 SKILL_FISHING = 6
  10. Sua quantidade ML é a quantidade em % que aumenta no Dano Base EXEMPLO: Se o Dano base é 25000 e você tem 35 de Magic Level, vai aumentar 35% de 25000 ou seja, 25000+8750=33750
  11. Tente com isso VV -- tratamento pra remover a pos salva local remove = getTileItemById(position[getPlayerStorageValue(cid, config.storage)], config.itemid).uid doPlayerSetStorageValue(cid, config.storage, 0) positions[getPlayerStorageValue(cid, config.storage)] = nil doRemoveItem(remove, 1)
  12. local w = { [1] = {ef = 47, sh = 35, dmg = COMBAT_ENERGYDAMAGE}, } function onUseWeapon(cid, var) local ml = (getPlayerMagLevel(cid)*25000/100) local min, max = (25000+ml),(25000+ml) local effect = getPlayerStorageValue(cid, 4561) local target = getCreatureTarget(cid) if target ~= 0 then local wx = w[effect] or w[math.random(#w)] doSendDistanceShoot(getThingPos(cid), getThingPos(target), wx.sh) addEvent(doAreaCombatHealth, 100, cid, wx.dmg, getThingPos(target), 0, -min, -max, wx.ef) end return true end

Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia partindo do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer publicidade para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução! A publicação do seu anuncio é instantânea!

×
×
  • Create New...