GGgames 2 Postado Fevereiro 2, 2016 Share Postado Fevereiro 2, 2016 (editado) Estou com um problema no meu otserv que notei somente agora... O magic level dos players está sempre com o mesmo "peso" para upar... Por exemplo, caso um player, ML 5, fale "regeneration", ele upa um de magic level. Se algum player ML 90, conjuga a magia "regeneration" também irá upar 1 de ML. A principio eu achava que o problema era no config.lua -- RATES --, mas mesmo assim lá está -> rateMagic = 1.0 Alguém sabe pq quanto mais auto meu ML, não fica mais dificil upa-lo? Obrigado! aqui está meu config.lua: -- The Forgotten Server Config -- Account manager accountManager = true namelockManager = true newPlayerChooseVoc = true newPlayerSpawnPosX = 1027 newPlayerSpawnPosY = 912 newPlayerSpawnPosZ = 5 newPlayerTownId = 1 newPlayerLevel = 1 newPlayerMagicLevel = 1 generateAccountNumber = false -- Unjustified kills -- NOTE: *Banishment and *BlackSkull variables are >summed up< -- (dailyFragsToRedSkull + dailyFragsToBanishment) with their -- *RedSkull equivalents. -- Auto banishing works only if useBlackSkull set to negative. -- advancedFragList is not advised if you use huge frags -- requirements. redSkullLength = 30 * 24 * 60 * 60 blackSkullLength = 45 * 24 * 60 * 60 dailyFragsToRedSkull = 6 weeklyFragsToRedSkull = 30 monthlyFragsToRedSkull = 60 dailyFragsToBlackSkull = dailyFragsToRedSkull weeklyFragsToBlackSkull = weeklyFragsToRedSkull monthlyFragsToBlackSkull = monthlyFragsToRedSkull dailyFragsToBanishment = dailyFragsToRedSkull weeklyFragsToBanishment = weeklyFragsToRedSkull monthlyFragsToBanishment = monthlyFragsToRedSkull blackSkulledDeathHealth = 40 blackSkulledDeathMana = 0 useBlackSkull = true useFragHandler = true advancedFragList = false -- Banishments -- violationNameReportActionType 1 = just a report, 2 = name lock, 3 = player banishment -- killsBanLength works only if useBlackSkull option is disabled. notationsToBan = 10 warningsToFinalBan = 4 warningsToDeletion = 5 banLength = 7 * 24 * 60 * 60 killsBanLength = 7 * 24 * 60 * 60 finalBanLength = 30 * 24 * 60 * 60 ipBanishmentLength = 1 * 24 * 60 * 60 broadcastBanishments = true maxViolationCommentSize = 200 violationNameReportActionType = 2 autoBanishUnknownBytes = false -- Battle -- NOTE: showHealingDamageForMonsters inheritates from showHealingDamage. -- loginProtectionPeriod is the famous Tibia anti-magebomb system. -- deathLostPercent set to nil enables manual mode. worldType = "pvp" protectionLevel = 99 pvpTileIgnoreLevelAndVocationProtection = true pzLocked = 60 * 1000 huntingDuration = 60 * 1000 criticalHitChance = 7 criticalHitMultiplier = 1 displayCriticalHitNotify = false removeWeaponAmmunition = true removeWeaponCharges = false removeRuneCharges = true whiteSkullTime = 15 * 60 * 1000 noDamageToSameLookfeet = false showHealingDamage = true showHealingDamageForMonsters = false fieldOwnershipDuration = 5 * 1000 stopAttackingAtExit = true oldConditionAccuracy = false loginProtectionPeriod = 10 * 1000 deathLostPercent = 5 stairhopDelay = 2 * 1000 pushCreatureDelay = 1 * 1000 deathContainerId = 1987 gainExperienceColor = 2215 addManaSpentInPvPZone = true squareColor = 0 allowFightback = true -- Connection config worldId = 0 ip = "189.35.187.55" bindOnlyConfiguredIpAddress = false loginPort = 7171 gamePort = 7172 adminPort = 7171 statusPort = 7171 loginTries = 10 retryTimeout = 5 * 1000 loginTimeout = 60 * 1000 maxPlayers = 125 motd = "Bem Vindo ao NarutoShinobi!" displayOnOrOffAtCharlist = false onePlayerOnlinePerAccount = false allowClones = false serverName = "NarutoShinobi" loginMessage = "Bem Vindo ao Naruto Shinobi Online." statusTimeout = 5 * 60 * 1000 replaceKickOnLogin = true forceSlowConnectionsToDisconnect = false loginOnlyWithLoginServer = false premiumPlayerSkipWaitList = false -- Database -- NOTE: sqlFile is used only by sqlite database, and sqlKeepAlive by mysql database. -- To disable sqlKeepAlive such as mysqlReadTimeout use 0 value. sqlType = "sqlite" sqlHost = "localhost" sqlPort = 3306 sqlUser = "root" sqlPass = "" sqlDatabase = "forgottenserver" sqlFile = "forgottenserver.s3db" sqlKeepAlive = 0 mysqlReadTimeout = 10 mysqlWriteTimeout = 10 encryptionType = "sha1" -- Deathlist deathListEnabled = true deathListRequiredTime = 1 * 60 * 1000 deathAssistCount = 19 maxDeathRecords = 5 -- Guilds ingameGuildManagement = true levelToFormGuild = 100 premiumDaysToFormGuild = 0 guildNameMinLength = 3 guildNameMaxLength = 20 -- Highscores highscoreDisplayPlayers = 15 updateHighscoresAfterMinutes = 60 -- Houses buyableAndSellableHouses = true houseNeedPremium = false bedsRequirePremium = false levelToBuyHouse = 110 housesPerAccount = 0 houseRentAsPrice = false housePriceAsRent = false housePriceEachSquare = 5000 houseRentPeriod = "week" houseCleanOld = 0 guildHalls = false -- Item usage timeBetweenActions = 200 timeBetweenExActions = 1000 hotkeyAimbotEnabled = true -- Map -- NOTE: storeTrash costs more memory, but will perform alot faster cleaning. mapName = "nowo" mapAuthor = "Lks" randomizeTiles = true storeTrash = true cleanProtectedZones = true mailboxDisabledTowns = "-1" -- Process -- NOTE: defaultPriority works only on Windows and niceLevel on *nix -- coresUsed are seperated by comma cores ids used by server process, -- default is -1, so it stays untouched (automaticaly assigned by OS). defaultPriority = "high" niceLevel = 5 coresUsed = "-1" -- Startup optimizeDatabaseAtStartup = true removePremiumOnInit = true confirmOutdatedVersion = false -- Spells formulaLevel = 5.0 formulaMagic = 1.0 bufferMutedOnSpellFailure = false spellNameInsteadOfWords = true emoteSpells = true -- Outfits allowChangeOutfit = false allowChangeColors = false allowChangeAddons = false disableOutfitsForPrivilegedPlayers = true addonsOnlyPremium = true -- Miscellaneous -- NOTE: promptExceptionTracerErrorBox works only with precompiled support feature, -- called "exception tracer" (__EXCEPTION_TRACER__ flag). dataDirectory = "data/" bankSystem = true displaySkillLevelOnAdvance = true promptExceptionTracerErrorBox = true separateViplistPerCharacter = false maximumDoorLevel = 500 maxMessageBuffer = 20 -- Saving-related -- useHouseDataStorage usage may be found at README. saveGlobalStorage = true useHouseDataStorage = false storePlayerDirection = false -- Loot -- monsterLootMessage 0 to disable, 1 - only party, 2 - only player, 3 - party or player (like Tibia's) checkCorpseOwner = true monsterLootMessage = 3 monsterLootMessageType = 25 -- Ghost mode ghostModeInvisibleEffect = false ghostModeSpellEffects = true -- Limits idleWarningTime = 14 * 60 * 1000 idleKickTime = 30 * 60 * 1000 expireReportsAfterReads = 1 playerQueryDeepness = 2 maxItemsPerPZTile = 0 maxItemsPerHouseTile = 0 -- Premium-related freePremium = false premiumForPromotion = false -- Blessings -- NOTE: blessingReduction* regards items/containers loss. -- eachBlessReduction is how much each bless reduces the experience/magic/skills loss. blessingOnlyPremium = true blessingReductionBase = 30 blessingReductionDecreament = 3 eachBlessReduction = 8 -- Rates -- NOTE: experienceStages configuration is located in data/XML/stages.xml. -- rateExperienceFromPlayers 0 to disable. experienceStages = true rateExperience = 1.0 rateExperienceFromPlayers = 0 rateSkill = 1.0 rateMagic = 1.0 rateLoot = 7.0 rateSpawn = 7 -- Monster rates rateMonsterHealth = 1.0 rateMonsterMana = 1.0 rateMonsterAttack = 1.0 rateMonsterDefense = 1.0 -- Experience from players -- NOTE: min~Threshold* set to 0 will disable the minimum threshold: -- player will gain experience from every lower leveled player. -- max~Threshold* set to 0 will disable the maximum threshold: -- player will gain experience from every higher leveled player. minLevelThresholdForKilledPlayer = 0.9 maxLevelThresholdForKilledPlayer = 1.1 -- Stamina -- NOTE: Stamina is stored in miliseconds, so seconds are multiplied by 1000. -- rateStaminaHits multiplies every hit done a creature, which are later -- multiplied by player attack speed. -- rateStaminaGain is divider of every logged out second, eg: -- 60000 / 3 = 20000 milliseconds, what gives 20 stamina seconds for 1 minute being logged off. -- rateStaminaThresholdGain is divider for the premium stamina. -- staminaRatingLimit* is in minutes. rateStaminaLoss = 7 rateStaminaGain = 3 rateStaminaThresholdGain = 12 staminaRatingLimitTop = 2 * 60 staminaRatingLimitBottom = 1 * 60 rateStaminaAboveNormal = 1.5 rateStaminaUnderNormal = 0.5 staminaThresholdOnlyPremium = true -- Party -- NOTE: experienceShareLevelDifference is float number. -- experienceShareLevelDifference is highestLevel * value experienceShareRadiusX = 30 experienceShareRadiusY = 30 experienceShareRadiusZ = 1 experienceShareLevelDifference = 2 / 3 extraPartyExperienceLimit = 20 extraPartyExperiencePercent = 5 experienceShareActivity = 2 * 60 * 1000 -- Global save -- NOTE: globalSaveHour means like 03:00, not that it will save every 3 hours, -- if you want such a system please check out data/globalevents/globalevents.xml. globalSaveEnabled = false globalSaveHour = 8 shutdownAtGlobalSave = true cleanMapAtGlobalSave = false -- Spawns deSpawnRange = 2 deSpawnRadius = 50 -- Summons maxPlayerSummons = 4 teleportAllSummons = true teleportPlayerSummons = true -- Status ownerName = "NarutoShinobi" ownerEmail = "narutoshinobi@[member='Hotmail'].com" url = "narutoshinobi.com" location = "Brazil" displayGamemastersWithOnlineCommand = false -- Logs -- NOTE: This kind of logging does not work in GUI version. -- For such, please compile the software with __GUI_LOGS__ flag. adminLogsEnabled = false displayPlayersLogging = true prefixChannelLogs = "" runFile = "" outLogName = "" errorLogName = "" truncateLogsOnStartup = false Editado Fevereiro 2, 2016 por GGgames Link para o comentário Compartilhar em outros sites More sharing options...
0 narutomaniacos 14 Postado Fevereiro 3, 2016 Share Postado Fevereiro 3, 2016 (editado) Em creaturescript/scripts/skills (caso não tenha pasta skills crie) copie e cole qualquer script, então o renomeie para "stagesconfig" e cole isso dentro: skillConfig = {skill = getConfigValue('rateSkill'), magiclevel = getConfigValue('rateMagic')} skillStages = {} skillStages[sKILL_FIST] = {{0,3},{30,3},{50,2},{80,1},{100,0.90},{130,0.50}} skillStages[sKILL_CLUB] = {{0,10},{30,8},{50,6},{80,4},{100,2},{130,0.50}} skillStages[sKILL_SWORD] = {{0,10},{30,6},{50,4},{80,2},{100,1},{130,0.25}} skillStages[sKILL_AXE] = {{0,10},{30,8},{50,6},{80,4},{100,2},{130,0.50}} skillStages[sKILL_DISTANCE] = {{0,10},{30,8},{50,6},{80,4},{100,2},{130,0.50}} skillStages[sKILL_SHIELD] = {{0,10},{30,8},{50,6},{80,4},{100,2},{130,0.50}} skillStages[sKILL_FISHING] = {{0,10},{30,8},{50,6},{80,4},{100,2},{130,0.50}} -- uncomment it to make it work, you can remove other skill config if you dont need it skillStages[sKILL__MAGLEVEL] = {{0,2},{30,1},{50,0.90},{80,0.80},{100,0.60},{130,0.50}} showInfoOnAdvance = false -- send player message about skill rate change showInfoOnLogin = false -- send player message about skill rates when he login function getPlayerSkillRatesText(cid) local skillInfo = getPlayerRates(cid) return "Rates: [ Magic Level: " .. skillInfo[sKILL__MAGLEVEL] * skillConfig.magiclevel .. "x || Fist: " .. skillInfo[sKILL_FIST] * skillConfig.skill .. "x | Club: " .. skillInfo[sKILL_CLUB] * skillConfig.skill .. "x | Sword: " .. skillInfo[sKILL_SWORD] * skillConfig.skill .. "x | Axe: " .. skillInfo[sKILL_AXE] * skillConfig.skill .. "x | Distance: " .. skillInfo[sKILL_DISTANCE] * skillConfig.skill .. " | Shielding: " .. skillInfo[sKILL_SHIELD] * skillConfig.skill .. "x | Fishing: " .. skillInfo[sKILL_FISHING] * skillConfig.skill .. "x ]" end Depois, copie e cole qualquer script, então o renomeie para "skillstageslogin" e cole isso dentro: dofile(getDataDir() .. "creaturescripts/scripts/skills/stagesconfig.lua") function onLogin(cid) for skill, skillStage in pairs(skillStages) do if(skill >= 0 and skill <= 6) then nowSkill = getPlayerSkillLevel(cid, skill) else nowSkill = getPlayerMagLevel(cid, true) end for i, skillRateInfo in pairs(skillStage) do if(nowSkill >= skillRateInfo[1]) then skillRate = skillRateInfo[2] else break end end doPlayerSetRate(cid, skill, skillRate) end if(showInfoOnLogin) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, getPlayerSkillRatesText(cid)) end registerCreatureEvent(cid, "SkillStagesAdvance") return TRUE end Depois, copie e cole qualquer script, então o renomeie para "skillstagesadvance" e cole isso dentro: dofile(getDataDir() .. "creaturescripts/scripts/skills/stagesconfig.lua") function onAdvance(cid, skill, oldLevel, newLevel) if(skillStages[skill] ~= nil) then local skillRate = 1 local oldRates = getPlayerRates(cid) for i, skillRateInfo in pairs(skillStages[skill]) do if(newLevel >= skillRateInfo[1]) then skillRate = skillRateInfo[2] else break end end doPlayerSetRate(cid, skill, skillRate) if(showInfoOnAdvance and skillRate ~= oldRates[skill]) then if(skill >= 0 and skill <= 6) then configRate = skillConfig.skill else configRate = skillConfig.magiclevel end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, SKILL_NAMES[skill] .. " rate changed from " .. oldRates[skill] * configRate .. "x to " .. skillRate * configRate .. "x. " .. getPlayerSkillRatesText(cid)) end end return true end Depois vá em login.lua e registre as tags: registerCreatureEvent(cid, "SkillStagesLogin") registerCreatureEvent(cid, "SkillStagesAdvance") e então em creaturescripts.xml: <event type="login" name="SkillStagesLogin" event="script" value="skills/skillstageslogin.lua" /> <event type="advance" name="SkillStagesAdvance" event="script" value="skills/skillstagesadvance.lua" /> o script é autoexplicativo: {30,3} = no level 30 o rate skill sera 3, configure todas as skills do seu server do jeito que desejar! Espero ter ajudado. Editado Fevereiro 3, 2016 por narutomaniacos Link para o comentário Compartilhar em outros sites More sharing options...
0 Vasto Lord X 1 Postado Fevereiro 2, 2016 Share Postado Fevereiro 2, 2016 rateMagic = 1.0 Muda Para 0.0001 Link para o comentário Compartilhar em outros sites More sharing options...
0 GGgames 2 Postado Fevereiro 2, 2016 Autor Share Postado Fevereiro 2, 2016 Mudei, e não da mais pra upar ML auehaueha, tipo, o rate está funcionando, o que eu não sei é por que as magias não vão ficando mais dificil quanto maior o ml sera que não tem algo tipo as Stages da exp? um cara ml 1 upa a mesma quantidade que um ml 400 por exemplo. A magias dão a mesma porcentagem no ml em todos os niveis Link para o comentário Compartilhar em outros sites More sharing options...
0 Gabrielkss 10 Postado Fevereiro 2, 2016 Share Postado Fevereiro 2, 2016 isso é na magia mano. posta a magia ai. Link para o comentário Compartilhar em outros sites More sharing options...
0 Vasto Lord X 1 Postado Fevereiro 2, 2016 Share Postado Fevereiro 2, 2016 Mudei, e não da mais pra upar ML auehaueha, tipo, o rate está funcionando, o que eu não sei é por que as magias não vão ficando mais dificil quanto maior o ml sera que não tem algo tipo as Stages da exp? um cara ml 1 upa a mesma quantidade que um ml 400 por exemplo. A magias dão a mesma porcentagem no ml em todos os niveis Mudar Para 0.002 e Subindo Até Achar Um Que Você Goste Link para o comentário Compartilhar em outros sites More sharing options...
0 GGgames 2 Postado Fevereiro 3, 2016 Autor Share Postado Fevereiro 3, 2016 isso é na magia mano. posta a magia ai. Hmm, vou colocar uma que esta dando isso.. ex: biju rasengan No spells.xml está assim: <instant name="Biju Rasengan" words="biju rasengan" lvl="275" mana="8200" prem="0" needtarget="1" range="3" blockwalls="1" exhaustion="1500" needlearn="0" event="script" value="naruto/senporasenshuriken.lua"> <vocation id="9"/> <vocation id="10"/> <vocation id="11"/> <vocation id="12"/> </instant> e a magia: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 32) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -137.2, 1, -133.2, 1) function onCastSpell(cid, var) local position1 = {x=getThingPosition(getCreatureTarget(cid)).x+2, y=getThingPosition(getCreatureTarget(cid)).y, z=getThingPosition(getCreatureTarget(cid)).z} doSendMagicEffect(position1, 128) return doCombat(cid, combat, var) end @@vasto_lord_x Não é isso que estou querendo mudar amigo, mas mesmo assim obrigado Link para o comentário Compartilhar em outros sites More sharing options...
0 felzan 64 Postado Fevereiro 3, 2016 Share Postado Fevereiro 3, 2016 Posta seu script de advance Está em creaturescripts/script Link para o comentário Compartilhar em outros sites More sharing options...
0 GGgames 2 Postado Fevereiro 3, 2016 Autor Share Postado Fevereiro 3, 2016 Posta seu script de advance Está em creaturescripts/script local config = { savePlayersOnAdvance = true } function onAdvance(cid, skill, oldLevel, newLevel) if(config.savePlayersOnAdvance) then doPlayerSave(cid, true) end return true end Ta ai, esse chama advancesave, é o unico com o nome que possui advance. Eu abri umas das magias, todas estão bugadas, upao iguais todos os niveis, mas o big regeneration está estranho olha só: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) function onGetFormulaValues(cid, level, maglevel) local min = ((level*35)+(maglevel*1.19)+7560) local max = ((level*35)+(maglevel*1.19)+8990) return min, max end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") function onCastSpell(cid, var) return doCombat(cid, combat, var) end Então com essa function onGetFormulaValues, está dando mto ml pro player tbm.. Link para o comentário Compartilhar em outros sites More sharing options...
0 felzan 64 Postado Fevereiro 3, 2016 Share Postado Fevereiro 3, 2016 (editado) Reduz o valor do min e max pra testar. Achava que a mana removida influenciava o ML, mas como é Naturo não sei se é normal isso. Edit: Olhei numas sources de TFS 0.3 que tenho aqui e realmente, o ML é aumentado de acordo com a mana removida, não com o dano. Isso se for esse realmente seu problema. Editado Fevereiro 3, 2016 por felzan Link para o comentário Compartilhar em outros sites More sharing options...
0 GGgames 2 Postado Fevereiro 3, 2016 Autor Share Postado Fevereiro 3, 2016 acho que não é a mana removida não, pq esse big regeneration usa apenas 800 de mana.. o problema eh que não vai ficando dificil upar o ml. Ele upa a mesma quantia em todos os niveis. exemplo ML 1, big regeneration upa 2% No ML 60, o big regeneration ira upar 2% também saca, era pra upar bem menos Link para o comentário Compartilhar em outros sites More sharing options...
0 felzan 64 Postado Fevereiro 3, 2016 Share Postado Fevereiro 3, 2016 Eu entendi seu problema. O que estou dizendo é que nas SOURCES do servidor (que eu tenho aqui) o ML sobe de acordo com a mana usada. Já tentou reduzir os valores? da fórmula e da mana usava? Link para o comentário Compartilhar em outros sites More sharing options...
0 GGgames 2 Postado Fevereiro 5, 2016 Autor Share Postado Fevereiro 5, 2016 Em creaturescript/scripts/skills (caso não tenha pasta skills crie) copie e cole qualquer script, então o renomeie para "stagesconfig" e cole isso dentro: skillConfig = {skill = getConfigValue('rateSkill'), magiclevel = getConfigValue('rateMagic')} skillStages = {} skillStages[sKILL_FIST] = {{0,3},{30,3},{50,2},{80,1},{100,0.90},{130,0.50}} skillStages[sKILL_CLUB] = {{0,10},{30,8},{50,6},{80,4},{100,2},{130,0.50}} skillStages[sKILL_SWORD] = {{0,10},{30,6},{50,4},{80,2},{100,1},{130,0.25}} skillStages[sKILL_AXE] = {{0,10},{30,8},{50,6},{80,4},{100,2},{130,0.50}} skillStages[sKILL_DISTANCE] = {{0,10},{30,8},{50,6},{80,4},{100,2},{130,0.50}} skillStages[sKILL_SHIELD] = {{0,10},{30,8},{50,6},{80,4},{100,2},{130,0.50}} skillStages[sKILL_FISHING] = {{0,10},{30,8},{50,6},{80,4},{100,2},{130,0.50}} -- uncomment it to make it work, you can remove other skill config if you dont need it skillStages[sKILL__MAGLEVEL] = {{0,2},{30,1},{50,0.90},{80,0.80},{100,0.60},{130,0.50}} showInfoOnAdvance = false -- send player message about skill rate change showInfoOnLogin = false -- send player message about skill rates when he login function getPlayerSkillRatesText(cid) local skillInfo = getPlayerRates(cid) return "Rates: [ Magic Level: " .. skillInfo[sKILL__MAGLEVEL] * skillConfig.magiclevel .. "x || Fist: " .. skillInfo[sKILL_FIST] * skillConfig.skill .. "x | Club: " .. skillInfo[sKILL_CLUB] * skillConfig.skill .. "x | Sword: " .. skillInfo[sKILL_SWORD] * skillConfig.skill .. "x | Axe: " .. skillInfo[sKILL_AXE] * skillConfig.skill .. "x | Distance: " .. skillInfo[sKILL_DISTANCE] * skillConfig.skill .. " | Shielding: " .. skillInfo[sKILL_SHIELD] * skillConfig.skill .. "x | Fishing: " .. skillInfo[sKILL_FISHING] * skillConfig.skill .. "x ]" end Depois, copie e cole qualquer script, então o renomeie para "skillstageslogin" e cole isso dentro: dofile(getDataDir() .. "creaturescripts/scripts/skills/stagesconfig.lua") function onLogin(cid) for skill, skillStage in pairs(skillStages) do if(skill >= 0 and skill <= 6) then nowSkill = getPlayerSkillLevel(cid, skill) else nowSkill = getPlayerMagLevel(cid, true) end for i, skillRateInfo in pairs(skillStage) do if(nowSkill >= skillRateInfo[1]) then skillRate = skillRateInfo[2] else break end end doPlayerSetRate(cid, skill, skillRate) end if(showInfoOnLogin) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, getPlayerSkillRatesText(cid)) end registerCreatureEvent(cid, "SkillStagesAdvance") return TRUE end Depois, copie e cole qualquer script, então o renomeie para "skillstagesadvance" e cole isso dentro: dofile(getDataDir() .. "creaturescripts/scripts/skills/stagesconfig.lua") function onAdvance(cid, skill, oldLevel, newLevel) if(skillStages[skill] ~= nil) then local skillRate = 1 local oldRates = getPlayerRates(cid) for i, skillRateInfo in pairs(skillStages[skill]) do if(newLevel >= skillRateInfo[1]) then skillRate = skillRateInfo[2] else break end end doPlayerSetRate(cid, skill, skillRate) if(showInfoOnAdvance and skillRate ~= oldRates[skill]) then if(skill >= 0 and skill <= 6) then configRate = skillConfig.skill else configRate = skillConfig.magiclevel end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, SKILL_NAMES[skill] .. " rate changed from " .. oldRates[skill] * configRate .. "x to " .. skillRate * configRate .. "x. " .. getPlayerSkillRatesText(cid)) end end return true end Depois vá em login.lua e registre as tags: registerCreatureEvent(cid, "SkillStagesLogin") registerCreatureEvent(cid, "SkillStagesAdvance") e então em creaturescripts.xml: <event type="login" name="SkillStagesLogin" event="script" value="skills/skillstageslogin.lua" /> <event type="advance" name="SkillStagesAdvance" event="script" value="skills/skillstagesadvance.lua" /> o script é autoexplicativo: {30,3} = no level 30 o rate skill sera 3, configure todas as skills do seu server do jeito que desejar! Espero ter ajudado. Então eu coloquei tudo lá mas aparentemente não mudou... deixa ver se eu entendi: skillStages[SKILL__MAGLEVEL] = {{0,2},{30,1},{50,0.90},{80,0.80},{100,0.60},{130,0.50}} lvl 0, o rate é 2 no primeiro caso? E ali no ultimo o level seria 130, e se caso for níveis maiores esse script deixa 0.5? @@narutomaniacos Agora deu certo fiz uma cagadinha aqui auehahue vlw brother ajudou mto! Link para o comentário Compartilhar em outros sites More sharing options...
0 Furabio 257 Postado Fevereiro 20, 2016 Share Postado Fevereiro 20, 2016 Tópico Movido Este tópico foi movido de "OTServ → Programação → Suporte Programação" para "OTServ → Programação → Suporte Programação → Pedidos e dúvidas resolvidos - Programação". Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
GGgames 2
Estou com um problema no meu otserv que notei somente agora...
O magic level dos players está sempre com o mesmo "peso" para upar...
Por exemplo, caso um player, ML 5, fale "regeneration", ele upa um de magic level.
Se algum player ML 90, conjuga a magia "regeneration" também irá upar 1 de ML.
A principio eu achava que o problema era no config.lua -- RATES --, mas mesmo assim lá está -> rateMagic = 1.0
Alguém sabe pq quanto mais auto meu ML, não fica mais dificil upa-lo?
Obrigado!
aqui está meu config.lua:
Link para o comentário
Compartilhar em outros sites
13 respostass a esta questão
Posts Recomendados