Ir para conteúdo
  • Cadastre-se

(Resolvido)exori com elemento da wepon


Ir para solução Resolvido por ernaix69,

Posts Recomendados

galera do tk alguem me ajuda com esse magia ?

queria que o meu exori batesse com o mesmo elemento da arma encantada usada pelo ek

ex: o ek usa uma cranial basher encantada de fogo quando ele usar exori a magia sai normal mas o dano é de fogo tambem.

é possivel ?

TFS 0.4 8.6

Spoiler

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combat, COMBAT_PARAM_USECHARGES, true)

local area = createCombatArea(AREA_SQUARE1X1)
setCombatArea(combat, area)

function onGetFormulaValues(cid, level, skill, attack, element, factor)
    local levelTotal, formula = level / 5, 0.0506
    local normal, elemental = -(skill * attack * formula + levelTotal), math.ceil((skill * element * formula + levelTotal))
    return normal/2, normal, -math.random(elemental/2, elemental)
end

setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
function onCastSpell(cid, var)
    return doCombat(cid, combat, var)
end
 

 

encontrei esses scripts, mas nao consigo adicionar esse function, da erro em tudo.

alguem  me ajuda ?

data/function.lua

Spoiler

local fireWeapons = {7744, 7745, 7746, 7747, 7748, 7749, 7750, 7751, 7752, 7753, 7754, 7755, 7756, 7757, 7758}
local energyWeapons = {7869, 7870, 7871, 7872, 7873, 7874, 7875, 7876, 7877, 7878, 7879, 7880, 7881, 7882, 7883}
local earthWeapons = {7854, 7855, 7856, 7857, 7858, 7859, 7860, 7861, 7862, 7863, 7864, 7865, 7866, 7867, 7868}
local iceWeapons = {7763, 7764, 7765, 7766, 7767, 7768, 7769, 7770, 7771, 7772, 7773, 7774, 7775, 7776, 7777}

Fierce Berserk (exori gran)

Spoiler

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combat, COMBAT_PARAM_USECHARGES, TRUE)
setCombatFormula(combat, COMBAT_FORMULA_SKILL, 0.8, 0, 1.6, 0)

