• 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!
  • 2026 staff recruitment is open! Check it out and consider applying!

percent spell!

foxkbt

Member
Joined
Sep 29, 2009
Messages
290
Reaction score
7
Location
Salvador
my problem is that
dosent work in my spell

PHP:
local function onCastSpell1(parameters)
if (math.random(0, 100) < 50 + getPlayerSkill(cid, SKILL_DISTANCE)) then
doCombat(parameters.cid, combat1, parameters.var)
else
doSendAnimatedText(getPlayerPosition(parameters.cid), "MISS", COLOR_WHITE)
end

i think is the math.random
 
PHP:
function onCastSpell1(cid, var)

if math.random(0, 100) < (50 + getPlayerSkill(cid, SKILL_DISTANCE)) then
   doCombat(cid, combat1, var)
else
   doSendAnimatedText(getPlayerPosition(cid), "MISS", TEXTCOLOR_WHITE)
end
 
no
u dont understand!

i will post the complet spell

PHP:
local combat1 = createCombatObject()
setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat1, COMBAT_PARAM_EFFECT, 255)
setCombatParam(combat1, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_GREENSTAR)

function onGetFormulaValues(cid, level, skill, attack, factor, distance)
    local skillTotal, levelTotal = SKILL_DISTANCE + 28 , level/5
    return -(skillTotal * 0.3 + levelTotal), -(skillTotal * 1.0 + levelTotal)
end

setCombatCallback(combat1, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

local function onCastSpell1(parameters)
if (math.random(0, 100) < 50 + getPlayerSkill(cid, SKILL_DISTANCE)) then
doCombat(parameters.cid, combat1, parameters.var)
else
doSendAnimatedText(getPlayerPosition(parameters.cid), "MISS", COLOR_WHITE)
end  
end

function onCastSpell(cid, var, item)
local parameters = {cid = cid, var = var, combat1 = combat1}
    if getCreatureTarget(cid) >= 1 then
        addEvent(onCastSpell1, 500, parameters)
    else
        doPlayerSendCancel(cid, "you need a target to attack.")
    end
    return TRUE
end
 
Last edited:
shorter version:
PHP:
function onCastSpell(cid, var)

local skillTotal = getPlayerSkillLevel(cid,SKILL_DISTANCE) + 28 + (getPlayerStorageValue(cid,1001)*(28*0.3))
local levelTotal = getPlayerLevel(cid)/5
local rand = math.random(0, 100)
local pos1 = getCreaturePosition(cid)
local pos2 = getCreaturePosition(getCreatureTarget(cid))

if rand < (50 + getPlayerSkillLevel(cid, SKILL_DISTANCE)) then
	doSendDistanceShoot(pos1, pos2, CONST_ANI_GREENSTAR)
	doTargetCombatHealth(cid, getCreatureTarget(cid), COMBAT_PHYSICALDAMAGE, -(skillTotal * 0.3 + levelTotal), -(skillTotal * 1.0 + levelTotal))
else
	doSendAnimatedText(pos1, "MISS", TEXTCOLOR_WHITE)
end

return TRUE
end

Remember to add needtarget="1" in your spells.xml

works on tfs 0.3.6pl1


PS: what server u use? (ots)
 
Back
Top