Ir para conteúdo

FeeTads

Membro
  • Registro em

  • Última visita

Tudo que FeeTads postou

  1. poste o .lua do seu exura gran mas res
  2. tenta assim: <item id="44747" article="a" name="turtle amulet"> <attribute key="weight" value="430" /> <attribute key="slotType" value="necklace" /> <attribute key="loottype" value="amulet" /> </item> <item id="44746" article="an" name="enchanted turtle amulet"> <attribute key="weight" value="430" /> <attribute key="slotType" value="necklace" /> <attribute key="loottype" value="amulet" /> <attribute key="armor" value="3" /> <attribute key="skillDist" value="3" /> <attribute key="absorbPercentEarth" value="24" /> <attribute key="absorbPercentPhysical" value="7" /> <attribute key="transformDeEquipTo" value="44745" /> <attribute key="decayTo" value="44747" /> <attribute key="duration" value="3600" /> <attribute key="ShowDuration" value="1" /> <attribute key="showattributes" value="1" /> </item> <item id="44745" article="a" name="enchanted turtle amulet"> <attribute key="weight" value="430" /> <attribute key="slotType" value="necklace" /> <attribute key="loottype" value="amulet" /> <attribute key="transformEquipTo" value="44746" /> <attribute key="stopduration" value="1" /> <attribute key="showduration" value="1" /> </item> sem o "duration" no item desequipado depois vai em movements.xml e adiciona o Equip e deEquip do item, assim: <movevent type="Equip" itemid="44746" slot="necklace" level="100" event="function" value="onEquipItem"> <vocation id="3"/> <!-- vocation que usa esse item, excluir a tag pra liberar pra todos --> </movevent> <movevent type="DeEquip" itemid="44746" slot="necklace" event="function" value="onDeEquipItem"/>
  3. function onDeath(cid) if not isPlayer(cid) then return true end for i=1, 7 do -- de 1 a 7 = de club até ML if i ~= 6 then --se for diferente de 6 (6 é fishing) if getPlayerSkill(cid, i) > 12 then -- se for maior que 12 (só cai até 10, pra proteção de bug) doPlayerAddSkill(cid, i, -2, true) end end end return true end coloca assim da reload ou reabre o teu OT, e ve se funciona.
  4. tenta colocar em todos assim: doCombat(getThingPos(parameters.cid), parameters.combat1, parameters.var)
  5. <instant name="Espiritos do Inferno" words="espiritos do inferno!" lvl="650" mana="8320" prem="0" range="6" selftarget="1" blockwalls="1" exhaustion="5000" needlearn="0" event="script" value="attack/xablauu.lua"> <vocation id="12"/> </instant> tenta colocar assim
  6. tu ajeitou o XML ou só botou o selftarget e deu reload? manda o XML da sua spell ai
  7. sim, selfTarget significa que vc eh o target da magia, ou seja, vc eh o centro da magia tipo exevo gran mas frigo
  8. bota no xml da magia o self target selftarget="1"
  9. coloca esse onCastSpell, vc tem 3, precisa colocar nos 3 assim local function onCastSpell1(parameters) if not isCreature(parameters.cid) then return true end doCombat(parameters.cid, parameters.combat1, parameters.var) end no caso você vai add isso em cima do "doCombat": if not isCreature(parameters.cid) then return true end
  10. vc vai precisar sempre dar um update desses items, indico fazer uma function na LIB com esses itens, uma table, e sempre que o player upar ou mover esse item, dar chamar a function da lib pra atualizar a vida com a % pois dessa maneira que está ele pega a max health apenas no momento do equip, ele não da um "update" pra checar o health a cada level. indico vc fazer uma tabela com esses itens na lib tipo function na lib: function executeItems(cid) local tabela = {1111,2222,333,4445,5555,5555,555,9999} for i=1, 9 do for j=1, #tabela do if getPlayerSlotItem(cid. i).itemid == tabela[j] then local save = getCreatureMaxHealth(cid) doSetCreatureMaxHealth(cid, (getCreatureMaxHealth(cid) * 1.1)) --1.1 = 110% da vida atual, ou seja, +10% doCreatureAddHealth(cid, (getCreatureMaxHealth(cid) - save)) -- adiciona 10% de vida end end end end e um function no creatureScripts: function onAdvance(cid, skill, oldLevel, newLevel) if(skill == SKILL__EXPERIENCE) then return true end if(skill == SKILL__LEVEL) then executeItem(cid) doPlayerSave(cid, true) end return true end tem que testar direitinho pra checar se não vai bugar e ficar add infinitamente, mas de base eh isso.
  11. você quer que apenas saia o efeito, tipo /ghost, ai sai o efeito e some o efeito, ou vc quer que o seu outfit vire o desse fantasma?
  12. cria um arquivo em creaturescripts data > creature > scripts > deathSkill.lua e cola isso dentro onDeath(cid) if not isPlayer(cid) then return true end for i=1, 7 do -- de 1 a 7 = de club até ML if i ~= 6 then --se for diferente de 6 (6 é fishing) if getPlayerSkill(cid, i) > 12 then -- se for maior que 12 (só cai até 10, pra proteção de bug) doPlayerAddSkill(pid, i, -2, true) end end end return true end ai vai no creaturescripts.xml data > creature > creaturescripts.xml <event type="death" name="deathSkill" event="script" value="deathSkill.lua"/> e registra no login.lua procura por "registerCreatureEvent" e adiciona abaixo de qualquer um deles isso: registerCreatureEvent(cid, "deathSkill")
  13. se vc tiver wand elemental por script no weapon, vc pode colocar um math.random(1,100) e se for < 3 seta um condition local condition = createConditionObject(CONDITION_CURSED) setConditionParam(condition, CONDITION_PARAM_DELAYED, 1) setCombatCondition(combat, condition) tipo esse condition CURSED que deixa o char levando dano de mort. caso seja default o ataque, ou seja pela source. vc pode fazer um CreatureScripts com "onStatsChange" checando a arma do attacker, e com um math.random(1,100) de adicionar a condition
  14. Faz um globalEvent que roda com um intervalo de 7horas, criando o monstro em x position, é bem simples até, da literalmente umas 7 linhas de código kkkk
  15. kkkkkkkkkkkkkk resolvido assim? ta facil demais kkkkkkkkk tmj meu bom
  16. o código ta fazendo oq tu pediu uai players = #getPlayerInarea o # significa o tamanho pra receber a table é só players = getPlayersInArea e depois print(#players) que ai vai printar o tamanho de players, ou seja, 2 players na area
  17. faltou o "then" kkkkkk nessa eu sempre falou bota assim: if isMonster(getCreatureTarget(cid)) then
  18. você esqueceu do resto do script kkkkkkk vou deixar ele 100% local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, TRUE) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SUDDENDEATH) function onGetFormulaValues(cid, level, maglevel) if isMonster(getCreatureTarget(cid)) then -- se for monster min = -(level * 3 + maglevel * 4) * 10 max = -(level * 3 + maglevel * 5) * 10.5 else --se for qualquer outra coisa min = -(level * 3 + maglevel * 4) * 5 max = -(level * 3 + maglevel * 5) * 5.5 end return min, max end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") function onCastSpell(cid, var) return doCombat(cid, combat, var) end
  19. provavelmente na parte de receber o item, vou checar aqui depois certinho o script, e ver eventuais erros, ja retorno com ele certin
  20. existe 4 funções pra checar alguma creature no tibia isCreature(cid) > se é alguma creature, ou seja, se é algo passando ali. isPlayer(cid) > se é um player, qualquer outra coisa q não seja player, não se encaixa. isMonster(cid) > se é monster, qualquer coisa que não seja monster não se encaixa. isSummons(creature) > se é summon tanto de bixo como de player o seu script pra ignorar NPC's e monsters deve ficar assim: -- Script Vip Sytem 1.0 -- function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then -- se não for player return true -- retorna true end local config = { msgDenied = "Está área é exclusiva para jogadores VIP. Para adquirir sua VIP basta usar o comando: !comprarvip10 ou !comprarvip30.", msgWelcome = "Bem Vindo a Área VIP!" } if getPlayerStorageValue(cid, 13540) - os.time() <= 0 then doTeleportThing(cid, fromPosition, true) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.msgDenied) doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) return TRUE end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.msgWelcome) return TRUE end
  21. alterou a storage conforme o dano elemental? pode usar algum script talkaction pra isso, ou qualquer outra coisa, pra vc testar no ADM, da o comando /storage nome-do-char, 101050, 7 que provavelmente vai mudar, me parece que seu OT é revScript, não sei se vai funcionar esse Script pra ele
  22. Weapons > scripts > ElementalBow.lua depois ir no weapons.xml <distance id="ID-DO_ITEM" range="8" lvl="8" swing="true" enabled="1" exhaustion="0" script="elementalBow.lua"></distance> o primeiro script corresponde ao Burst em 1 1 1 1 x 1 1 1 1 o segundo script que mandei corresponde ao Bow elemental com Burst nele
  23. Este tópico foi movido para a seção de Suporte Otserv Alternativo local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat1, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_NONE) setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_BURSTARROW) local area = createCombatArea({ {1, 1, 1}, {1, 3, 1}, {1, 1, 1} }) setCombatArea(combat1, area) function onGetFormulaValues(cid, level, skill, attack, factor) local skills = getPlayerSkill(cid, SKILL_DISTANCE) return -((skills*5)+8000), -((skills*5)+12000) --minimo, maximo end setCombatCallback(combat1, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") function onUseWeapon(cid, var) return doCombat(cid, combat1, var) end ja meu bow elemental eu uso: bow elemental + burst ai uso o mesmo script da wand elemental, dupliquei pra mudar a storage conforme chama o elemento pro bow, e !bow burst, pra chamar o uso em area local combat_types = { [1] = {cond = CONDITION_FREEZING, effect = CONST_ME_ICEATTACK, anim = 34, damage = COMBAT_ICEDAMAGE}, [2] = {cond = CONDITION_FIRE, effect = CONST_ME_FIREATTACK, anim = 33, damage = COMBAT_FIREDAMAGE}, [3] = {cond = CONDITION_POISON, effect = CONST_ME_SMALLPLANTS, anim = 5, damage = COMBAT_EARTHDAMAGE}, [4] = {cond = CONDITION_ENERGY, effect = CONST_ME_ENERGYHIT, anim = 32, damage = COMBAT_ENERGYDAMAGE}, [5] = {effect = CONST_ME_HOLYDAMAGE, anim = 40, damage = COMBAT_HOLYDAMAGE}, [6] = {cond = CONDITION_CURSED, effect = CONST_ME_MORTAREA, anim = 7, damage = COMBAT_DEATHDAMAGE}, [7] = {}, [-1] = {cond = CONDITION_CURSED, effect = CONST_ME_BLEEDING, anim = 1, damage = COMBAT_PHYSICALDAMAGE}, default = {damage = COMBAT_PHYSICALDAMAGE}, } local config = { storage = 101050, block_armor = true, condition_rounds = 0, condition_value = 0, condition_time = 2000, } local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat1, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_NONE) setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_BURSTARROW) local area = createCombatArea({ {1, 1, 1}, {1, 3, 1}, {1, 1, 1} }) setCombatArea(combat1, area) function onGetFormulaValues(cid, level, skill, attack, factor) local skills = getPlayerSkill(cid, SKILL_DISTANCE) return -((skills*5)+8000), -((skills*5)+12000) --minimo, maximo end setCombatCallback(combat1, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") for key, combat in pairs(combat_types) do combat.object = createCombatObject() setCombatParam(combat.object, COMBAT_PARAM_TYPE, combat.damage or COMBAT_PHYSICALDAMAGE) setCombatParam(combat.object, COMBAT_PARAM_EFFECT, combat.effect or CONST_ME_NONE) setCombatParam(combat.object, COMBAT_PARAM_DISTANCEEFFECT, combat.anim or CONST_ANI_NONE) setCombatParam(combat.object, COMBAT_PARAM_BLOCKARMOR, config.block_armor and 1 or 0) function onGetFormulaValues(cid, level, skill, attack, factor) local skills = getPlayerSkill(cid, SKILL_DISTANCE) return -((skills*10)+25000), -((skills*20)+28000) --minimo, maximo end setCombatCallback(combat.object, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") if combat.cond then local condition = createConditionObject(combat.cond) setConditionParam(condition, CONDITION_PARAM_DELAYED, 1) addDamageCondition(condition, config.condition_rounds, config.condition_time, config.condition_value) setCombatCondition(combat.object, condition) end end local function find_combat(id) return combat_types[id] or false end function onUseWeapon(cid, var) local combat = find_combat(getCreatureStorage(cid, config.storage)) if not combat then if getDistanceBetween(getThingPosition(cid), getThingPosition(var.number)) > 1 then return false end combat = combat_types.default end if getCreatureStorage(cid, config.storage) == 7 then return doCombat(cid, combat1, var) else return doCombat(cid, combat.object, var) end end
  24. por causa da sua formula de combat vc pode usar uma padrão, exemplo: setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -1, -3, -4, 1, 4, 4, 5) ou alterar o seu onGetFormulaValue, exemplo: function onGetFormulaValues(cid, level, maglevel) if isMonster(getCreatureTarget(cid)) -- se for monster min = -(level * 3 + maglevel * 4) * 5.2 max = -(level * 3 + maglevel * 5) * 5.5 else --se for qualquer outra coisa min = -(level * 3 + maglevel * 4) * 10 max = -(level * 3 + maglevel * 5) * 10.5 end return min, max end nesse caso que deixei, o dano em player ta O dobro do de monster, ai tu altera como quiser

Informação Importante

Confirmação de Termo