• 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!

Action Change Damage Type Wand

like it?

Code:
   [1] = {element = "Liveleech"},
   [2] = {element = "Manaleech"},
   [3] = {element = "Critical"},
   [4] = {element = "Livesteeal"},
   [5] = {element = "Manasteal"},
   [6] = {element = "Holy"},
   [7] = {element = "Fire"},
   [8] = {element = "Death"},
   [9] = {element = "Poison"},
   [10] = {element = "Energy"},
   [11] = {element = "Earth"},
   [12] = {element = "Ice"},
   [13] = {element = "Earth"},
   [14] = {element = "Ice"},
 
Look I have to be retarded or some but how do I use this script? Like if I follow this tutorial and everything how do I open the menues etc?
 
Look I have to be retarded or some but how do I use this script? Like if I follow this tutorial and everything how do I open the menues etc?
You 'use' the item.
Right click -> Use
 
Hello, I made an attempt to edit the script for 0.4 however it is the first script I try to do from what I have learned, I was guided with the talkaction !rank script it was the first thing that came in my mind. The idea is to turn it into a talkaction, im not asking to do it for me but if someone could give me more clues on how to do it I would appreciate it, regards!!

Lua:
local DamageTypes = {
    [1] = {DamageType = COMBAT_HOLYDAMAGE, DamageEffect = CONST_ANI_HOLY},
    [2] = {DamageType = COMBAT_FIREDAMAGE, DamageEffect = CONST_ANI_FIRE},
    [3] = {DamageType = COMBAT_DEATHDAMAGE, DamageEffect = CONST_ANI_DEATH},
    [4] = {DamageType = COMBAT_POISONDAMAGE, DamageEffect = CONST_ANI_POISON},
    [5] = {DamageType = COMBAT_ENERGYDAMAGE, DamageEffect = CONST_ANI_ENERGY},
    [6] = {DamageType = COMBAT_EARTHDAMAGE, DamageEffect = CONST_ANI_EARTH},
    [7] = {DamageType = COMBAT_ICEDAMAGE, DamageEffect = CONST_ANI_ICE}

local displayoutput = {"Fire","Holy","Death","Poison","Energy","Earth","Ice"}
   storage = 10009,
   doPlayerSendChannelMessage = "Change Weapon Damage Type",
   mainMsg = "Choose a damage type from the list",


function onSay(cid, words, param)
    number = 1
    param = string.lower(param)
    skilllist = ""
    command = TRUE
    if param == "fire" then        
        display = 1
    elseif param == "holy" then
        display = 2
    elseif param == "death" then
        id = 0
        display = 3
    elseif param == "poison" then
        id = 1
        display = 4
    elseif param == "energy" then
        id = 2
        display = 5
    elseif param == "earth" then
        id = 3
        display = 6
    elseif param == "ice" then
        id = 4
        display = 7
    else 
            error = 'You did not choose a correct element'

        doShowTextDialog(cid, 5958, error)
        command = FALSE
        
        end
            if command ~= FALSE then
        if display == 1 then

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.0, -60, -1.0, -70)        
        
function onUseWeapon(cid, var)
return doCombat(cid, combat, var)
end
       
       elseif display == 2 then
       
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SUDDENDEATH)
setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.0, -60, -1.0, -70)

function onUseWeapon(cid, var)
return doCombat(cid, combat, var)
end
 
Last edited:
If you are looking for this system for minor versions, here are the steps to follow:
Tested on TFS 0.4

Talkactions.xml
36728

Talkactions/scripts/changeElementWand.lua
Lua:
local elementWandStorageID = 666778
local elementWandTypes = {
    ["physical"] = { COMBAT_PHYSICALDAMAGE, CONST_ME_HITAREA },
    ["energy"] = { COMBAT_ENERGYDAMAGE, CONST_ME_ENERGYAREA },
    ["earth"] = { COMBAT_EARTHDAMAGE, CONST_ME_POISONAREA },
    ["fire"] = { COMBAT_FIREDAMAGE, CONST_ME_FIREAREA },
    ["drown"] = { COMBAT_DROWNDAMAGE, CONST_ME_WATERSPLASH },
    ["ice"] = { COMBAT_ICEDAMAGE, CONST_ME_ICEATTACK },
    ["holy"] = { COMBAT_HOLYDAMAGE, CONST_ME_HOLYDAMAGE },
    ["death"] = { COMBAT_DEATHDAMAGE, CONST_ME_MORTAREA }
}

function onSay(cid, words, param, channel)

    local split = string.explode(param, ",")
    if #split == 0 then
        return doPlayerSendCancel(cid, "The command requires a parameter.")
    end

    local elementType = elementWandTypes[split[1] and string.lower(split[1])]
    if not elementType then
        return doPlayerSendCancel(cid, string.format("This element %s does not exist.", split[1]))
    end

    setPlayerStorageValue(cid, elementWandStorageID, elementType[1])
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, string.format("You have changed the element to %s.", string.lower(split[1])))
    doSendMagicEffect(getCreaturePosition(cid), elementType[2])

    return true
end

Weapons.xml
36730

Weapons/scripts/elementWand.lua

Lua:
local elementWandStorageID = 666778
local elementWandTypes = {
    { COMBAT_PHYSICALDAMAGE, CONST_ME_HITAREA, CONST_ANI_EXPLOSION },
    { COMBAT_ENERGYDAMAGE, CONST_ME_ENERGYAREA, CONST_ANI_ENERGY },
    { COMBAT_EARTHDAMAGE, CONST_ME_POISONAREA, CONST_ANI_POISON },
    { COMBAT_FIREDAMAGE, CONST_ME_FIREAREA, CONST_ANI_FIRE },
    { COMBAT_DROWNDAMAGE, CONST_ME_WATERSPLASH, CONST_ANI_ENERGYBALL },
    { COMBAT_ICEDAMAGE, CONST_ME_ICEATTACK, CONST_ANI_ICE },
    { COMBAT_HOLYDAMAGE, CONST_ME_HOLYDAMAGE, CONST_ANI_HOLY },
    { COMBAT_DEATHDAMAGE, CONST_ME_MORTAREA, CONST_ANI_DEATH }
}

local combats = {}
function onGetFormulaValues(cid, level, magiclevel)
    local min = level + magiclevel * 2.0
    local max = level + magiclevel * 2.5
    return -min, -max
end

for index, elementInfo in pairs(elementWandTypes) do
    combats[elementInfo[1]] = createCombatObject()
    setCombatParam(combats[elementInfo[1]], COMBAT_PARAM_TYPE, elementInfo[1])
    setCombatParam(combats[elementInfo[1]], COMBAT_PARAM_EFFECT, elementInfo[2])
    setCombatParam(combats[elementInfo[1]], COMBAT_PARAM_DISTANCEEFFECT, elementInfo[3])
    setCombatCallback(combats[elementInfo[1]], CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
end

function onUseWeapon(cid, var)
    local elementType = getPlayerStorageValue(cid, elementWandStorageID)
    local combat = combats[elementType] or combats[COMBAT_PHYSICALDAMAGE]
    return doCombat(cid, combat, var)
end
 
Back
Top