sartoris 4 #1 Posted April 29, 2020 Fala galera, depois de muito tempo procurando achei um script em um fórum gringo e resolvi compartilhar com vocês! Em anexo coloquei uma imagem de como ficará o script. Como que funciona o script? O monstro X aparecerá onde você determinar e ele dará certa porcentagem de exp e loot adicional por 24 horas. Qual a versão? Testado em TFS 0.3.7. Chega de enrolação, vamos lá... globalevents/scripts/words.lua dofile('data/creaturescripts/scripts/daily_monster_bonus.lua') function onThink(cid, interval, lastExecution) doSendAnimatedText({x=438,y=503,z=7},"Loot +"..loot_bonus.."%", 244) doSendAnimatedText({x=439,y=503,z=7},"Boosted", 244) doSendAnimatedText({x=440,y=503,z=7},"Exp +"..experienceBonus.."%", 244) return true end globalevents/scripts/daily_monster.lua function onStartup() local BOOSTED_MONSTER = 56404 local boostedMonstersList = {"rat", "spider", "troll", "orc", "minotaur", "dwarf", "elf", "skeleton", "amazon", "valkirie", "dark apprentice", "ghoul", "cyclops", "dwarf guard", "necromancer", "vampire", "werewolf", "dragon", "dragon lord", "wyrm", "giant spider", "hydra", "warlock", "demon"} local randomMonster = math.random(#boostedMonstersList) setGlobalStorageValue(BOOSTED_MONSTER, randomMonster) local spawn = {x = 439, y = 503, z = 7} -- monster spawn position doCreateMonster(boostedMonstersList[randomMonster], spawn) print("Today's boosted monster is: " .. boostedMonstersList[randomMonster]) end globalevents/globalevents.xml <globalevent name="daily_monster" type="startup" event="script" value="daily_monster.lua"/> <globalevent name="words" interval="1300" event="script" value="words.lua"/> creaturescripts/scripts/daily_monster.lua function onLogin(cid) local BOOSTED_MONSTER = 56404 local boostedMonstersList = {"rat", "spider", "troll", "orc", "minotaur", "dwarf", "elf", "skeleton", "amazon", "valkirie", "dark apprentice", "ghoul", "cyclops", "dwarf guard", "necromancer", "vampire", "werewolf", "dragon", "dragon lord", "wyrm", "giant spider", "hydra", "warlock", "demon"} local boostedMonster = boostedMonstersList[getGlobalStorageValue(BOOSTED_MONSTER)] doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Today's monster boosted is: "..boostedMonster.."!") return true end creaturescripts/scripts/daily_monster_bonus.lua loot_bonus = 50 ignoredList = {1987} function addBonusLoot(position, name) for i = 0, 255 do position.stackpos = i corpse = getTileThingByPos(position) if corpse.uid > 0 and isCorpse(corpse.uid) then break end end local newRate = (1 + (loot_bonus/100)) * getConfigValue("rateLoot") local monsterLoot = getMonsterLootList(name) local mainbp = doCreateItemEx(1987, 1) for i, loot in pairs(monsterLoot) do if math.random(1, 100000) <= newRate * loot.chance then if #ignoredList > 0 then if (not isInArray(ignoredList, loot.id)) then doAddContainerItem(mainbp, loot.id, loot.countmax and math.random(1, loot.countmax) or 1) end else doAddContainerItem(mainbp, loot.id, loot.countmax and math.random(1, loot.countmax) or 1) end end doAddContainerItemEx(corpse.uid, mainbp) end end BOOSTED_MONSTER = 56404 boostedMonstersList = {"rat", "spider", "troll", "orc", "minotaur", "dwarf", "elf", "skeleton", "amazon", "valkirie", "dark apprentice", "ghoul", "cyclops", "dwarf guard", "necromancer", "vampire", "werewolf", "dragon", "dragon lord", "wyrm", "giant spider", "hydra", "warlock", "demon"} experienceBonus = 50 function onDeath(cid, corpse, deathList) local master = getCreatureMaster(cid) if (master and master ~= cid) then return true end local boostedMonster = boostedMonstersList[getGlobalStorageValue(BOOSTED_MONSTER)] if getCreatureName(cid):lower() == boostedMonster then for i = 1, #deathList do -- exp bonus local bonusExperience = getMonsterInfo(getCreatureName(cid)).experience/i * getPlayerRates(deathList[i])[SKILL__LEVEL] * experienceBonus/100 doPlayerAddExperience(deathList[i], bonusExperience) doSendAnimatedText(getPlayerPosition(deathList[i]), bonusExperience, 215) -- loot bonus addEvent(addBonusLoot, 10, getCreaturePosition(cid), getCreatureName(cid)) end end return true end creaturescripts/creaturescripts.xml <event type="login" name="daily_monster" event="script" value="daily_monster.lua"/> <event type="death" name="daily_monster_bonus" event="script" value="daily_monster_bonus.lua"/> Vamos à configuração do script: Dentro de globalevents/scripts/words.lua você adicionará a posição onde as mensagens com efeitos irá aparecer... doSendAnimatedText({x=438,y=503,z=7},"Loot +"..loot_bonus.."%", 244) doSendAnimatedText({x=439,y=503,z=7},"Boosted", 244) doSendAnimatedText({x=440,y=503,z=7},"Exp +"..experienceBonus.."%", 244) Já em globalevents/scripts/daily_monster.lua será a posição onde o monstro irá aparecer no mapa (para visualização dos players). Lembrando que é necessário colocar no RME o spawn. local spawn = {x = 439, y = 503, z = 7} -- monster spawn position Em globalevents/scripts/daily_monster.lua, creaturescripts/scripts/daily_monster.lua e creaturescripts/scripts/daily_monster_bonus.lua é possível escolher os monstros que aparecerão. Lembrando que será aleatório. (A mesma linha deve estar nos 3 scripts). boostedMonstersList = {"rat", "spider", "troll", "orc", "minotaur", "dwarf", "elf", "skeleton", "amazon", "valkirie", "dark apprentice", "ghoul", "cyclops", "dwarf guard", "necromancer", "vampire", "werewolf", "dragon", "dragon lord", "wyrm", "giant spider", "hydra", "warlock", "demon"} Dentro de creaturescripts/scripts/daily_monster_bonus.lua você poderá escolher a quantidade de exp e loot adicional para os monstros. loot_bonus = 50 experienceBonus = 50 É isso pessoal! Eu não manjo nada de script, apenas resolvi trazer para vocês... Caso tenha algum errinho se tiver algum scripter para ajudar a corrigir! Créditos: buchaLL 3 1 Gabz120, Elver Maguh, Majesty and 1 other reacted to this Share this post Link to post
Majesty 1,755 #2 Posted April 29, 2020 Muito obrigado pela sua contribuição, seu tópico de conteúdo foi aprovado!Nós do OTServ Brasil agradecemos, seu conteúdo com certeza ajudará a muitos outros. Você recebeu +1 REP! Share this post Link to post