• 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.0 CreatureScript Critical Stone

CharlesHudson

Just alive, or just breathing...
Joined
Oct 25, 2011
Messages
98
Reaction score
14
Hey guys!
can someone help me with this script

------------------------------------------
-
-- Configuracion de chance y damage
local criticalDamageDefault = 100
local criticalChanceDefault = 10
local criticalChanceAttaker = 0
local storageCriticalChance = 25200
local storageCriticalDamage = 25201
local function statOnHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin)
local function runCriticalChance(self)
local criticalChance = criticalChanceDefault
criticalChanceAttaker = self:getStorageValue(storageCriticalChance)
if criticalChanceAttaker < 0 then criticalChanceAttaker = 0 end
criticalChance = criticalChance + criticalChanceAttaker
return criticalChance
end
local function runCriticalDamage(self)
local criticalDamage = criticalDamageDefault
criticalDamageAttaker = self:getStorageValue(storageCriticalDamage)
if criticalDamageAttaker < 0 then criticalDamageAttaker = 0 end
criticalDamage = (criticalDamage + criticalDamageAttaker) / 100
return criticalDamage
end
if attacker and creature then
if attacker:isPlayer() then
criticalChanceDefault = runCriticalChance(attacker)
criticalDamageDefault = runCriticalDamage(attacker)
local random = math.floor(math.random(1, 100))
if random < criticalChanceDefault then
primaryDamage = primaryDamage * criticalDamageDefault
end end
return primaryDamage, primaryType, secondaryDamage, secondaryType
end
local function statOnManaChange(creature, attacker, manaChange, origin)
local function runCriticalChance(self)
local criticalChance = criticalChanceDefault
criticalChanceAttaker = self:getStorageValue(storageCriticalChance)
if criticalChanceAttaker < 0 then criticalChanceAttaker = 0 end
criticalChance = criticalChance + criticalChanceAttaker
return criticalChance
end
local function runCriticalDamage(self)
local criticalDamage = criticalDamageDefault
criticalDamageAttaker = self:getStorageValue(storageCriticalDamage)
if criticalDamageAttaker < 0 then criticalDamageAttaker = 0 end
criticalDamage = (criticalDamage + criticalDamageAttaker) / 100
return criticalDamage
end
if attacker and creature then
if attacker:isPlayer() then
criticalChanceDefault = runCriticalChance(attacker)
criticalDamageDefault = runCriticalDamage(attacker)
local random = math.floor(math.random(1, 100))
if random < criticalChanceDefault then
manaChange = manaChange * criticalDamageDefault
end end
return manaChange
end

-- Control Real
function onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin)
return statOnHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin)
end

function onManaChange(creature, attacker, manaChange, origin)
return statOnManaChange(creature, attacker, manaChange, origin)
end

-------------------------------------------------------------------

i got this error

[Warning - Event::checkScript] Can not load script: scripts/EpidemicSystems/critical system.lua
...aturescripts/scripts/EpidemicSystems/critical system.lua:66: 'end' expected (to close 'function' at line 32) near '<eof>'
[Warning - Event::checkScript] Can not load script: scripts/EpidemicSystems/critical system.lua
...aturescripts/scripts/EpidemicSystems/critical system.lua:66: 'end' expected (to close 'function' at line 32) near '<eof>'


Please, and thanks :D
Happy new year
 
Please use code tags for the code you posted, also moved the thread to support, because you are requesting help with script not whole script.
 
Hey guys!
can someone help me with this script

------------------------------------------
-
-- Configuracion de chance y damage
local criticalDamageDefault = 100
local criticalChanceDefault = 10
local criticalChanceAttaker = 0
local storageCriticalChance = 25200
local storageCriticalDamage = 25201
local function statOnHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin)
local function runCriticalChance(self)
local criticalChance = criticalChanceDefault
criticalChanceAttaker = self:getStorageValue(storageCriticalChance)
if criticalChanceAttaker < 0 then criticalChanceAttaker = 0 end
criticalChance = criticalChance + criticalChanceAttaker
return criticalChance
end
local function runCriticalDamage(self)
local criticalDamage = criticalDamageDefault
criticalDamageAttaker = self:getStorageValue(storageCriticalDamage)
if criticalDamageAttaker < 0 then criticalDamageAttaker = 0 end
criticalDamage = (criticalDamage + criticalDamageAttaker) / 100
return criticalDamage
end
if attacker and creature then
if attacker:isPlayer() then
criticalChanceDefault = runCriticalChance(attacker)
criticalDamageDefault = runCriticalDamage(attacker)
local random = math.floor(math.random(1, 100))
if random < criticalChanceDefault then
primaryDamage = primaryDamage * criticalDamageDefault
end end
return primaryDamage, primaryType, secondaryDamage, secondaryType
end
local function statOnManaChange(creature, attacker, manaChange, origin)
local function runCriticalChance(self)
local criticalChance = criticalChanceDefault
criticalChanceAttaker = self:getStorageValue(storageCriticalChance)
if criticalChanceAttaker < 0 then criticalChanceAttaker = 0 end
criticalChance = criticalChance + criticalChanceAttaker
return criticalChance
end
local function runCriticalDamage(self)
local criticalDamage = criticalDamageDefault
criticalDamageAttaker = self:getStorageValue(storageCriticalDamage)
if criticalDamageAttaker < 0 then criticalDamageAttaker = 0 end
criticalDamage = (criticalDamage + criticalDamageAttaker) / 100
return criticalDamage
end
if attacker and creature then
if attacker:isPlayer() then
criticalChanceDefault = runCriticalChance(attacker)
criticalDamageDefault = runCriticalDamage(attacker)
local random = math.floor(math.random(1, 100))
if random < criticalChanceDefault then
manaChange = manaChange * criticalDamageDefault
end end
return manaChange
end

