• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

[TFS 1.5]any living soul, could turn this script into revscript? and if possible when the character says "[CRITICAL] he gets 10% life and mana?and add

Shoorkill

Member
Joined
Dec 17, 2018
Messages
126
Reaction score
21
local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
function onGetFormulaValues(cid, level, maglevel)
skill = getPlayerSkill(cid,3)
level = getPlayerLevel(cid)
min = -((skill*1)+level*1)
max = -((skill*12)+level*1)
return min, max
end

setCombatCallback(combat1, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_EFFECT, 32)
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
function onGetFormulaValues(cid, level, maglevel)
skill = getPlayerSkill(cid,3)
level = getPlayerLevel(cid)
min = -((skill*13)+level*4)
max = -((skill*16)+level*5)
return min, max
end

local condition = createConditionObject(CONDITION_EMO)
rande = math.random(183,232)
setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
addDamageCondition(condition, 100, 3100, -rande)
addCombatCondition(combat2, condition)

setCombatCallback(combat2, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onUseWeapon(cid, var)
fala = math.random(1,18)
rand = math.random(1,560)
if rand <= getPlayerSkill(cid,3) then
if fala == 1 then
doCreatureSay(cid,"For honor!",16)
doCombat(cid, combat2, var)
else
doCreatureSay(cid,"[Critical]",16)
doCombat(cid, combat2, var)
end
else
doCombat(cid, combat1, var)
end
end
Post automatically merged:

and add the id of the weapons example: 2200,2300,24000
 
Last edited:
BETA
I never made a weapon revscript
probably a mistake in console haha xd
Lua:
 ---COMBAT 1
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
function onGetFormulaValues(player, level, magicLevel)
    local skill = player:getSkillLevel(3)
    local level = player:getLevel()
    local min = -((skill*1)+level*1)
    local max = -((skill*12)+level*1)
    return min, max
end

combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")




---COMBAT 2
local combat2 = Combat()
combat2:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
combat2:setParameter(COMBAT_PARAM_EFFECT, 32)

--wtf
--local condition = createConditionObject(CONDITION_EMO)
--rande = math.random(183,232)
--setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
--addDamageCondition(condition, 100, 3100, -rande)
--addCombatCondition(combat2, condition)

--player:addDamageCondition(Creature(variant:getNumber()), CONDITION_PARAM_DELAYED, 3100, rande)
function onGetFormulaValues2(player, level, magicLevel)
    local skill = player:getSkillLevel(3)
    local level = player:getLevel()
    local min = -((skill*13)+level*5)
    local max = -((skill*16)+level*16)

    return min, max
end

combat2:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues2")



--WEAPON REVSCRIPT
local weapon = Weapon(WEAPON_AXE)


function weapon.onUseWeapon(player, variant)
    local fala = math.random(1,18)
    local rand = math.random(1,560)
    if rand <= player:getSkillLevel(3) then
        if fala == 1 then

            player:say("For honor!", 16)
            return combat2:execute(player, variant)
        else
            player:say("[Critical]", 16)
            player:addHealth(player:getMaxHealth()*0.1)
            player:addMana(player:getMaxMana()*0.1)
            return combat2:execute(player, variant)

        end
    else
        return combat:execute(player, variant)
    end
 
end
weapon:id(2200)
weapon:attack(23)
weapon:defense(18, 1)
weapon:register()
 
Last edited:
BETA
I never made a weapon revscript
probably a mistake in console haha xd
Lua:
 ---COMBAT 1
local combat = Combat()
combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
function onGetFormulaValues(player, level, magicLevel)
    local skill = player:getSkillLevel(3)
    local level = player:getLevel()
    local min = -((skill*1)+level*1)
    local max = -((skill*12)+level*1)
    return min, max
end

combat:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")




---COMBAT 2
local combat2 = Combat()
combat2:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
combat2:setParameter(COMBAT_PARAM_EFFECT, 32)

--wtf
--local condition = createConditionObject(CONDITION_EMO)
--rande = math.random(183,232)
--setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
--addDamageCondition(condition, 100, 3100, -rande)
--addCombatCondition(combat2, condition)

--player:addDamageCondition(Creature(variant:getNumber()), CONDITION_PARAM_DELAYED, 3100, rande)
function onGetFormulaValues2(player, level, magicLevel)
    local skill = player:getSkillLevel(3)
    local level = player:getLevel()
    local min = -((skill*13)+level*5)
    local max = -((skill*16)+level*16)

    return min, max
end

combat2:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues2")



--WEAPON REVSCRIPT
local weapon = Weapon(WEAPON_AMMO)

local combat = Combat()

function weapon.onUseWeapon(player, variant)
    local fala = math.random(1,18)
    local rand = math.random(1,560)
    if rand <= player:getSkillLevel(3) then
        if fala == 1 then

            player:say("For honor!", 16)
            return combat2:execute(player, variant)
        else
            player:say("[Critical]", 16)
            player:addHealth(player:getMaxHealth()*0.1)
            player:addMana(player:getMaxMana()*0.1)
            return combat2:execute(player, variant)

        end
    else
        return combat1:execute(player, variant)
    end
 
end
weapon:id(2200)
weapon:attack(27)
weapon:shootType(CONST_ANI_BURSTARROW)
weapon:ammoType("arrow")
weapon:maxHitChance(100)
weapon:register()
SORRY I DIDN'T FORMAT MY ORDER WELL, but it's a sword haha, I tested it with an arrow and nothing happens ;x
 
local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
function onGetFormulaValues(cid, level, maglevel)
skill = getPlayerSkill(cid,3)
level = getPlayerLevel(cid)
min = -((skill*1)+level*1)
max = -((skill*12)+level*1)
return min, max
end

setCombatCallback(combat1, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

local combat2 = createCombatObject()
setCombatParam(combat2, COMBAT_PARAM_EFFECT, 32)
setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
function onGetFormulaValues(cid, level, maglevel)
skill = getPlayerSkill(cid,3)
level = getPlayerLevel(cid)
min = -((skill*13)+level*4)
max = -((skill*16)+level*5)
return min, max
end

local condition = createConditionObject(CONDITION_EMO)
rande = math.random(183,232)
setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
addDamageCondition(condition, 100, 3100, -rande)
addCombatCondition(combat2, condition)

setCombatCallback(combat2, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onUseWeapon(cid, var)
fala = math.random(1,18)
rand = math.random(1,560)
if rand <= getPlayerSkill(cid,3) then
if fala == 1 then
doCreatureSay(cid,"For honor!",16)
doCombat(cid, combat2, var)
else
doCreatureSay(cid,"[Critical]",16)
doCombat(cid, combat2, var)
end
else
doCombat(cid, combat1, var)
end
end
Post automatically merged:

and add the id of the weapons example: 2200,2300,24000
Lua:
local combat1 = Combat()
combat1:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

function onGetFormulaValues(cid, level, maglevel)
  local skill = getPlayerSkill(cid, 3)
  level = getPlayerLevel(cid)
  local min = -((skill * 1) + level * 1)
  local max = -((skill * 12) + level * 1)
  return min, max
end

combat1:setFormula(COMBAT_FORMULA_SKILL, -1, 0, -12, 0)

combat1:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

local combat2 = Combat()
combat2:setParameter(COMBAT_PARAM_EFFECT, 32)
combat2:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

function onGetFormulaValues(cid, level, maglevel)
  local skill = getPlayerSkill(cid, 3)
  level = getPlayerLevel(cid)
  local min = -((skill * 13) + level * 4)
  local max = -((skill * 16) + level * 5)
  return min, max
end

local condition = Condition(CONDITION_EMO)
local rande = math.random(183, 232)
condition:setParameter(CONDITION_PARAM_DELAYED, 1)
condition:addDamage(100, 3100, -rande)
combat2:addCondition(condition)

combat2:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onUseWeapon(cid, var)
  local fala = math.random(1, 18)
  local rand = math.random(1, 560)
  local playerSkill = getPlayerSkill(cid, 3)
 
  if rand <= playerSkill then
    if fala == 1 then
      doCreatureSay(cid, "For honor!", TALKTYPE_MONSTER_SAY)
      combat2:execute(cid, var)
    else
      doSendAnimatedText("Critical!", getPlayerPosition(cid), 35)
      combat2:execute(cid, var)
    end
  else
    combat1:execute(cid, var)
  end
end

you do it yourself change for all functions

To convert the old version 1.5 to the new version, you need to make some code changes:

Replace createCombatObject() with Combat
Replace setCombatParam() with combat:setParameter
Replace setCombatFormula() with combat:setFormula
Replace createCombatArea() with CombatArea().
Replace addDamageCondition() with condition:addDamage
Replace setCombatCondition() with combat:addCondition
Replace onCastSpell() with combat.onCastSpell
Replace createConditionObject() with Condition
Replace setConditionParam() with condition:setParameter

Replace doCombat() with combat:execute

Replace doSendAnimatedText(getPlayerPosition(cid), "Critical!", TEXTCOLOR_LIGHTGREY) with doSendAnimatedText("Critical!", getPlayerPosition(cid), 35)
Post automatically merged:

Lua:
local combat1 = Combat()
combat1:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

function onGetFormulaValues(cid, level, maglevel)
  local skill = getPlayerSkill(cid, 3)
  level = getPlayerLevel(cid)
  local min = -((skill * 1) + level * 1)
  local max = -((skill * 12) + level * 1)
  return min, max
end

combat1:setFormula(COMBAT_FORMULA_SKILL, -1, 0, -12, 0)

combat1:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

local combat2 = Combat()
combat2:setParameter(COMBAT_PARAM_EFFECT, 32)
combat2:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

function onGetFormulaValues(cid, level, maglevel)
  local skill = getPlayerSkill(cid, 3)
  level = getPlayerLevel(cid)
  local min = -((skill * 13) + level * 4)
  local max = -((skill * 16) + level * 5)
  return min, max
end

local condition = Condition(CONDITION_EMO)
local rande = math.random(183, 232)
condition:setParameter(CONDITION_PARAM_DELAYED, 1)
condition:addDamage(100, 3100, -rande)
combat2:addCondition(condition)

combat2:setCallback(CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

function onUseWeapon(cid, var)
  local fala = math.random(1, 18)
  local rand = math.random(1, 560)
  local playerSkill = getPlayerSkill(cid, 3)
 
  if rand <= playerSkill then
    if fala == 1 then
      doCreatureSay(cid, "For honor!", TALKTYPE_MONSTER_SAY)
      combat2:execute(cid, var)
    else
      doSendAnimatedText("Critical!", getPlayerPosition(cid), 35)
      combat2:execute(cid, var)
    end
  else
    combat1:execute(cid, var)
  end
end

you do it yourself change for all functions
now i saw that you wanted revscript, but i converted the script to tfs 1.5, it's via weapons.xml

follow the video that is working "critical" xD
 
Last edited:
Back
Top