Postado Novembro 5, 2022 2 anos 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 Novembro 5, 2022 2 anos por Carlinhous1996 (veja o histórico de edições)
Postado Novembro 6, 2022 2 anos 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 Novembro 6, 2022 2 anos por ernaix69 (veja o histórico de edições)
Postado Novembro 6, 2022 2 anos Autor 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 Novembro 6, 2022 2 anos por Carlinhous1996 (veja o histórico de edições)
Postado Novembro 6, 2022 2 anos 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 Novembro 6, 2022 2 anos por carloos (veja o histórico de edições)
Postado Novembro 7, 2022 2 anos me diz qual a magia vc ta tentando fazer isso q eu mando ja ela funcionando com a formula q eu mandei
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.