Ir para conteúdo

psychonaut

Membro
  • Registro em

  • Última visita

Tudo que psychonaut postou

  1. psychonaut postou uma resposta no tópico em Suporte Tibia OTServer
    Não testei, tu pode antes de chega no lvl max, diminuir a rate, tipo uns 50 leveis antes se a rate for muito alta, pela source acho que da mais certo.
  2. psychonaut postou uma resposta no tópico em Suporte Tibia OTServer
    Não precisa ser na source, acho que ja funciona com stages. \data\XML\stages.xml <?xml version="1.0" encoding="UTF-8"?> <stages> <config enabled="0" /> <stage minlevel="1" maxlevel="8" multiplier="7" /> <stage minlevel="9" maxlevel="20" multiplier="6" /> <stage minlevel="21" maxlevel="50" multiplier="5" /> <stage minlevel="51" maxlevel="100" multiplier="4" /> <stage minlevel="MAXLEVEL" multiplier="0" /> </stages> Se quiser fazer na source tenta isso: player.h, procura por: [cpp]static uint64_t getExpForLevel(uint32_t lv){[/cpp] E coloca depois: [cpp]if(lv > 8000) return 0;[/cpp] 8000 tu muda pro max
  3. Altera a linha if vocation = 3 then Pra if vocation == 3 then Erro meu, é que to mexendo com VB, ai confundi.
  4. Tenta isso local IDHEAD = 2343 local IDARMOR = 2503 local IDLEGS = 2504 local IDFEET = 2646 local IDSHIELD = 8905 local THETEXT = "Chain" local look = 309 -- Coloque o ID do outfit local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, -1) setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, 5000000) setConditionParam(condition, CONDITION_PARAM_HEALTHTICKS, 500) setConditionParam(condition, CONDITION_PARAM_MANAGAIN, 5000000) setConditionParam(condition, CONDITION_PARAM_MANATICKS, 500) setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, 150) setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, 150) setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVELPERCENT,575) setConditionParam(condition, CONDITION_PARAM_ABSORBPERCENTALL, 575) function onDeEquip(cid, item, slot) doRemoveCondition(cid, CONDITION_OUTFIT) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have just lost the bonus for wearing a full set of equipment. please equipped the item you remove to get the bonus again.") doRemoveCondition(cid, CONDITION_ATTRIBUTES) end function onEquip(cid, item, slot) local vocation = getPlayerVocation(cid) if vocation = 3 then if getPlayerSlotItem(cid, CONST_SLOT_HEAD).itemid == IDHEAD and getPlayerSlotItem(cid, CONST_SLOT_ARMOR).itemid == IDARMOR and getPlayerSlotItem(cid, CONST_SLOT_LEGS).itemid == IDLEGS and getPlayerSlotItem(cid, CONST_SLOT_FEET).itemid == IDFEET and getPlayerSlotItem(cid, CONST_SLOT_RIGHT).itemid == IDSHIELD then doSendAnimatedText(getCreaturePosition(cid), THETEXT, 210) doSetCreatureOutfit(cid, {lookType = look}, -1) doAddCondition(cid, condition) local spot = getThingPosition(cid) doSendDistanceShoot(spot, {x = spot.x + 3, y = spot.y + 3, z = spot.z}, CONST_ANI_HOLY) doSendDistanceShoot(spot, {x = spot.x - 3, y = spot.y - 3, z = spot.z}, CONST_ANI_HOLY) doSendDistanceShoot(spot, {x = spot.x + 3, y = spot.y - 3, z = spot.z}, CONST_ANI_HOLY) doSendDistanceShoot(spot, {x = spot.x - 3, y = spot.y + 3, z = spot.z}, CONST_ANI_HOLY) end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este item e apenas para paladins.") end return true end
  5. Tem como você por o chain set.lua aqui?
  6. psychonaut postou uma resposta no tópico em Ferramentas OpenTibia
    Vlw! Se alguém tiver alguma sugestão ou encontrar algum bug, é só falar que eu procuro arrumar ai.
  7. psychonaut postou uma resposta no tópico em Ferramentas OpenTibia
    Se eu for alterar alguma coisa, posso apenas upar no mega e atualizar com scan e tudo, ou tenho que criar outro tópico?
  8. levem na brincadeira...
  9. Tem como tu postar seu spells.xml aqui pra eu ver qual é o script da sua sd Ou tenta algo assim: local combat = Combat() combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE) combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA) combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SUDDENDEATH) function onGetFormulaValues(player, level, maglevel) min = -1 max = -10000 return min, max end combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") function onCastSpell(creature, var, isHotkey) return combat:execute(creature, var) end
  10. Aperta ctrl+f e procura $char_to_copy->setPosX(0); Você tem que mudar os 3 $char_to_copy->setPosX(0); $char_to_copy->setPosY(0); $char_to_copy->setPosZ(0);
  11. Muda a posição no map editor, apertando CTRL+T, e muda no accountmanagement
  12. Então, o que você pediu dando dano ta aqui, não consegui fazer porcentagem msm... com o global.lua ficaria mais facil local MIN = 30 -- minimo de drain local MAX = 100 -- max de drain local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 134) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -120.2, 1, -120.2, 1) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, 134) setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -120.2, 1, -120.2, 1) local combat3 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_MANADRAIN) setCombatParam(combat3, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED) setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, 0, -MIN, 0, -MAX) local combat4 = createCombatObject() setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_MANADRAIN) setCombatParam(combat4, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED) setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, 0, -MIN, 0, -MAX) arr1 = { {0, 0, 0, 0, 0}, {0, 1, 1, 1, 0}, {0, 1, 3, 1, 0}, {0, 1, 1, 1, 0}, {0, 0, 0, 0, 0} } arr2 = { {0, 0, 0, 0, 0}, {0, 1, 1, 1, 0}, {0, 1, 3, 1, 0}, {0, 1, 1, 1, 0}, {0, 0, 0, 0, 0} } arr3 = { {0, 0, 0, 0, 0}, {0, 1, 1, 1, 0}, {0, 1, 3, 1, 0}, {0, 1, 1, 1, 0}, {0, 0, 0, 0, 0} } arr4 = { {0, 0, 0, 0, 0}, {1, 1, 1, 1, 1}, {1, 1, 3, 1, 1}, {1, 1, 1, 1, 1}, {0, 0, 0, 0, 0} } local area1 = createCombatArea(arr1) local area2 = createCombatArea(arr2) local area3 = createCombatArea(arr3) local area4 = createCombatArea(arr4) setCombatArea(combat1, area1) setCombatArea(combat2, area2) setCombatArea(combat3, area3) setCombatArea(combat4, area4) local function onCastSpell1(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat1, parameters.var) end local function onCastSpell2(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat2, parameters.var) end local function onCastSpell3(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat3, parameters.var) end local function onCastSpell4(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat4, parameters.var) end function onCastSpell(cid, var) local parameters = { cid = cid, var = var} addEvent(onCastSpell1, 100, parameters) addEvent(onCastSpell2, 400, parameters) addEvent(onCastSpell3, 800, parameters) addEvent(onCastSpell4, 1000, parameters) return true end
  13. Pera, vamo tentar mais uma vez, substitui essa parte do script: if isPlayer(target) then local mana = getPlayerMaxMana(target) local remove = (mana / 100) * manaremove doTargetCombatMana(cid, target, min, max, 134) endPor essa: local mana = getPlayerMaxMana(target) local remove = (mana / 100) * manaremove doAreaCombatMana(cid, 0, area4, -remove, -remove, 134)
  14. Ve se tu colocou todas as tabelas no banco de dados.
  15. Tenta isso aqui então. local manaremove = 20 -- porcentagem de drain de mana local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 134) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -60.2, 1, -63.2, 1) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, 134) setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -60.2, 1, -63.2, 1) local combat3 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat3, COMBAT_PARAM_EFFECT, 134) setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -60.2, 1, -63.2, 1) local combat4 = createCombatObject() setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat4, COMBAT_PARAM_EFFECT, 134) setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -60.2, 1, -63.2, 1) arr1 = { {0, 0, 0, 0, 0}, {0, 1, 1, 1, 0}, {0, 1, 3, 1, 0}, {0, 1, 1, 1, 0}, {0, 0, 0, 0, 0} } arr2 = { {0, 0, 0, 0, 0}, {0, 1, 1, 1, 0}, {0, 1, 3, 1, 0}, {0, 1, 1, 1, 0}, {0, 0, 0, 0, 0} } arr3 = { {0, 0, 0, 0, 0}, {0, 1, 1, 1, 0}, {0, 1, 3, 1, 0}, {0, 1, 1, 1, 0}, {0, 0, 0, 0, 0} } arr4 = { {0, 0, 0, 0, 0}, {1, 1, 1, 1, 1}, {1, 1, 3, 1, 1}, {1, 1, 1, 1, 1}, {0, 0, 0, 0, 0} } local area1 = createCombatArea(arr1) local area2 = createCombatArea(arr2) local area3 = createCombatArea(arr3) local area4 = createCombatArea(arr4) setCombatArea(combat1, area1) setCombatArea(combat2, area2) setCombatArea(combat3, area3) setCombatArea(combat4, area4) local function onCastSpell1(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat1, parameters.var) end local function onCastSpell2(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat2, parameters.var) end local function onCastSpell3(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat3, parameters.var) end local function onCastSpell4(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat4, parameters.var) end function onCastSpell(cid, var) local target = variantToNumber(var) local parameters = { cid = cid, var = var} addEvent(onCastSpell1, 100, parameters) addEvent(onCastSpell2, 400, parameters) addEvent(onCastSpell3, 800, parameters) addEvent(onCastSpell4, 1000, parameters) if isPlayer(target) then local mana = getPlayerMaxMana(target) local remove = (mana / 100) * manaremove doTargetCombatMana(cid, target, min, max, 134) end return true end
  16. \forgottenserver-master\data É um xml, fica na pasta data, embaixo das pastas
  17. Vai no seu config.lua e coloca ou edita se ja tiver passwordType = "sha1"
  18. Não, global.lua, logo na pasta data.
  19. Tenta isso aqui. spells/attack/sudden death.lua talvez vai ficar mais fraca local combat = Combat() combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE) combat:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA) combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SUDDENDEATH) function onGetFormulaValues(player, level, maglevel) min = -((level / 5) + (maglevel * 4.3) + 32) max = -10000 return min, max end combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") function onCastSpell(creature, var, isHotkey) return combat:execute(creature, var) end
  20. Ta aí, acho que vai funcionar. local manaremove = 20 -- porcentagem de drain de mana local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 134) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -60.2, 1, -63.2, 1) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, 134) setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -60.2, 1, -63.2, 1) local combat3 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat3, COMBAT_PARAM_EFFECT, 134) setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -60.2, 1, -63.2, 1) local combat4 = createCombatObject() setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat4, COMBAT_PARAM_EFFECT, 134) setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -60.2, 1, -63.2, 1) arr1 = { {0, 0, 0, 0, 0}, {0, 1, 1, 1, 0}, {0, 1, 3, 1, 0}, {0, 1, 1, 1, 0}, {0, 0, 0, 0, 0} } arr2 = { {0, 0, 0, 0, 0}, {0, 1, 1, 1, 0}, {0, 1, 3, 1, 0}, {0, 1, 1, 1, 0}, {0, 0, 0, 0, 0} } arr3 = { {0, 0, 0, 0, 0}, {0, 1, 1, 1, 0}, {0, 1, 3, 1, 0}, {0, 1, 1, 1, 0}, {0, 0, 0, 0, 0} } arr4 = { {0, 0, 0, 0, 0}, {1, 1, 1, 1, 1}, {1, 1, 3, 1, 1}, {1, 1, 1, 1, 1}, {0, 0, 0, 0, 0} } local area1 = createCombatArea(arr1) local area2 = createCombatArea(arr2) local area3 = createCombatArea(arr3) local area4 = createCombatArea(arr4) setCombatArea(combat1, area1) setCombatArea(combat2, area2) setCombatArea(combat3, area3) setCombatArea(combat4, area4) local function onCastSpell1(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat1, parameters.var) end local function onCastSpell2(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat2, parameters.var) end local function onCastSpell3(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat3, parameters.var) end local function onCastSpell4(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat4, parameters.var) end function onCastSpell(cid, var) local target = variantToNumber(var) local parameters = { cid = cid, var = var} addEvent(onCastSpell1, 100, parameters) addEvent(onCastSpell2, 400, parameters) addEvent(onCastSpell3, 800, parameters) addEvent(onCastSpell4, 1000, parameters) if isPlayer(target) then doRemoveManaPercent(target,manaremove) end return true end Vai no seu global.lua, e coloca isso no final, depois de tudo: function doPlayerRemoveManaPercent(cid, percent) local mana = getPlayerMaxMana(cid) doPlayerRemoveMana(cid, (mana / 100) * percent) return TRUE end
  21. Vou arrumar, já edito aqui com o script.
  22. Removi efeitos que não funcionavam. local MIN = 30 -- minimo de drain local MAX = 100 -- max de drain local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_MANADRAIN) setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, 0, -MIN, 0, -MAX) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_MANADRAIN) setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED) setCombatFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, 0, -MIN, 0, -MAX) local combat3 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_MANADRAIN) setCombatParam(combat3, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED) setCombatFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, 0, -MIN, 0, -MAX) local combat4 = createCombatObject() setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_MANADRAIN) setCombatParam(combat4, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED) setCombatFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, 0, -MIN, 0, -MAX) arr1 = { {0, 0, 0, 0, 0}, {0, 1, 1, 1, 0}, {0, 1, 3, 1, 0}, {0, 1, 1, 1, 0}, {0, 0, 0, 0, 0} } arr2 = { {0, 0, 0, 0, 0}, {0, 1, 1, 1, 0}, {0, 1, 3, 1, 0}, {0, 1, 1, 1, 0}, {0, 0, 0, 0, 0} } arr3 = { {0, 0, 0, 0, 0}, {0, 1, 1, 1, 0}, {0, 1, 3, 1, 0}, {0, 1, 1, 1, 0}, {0, 0, 0, 0, 0} } arr4 = { {0, 0, 0, 0, 0}, {1, 1, 1, 1, 1}, {1, 1, 3, 1, 1}, {1, 1, 1, 1, 1}, {0, 0, 0, 0, 0} } local area1 = createCombatArea(arr1) local area2 = createCombatArea(arr2) local area3 = createCombatArea(arr3) local area4 = createCombatArea(arr4) setCombatArea(combat1, area1) setCombatArea(combat2, area2) setCombatArea(combat3, area3) setCombatArea(combat4, area4) local function onCastSpell1(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat1, parameters.var) end local function onCastSpell2(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat2, parameters.var) end local function onCastSpell3(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat3, parameters.var) end local function onCastSpell4(parameters) return isPlayer(parameters.cid) and doCombat(parameters.cid, combat4, parameters.var) end function onCastSpell(cid, var) local parameters = { cid = cid, var = var} addEvent(onCastSpell1, 100, parameters) addEvent(onCastSpell2, 400, parameters) addEvent(onCastSpell3, 800, parameters) addEvent(onCastSpell4, 1000, parameters) return true end CONST_ME_MAGIC_RED você pode mudar, alterei quando não estava funcionando, bem, testa ai se ta funfando.
  23. De boa, foram só 30msgs... Se eu tivesse com a sua versão/o seu server teria sido menos, porquê quando colocava no meu para testar dava erros diferentes do seu.
  24. Agora acho que vai! http://pastebin.com/GiG69Zqi Tem uma parte que ta assim: end end end setGlobalStorageValue(45000, os.time() + 5) end return true Remove o setGlobalStorageValue(45000, os.time() + 5) E coloca la em cima depois do else if getGlobalStorageValue(45000) >= os.time() then doPlayerSendCancel(cid,"Voce tem que esperar ".. getGlobalStorageValue(45000) - os.time() .." pra usar denovo.") else setGlobalStorageValue(45000, os.time() + 5) 5 É o cooldown

Informação Importante

Confirmação de Termo