-
-
Reset System with sources
qual é a sua versão do TFS? Existe um sistema de reset para o TFS 0.4 sem mexer na source, sim. É possível implementar as funções usando as libs e isso já está resolvido. Existem alguns OTs Baiak que possuem o sistema de reset. Você pode dar uma olhada nesses servidores ou e sobre resetar o lvl, mana e life, isso é feito através do banco de dados. Não é necessário usar a função "addReset", pois o banco de dados já está configurado para isso.
-
-
-
OTBM LOADER - Faile to create item
Faça o download de uma versão mais recente do RME, abra o mapa e procure por essa coordenada para deletar um quadrado vermelho, sem adicionar nenhum item. Em seguida, salve o mapa e verifique se abriu corretamente. Depois, você pode testar adicionando outro item... Não se esqueça de colocar seu items.otb e XML dentro do RME mais recente. Já aconteceu com o meu mapa. Tive que deletar alguns quadrados vermelhos que não existem no meu items.otb. Apenas fui lá, deletei e salvei. Deu certo. Depois, resolvi adicionar um item que existe usando o próprio items.otb, e ele apareceu normalmente.
-
Up vocation
function onUse(cid, item, frompos, item2, topos) local config = { timeForUse = 2, storage = 88323, toKnow = 98323, effect = 27, vocationIds = {1, 2, 3, 4, 5, 6, 7, 8 , 9, 10} -- Adicione aqui as IDs das suas 20 vocações } 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) local lastVocationId = config.vocationIds[#config.vocationIds] 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 Veja aí se deu certo
-
OTBM LOADER - Faile to create item
Se você já adicionou o arquivo items.xml e items.otb do seu OT pelo RME e abriu o mapa para verificar se os itens estão aparecendo corretamente, caso apareça um quadrado vermelho indicando que o item não existe no mapa (items.otb), é importante garantir que você esteja usando os mesmos arquivos items.otb e items.xml tanto no RME quanto no servidor do OT. Os arquivos devem ser idênticos para que os itens possam ser exibidos corretamente no mapa.
-
Retrocedendo para antiga para vocaçao
Eu me lembrei agora! O motivo de todas as vocações estarem aparecendo é porque é definido pelo "fromvoc" no Acc Manager. Tente alterar para "fromvoc=nil" ou, se preferir, tente apagar completamente essa linha "fromvoc". Isso pode funcionar, mas não tenho certeza.
-
alguem pode me ajudar TFS 1.2 DOWNGRAGE
Antes, eu conseguia realizar PvP, ou seja, atacar outros jogadores sem problemas, após ter feito algumas alterações, das quais não me recordo exatamente onde foram feitas (possivelmente no CreatureScript, na config.lua ou em algum data/event), não consigo mais entender por que um jogador não pode atacar outro. Já tentei definir o level como 1, mas não obtive sucesso. Revisei as pastas e até mesmo a source, mas não consegui identificar o problema. Alguém poderia ajudar e sugerir o que pode estar ocorrendo? Config.lua worldType = "pvp" hotkeyAimbotEnabled = true protectionLevel = 1 killsToRedSkull = 15 pzLocked = 60000 removeChargesFromRunes = false removeWeaponAmmunition = false timeToDecreaseFrags = 24 * 60 * 60 * 1000 whiteSkullTime = 15 * 60 * 1000 stairJumpExhaustion = 200000 experienceByKillingPlayers = true expFromPlayersLevelRange = 75 allowFightBack = true stopAttackingAtExit = "false" xml( group) <?xml version="1.0" encoding="UTF-8"?> <groups> <group id="1" name="player" flags="0" maxdepotitems="0" maxvipentries="0" access="0" /> <group id="2" name="gamemaster" flags="412316860415" maxdeoptitems="0" maxvipentries="0" access="1" /> <group id="5" name="god" flags="547608305658" maxdepotitems="0" maxvipentries="0" access="1" /> <group id="6" name="GameMaster" flags="3845069447162" customFlags="2097151" access="5" violationReasons="23" nameViolationFlags="426" statementViolationFlags="469" depotLimit="5000" maxVips="500" outfit="302"/> </groups>
-
sobre vocação TFS 1X
Apenas utilizei essa função e o problema foi resolvido. Deu certo, o Master Sorcerer se transformou em um Supreme Sorcerer e as outras vocações também funcionaram corretamente, sem bugs ou falhas. Está tudo correto e perfeito. Ok local currentVocation = player:getVocation():getId() player:setVocation(Vocation(currentVocation + 4))
-
Tirar vocation e botar por storage
local storageValues = { [xxx] = 10, -- Cor 1 [xxx] = 30, -- Cor 2 [xxx] = 50, -- Cor 3 [xxx] = 70 -- Cor 4 } function ariseText(cid) if not isPlayer(cid) then return true end local texts = {"' . ,", ". ' ,", "' . ,", ", ' ."} local playerStorage = getPlayerStorageValue(cid) if storageValues[playerStorage] then local text = texts[math.random(1, #texts)] local color = storageValues[playerStorage] doSendAnimatedText(getCreaturePosition(cid), text, color) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_GREEN) end addEvent(ariseText, 1000, cid) return true end function onLogin(cid) if isPlayer(cid) then local playerStorage = getPlayerStorageValue(cid) if storageValues[playerStorage] then ariseText(cid) end end return true end
-
Tirar vocation e botar por storage
local storageValues = { [1234] = 10, -- Cor 1 [12345] = 30, -- Cor 2 [12346] = 50, -- Cor 3 [123457] = 70 -- Cor 4 } function ariseText(cid) if not isPlayer(cid) then return true end local texts = {"' . ,", ". ' ,", "' . ,", ", ' ."} local playerStorage = getPlayerStorageValue(cid) if storageValues[playerStorage] then local text = texts[math.random(1, #texts)] local color = storageValues[playerStorage] doSendAnimatedText(getCreaturePosition(cid), text, color) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_GREEN) end addEvent(ariseText, 1000, cid) return true end function onLogin(cid) local playerStorage = getPlayerStorageValue(cid) if storageValues[playerStorage] then ariseText(cid) end return true end Ajustei o código com o valor "1234" para representar o storage. Basta você substituir esse valor pelo storage específico do seu servidor. Faça o teste e verifique os erros que aparecerem no console e compartilhe-os aqui para que eu possa ver.
-
Tirar vocation e botar por storage
Onde você adicionou isso? Foi no arquivo data/creaturescript?
-
Tirar vocation e botar por storage
local tab = { [4] = 10, -- [storageValue] = número da cor do texto animado [5] = 30, [6] = 50, [7] = 70 } function ariseText(cid) if not isPlayer(cid) then return true end local texts = {"' . ,", ". ' ,", "' . ,", ", ' ."} local playerStorage = getPlayerStorageValue(cid, STORAGE) if playerStorage and tab[playerStorage] then doSendAnimatedText(getCreaturePosition(cid), texts[math.random(1, #texts)], tab[playerStorage]) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_GREEN) end addEvent(ariseText, 1000, cid) return true end function onLogin(cid) if tab[getPlayerStorageValue(cid, STORAGE)] then ariseText(cid) end return true end Basta substituir o valor da variável "storage" pelo número correspondente ao storage do seu servidor. [4] = 10 4 é o storage 10 é a cor do texto animado. Deve funcionar, espero ter ajudado.
-
sobre vocação TFS 1X
Já está resolvido o problema. Pode encerrar este assunto.
-
sobre vocação TFS 1X
Por gentileza, alguém possui um script de NPC que permite a troca de uma vocação antiga pela nova? Por exemplo, preciso que o ID 5 de um Master Sorcerer seja alterado para o ID 9 de um Supreme Sorcerer. Tenho 4 vocações diferentes, com os IDs 9, 10, 11 e 12. Alguém poderia me ajudar? Alguém pode me ajudar a tentar colocar uma tabela por vocação? Quero algo semelhante a essa tabela que eu coloquei, mas até agora nada está funcionando local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} local vocations = { [5] = {id = 9, name = "Supreme Sorcerer"}, [6] = {id = 10, name = "Supreme Druid"}, [7] = {id = 11, name = "Supreme Paladin"}, [8] = {id = 12, name = "Supreme Knight"}, } 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, 'supreme') or msgcontains(msg, 'voc')) then selfSay('Considering all the presented information, do you really want to perform a Master Reset? This process costs 100 vip coins and is irreversible! Say {yes} to confirm.', cid) talkState[talkUser] = 1 elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if doPlayerRemoveItem(cid, 6527, 100) then -- Set health to 185 doCreatureAddHealth(cid, -getCreatureHealth(cid) + 185) setCreatureMaxHealth(cid, 185) -- Set mana to 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.query(reset_exp) db.query(reset_query) db.query(reset_level) local newVocation = vocations[getPlayerVocation(cid)] if newVocation ~= nil then doPlayerSetVocation(cid, newVocation.id) selfSay("Congratulations! You have successfully reborn and your new vocation is " .. newVocation.name .. ".", cid) else selfSay("Congratulations! You have successfully reborn.", cid) end else selfSay("You don't have 100 event tokens", cid) end talkState[talkUser] = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
-
Utevo Lux automático somente para Premium
Bom dia amigo, pode ser por lua... é uma alternativa. Pareceu-me que checar o jogador se possui premium vai proporcionar uma iluminação melhor do que a free, assim como feito no CreatureScript. Dá uma olhada local condition = Condition(CONDITION_LIGHT) condition:setParameter(CONDITION_PARAM_LIGHT_LEVEL, 11) condition:setParameter(CONDITION_PARAM_LIGHT_COLOR, 215) condition:setParameter(CONDITION_PARAM_TICKS, -1) function onLogin(player) if player:isPremium() then player:addCondition(condition) end return true end Adicione uma linha em xml para login aqui data/creaturescripts/creaturescripts.xml <event type="login" name="Premium_Login_Light" script="premium_login_light.lua" /> Coloque o script acima na pasta script, como um .luaarquivo. data/creaturescripts/scripts/premium_login_light.lua Este script apaga a luz por menos de 3 segundos. Caso queira aumentar o tempo, basta alterar esta linha para um valor maior ou definir um tempo permanente. mude -1 para qualquer valor que você gostaria que a duração fosse, por exemplo 600000 espero que funcione!
-
Utevo Lux automático somente para Premium
if (isLocalPlayer()) { LocalPlayerPtr player = g_game.getLocalPlayer(); if (player->isPremium()) { light.intensity = std::max<uint8>(light.intensity, 6); if (light.color == 0 || light.color > 215) { light.color = 215; } } else { light.intensity = std::max<uint8>(light.intensity, 2); } g_map.setLight(player->getPosition(), light); } creio que vai funcionar!