-- Control Real
function onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin)
return statOnHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin)
end

function onManaChange(creature, attacker, manaChange, origin)
return statOnManaChange(creature, attacker, manaChange, origin)
end

-------------------------------------------------------------------

i got this error

[Warning - Event::checkScript] Can not load script: scripts/EpidemicSystems/critical system.lua
...aturescripts/scripts/EpidemicSystems/critical system.lua:66: 'end' expected (to close 'function' at line 32) near '<eof>'
[Warning - Event::checkScript] Can not load script: scripts/EpidemicSystems/critical system.lua
...aturescripts/scripts/EpidemicSystems/critical system.lua:66: 'end' expected (to close 'function' at line 32) near '<eof>'


Please, and thanks :D
Happy new year
Correct code structure goes a long way man. Messy code like this makes it really hard for you to ever see what's going on.

It's also redundant to put the same local functions when you can just write them once before the function that calls it.

Lua:
-- Configuracion de chance y damage
local criticalDamageDefault = 100
local criticalChanceDefault = 10
local criticalChanceAttaker = 0
local storageCriticalChance = 25200
local storageCriticalDamage = 25201

local function runCriticalChance(self)
    local criticalChance = criticalChanceDefault
    criticalChanceAttaker = self:getStorageValue(storageCriticalChance)
   
    if criticalChanceAttaker < 0 then
        criticalChanceAttaker = 0
    end

    criticalChance = criticalChance + criticalChanceAttaker
    return criticalChance
end

local function runCriticalDamage(self)
    local criticalDamage = criticalDamageDefault
    criticalDamageAttaker = self:getStorageValue(storageCriticalDamage)
  
    if criticalDamageAttaker < 0 then
        criticalDamageAttaker = 0
    end

    criticalDamage = (criticalDamage + criticalDamageAttaker) / 100
    return criticalDamage
end

local function statOnHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin)
    if attacker and creature then
        if attacker:isPlayer() then
            criticalChanceDefault = runCriticalChance(attacker)
            criticalDamageDefault = runCriticalDamage(attacker)
            local random = math.floor(math.random(1, 100))

            if random < criticalChanceDefault then
                primaryDamage = primaryDamage * criticalDamageDefault
            end
        end
    end
    return primaryDamage, primaryType, secondaryDamage, secondaryType
end

local function statOnManaChange(creature, attacker, manaChange, origin)
    if attacker and creature then
        if attacker:isPlayer() then
            criticalChanceDefault = runCriticalChance(attacker)
            criticalDamageDefault = runCriticalDamage(attacker)
            local random = math.floor(math.random(1, 100))
            if random < criticalChanceDefault then
                manaChange = manaChange * criticalDamageDefault
            end
        end
    end
    return manaChange
end

-- Control Real
function onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin)
    return statOnHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin)
end

function onManaChange(creature, attacker, manaChange, origin)
    return statOnManaChange(creature, attacker, manaChange, origin)
end

Try this out, I didn't test but i'm sure it'll at least be a lot easier to read what's happening in the script.
 
Correct code structure goes a long way man. Messy code like this makes it really hard for you to ever see what's going on.

It's also redundant to put the same local functions when you can just write them once before the function that calls it.

Lua:
-- Configuracion de chance y damage
local criticalDamageDefault = 100
local criticalChanceDefault = 10
local criticalChanceAttaker = 0
local storageCriticalChance = 25200
local storageCriticalDamage = 25201

local function runCriticalChance(self)
    local criticalChance = criticalChanceDefault
    criticalChanceAttaker = self:getStorageValue(storageCriticalChance)
  
    if criticalChanceAttaker < 0 then
        criticalChanceAttaker = 0
    end

    criticalChance = criticalChance + criticalChanceAttaker
    return criticalChance
end

local function runCriticalDamage(self)
    local criticalDamage = criticalDamageDefault
    criticalDamageAttaker = self:getStorageValue(storageCriticalDamage)
 
    if criticalDamageAttaker < 0 then
        criticalDamageAttaker = 0
    end

    criticalDamage = (criticalDamage + criticalDamageAttaker) / 100
    return criticalDamage
end

local function statOnHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin)
    if attacker and creature then
        if attacker:isPlayer() then
            criticalChanceDefault = runCriticalChance(attacker)
            criticalDamageDefault = runCriticalDamage(attacker)
            local random = math.floor(math.random(1, 100))

            if random < criticalChanceDefault then
                primaryDamage = primaryDamage * criticalDamageDefault
            end
        end
    end
    return primaryDamage, primaryType, secondaryDamage, secondaryType
end

local function statOnManaChange(creature, attacker, manaChange, origin)
    if attacker and creature then
        if attacker:isPlayer() then
            criticalChanceDefault = runCriticalChance(attacker)
            criticalDamageDefault = runCriticalDamage(attacker)
            local random = math.floor(math.random(1, 100))
            if random < criticalChanceDefault then
                manaChange = manaChange * criticalDamageDefault
            end
        end
    end
    return manaChange
end

-- Control Real
function onHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin)
    return statOnHealthChange(creature, attacker, primaryDamage, primaryType, secondaryDamage, secondaryType, origin)
end

function onManaChange(creature, attacker, manaChange, origin)
    return statOnManaChange(creature, attacker, manaChange, origin)
end

Try this out, I didn't test but i'm sure it'll at least be a lot easier to read what's happening in the script.

The script don't have errors now
Still not work my system crytical stone
:D thank u bro
 
Back
Top