Tudo que Mateus Robeerto postou
-
Reset System OTX 2
Cara, eu já enviei um link que tem tudo o que você estava procurando: É só pegar o NPC "Master Reset", o CreatureScript também, as libs... Pegue essas coisas e coloque em seu servidor, é simples. '-' Para que serve reset? A cada 1000 leveis você pode recomeçar do inicio, seu char voltará ao level 8, porém você agora terá + 2.0% de dano por reset +10% de exp, +5% ganho de vida e mana ao upar level. Obs: Se você quiser fazer ajustes do seu jeito, fique à vontade. É muito simples e fácil de configurar. npc- Master Reset.lua local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) local pid = getPlayerGUID(cid) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'master reset') then doPlayerPopupFYI(cid, "Master Reset\n\n(Sobre o Sistema)\n(+)Reset parcial do personagem\n(+)Chance de resetar level mais alto\n(+)Não perde quests,task, dodge e nem critical\n(+)Não perde skills.\n\n (ATENÇÃO!)\n\nO Master Reset volta o seu personagem ao level 30, reset 0, life e mana inicial!!") selfSay('Tendo em vista todas as informações apresentadas, você realmente deseja dar um Master Reset? Esse processo tem um custo de 100 vip coins e é irreversível! Diga {yes} para confirmar.', cid) talkState[talkUser] = 1 elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if doPlayerRemoveItem(cid, 6527,100) then --Tira toda a vida e soma + 185 doCreatureAddHealth(cid, -getCreatureHealth(cid)+185) setCreatureMaxHealth(cid,185) --Tira toda a mana e soma + 35 doCreatureAddMana(cid, -getCreatureMana(cid)+35) setCreatureMaxMana(cid,35) doTeleportThing(cid, getTownTemplePosition(1)) doRemoveCreature(cid) local reset_level = "UPDATE players SET level = 30 WHERE id= " ..pid.. ";" local reset_query = "UPDATE players SET reset = 0 WHERE id= " ..pid.. ";" local reset_exp = "UPDATE players SET experience = 4200 WHERE id= " ..pid.. ";" db.executeQuery(reset_exp) db.executeQuery(reset_query) db.executeQuery(reset_level) else selfSay("Você não possui 100 event tokens", cid) end talkState[talkUser] = 0 end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) creaturescrpt <!-- Reset System --> <event type="login" name="RSLogin" script="reset_system.lua"/> reset_system.lua function onLogin(cid) ResetSystem:addBonuses(cid) registerCreatureEvent(cid, "RSGainExperience") registerCreatureEvent(cid, "RSAdvance") return true end function onGainExperience(cid, source, experience) local resetBonus = ResetSystem:getInfo(cid) if (resetBonus and resetBonus.exp_percent > 0) then experience = experience * (1.0 + (resetBonus.exp_percent / 100.0)) end return experience end data/libs/reset.lua ResetSystem = { back_to_level = 500, Reset = { [1] = {needed_level = 15000, damage_percent = 2}, [2] = {needed_level = 16000, damage_percent = 4}, [3] = {needed_level = 16500, damage_percent = 6}, [4] = {needed_level = 16700, damage_percent = 8}, [5] = {needed_level = 20000, damage_percent = 10}, [6] = {needed_level = 20000, damage_percent = 12}, [7] = {needed_level = 20000, damage_percent = 14}, [8] = {needed_level = 20000, damage_percent = 16}, [9] = {needed_level = 20000, damage_percent = 18}, [10] = {needed_level = 21000, damage_percent = 20}, [11] = {needed_level = 21000, damage_percent = 22}, [12] = {needed_level = 21000, damage_percent = 24}, [13] = {needed_level = 21000, damage_percent = 26}, [14] = {needed_level = 21000, damage_percent = 28}, [15] = {needed_level = 22500, damage_percent = 30}, [16] = {needed_level = 24000, damage_percent = 32}, [17] = {needed_level = 25500, damage_percent = 34}, [18] = {needed_level = 27000, damage_percent = 36}, [19] = {needed_level = 28500, damage_percent = 38}, [20] = {needed_level = 30000, damage_percent = 40}, [21] = {needed_level = 31500, damage_percent = 42}, [22] = {needed_level = 33000, damage_percent = 44}, [23] = {needed_level = 34500, damage_percent = 46}, [24] = {needed_level = 36000, damage_percent = 48}, [25] = {needed_level = 37500, damage_percent = 50}, [26] = {needed_level = 39000, damage_percent = 52}, [27] = {needed_level = 40500, damage_percent = 54}, [28] = {needed_level = 42000, damage_percent = 56}, [29] = {needed_level = 43500, damage_percent = 58}, [30] = {needed_level = 45000, damage_percent = 60}, [31] = {needed_level = 46500, damage_percent = 62}, [32] = {needed_level = 48000, damage_percent = 64}, [33] = {needed_level = 49500, damage_percent = 66}, [34] = {needed_level = 51000, damage_percent = 68}, [35] = {needed_level = 52500, damage_percent = 70}, [36] = {needed_level = 54000, damage_percent = 72}, [37] = {needed_level = 55500, damage_percent = 74}, [38] = {needed_level = 57000, damage_percent = 76}, [39] = {needed_level = 58500, damage_percent = 78}, [40] = {needed_level = 60000, damage_percent = 80}, [41] = {needed_level = 61500, damage_percent = 82}, [42] = {needed_level = 63000, damage_percent = 84}, [43] = {needed_level = 64500, damage_percent = 86}, [44] = {needed_level = 66000, damage_percent = 88}, [45] = {needed_level = 67500, damage_percent = 90}, [46] = {needed_level = 69000, damage_percent = 92}, [47] = {needed_level = 70500, damage_percent = 94}, [48] = {needed_level = 72000, damage_percent = 96}, [49] = {needed_level = 73500, damage_percent = 98}, [50] = {needed_level = 75000, damage_percent = 100}, [51] = {needed_level = 80000, damage_percent = 102}, [52] = {needed_level = 85000, damage_percent = 104}, [53] = {needed_level = 90000, damage_percent = 106}, [54] = {needed_level = 100000, damage_percent = 108}, [55] = {needed_level = 110000, damage_percent = 110}, [56] = {needed_level = 130000, damage_percent = 112}, [57] = {needed_level = 150000, damage_percent = 114}, [58] = {needed_level = 170000, damage_percent = 116}, [59] = {needed_level = 180000, damage_percent = 118}, [60] = {needed_level = 200000, damage_percent = 120}, } } function ResetSystem:getCount(pid) return getPlayerResets(pid) end function ResetSystem:setCount(pid, value) setPlayerResets(pid, value) end function ResetSystem:addCount(pid) self:setCount(pid, self:getCount(pid) + 1) end function ResetSystem:getInfo(pid) return self.Reset[math.min(self:getCount(pid), #self.Reset)] end function ResetSystem:addBonuses(pid) local bonus = self:getInfo(pid) if (bonus and bonus.damage_percent) then setPlayerDamageMultiplier(pid, getPlayerDamageMultiplier(pid) + (bonus.damage_percent / 100.0)) end end function ResetSystem:removeBonuses(pid) local bonus = self:getInfo(pid) if (bonus and bonus.damage_percent) then setPlayerDamageMultiplier(pid, getPlayerDamageMultiplier(pid) - (bonus.damage_percent / 100.0)) end end function ResetSystem:execute(pid) self:removeBonuses(pid) local oldMaxHealth = getCreatureMaxHealth(pid) local oldMaxMana = getCreatureMaxMana(pid) local playerLevel = getPlayerLevel(pid) if (playerLevel > self.back_to_level) then doPlayerAddExperience(pid, getExperienceForLevel(self.back_to_level) - getPlayerExperience(pid)) playerLevel = self.back_to_level end self:addCount(pid) self:addBonuses(pid) setCreatureMaxHealth(pid, oldMaxHealth) setCreatureMaxMana(pid, oldMaxMana) doCreatureAddHealth(pid, oldMaxHealth) doCreatureAddMana(pid, oldMaxMana) local bonus = self:getInfo(pid) if (bonus) then local message = "[RESET-SYSTEM]\nVocê efetuou seu " .. self:getCount(pid) .. "° RESET." if (bonus.damage_percent) then message = message .. "\nAgora você tem +" .. bonus.damage_percent .. "% de dano." end doPlayerSendTextMessage(pid, MESSAGE_EVENT_ADVANCE, message) doRemoveCreature(pid) end end Talkaction reset_info.lua function onSay(cid, words, param) if(not checkExhausted(cid, 666, 5)) then return true end doPlayerPopupFYI(cid, "O que é o sistema de resets?\nO sistema de resets consiste em melhorar sua jogabilidade, ou seja, quanto mais resets, mais resistente seu personagem será.\nLembrando que quando resetado, o personagem volta aos leveis iniciais, a cap retorna ao valor equivalente ao nível. Suas skills permanecem as mesmas.\n\nComo resetar e quando resetar?\nPara resetar, use o comando (!resetar). Você pode resetar a partir de 15000 leveis, variando conforme os resetes for aumentando.\n\n* Quanto maior o level que você resetar, mais life e mana terá e quanto mais reset maior o seu dano (esse pode ser um grande diferencial seu para/com seus inimigos).") return true end <talkaction access="0-4" words="!reset" event="script" value="reset_info.lua"/>
-
(Resolvido)Mod Otc V8
Acabei de testar esse mod.. Gostei demais.. Você tem que adicionar seu nick do GM e vai aparecer em cima "ADMINISTRADOR", ou dá para colocar VIP.. e outros nomes que você quiser alterar o nome etc simples local playerTitles = {["GM Vortex"] = {title = "[Administrator]", color = "red"}}
-
OLHE AQUI PF
Já enviei uma mensagem para o contato. Obrigado.
-
Reset System with sources
Esse deu erro porque o script não era compatível com a sua versão do TFS 0.4 8.6. Na verdade, era para o TFS 1X, por isso. Acabei de converter para o TFS 0.4. Se houver algum erro, crie um novo tópico ou me envie uma mensagem privada. Eu posso te orientar sobre o que você está querendo. function resetPlayer(cid) local config = { resetManaPercent = 5, resetDamagePercent = 5, resetHealthPercent = 5, minLevel = 500, resetLevel = 1, } if getPlayerLevel(cid) < config.minLevel then doPlayerSendCancel(cid, "Você precisa ter pelo menos level " .. config.minLevel .. " para resetar.") return false end local resetCount = getCreatureStorage(cid, 1000) + 1 setPlayerLevel(cid, config.resetLevel) doSetStorage(cid, 1000, resetCount) local manaToAdd = config.resetManaPercent * resetCount local damageToAdd = config.resetDamagePercent * resetCount local healthToAdd = config.resetHealthPercent * resetCount doCreatureAddMana(cid, manaToAdd) doPlayerAddSkillTry(cid, SKILL_FIST, damageToAdd) doCreatureAddHealth(cid, healthToAdd) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Você realizou o reset número " .. resetCount .. "! Ganhou " .. manaToAdd .. " pontos de mana, " .. damageToAdd .. " pontos de dano a mais nas armas e " .. healthToAdd .. " pontos de vida.") return true end function onSay(cid, words, param) if words == "!resetar" then if not isPlayer(cid) then doPlayerSendCancel(cid, "Você precisa ser um jogador para usar esse comando.") return false end resetPlayer(cid) return false end return true end ou function resetPlayer(cid) local config = { resetManaPercent = 5, resetDamagePercent = 5, resetHealthPercent = 5, minLevel = 500, resetLevel = 1, } if getPlayerLevel(cid) < config.minLevel then doPlayerSendCancel(cid, "Você precisa ter pelo menos level " .. config.minLevel .. " para resetar.") return false end local resetCount = getCreatureStorage(cid, 1000) + 1 doPlayerSetLevel(cid, config.resetLevel) doCreatureSetStorage(cid, 1000, resetCount) local manaToAdd = math.floor(getPlayerMaxMana(cid) * (config.resetManaPercent / 100)) * resetCount local damageToAdd = config.resetDamagePercent * resetCount local healthToAdd = math.floor(getPlayerMaxHealth(cid) * (config.resetHealthPercent / 100)) * resetCount doCreatureAddMana(cid, manaToAdd) doPlayerAddSkillTry(cid, SKILL_FIST, damageToAdd) doCreatureAddHealth(cid, healthToAdd) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Você realizou o reset número " .. resetCount .. "! Ganhou " .. manaToAdd .. " pontos de mana, " .. damageToAdd .. " pontos de dano a mais nas armas e " .. healthToAdd .. " pontos de vida.") return true end function onSay(cid, words, param) if words == "!resetar" then if not isPlayer(cid) then doPlayerSendCancel(cid, "Você precisa ser um jogador para usar esse comando.") return false end resetPlayer(cid) return false end return true end
-
Reset System with sources
vc tem o script dele? se sim posta aqui
-
(Resolvido)Dúvida sobre meu Compilador.
Meu caro, eu compilo manualmente as libs e boost_1_60_0. Compilei em diversos TFS 1.5, incluindo Nekiro e TFS 1.5 13x, OTX 13x, tudo tranquilo, sem erros. Tente fazer isso aí, deve funcionar para você também https://tibiaking.com/forums/topic/74079-tutorial-como-compilar-tfs-v12-com-msvc-2015/
- Gesior - ShopSystem
-
Servidor TFS 1.3 Versão 8.6 com site Gesior
nao consigo baixar desse site ai
-
aumentar magic effects para 255
Esse distro já vem pronta para uso e suporta até 65 mil efeitos, além de ter disponível a unit 16 para o client. É só baixar no link aqui https://tibiaking.com/forums/topic/96040-860-tfs-04-rev3996-war-cast/
-
Erro em minhas Quests TFS 1.3
local config = { [2005] = { name = "arcane staff", rewards = {{id = 2453, count = 1},}, storage = {active = true, key = 2001,}, effectWin = 31,}, [2006] = { name = "the avenger", rewards = {{id = 6528, count = 1},}, storage = {active = true, key = 2001,}, effectWin = 30,}, [2007] = { name = "arbalest", rewards = {{id = 5803, count = 1},}, storage = {active = true, key = 2001,}, effectWin = 29,}, [2008] = { name = "backpack of holding", rewards = {{id = 2365, count = 1},}, storage = {active = true, key = 2002,}, effectWin = 30,}, [2009] = { name = "infernal bolts", rewards = {{id = 6529, count = 100},}, storage = {active = true, key = 2003,}, effectWin = 30,}, [2010] = { name = "stuffed dragon", rewards = {{id = 5791, count = 1},}, storage = {active = true, key = 2004,}, effectWin = 29,}, [2011] = { name = "frozen starlight", rewards = {{id = 2361, count = 1},}, storage = {active = true, key = 2005,}, effectWin = 31,}, [2012] = { name = "pair of soft boots", rewards = {{id = 6132, count = 1},}, storage = {active = true, key = 2006,}, effectWin = 31,}, messageWin = {win = "You have found a %s.",}, messageDone = {done = "It is empty.",}, } function onUse(player, item, fromPosition, target, toPosition, isHotkey) local choose = config[item.uid] if not choose then print("Error: Invalid item UID or missing configuration.") return false end if choose.storage.active and player:getStorageValue(choose.storage.key) >= 0 then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, config.messageDone.done) return true end for i = 1, #choose.rewards do player:addItem(choose.rewards[i].id, choose.rewards[i].count) player:setStorageValue(choose.storage.key, 1) player:sendTextMessage(MESSAGE_INFO_DESCR, config.messageWin.win:format(choose.name)) player:getPosition():sendMagicEffect(choose.effectWin) end return true end
-
CASTLE WAR (REAL CASSTLE) - DOMÍNIO POR TEMPO
--[[ Real Castle War Event Desenvolvido por Vítor Bertolucci (Killua) ]] local castleOpenHour = 21 -- Hora de abertura do Castle War local castleCloseHour = 22 -- Hora de fechamento do Castle War local guildStorage = 1000 -- Storage global para armazenar o ID da guilda que controla o castelo local dominionStorage = 1001 -- Storage global para armazenar o tempo que a guilda dominou a alavanca function onUse(cid, item, frompos, item2, topos) if item.uid == 1945 or item.uid == 1946 then local currentTime = os.time() -- Obtém o horário atual em segundos desde 1970-01-01 00:00:00 if currentTime >= getCastleOpenTimeToday() and currentTime <= getCastleCloseTimeToday() then local guildDominion = getGlobalStorageValue(guildStorage) local dominionTime = getGlobalStorageValue(dominionStorage) local currentGuild = getPlayerGuildId(cid) local currentDominionTime = currentTime - getCastleOpenTimeToday() if currentGuild == guildDominion and currentDominionTime > dominionTime then setGlobalStorageValue(dominionStorage, currentDominionTime) doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_GREEN) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Sua guilda está dominando o castelo!") else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Sua guilda já dominou o castelo ou não está participando.") end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "O Castle War não está aberto no momento.") end return true end end function getCastleOpenTimeToday() local currentTime = os.time() local openTimeToday = os.time({ hour = castleOpenHour, min = 0, sec = 0 }) if currentTime < openTimeToday then -- Se o horário atual for antes do horário de abertura hoje, retornar o horário de abertura de ontem return openTimeToday - 86400 -- 86400 segundos em um dia else return openTimeToday end end function getCastleCloseTimeToday() return os.time({ hour = castleCloseHour, min = 0, sec = 0 }) end Desculpa, agora eu vi que é alavanca.
-
CASTLE WAR (REAL CASSTLE) - DOMÍNIO POR TEMPO
--[[ Real Castle War Event Desenvolvido por Vítor Bertolucci (Killua) ]] local castleOpenHour = 21 -- Hora de abertura do Castle War local castleCloseHour = 22 -- Hora de fechamento do Castle War local guildStorage = 1000 -- Storage global para armazenar o ID da guilda que controla o castelo local dominionStorage = 1001 -- Storage global para armazenar o tempo que a guilda dominou a alavanca function onUse(cid, item, frompos, item2, topos) if item.uid == 61466 then local currentTime = os.time() -- Obtém o horário atual em segundos desde 1970-01-01 00:00:00 if currentTime >= getCastleOpenTimeToday() and currentTime <= getCastleCloseTimeToday() then local guildDominion = getGlobalStorageValue(guildStorage) local dominionTime = getGlobalStorageValue(dominionStorage) local currentGuild = getPlayerGuildId(cid) local currentDominionTime = currentTime - getCastleOpenTimeToday() if currentGuild == guildDominion and currentDominionTime > dominionTime then setGlobalStorageValue(dominionStorage, currentDominionTime) doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_GREEN) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Sua guilda está dominando o castelo!") else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Sua guilda já dominou o castelo ou não está participando.") end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "O Castle War não está aberto no momento.") end return true end end function getCastleOpenTimeToday() local currentTime = os.time() local openTimeToday = os.time({ hour = castleOpenHour, min = 0, sec = 0 }) if currentTime < openTimeToday then -- Se o horário atual for antes do horário de abertura hoje, retornar o horário de abertura de ontem return openTimeToday - 86400 -- 86400 segundos em um dia else return openTimeToday end end function getCastleCloseTimeToday() return os.time({ hour = castleCloseHour, min = 0, sec = 0 }) end Teste aí e, se encontrar algum erro, me avise.
-
OLHE AQUI PF
Não sei se aqui é a área ou algum local para solicitar a alteração do email antigo... Não lembro mais a senha dele, nem a resposta secreta para acessar. Peço a algum administrador ou moderador para, por favor, alterar o email para o novo.
-
/send TFS 0.4 para TFS 1.3
😁
-
[ACTION] (TFS 1x) Alavancas que removem paredes específicas
Olha, eu encontrei o script para TFS 1X... Não sei se deve funcionar. local config = { walls = { {position = Position(330, 1716, 9), itemid = 2233}, {position = Position(331, 1716, 9), itemid = 2233}, {position = Position(332, 1716, 9), itemid = 2233} }, lever = { duration = 60*60, storage = 13337 } } function onUse(player, item, fromPosition, target, toPosition, isHotkey) local currentTime = os.time() -- disallow to pull the lever for some time since last pull local timerAllowPullLeverAt = Game.getStorageValue(config.lever.storage) if timerAllowPullLeverAt ~= nil and currentTime < timerAllowPullLeverAt then player:sendTextMessage(MESSAGE_STATUS_SMALL, Game.getReturnMessage(RETURNVALUE_NOTPOSSIBLE)) return true end -- disallow to pull the lever if any of walls does not exist local wallsToRemove, wallItem = {} for _, wall in ipairs(config.walls) do wallItem = Tile(wall.position):getItemById(wall.itemid) if wallItem == nil then player:sendTextMessage(MESSAGE_STATUS_SMALL, Game.getReturnMessage(RETURNVALUE_NOTPOSSIBLE)) return true end wallsToRemove[#wallsToRemove + 1] = wallItem end -- remove walls for _, wallToRemove in ipairs(wallsToRemove) do wallToRemove:remove(1) end -- set timer to next lever pull Game.setStorageValue(config.lever.storage, currentTime + config.lever.duration) -- set event to recreate walls addEvent(function(walls) for _, wall in ipairs(walls) do Game.createItem(wall.itemid, 1, wall.position) end end, config.lever.duration * 1000, config.walls) -- pull the lever item:transform(item.itemid == 1946 and 1945 or 1946) return true end
-
/send TFS 0.4 para TFS 1.3
Eu testei esse script e funcionou bem. Não tenho certeza se o seu TFS 1.3 tem o revscript... local talk = TalkAction("/send", "!send") function talk.onSay(player, words, param) if not player:getGroup():getAccess() then return true end local split = param:split(",") if split[4] then local p = Player(split[1]) if p then p:teleportTo(Position(split[2], split[3], split[4])) p:getPosition():sendMagicEffect(CONST_ME_TELEPORT) end end return false end talk:separator(" ") talk:register() exemplo: /send player name, 33321, 33322, 7
-
FORMATO DOS ARQUIVOS DE NPC
Cara, esse servidor do Nostalrius já vem com um RME próprio e específico para o servidor. Ele não deve ser usado em outros servidores. No entanto, com esse RME, é possível converter NPCs e outras coisas de acordo com o que você deseja.
- [10.98]#TibiaMapping - Devil's Hunt
-
Up vocation
Obrigado por responder. É muito interessante essa função.
-
Up vocation
function onUse(cid, item, frompos, item2, topos) local config = { timeForUse = 120, -- minutos storage = 88323, toKnow = 98323, effect = CONST_ME_MAGIC_BLUE, vocationIds = { -- Sorc [1] = {5}, [5] = {9}, [9] = {13}, [13] = {17}, -- Druid [2] = {6}, [6] = {10}, [10] = {14}, [14] = {18}, -- Pala [3] = {7}, [7] = {11}, [11] = {15}, [15] = {19}, -- Kina [4] = {8}, [8] = {12}, [12] = {16}, [16] = {20} } } local playerVocation = getPlayerVocation(cid) if config.vocationIds[playerVocation] == nil then return false end local lastVocationId = config.vocationIds[playerVocation][#config.vocationIds[playerVocation]] local time = getPlayerStorageValue(cid, config.storage) if time - os.time() <= 0 then time = os.time() + config.timeForUse * 60 else time = time + config.timeForUse * 60 end setPlayerStorageValue(cid, config.storage, time) doPlayerSetVocation(cid, lastVocationId) doRemoveItem(item.uid, 1) setPlayerStorageValue(cid, config.toKnow, 1) doSendMagicEffect(getCreaturePosition(cid), config.effect) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionadas 2 horas de VIP ao seu personagem.") return true end Se funcionar, não se esqueça de dar REP+ e considere como uma solução, okay?
-
Up vocation
function onUse(cid, item, frompos, item2, topos) local config = { timeForUse = 2, storage = 88323, toKnow = 98323, effect = 27, vocationIds = { [1] = {5}, [2] = {6}, [3] = {7}, [4] = {8} } } local playerVocation = getPlayerVocation(cid) local lastVocationId = config.vocationIds[playerVocation][#config.vocationIds[playerVocation]] local time = getPlayerStorageValue(cid, config.storage) - os.time() <= 0 and (os.time() + config.timeForUse * 60) or (getPlayerStorageValue(cid, config.storage) + config.timeForUse * 60) setPlayerStorageValue(cid, config.storage, time) doPlayerSetVocation(cid, lastVocationId) doRemoveItem(item.uid, 1) setPlayerStorageValue(cid, config.toKnow, 1) doSendMagicEffect(getThingPos(cid), config.effect) doPlayerSendTextMessage(cid, 25, "Foram Adicionados 2 Horas de Vip no Seu Character.") return true end tente ai se for funcionar, arrumo td certinho as vocs pdc?
-
alguem pode me ajudar TFS 1.2 DOWNGRAGE
esse nick Vortex sou eu! Eu mesmo consegui consertar o código. Os jogadores agora podem atacar uns aos outros se não estiverem na mesma guilda, o que está funcionando corretamente. Além disso, fiz o teste entre jogadores que estão na mesma guilda e não podem atacar uns aos outros. Está tudo funcionando perfeitamente. Graças a Deus! if (target->getPlayer()) { // Verify if the player has the same guild if (player->getPlayer()->getGuild() != nullptr && target->getPlayer()->getGuild() != nullptr) { if (player->getPlayer()->getGuild() == target->getPlayer()->getGuild()) { return RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER; } } Para aqueles que desejam usar o código, copie e cole na sua source, apenas a partir da TFS 1.2 ou superior.
-
Retrocedendo para antiga para vocaçao
É uma pergunta . O assunto é sobre vocations.xml, certo? Aquela parte "fromvoc="5">" precisa ser igual ao ID da vocação. No caso específico, o número 5 corresponde à vocação de Mestre Feiticeiro (Master Sorcerer). É possível manter essa vocação permanentemente, ou seja, você poderá deslogar e logar novamente no jogo com essa mesma vocação. Entendeu? exemplo aqui : vocation id="15, fromvoc="15" reparem? tem que ser iguais OK.. <vocation id="15" clientid="0" name="None" description="none" gaincap="10" gainhp="5" gainmana="5" gainhpticks="6" gainhpamount="1" gainmanaticks="6" gainmanaamount="1" manamultiplier="4.0" attackspeed="2000" basespeed="220" soulmax="100" gainsoulticks="120" allowPvp="0" fromvoc="15"> <formula meleeDamage="1.0" distDamage="1.0" defense="1.0" armor="1.0" />
-
erro createaccount & character
Recomendo que utilize a versão "xampp-windows-x64-7.4.29-1-VC15-installer" do XAMPP, pois ela é compatível com gesior mais recentes, como o ModernACC, Znote e outros.
-
[AJUDA] Criação/Edição de otserver anime
É ideal usar TFS 1.5 8.0 ou 8.60 Nekiro para Wodbo e DBO porque, sabe, essa versão do TFS é baseada na versão 13x mais recente. Dessa forma, você pode ativar alguns sistemas legais, como montarias, auras, asas, mercado offline e muitos outros recursos. Além disso, o OTClient facilita a ativação dessas funcionalidades. Há muitas coisas legais para fazer.