
Tudo que vankk postou
-
Liberar as missões das Quests
Não, depende, você não precisa adicionar todos manualmente, vai depender da Storage para a liberação de uma Quest. Em Storages do global da ORTS possui várias storages dentro da Lib de Storages, você deve pegar a que garanta o acesso final e utilizar, ou então, caso não saiba, você pode adicionar todas as Storages também. Esse código você deve adicionar no login.lua.
-
Imperial Temple | 10.98
Ficou legal, bom trabalho.
-
(Resolvido)Verificar posição de um player
Script show! Mas em minha opinião, caso esteja aberto para sugestões claro: uma boa prática seria invés de você colocar para retornar um booleano falso (please, sem one-line) seria você colocar para retornar uma tabela vazia - manter um padrão! Se o script retorna uma tabela, então retorna uma tabela vazia, caso não tenha nenhum valor.
-
Aura atrás de Mappers
A procura continua! Entre em contato caso esteja interessado!
-
(Resolvido)AJUDA SCRIPT - TFS 1.3 - ADDON
Deveria ser <talkaction words="!addon" separator=" " script="addondoll.lua"/>
-
(Resolvido)AJUDA SCRIPT - TFS 1.3 - ADDON
Adicione o separator nas talkactions, e o comando é !addon first,mage
-
Ajuda Accoung Manager
Poderia compartilhar a solução no qual como você conseguiu arrumar o problema, quem sabe não ajuda alguém com o mesmo problema que você teve daqui a 2 dias, ou até meso em 1 ano quem sabe? ?
-
(Resolvido)(Ajuda) Alterar Clean
Basta você modificar essa linha aqui no game.cpp para if((*tit)->getUniqueId() != UNIQUE_ID_DO_ITEMS_VIP && (*tit)->isMoveable() && !(*tit)->isLoadedFromMap() && !(*tit)->isScriptProtected()) aonde está UNIQUE_ID_DO_ITEMS_VIP você muda para o UniqueID dos Items VIP de seu servidor.
-
Melhorar a melhor resposta na seção de suporte
Ficou um pouco confuso o título, mas ok, irei explicar a ideia.. Seria basicamente forçar a pessoa que criou o tópico a definir a melhor resposta para assim ajudar pessoas no futuro com o mesmo problema.. Tá, mas como... Simples, usando o sistema de Report, e recompensas. Quem reportar X quantidade de tópicos recebe uma recompensa no fórum, uma conquista, algo do tipo. E os moderadores/suportes dão um Warning na pessoa que abriu o tópico e não definiu como a melhor resposta, e dão a melhor resposta para o tópico - com 2~3 desses Warnings a pessoa fica impossibilitada de postar no fórum na seção de suporte novamente por um Y período de tempo, acho que 14 dias seja um bom tempo. E Seria uma ideia legal no qual estimularia as pessoas a definirem a melhor resposta, no qual o ajudou naquele tópico. E também adicionar uma nova bullet quando cria um novo tópico falando sobre as recomendações, falando também para marcar a melhor resposta. O que acham? Não sei se tem isso no fórum, mas se tiver por favor ignore e feche o tópico.
-
(Resolvido)(Ajuda) Alterar Clean
Qual a versão do TFS?
-
(Resolvido)WEAPONS.XML - TFS 1.3
Caso você queria colocar ela para ser por script, então deve ser nesse estilo: <wand id="item_ID" level="200" mana="80" script="script.lua"> Caso que queira já definir um valor basta utilizar: <wand id="ITEM_ID" level="200" mana="200" min="123" max="456" type="earth"> Para mais info clique aqui.
-
(Resolvido)AJUDA SCRIPT - TFS 1.3 - ADDON
local outfits = { ["citizen"] = {136, 128}, ["hunter"] = {137, 129}, ["mage"] = {138, 130}, ["knight"] = {139, 131}, ["noblewoman"] = {140, 132}, ["summoner"] = {141, 133}, ["warrior"] = {142, 134}, ["barbarian"] = {147, 143}, ["druid"] = {148, 144}, ["wizard"] = {149, 145}, ["oriental"] = {150, 146}, ["pirate"] = {155, 151}, ["assassin"] = {156, 152}, ["beggar"] = {157, 153}, ["shaman"] = {158, 154}, ["norsewoman"] = {252, 251}, ["nightmare"] = {269, 268}, ["jester"] = {270, 273}, ["brotherhood"] = {279, 278}, ["demonhunter"] = {288, 289}, ["yalaharian"] = {324, 325}, ["warmaster"] = {336, 335}, ["wayfarer"] = {366, 367}, ["afflicted"] = {431, 430}, ["elementalist"] = {433, 432}, ["deepling"] = {464, 463}, ["insectoid"] = {466, 465}, ["red baron"] = {471, 472}, ["crystal warlord"] = {513, 512}, ["soil guardian"] = {514, 516}, } local addondoll_id = 9693 function onSay(player, words, param) if player:getItemCount(addondoll_id) < 0 then player:sendCancelMessage("Voce nao tem addon doll!") return false end local split = param:split(",") local addonType = split[1] if not addonType then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Por favor utilize o comando corretamente. !addon first, mage") return false end addonType = addonType:lower() if addonType ~= "first" and addonType ~= "second" then player:sendCancelMessage("Por favor use o comando corretamente. Exemplo: !addon first mage") return false end local outfitName = split[2] if not outfitName then player:sendCancelMessage("Não existe nenhuma Outfit com esse nome.") return false end local outfit = outfits[outfitName:lower()] if not outfit then player:sendCancelMessage("Não existe nenhuma Outfit com esse nome.") return false end local type = addonType == "first" and 1 or 2 if player:hasOutfit(outfit[type], type) then player:sendCancelMessage("Voce ja tem este addon") return false end player:removeItem(addondoll_id, 1) player:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS) player:addOutfitAddon(outfit[type], type) player:sendTextMessage(MESSAGE_INFO_DESCR, string.format('Você recebeu o %s do Addon %s.', addonType:lower(), outfitName:lower())) return false end
-
Script de recuperar stamina em zona protegida
Eu fiz esse script rápido em C++ para regenerar Stamina X de stamina no PZ a cada X segundos. https://gist.github.com/vankk/ebd1377d52b3b92028ecad632e949d0c Só você adicionar no config.lua staminaRegenPz = true staminaSecondsToRegen = 30 gainStaminaRegerationPz = 1 Vai recuperar 1 minuto de stamina a cada 30 segundos. Caso você deseja desativar o script basta mudar de true para false.
-
Spell trava o servidor
Verifique scripts que possuem loops (for/while), e também verifique se possui algum addEvent recursivo no qual seja executado sempre.
-
Problema ao conectar ao servidor
Verifique as portas do modem, para ver se está com o IP correto do IPv4.
- #mda2018 - Melhores do Ano no Tk (listão)
-
Lugar Escuro e Lugar Claro - TFS 0.4 - REMERE
No TFS 0.4 acredito que tenha a mensagem função, só fazer a adaptação dos Bytes. E já na questão sobre o Account Manager, recomendo a abertura de outro tópico para não sair do foco principal do tópico.
-
Compilar CentOS
Eu particularmente gosto do Ubuntu, utilizo ele a mais de 7 anos já. Qual erro que você tem em sua sources ao compilar?
-
Auto Loot não coleta os itens da bag
Faz a modificação no creaturescripts do Auto Loot: -- Sistema de auto loot criado por Vitor Bertolucci - Killua local aloot_boost = {[2406] = 36, [2537] = 4800, [2377] = 480, [2663] = 600, [2472] = 195000, [2398] = 36, [2475] = 7200, [2519] = 6500, [2497] = 10700, [2523] = 180000, [2494] = 325000, [2400] = 144000, [2491] = 6000, [2421] = 325000, [2646] = 260000, [2477] = 7200, [2413] = 84, [2656] = 18000, [2498] = 52000, [2647] = 600, [2534] = 32500, [7402] = 19500, [2466] = 26000, [2465] = 240, [2408] = 120000, [2518] = 1800, [2500] = 3000, [2376] = 30, [2470] = 91000, [2388] = 24, [2645] = 26000, [2434] = 2400, [2463] = 480, [2536] = 11700, [2387] = 240, [2396] = 4800, [2381] = 240, [2528] = 4800, [2409] = 1800, [2414] = 12000, [2427] = 9000, [2407] = 7200, [2458] = 42, [2383] = 960, [2392] = 3600, [2488] = 18000, [2525] = 120, [2423] = 240, [7382] = 13000, [2462] = 1300, [2520] = 39000, [2390] = 180000, [2417] = 72, [2436] = 1200, [5741] = 52000, [2378] = 120, [2487] = 24000, [2476] = 6500, [8891] = 36000, [2459] = 36, [2195] = 52000, [2391] = 7200, [2464] = 120, [8889] = 72000, [2432] = 13000, [2431] = 108000, [2492] = 52000, [2515] = 240, [2430] = 2400, [2393] = 13000, [7419] = 36000, [2522] = 130000, [2514] = 65000} local function getPlayerStorageZero(cid, storage) -- By Killua local sto = getPlayerStorageValue(cid, storage) if tonumber(sto) then return tonumber(sto) > tonumber(0) and tonumber(sto) or tonumber(0) end return tonumber(0) end local tabela = {} local function getPlayerList(cid) local tab = {} if getPlayerStorageValue(cid, 04420021) ~= -1 then table.insert(tab, getPlayerStorageValue(cid, 04420021)) end if getPlayerStorageValue(cid, 04420031) ~= -1 then table.insert(tab, getPlayerStorageValue(cid, 04420031)) end if getPlayerStorageValue(cid, 04420041) ~= -1 then table.insert(tab, getPlayerStorageValue(cid, 04420041)) end if getPlayerStorageValue(cid, 04420051) ~= -1 then table.insert(tab, getPlayerStorageValue(cid, 04420051)) end if #tab > 0 then return tab end return {} end local function boost(cid) return tonumber(getPlayerStorageValue(cid,722381)) >= os.time() end local function autoLoot(cid, pos) if not isPlayer(cid) then return end local check = false local str = "" local position = {} for i = 1, 255 do pos.stackpos = i if getThingFromPos(pos).uid and getThingFromPos(pos).uid > 0 and isContainer(getThingFromPos(pos).uid) then position = pos check = true break end end if check then local corpse = getContainerItemsInfo(getThingFromPos(position).uid) if corpse then for index, info in pairs(corpse) do if index < countTable(corpse) then if info.uid and info.itemid then if isContainer(info.uid) then local bag = getContainerItemsInfo(info.uid) for i = 1, countTable(bag) do if isInArray(getPlayerList(cid), bag.itemid) then if bag.quant > 1 then doRemoveItem(bag.uid, bag.quant) doPlayerAddItem(cid, bag.itemid, bag.quant) str = str.." "..bag.quant.." "..getItemNameById(bag.itemid).." +" else doRemoveItem(bag.uid) if boost(cid) then if aloot_boost[bag.itemid] then doPlayerSetBalance(cid,getPlayerBalance(cid) + aloot_boost[bag.itemid]) str = str.." 1 "..getItemNameById(bag.itemid).." ("..aloot_boost[bag.itemid].."gp no banco) +" else doPlayerAddItem(cid, bag.itemid, 1) str = str.." 1 "..getItemNameById(bag.itemid).." +" end else doPlayerAddItem(cid, bag.itemid, 1) str = str.." 1 "..getItemNameById(bag.itemid).." +" end end end end end end end if isInArray(getPlayerList(cid), info.itemid) then if info.quant > 1 then doRemoveItem(info.uid, info.quant) doPlayerAddItem(cid, info.itemid, info.quant) str = str.." "..info.quant.." "..getItemNameById(info.itemid).." +" else doRemoveItem(info.uid) if boost(cid) then if aloot_boost[info.itemid] then doPlayerSetBalance(cid,getPlayerBalance(cid) + aloot_boost[info.itemid]) str = str.." 1 "..getItemNameById(info.itemid).." ("..aloot_boost[info.itemid].."gps no banco) +" else doPlayerAddItem(cid, info.itemid, 1) str = str.." 1 "..getItemNameById(info.itemid).." +" end else doPlayerAddItem(cid, info.itemid, 1) str = str.." 1 "..getItemNameById(info.itemid).." +" end end end end end end setPlayerTableStorage(cid,822564,{[1] = str, [2] = 0}) end local function autoGold(cid, pos) if not isPlayer(cid) then return end local check = false local total = 0 local position = {} for i = 1, 255 do pos.stackpos = i if getThingFromPos(pos).uid and getThingFromPos(pos).uid > 0 and isContainer(getThingFromPos(pos).uid) then position = pos check = true break end end if check then local corpse = getContainerItemsInfo(getThingFromPos(position).uid) if corpse then for index, info in pairs(corpse) do if info.uid and info.itemid then if index < countTable(corpse) then if isContainer(info.uid) then local bag = getContainerItemsInfo(info.uid) for i = 1, countTable(bag) do if isInArray({2148, 2152, 2160}, bag.itemid) then local multiplie = 1 if bag.itemid == 2148 then multiplie = 1 elseif bag.itemid == 2152 then multiplie = 100 elseif bag.itemid == 2160 then multiplie = 10000 end doRemoveItem(bag.uid, bag.quant) doPlayerSetBalance(cid, getPlayerBalance(cid) + tonumber(bag.quant) * multiplie) total = total + bag.quant * multiplie doPlayerSetStorageValue(cid, 04421021, tonumber(getPlayerStorageZero(cid, 04421021)) + tonumber(info.quant) * tonumber(multiplie)) end end end end end end end end if total > 0 then local tab = getPlayerTableStorage(cid,822564) tab[2] = total setPlayerTableStorage(cid,822564,tab) end end local function sendMsg(cid) if not isPlayer(cid) then return end local tab = getPlayerTableStorage(cid,822564) if countTable(tab) >= 1 then if tab[1] then if tab[2] and tab[2] > 0 then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "[Auto Loot System] Coletados: ".. tab[1] .." ".. tab[2] .." gold coins.") else if type(tab[1]) == "string" and string.len(tab[1]) > 1 then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "[Auto Loot System] Coletados: "..tab[1]) end end elseif not tab[1] then if tab[2] then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "[Auto Loot System] Coletados: "..tab[2].." gold coins.") end end end doPlayerSetStorageValue(cid,822564,-1) end function onKill(cid, target, lastHit) if isPlayer(cid) and isMonster(target) then if getPlayerStorageValue(cid, 04421001) == 1 and #getPlayerList(cid) > 0 then local pos = getCreaturePosition(target) addEvent(autoLoot, 500, cid, pos) end if getPlayerStorageValue(cid, 04421011) == 1 then local pos = getCreaturePosition(target) addEvent(autoGold, 540, cid, pos) end if getPlayerStorageValue(cid, 04421001) == 1 or getPlayerStorageValue(cid, 04421011) == 1 then addEvent(sendMsg, 560, cid) end end return true end
-
(Resolvido)[Gesior 2012] Vendendo Premium Points
Como assim o site vender Premium Points? O que você precisa é só modificar o HTML dos scripts, procure pela a string, e faz suas devidas modificações que você deseja.
-
[TFS 1.x] Dúvidas? Problemas? Mande elas aqui.
Quem eu sou: Eu sou conhecido como Vankk na comunidade de Open Tibia, e tenho um vasto conhecimento de mais de 10 anos na criação de servidores de Tibia, e atualmente sou um colaborador do The Forgotten Server 1.x. Já ajudei diversas pessoas nos últimos anos no TibiaKing, e venho ajudando em grupo fechado nos últimos meses também. Meu objetivo: Atualmente meu maior desejo é tentar impactar as pessoas, e ajudar o máximo. E caso queiram aprender a programação, e caso eu saiba o que você deseja aprender, e tentar ajuda-las nelas com possíveis dúvidas e erros que possam a vir a ter no caminho. Porque desse tópico: Para centralizar as dúvidas nele, e as pessoas sempre verem esse tópicos para caso tenham problemas. O que estou permitido a perguntar? Basicamente tudo que você quiser sobre o TFS 1.x, desde dúvidas até erros e problemas. Caso você poste dúvidas, tente explicar o máximo possível. Caso você poste erros/problemas, coloque o erro que você está tendo, e o script por completo. Por favor, não coloque dúvidas de 0.4, porque eu irei ignorar. Lembrando que esse é um tópico para dúvidas e erros, e não para pedido de Scripts. Lembrando que isso aqui é eu tentando ajudar e contribuir com a comunidade e é um trabalho gratuito, então por favor, espere, não spame mensagens via Discord ou PVT. Tudo tem o seu tempo. Aguardo suas dúvidas/erros para ajuda-los.
-
Script dinâmico para weapon
Acredito que essa função deva resolver o seu problema. Fiz rápido, e não cheguei a testar, mas acredito que deva funcionar. function getWandDamage(itemId) do local o = io.open('data/weapons/weapons.xml','r') file = o:read('*a') o:close() end local min = file:match('<wand .-id="'.. itemId ..'".-min="(.-)".-/>') or 0 local max = file:match('<wand .-id="'.. itemId ..'".-max="(.-)".-/>') or 0 return { minDamage = min, maxDamage = max } end Você utilizará getWandDamage(itemId) para pegar o valor das Weapons, e vai te retornar uma tabela contendo o valor mínimo e máximo das Wands, apenas Wands. Eu não sei como que será o seu script que você utilizará ou não, mas recomendo a verificação de se os valores são diferentes de 0 - ou então, você fazer uma modificação nessa função que eu te enviei verificando se min ou max é igual a 0, ser for, para retornar nil.
-
Auto Loot não coleta os itens da bag
Existem duas condições para verificar se os itens de Gold estão dentro de um Array, remove por completo a segundo verificação de if isInArray({2148, 2152, 2160}, info.itemid) then.
-
Problema ao conectar ao servidor
Verifique se as portas do seu modem estão realmente abertas, e caso o IP esteja correto, e o IP Changer esteja sendo aplicado com sucesso também.
-
Editar o Market System de um Otserver
Não, você não tem como traduzir o Market pela as Sources, apenas caso você faça uma edição no Cliente do seu servidor. E também, não tem como remover os Itens, só se você remover eles do Cliente também.