local combatPhysical = createCombatObject()
setCombatParam(combatPhysical, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combatPhysical, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatFormula(combatPhysical, COMBAT_FORMULA_SKILL, 0.6, 0, 1.4, 0)

local combatFire = createCombatObject()
setCombatParam(combatFire, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combatFire, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combatFire, COMBAT_PARAM_USECHARGES, TRUE)
setCombatFormula(combatFire, COMBAT_FORMULA_SKILL, 0.2, 0, 0.2, 0)

local combatIce = createCombatObject()
setCombatParam(combatIce, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combatIce, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combatIce, COMBAT_PARAM_USECHARGES, TRUE)
setCombatFormula(combatIce, COMBAT_FORMULA_SKILL, 0.2, 0, 0.2, 0)

local combatEarth = createCombatObject()
setCombatParam(combatEarth, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
setCombatParam(combatEarth, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combatEarth, COMBAT_PARAM_USECHARGES, TRUE)
setCombatFormula(combatEarth, COMBAT_FORMULA_SKILL, 0.2, 0, 0.2, 0)

local combatEnergy = createCombatObject()
setCombatParam(combatEnergy, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combatEnergy, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combatEnergy, COMBAT_PARAM_USECHARGES, TRUE)
setCombatFormula(combatEnergy, COMBAT_FORMULA_SKILL, 0.2, 0, 0.2, 0)

local area = createCombatArea(AREA_SQUARE1X1)
setCombatArea(combat, area)
setCombatArea(combatFire, area)
setCombatArea(combatIce, area)
setCombatArea(combatEarth, area)
setCombatArea(combatEnergy, area)
setCombatArea(combatPhysical, area)

function onCastSpell(cid, var)
	if isInArray(fireWeapons, getPlayerWeapon(cid).itemid) then
		doCombat(cid, combatFire, var)
		doCombat(cid, combatPhysical, var)
	elseif isInArray(energyWeapons, getPlayerWeapon(cid).itemid) then
		doCombat(cid, combatEnergy, var)
		doCombat(cid, combatPhysical, var)
	elseif isInArray(iceWeapons, getPlayerWeapon(cid).itemid) then
		doCombat(cid, combatIce, var)
		doCombat(cid, combatPhysical, var)
	elseif isInArray(earthWeapons, getPlayerWeapon(cid).itemid) then
		doCombat(cid, combatEarth, var)
		doCombat(cid, combatPhysical, var)
	else
		doCombat(cid, combat, var)
	end
end

Berserk (exori)

Spoiler

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combat, COMBAT_PARAM_USECHARGES, TRUE)
setCombatFormula(combat, COMBAT_FORMULA_SKILL, 0, -90, 0.7, -50)

local combatPhysical = createCombatObject()
setCombatParam(combatPhysical, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combatPhysical, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatFormula(combatPhysical, COMBAT_FORMULA_SKILL, 0, -88, 0.7, -55)

local combatFire = createCombatObject()
setCombatParam(combatFire, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combatFire, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combatFire, COMBAT_PARAM_USECHARGES, TRUE)
setCombatFormula(combatFire, COMBAT_FORMULA_SKILL, 0, -2, 0.2, -5)

local combatIce = createCombatObject()
setCombatParam(combatIce, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combatIce, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combatIce, COMBAT_PARAM_USECHARGES, TRUE)
setCombatFormula(combatIce, COMBAT_FORMULA_SKILL, 0, -2, 0.2, -5)

local combatEarth = createCombatObject()
setCombatParam(combatEarth, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
setCombatParam(combatEarth, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combatEarth, COMBAT_PARAM_USECHARGES, TRUE)
setCombatFormula(combatEarth, COMBAT_FORMULA_SKILL, 0, -2, 0.2, -5)

local combatEnergy = createCombatObject()
setCombatParam(combatEnergy, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combatEnergy, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combatEnergy, COMBAT_PARAM_USECHARGES, TRUE)
setCombatFormula(combatEnergy, COMBAT_FORMULA_SKILL, 0, -2, 0.2, -5)

local area = createCombatArea(AREA_SQUARE1X1)
setCombatArea(combat, area)
setCombatArea(combatFire, area)
setCombatArea(combatIce, area)
setCombatArea(combatEarth, area)
setCombatArea(combatEnergy, area)
setCombatArea(combatPhysical, area)

function onCastSpell(cid, var)
	if isInArray(fireWeapons, getPlayerWeapon(cid).itemid) then
		doCombat(cid, combatFire, var)
		doCombat(cid, combatPhysical, var)
	elseif isInArray(energyWeapons, getPlayerWeapon(cid).itemid) then
		doCombat(cid, combatEnergy, var)
		doCombat(cid, combatPhysical, var)
	elseif isInArray(iceWeapons, getPlayerWeapon(cid).itemid) then
		doCombat(cid, combatIce, var)
		doCombat(cid, combatPhysical, var)
	elseif isInArray(earthWeapons, getPlayerWeapon(cid).itemid) then
		doCombat(cid, combatEarth, var)
		doCombat(cid, combatPhysical, var)
	else
		doCombat(cid, combat, var)
	end
end

 

esse é o meu

050-fuction

Spoiler

function doPlayerGiveItem(cid, itemid, amount, subType)
    local item = 0
    if(isItemStackable(itemid)) then
        item = doCreateItemEx(itemid, amount)
        if(doPlayerAddItemEx(cid, item, true) ~= RETURNVALUE_NOERROR) then
            return false
        end
    else
        for i = 1, amount do
            item = doCreateItemEx(itemid, subType)
            if(doPlayerAddItemEx(cid, item, true) ~= RETURNVALUE_NOERROR) then
                return false
            end
        end
    end

    return true
end

function doSetItemActionId(uid, actionid)
   return doItemSetAttribute(uid, "aid", actionid)
end

function doPlayerGiveItemContainer(cid, containerid, itemid, amount, subType)
    for i = 1, amount do
        local container = doCreateItemEx(containerid, 1)
        for x = 1, getContainerCapById(containerid) do
            doAddContainerItem(container, itemid, subType)
        end

        if(doPlayerAddItemEx(cid, container, true) ~= RETURNVALUE_NOERROR) then
            return false
        end
    end

    return true
end

function doPlayerTakeItem(cid, itemid, amount)
    return getPlayerItemCount(cid, itemid) >= amount and doPlayerRemoveItem(cid, itemid, amount)
end

function doPlayerBuyItem(cid, itemid, count, cost, charges)
    return doPlayerRemoveMoney(cid, cost) and doPlayerGiveItem(cid, itemid, count, charges)
end

function doPlayerBuyItemContainer(cid, containerid, itemid, count, cost, charges)
    return doPlayerRemoveMoney(cid, cost) and doPlayerGiveItemContainer(cid, containerid, itemid, count, charges)
end

function doPlayerSellItem(cid, itemid, count, cost)
    if(not doPlayerTakeItem(cid, itemid, count)) then
        return false
    end

    if(not doPlayerAddMoney(cid, cost)) then
        error('[doPlayerSellItem] Could not add money to: ' .. getPlayerName(cid) .. ' (' .. cost .. 'gp).')
    end

    return true
end

function doPlayerWithdrawMoney(cid, amount)
    if(not getBooleanFromString(getConfigInfo('bankSystem'))) then
        return false
    end

    local balance = getPlayerBalance(cid)
    if(amount > balance or not doPlayerAddMoney(cid, amount)) then
        return false
    end

    doPlayerSetBalance(cid, balance - amount)
    return true
end

function doPlayerDepositMoney(cid, amount)
    if(not getBooleanFromString(getConfigInfo('bankSystem'))) then
        return false
    end

    if(not doPlayerRemoveMoney(cid, amount)) then
        return false
    end

    doPlayerSetBalance(cid, getPlayerBalance(cid) + amount)
    return true
end

function isPremium(cid)
    return (isPlayer(cid) and (getPlayerPremiumDays(cid) > 0 or getBooleanFromString(getConfigInfo('freePremium'))))
end

function getMonthDayEnding(day)
    if(day == "01" or day == "21" or day == "31") then
        return "st"
    elseif(day == "02" or day == "22") then
        return "nd"
    elseif(day == "03" or day == "23") then
        return "rd"
    end

    return "th"
end

function getMonthString(m)
    return os.date("%B", os.time{year = 1970, month = m, day = 1})
end

function getArticle(str)
    return str:find("[AaEeIiOoUuYy]") == 1 and "an" or "a"
end

function isNumber(str)
    return tonumber(str) ~= nil
end

function doPlayerAddAddons(cid, addon)
    for i = 0, table.maxn(maleOutfits) do
        doPlayerAddOutfit(cid, maleOutfits[i], addon)
    end

    for i = 0, table.maxn(femaleOutfits) do
        doPlayerAddOutfit(cid, femaleOutfits[i], addon)
    end
end

function doPlayerWithdrawAllMoney(cid)
    return doPlayerWithdrawMoney(cid, getPlayerBalance(cid))
end

function doPlayerDepositAllMoney(cid)
    return doPlayerDepositMoney(cid, getPlayerMoney(cid))
end

function doPlayerTransferAllMoneyTo(cid, target)
    return doPlayerTransferMoneyTo(cid, target, getPlayerBalance(cid))
end

function playerExists(name)
    return getPlayerGUIDByName(name) ~= 0
end

function getTibiaTime()
    local minutes = getWorldTime()
    local hours = 0
    while (minutes > 60) do
        hours = hours + 1
        minutes = minutes - 60
    end

    return {hours = hours, minutes = minutes}
end

function doWriteLogFile(file, text)
    local f = io.open(file, "a+")
    if(not f) then
        return false
    end

    f:write("[" .. os.date("%d/%m/%Y %H:%M:%S") .. "] " .. text .. "\n")
    f:close()
    return true
end

function getExperienceForLevel(lv)
    lv = lv - 1
    return ((50 * lv * lv * lv) - (150 * lv * lv) + (400 * lv)) / 3
end

function doMutePlayer(cid, time)
    local condition = createConditionObject(CONDITION_MUTED)
    setConditionParam(condition, CONDITION_PARAM_TICKS, time * 1000)
    return doAddCondition(cid, condition)
end

function getPlayerGroupName(cid)
    return getGroupInfo(getPlayerGroupId(cid)).name
end

function getPlayerVocationName(cid)
    return getVocationInfo(getPlayerVocation(cid)).name
end

function getPromotedVocation(vid)
    return getVocationInfo(vid).promotedVocation
end

function doPlayerRemovePremiumDays(cid, days)
    return doPlayerAddPremiumDays(cid, -days)
end

function getPlayerMasterPos(cid)
    return getTownTemplePosition(getPlayerTown(cid))
end

function getHouseOwner(houseId)
    return getHouseInfo(houseId).owner
end

function getHouseName(houseId)
    return getHouseInfo(houseId).name
end

function getHouseEntry(houseId)
    return getHouseInfo(houseId).entry
end

function getHouseRent(houseId)
    return getHouseInfo(houseId).rent
end

function getHousePrice(houseId)
    return getHouseInfo(houseId).price
end

function getHouseTown(houseId)
    return getHouseInfo(houseId).town
end

function getHouseTilesCount(houseId)
    return getHouseInfo(houseId).tiles
end

function getItemNameById(itemid)
    return getItemDescriptionsById(itemid).name
end

function getItemPluralNameById(itemid)
    return getItemDescriptionsById(itemid).plural
end

function getItemArticleById(itemid)
    return getItemDescriptionsById(itemid).article
end

function getItemName(uid)
    return getItemDescriptions(uid).name
end

function getItemPluralName(uid)
    return getItemDescriptions(uid).plural
end

function getItemArticle(uid)
    return getItemDescriptions(uid).article
end

function getItemText(uid)
    return getItemDescriptions(uid).text
end

function getItemSpecialDescription(uid)
    return getItemDescriptions(uid).special
end

function getItemWriter(uid)
    return getItemDescriptions(uid).writer
end

function getItemDate(uid)
    return getItemDescriptions(uid).date
end

function getTilePzInfo(pos)
    return getTileInfo(pos).protection
end

function getTileZoneInfo(pos)
    local tmp = getTileInfo(pos)
    if(tmp.pvp) then
        return 2
    end

    if(tmp.nopvp) then
        return 1
    end

    return 0
end

function doShutdown()
    return doSetGameState(GAMESTATE_SHUTDOWN)
end

function doSummonCreature(name, pos, displayError)
    local displayError, cid = displayError or true, doCreateMonster(name, pos, displayError)
    if(not cid) then
        cid = doCreateNpc(name, pos, displayError)
    end

    return cid
end

function getOnlinePlayers()
    local tmp = getPlayersOnline()
    local players = {}
    for i, cid in ipairs(tmp) do
        table.insert(players, getCreatureName(cid))
    end

    return players
end

function getPlayerByName(name)
    local cid = getCreatureByName(name)
    return isPlayer(cid) and cid or nil
end

function isPlayer(cid)
    return isCreature(cid) and cid >= AUTOID_PLAYERS and cid < AUTOID_MONSTERS
end

function isPlayerGhost(cid)
    if(not isPlayer(cid)) then
        return false
    end

    return getCreatureCondition(cid, CONDITION_GAMEMASTER, GAMEMASTER_INVISIBLE) or getPlayerFlagValue(cid, PLAYERFLAG_CANNOTBESEEN)
end

function isMonster(cid)
    return isCreature(cid) and cid >= AUTOID_MONSTERS and cid < AUTOID_NPCS
end

function isNpc(cid)
    return isCreature(cid) and cid >= AUTOID_NPCS
end

function doPlayerSetExperienceRate(cid, value)
    return doPlayerSetRate(cid, SKILL__LEVEL, value)
end

function doPlayerSetMagicRate(cid, value)
    return doPlayerSetRate(cid, SKILL__MAGLEVEL, value)
end

function doPlayerAddLevel(cid, amount, round)
    local experience, level = 0, getPlayerLevel(cid)
    if(amount > 0) then
        experience = getExperienceForLevel(level + amount) - (round and getPlayerExperience(cid) or getExperienceForLevel(level))
    else
        experience = -((round and getPlayerExperience(cid) or getExperienceForLevel(level)) - getExperienceForLevel(level + amount))
    end

    return doPlayerAddExperience(cid, experience)
end

function doPlayerAddMagLevel(cid, amount)
    for i = 1, amount do
        doPlayerAddSpentMana(cid, (getPlayerRequiredMana(cid, getPlayerMagLevel(cid, true) + 1) - getPlayerSpentMana(cid)) / getConfigInfo('rateMagic'))
    end
    return true
end  

function doPlayerAddSkill(cid, skill, amount, round)
    if(skill == SKILL__LEVEL) then
        return doPlayerAddLevel(cid, amount, round)
    elseif(skill == SKILL__MAGLEVEL) then
        return doPlayerAddMagLevel(cid, amount)
    end

    return doPlayerAddSkillTry(cid, skill, (getPlayerRequiredSkillTries(cid, skill, getPlayerSkillLevel(cid, skill) + 1) - getPlayerSkillTries(cid, skill)) / getConfigInfo('rateSkill'))
end

function getPartyLeader(cid)
    local party = getPartyMembers(cid)
    if(type(party) ~= 'table') then
        return 0
    end

    return party[1]
end

function isInParty(cid)
    return type(getPartyMembers(cid)) == 'table'
end

function isPrivateChannel(channelId)
    return channelId >= CHANNEL_PRIVATE
end

function doPlayerResetIdleTime(cid)
    return doPlayerSetIdleTime(cid, 0)
end

function doBroadcastMessage(text, class)
    local class = class or MESSAGE_STATUS_WARNING
    if(type(class) == 'string') then
        local className = MESSAGE_TYPES[class]
        if(className == nil) then
            return false
        end

        class = className
    elseif(class < MESSAGE_FIRST or class > MESSAGE_LAST) then
        return false
    end

    local players = getPlayersOnline()
    for _, pid in ipairs(players) do
        doPlayerSendTextMessage(pid, class, text)
    end

    print("> Broadcasted message: \"" .. text .. "\".")
    return true
end

function doPlayerBroadcastMessage(cid, text, class, checkFlag, ghost)
    local checkFlag, ghost, class = checkFlag or true, ghost or false, class or TALKTYPE_BROADCAST
    if(checkFlag and not getPlayerFlagValue(cid, PLAYERFLAG_CANBROADCAST)) then
        return false
    end

    if(type(class) == 'string') then
        local className = TALKTYPE_TYPES[class]
        if(className == nil) then
            return false
        end

        class = className
    elseif(class < TALKTYPE_FIRST or class > TALKTYPE_LAST) then
        return false
    end

    local players = getPlayersOnline()
    for _, pid in ipairs(players) do
        doCreatureSay(cid, text, class, ghost, pid)
    end

    print("> " .. getCreatureName(cid) .. " broadcasted message: \"" .. text .. "\".")
    return true
end

function getBooleanFromString(input)
    local tmp = type(input)
    if(tmp == 'boolean') then
        return input
    end

    if(tmp == 'number') then
        return input > 0
    end

    local str = string.lower(tostring(input))
    return (str == "yes" or str == "true" or (tonumber(str) ~= nil and tonumber(str) > 0))
end

function doCopyItem(item, attributes)
    local attributes = attributes or false

    local ret = doCreateItemEx(item.itemid, item.type)
    if(attributes) then
        if(item.actionid > 0) then
            doItemSetAttribute(ret, "aid", item.actionid)
        end
    end

    if(isContainer(item.uid)) then
        for i = (getContainerSize(item.uid) - 1), 0, -1 do
            local tmp = getContainerItem(item.uid, i)
            if(tmp.itemid > 0) then
                doAddContainerItemEx(ret, doCopyItem(tmp, true).uid)
            end
        end
    end

    return getThing(ret)
end

function doRemoveThing(uid)
    if(isCreature(uid)) then
        return doRemoveCreature(uid)
    end

    return doRemoveItem(uid)
end

function setAttackFormula(combat, type, minl, maxl, minm, maxm, min, max)
    local min, max = min or 0, max or 0
    return setCombatFormula(combat, type, -1, 0, -1, 0, minl, maxl, minm, maxm, min, max)
end

function setHealingFormula(combat, type, minl, maxl, minm, maxm, min, max)
    local min, max = min or 0, max or 0
    return setCombatFormula(combat, type, 1, 0, 1, 0, minl, maxl, minm, maxm, min, max)
end

function doChangeTypeItem(uid, subtype)
    local thing = getThing(uid)
    if(thing.itemid < 100) then
        return false
    end

    local subtype = subtype or 1
    return doTransformItem(thing.uid, thing.itemid, subtype)
end

function doSetItemText(uid, text, writer, date)
    local thing = getThing(uid)
    if(thing.itemid < 100) then
        return false
    end

    doItemSetAttribute(uid, "text", text)
    if(writer ~= nil) then
        doItemSetAttribute(uid, "writer", tostring(writer))
        if(date ~= nil) then
            doItemSetAttribute(uid, "date", tonumber(date))
        end
    end

    return true
end

function getFluidSourceType(itemid)
    local item = getItemInfo(itemid)
    return item and item.fluidSource or false
end

function getDepotId(uid)
    return getItemAttribute(uid, "depotid") or false
end

function getItemDescriptions(uid)
    local thing = getThing(uid)
    if(thing.itemid < 100) then
        return false
    end

    local item = getItemInfo(thing.itemid)
    return {
        name = getItemAttribute(uid, "name") or item.name,
        plural = getItemAttribute(uid, "pluralname") or item.plural,
        article = getItemAttribute(uid, "article") or item.article,
        special = getItemAttribute(uid, "description") or "",
        text = getItemAttribute(uid, "text") or "",
        writer = getItemAttribute(uid, "writer") or "",
        date = getItemAttribute(uid, "date") or 0
    }    
end

function getItemWeightById(itemid, count, precision)
    local item, count, precision = getItemInfo(itemid), count or 1, precision or false
    if(not item) then
        return false
    end

    if(count > 100) then
        -- print a warning, as its impossible to have more than 100 stackable items without "cheating" the count
        print('[Warning] getItemWeightById', 'Calculating weight for more than 100 items!')
    end

    local weight = item.weight * count
    --[[if(precision) then
        return weight
    end

    local t = string.explode(tostring(weight), ".")
    if(table.maxn(t) == 2) then
        return tonumber(t[1] .. "." .. string.sub(t[2], 1, 2))
    end]]--

    return weight
end

function getItemWeaponType(uid)
    local thing = getThing(uid)
    if(thing.itemid < 100) then
        return false
    end

    return getItemInfo(thing.itemid).weaponType
end

function getItemRWInfo(uid)
    local thing = getThing(uid)
    if(thing.itemid < 100) then
        return false
    end

    local item, flags = getItemInfo(thing.itemid), 0
    if(item.readable) then
        flags = 1
    end

    if(item.writable) then
        flags = flags + 2
    end

    return flags
end

function getItemLevelDoor(itemid)
    local item = getItemInfo(itemid)
    return item and item.levelDoor or false
end

function isItemStackable(itemid)
    local item = getItemInfo(itemid)
    return item and item.stackable or false
end

function isItemRune(itemid)
    local item = getItemInfo(itemid)
    return item and item.clientCharges or false
end

function isItemDoor(itemid)
    local item = getItemInfo(itemid)
    return item and item.type == 5 or false
end

function isItemContainer(itemid)
    local item = getItemInfo(itemid)
    return item and item.group == 2 or false
end

function isItemFluidContainer(itemid)
    local item = getItemInfo(itemid)
    return item and item.group == 12 or false
end

function isItemMovable(itemid)
    local item = getItemInfo(itemid)
    return item and item.movable or false
end

function isCorpse(uid)
    local thing = getThing(uid)
    if(thing.itemid < 100) then
        return false
    end

    local item = getItemInfo(thing.itemid)
    return item and item.corpseType ~= 0 or false
end

function getContainerCapById(itemid)
    local item = getItemInfo(itemid)
    if(not item or item.group ~= 2) then
        return false
    end

    return item.maxItems
end

function getMonsterAttackSpells(name)
    local monster = getMonsterInfo(name)
    return monster and monster.attacks or false
end

function getMonsterHealingSpells(name)
    local monster = getMonsterInfo(name)
    return monster and monster.defenses or false
end

function getMonsterLootList(name)
    local monster = getMonsterInfo(name)
    return monster and monster.loot or false
end

function getMonsterSummonList(name)
    local monster = getMonsterInfo(name)
    return monster and monster.summons or false
end

function getItemDodgePercent(itemuid)
return getItemAttribute(itemuid, "dodgePercent")
end
function doPlayerAddDodgeItem(cid, itemid, percent)
local item = doPlayerAddItem(cid, itemid)
doItemSetAttribute(item, "description", "[Dodge: "..percent.."%]")
doItemSetAttribute(item, "dodgePercent", percent)
end

 function getPlayerMarriage(player)
local rows = db.getResult("SELECT `marriage` FROM `players` WHERE `id` = " .. player .. ";")
local marry = rows:getDataInt("marriage")
if marry ~= 0 then
return marry
else
return FALSE
end
end

function addMarryStatus(player,partner)
db.query("UPDATE `players` SET `marrystatus` = " .. partner .. " WHERE `id` = " .. player .. ";")
return TRUE
end

function doCancelMarryStatus(player)
db.query("UPDATE `players` SET `marrystatus` = 0 WHERE `id` = " .. player .. ";")
return TRUE
end

function getMarryStatus(player)
local stat = db.getResult("SELECT `id` FROM `players` WHERE `marrystatus` = " .. player .. ";")
if(stat:getID() == -1) then
return FALSE
else
local info = stat:getDataInt("id")
return info
end
end

function getOwnMarryStatus(player)
local stat = db.getResult("SELECT `marrystatus` FROM `players` WHERE `id` = " .. player .. ";")
if(stat:getID() == -1) then
return FALSE
else
local info = stat:getDataInt("marrystatus")
return info
end
end

function isOnline(player)
local rows = db.getResult("SELECT `online` FROM `players` WHERE `id` = " .. player .. ";")
local on = rows:getDataInt("online")
if on ~= 0 then
return TRUE
else
return FALSE
end
end

 

Editado por Carlinhous1996 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Solução

1: isso voce vai colocar no script da magia msm 
 

Spoiler


local fireWeapons = {7744, 7745, 7746, 7747, 7748, 7749, 7750, 7751, 7752, 7753, 7754, 7755, 7756, 7757, 7758}
local energyWeapons = {7869, 7870, 7871, 7872, 7873, 7874, 7875, 7876, 7877, 7878, 7879, 7880, 7881, 7882, 7883}
local earthWeapons = {7854, 7855, 7856, 7857, 7858, 7859, 7860, 7861, 7862, 7863, 7864, 7865, 7866, 7867, 7868}
local iceWeapons = {7763, 7764, 7765, 7766, 7767, 7768, 7769, 7770, 7771, 7772, 7773, 7774, 7775, 7776, 7777}


2: tem opção melhor q é colocar um formular q calcule o dano elemental de acordo com o a quantidade de dano q va ter na arma

formular:

Spoiler

function onGetFormulaValues(cid, level, skill, attack, element, factor)
    local skillTotal = attack / 2 * skill / 2
    local elemental =  math.ceil((element / 2 * skill / 2 ))
    return -(skillTotal * 0.9), -(skillTotal * 1.3), -math.random(elemental/2, elemental)
end

setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

@Carlinhous1996

Editado por ernaix69 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
12 horas atrás, ernaix69 disse:

1: isso voce vai colocar no script da magia msm 
 

  Ocultar conteúdo








local fireWeapons = {7744, 7745, 7746, 7747, 7748, 7749, 7750, 7751, 7752, 7753, 7754, 7755, 7756, 7757, 7758}
local energyWeapons = {7869, 7870, 7871, 7872, 7873, 7874, 7875, 7876, 7877, 7878, 7879, 7880, 7881, 7882, 7883}
local earthWeapons = {7854, 7855, 7856, 7857, 7858, 7859, 7860, 7861, 7862, 7863, 7864, 7865, 7866, 7867, 7868}
local iceWeapons = {7763, 7764, 7765, 7766, 7767, 7768, 7769, 7770, 7771, 7772, 7773, 7774, 7775, 7776, 7777}


2: tem opção melhor q é colocar um formular q calcule o dano elemental de acordo com o a quantidade de dano q va ter na arma

formular:

  Ocultar conteúdo

function onGetFormulaValues(cid, level, skill, attack, element, factor)
    local skillTotal = attack / 2 * skill / 2
    local elemental =  math.ceil((element / 2 * skill / 2 ))
    return -(skillTotal * 0.9), -(skillTotal * 1.3), -math.random(elemental/2, elemental)
end

setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

@Carlinhous1996

po mano funcionou certinho. muito obrigado pela ajuda.

como faço para adicionar essa formula ? ja me bati aqui e nao consegui, como pode ver sou leigo mesmo kkkkk

realmente essa formula nao vira, pois esse é o atk do meu item:

13:15 You see a war axe (Atk:210, Def:40, protection energy -10%).

It is temporarily enchanted with energy (0 physical + 210 energy damage).

e o dano maior é de physical e quase nada de energy, onde deveria ser so energy

SOU MUITO GRATO!

Editado por Carlinhous1996 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
18 horas atrás, ernaix69 disse:

1: isso voce vai colocar no script da magia msm 
 

  Mostrar conteúdo oculto


















local fireWeapons = {7744, 7745, 7746, 7747, 7748, 7749, 7750, 7751, 7752, 7753, 7754, 7755, 7756, 7757, 7758}
local energyWeapons = {7869, 7870, 7871, 7872, 7873, 7874, 7875, 7876, 7877, 7878, 7879, 7880, 7881, 7882, 7883}
local earthWeapons = {7854, 7855, 7856, 7857, 7858, 7859, 7860, 7861, 7862, 7863, 7864, 7865, 7866, 7867, 7868}
local iceWeapons = {7763, 7764, 7765, 7766, 7767, 7768, 7769, 7770, 7771, 7772, 7773, 7774, 7775, 7776, 7777}


2: tem opção melhor q é colocar um formular q calcule o dano elemental de acordo com o a quantidade de dano q va ter na arma

formular:

  Mostrar conteúdo oculto

function onGetFormulaValues(cid, level, skill, attack, element, factor)
    local skillTotal = attack / 2 * skill / 2
    local elemental =  math.ceil((element / 2 * skill / 2 ))
    return -(skillTotal * 0.9), -(skillTotal * 1.3), -math.random(elemental/2, elemental)
end

setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")

@Carlinhous1996

eu testei aqui e a magia esta sem nenhum exausted e nem gasta nada de mana

voce pode usa-la tipo o god centena de vezes por segundo, sabe por que ?

Spoiler

    <instant name="Fierce Berserk" words="exori gran" lvl="70" mana="340" prem="1" needweapon="1" exhaustion="2000" needlearn="0" event="script" value="attack/fierce berserk.lua">


 

tentei encaixar mas nao consegui

    if exhaustion.check(cid, 3200) then
        doPlayerSendCancel(cid, "You are exhausted.")
        doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
       return false
    end
    exhaustion.set(cid, 3200, 10)
   return doCombat(cid, combat, var)
end

 

 

consegui adicionar a formula depois de muita luta

está correto ?

 

Spoiler

local fireWeapons = {7753, 7756, 7747}
local energyWeapons = {7878, 7788, 7872}
local earthWeapons = {7863, 7866, 7857}
local iceWeapons = {7772, 7775, 7766}

 

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combat, COMBAT_PARAM_USECHARGES, TRUE)
setCombatFormula(combat, COMBAT_FORMULA_SKILL, 0.8, 5, 1.6, 0)

local combatPhysical = createCombatObject()
setCombatParam(combatPhysical, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combatPhysical, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatFormula(combatPhysical, COMBAT_FORMULA_SKILL, 0.6, 5, 1.4, 0)

local combatFire = createCombatObject()
setCombatParam(combatFire, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combatFire, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combatFire, COMBAT_PARAM_USECHARGES, TRUE)
setCombatFormula(combatFire, COMBAT_FORMULA_SKILL, 7, -75, 10, -95)

local combatIce = createCombatObject()
setCombatParam(combatIce, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combatIce, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combatIce, COMBAT_PARAM_USECHARGES, TRUE)
setCombatFormula(combatIce, COMBAT_FORMULA_SKILL, 7, -75, 10, -95)

local combatEarth = createCombatObject()
setCombatParam(combatEarth, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
setCombatParam(combatEarth, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combatEarth, COMBAT_PARAM_USECHARGES, TRUE)
setCombatFormula(combatEarth, COMBAT_FORMULA_SKILL, 7, -75, 10, -95)

local combatEnergy = createCombatObject()
setCombatParam(combatEnergy, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combatEnergy, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combatEnergy, COMBAT_PARAM_USECHARGES, TRUE)
setCombatFormula(combatEnergy, COMBAT_FORMULA_SKILL, 7, -75, 10, -95)

local area = createCombatArea(AREA_SQUARE1X1)
setCombatArea(combat, area)
setCombatArea(combatFire, area)
setCombatArea(combatIce, area)
setCombatArea(combatEarth, area)
setCombatArea(combatEnergy, area)
setCombatArea(combatPhysical, area)

function onGetFormulaValues(cid, level, skill, attack, element, factor)
    local skillTotal = attack / 3 * skill / 4
    local elemental =  math.ceil((element / 2 * skill / 2 ))
    return -(skillTotal * 0.9), -(skillTotal * 1.3), -math.random(elemental/2, elemental)
end

setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
function onCastSpell(cid, var)
        doCreatureSay(cid, "exori gran", TALKTYPE_ORANGE_1)
    if isInArray(fireWeapons, getPlayerWeapon(cid).itemid) then
        doCombat(cid, combatFire, var)
        doCombat(cid, combatPhysical, var)
    elseif isInArray(energyWeapons, getPlayerWeapon(cid).itemid) then
        doCombat(cid, combatEnergy, var)
        doCombat(cid, combatPhysical, var)
    elseif isInArray(iceWeapons, getPlayerWeapon(cid).itemid) then
        doCombat(cid, combatIce, var)
        doCombat(cid, combatPhysical, var)
    elseif isInArray(earthWeapons, getPlayerWeapon(cid).itemid) then
        doCombat(cid, combatEarth, var)
        doCombat(cid, combatPhysical, var)
    else
        doCombat(cid, combat, var)
    end
end

 

Editado por carloos (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
12 horas atrás, ernaix69 disse:

me diz qual a magia vc ta tentando fazer isso q eu mando ja ela funcionando com a formula q eu mandei

OBRIGADO PELA ATENÇAO.

essa é a exori.

Spoiler

    <instant name="Berserk" words="exori" lvl="35" mana="115" prem="1" needweapon="1" exhaustion="2000" needlearn="0" event="script" value="attack/berserk.lua">
        <vocation id="4"/>
        <vocation id="8"/>

Spoiler

local fireWeapons = {7753, 7756, 7747, 7751, 7757, 7745}
local energyWeapons = {7878, 7788, 7872,7870, 7882, 7876}
local earthWeapons = {7863, 7866, 7857, 7855, 7867, 7861}
local iceWeapons = {7772, 7775, 7766, 7770, 7776, 7764}

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combat, COMBAT_PARAM_USECHARGES, TRUE)
setCombatFormula(combat, COMBAT_FORMULA_SKILL, 0, -0, 0.1, -0)

local combatPhysical = createCombatObject()
setCombatParam(combatPhysical, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
setCombatParam(combatPhysical, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatFormula(combatPhysical, COMBAT_FORMULA_SKILL, 0, -0, 0.1, -0)

local combatFire = createCombatObject()
setCombatParam(combatFire, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
setCombatParam(combatFire, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combatFire, COMBAT_PARAM_USECHARGES, TRUE)
setCombatFormula(combatFire, COMBAT_FORMULA_SKILL, 2, -35, 4, -45)

local combatIce = createCombatObject()
setCombatParam(combatIce, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
setCombatParam(combatIce, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combatIce, COMBAT_PARAM_USECHARGES, TRUE)
setCombatFormula(combatIce, COMBAT_FORMULA_SKILL, 2, -35, 4, -45)

local combatEarth = createCombatObject()
setCombatParam(combatEarth, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
setCombatParam(combatEarth, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combatEarth, COMBAT_PARAM_USECHARGES, TRUE)
setCombatFormula(combatEarth, COMBAT_FORMULA_SKILL, 2, -35, 4, -45)

local combatEnergy = createCombatObject()
setCombatParam(combatEnergy, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
setCombatParam(combatEnergy, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
setCombatParam(combatEnergy, COMBAT_PARAM_USECHARGES, TRUE)
setCombatFormula(combatEnergy, COMBAT_FORMULA_SKILL, 2, -35, 4, -45)

local area = createCombatArea(AREA_SQUARE1X1)
setCombatArea(combat, area)
setCombatArea(combatFire, area)
setCombatArea(combatIce, area)
setCombatArea(combatEarth, area)
setCombatArea(combatEnergy, area)
setCombatArea(combatPhysical, area)

function onGetFormulaValues(cid, level, skill, attack, element, factor)
    local skillTotal = attack / 9 * skill / 4
    local elemental =  math.ceil((element / 2 * skill / 2 ))
    return -(skillTotal * 0.9), -(skillTotal * 1.3), -math.random(elemental/2, elemental)
end

setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")
function onCastSpell(cid, var)
        doCreatureSay(cid, "exori", TALKTYPE_ORANGE_1)
    if isInArray(fireWeapons, getPlayerWeapon(cid).itemid) then
        doCombat(cid, combatFire, var)
        doCombat(cid, combatPhysical, var)
    elseif isInArray(energyWeapons, getPlayerWeapon(cid).itemid) then
        doCombat(cid, combatEnergy, var)
        doCombat(cid, combatPhysical, var)
    elseif isInArray(iceWeapons, getPlayerWeapon(cid).itemid) then
        doCombat(cid, combatIce, var)
        doCombat(cid, combatPhysical, var)
    elseif isInArray(earthWeapons, getPlayerWeapon(cid).itemid) then
        doCombat(cid, combatEarth, var)
        doCombat(cid, combatPhysical, var)
    else
        doCombat(cid, combat, var)
    end
end

 

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo