Ir para conteúdo

vankk

Membro
  • Registro em

  • Última visita

Tudo que vankk postou

  1. 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.
  2. vankk postou uma resposta no tópico em Mapas de Tibia
    Ficou legal, bom trabalho.
  3. 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.
  4. vankk postou uma resposta no tópico em Formação de Equipe
    A procura continua! Entre em contato caso esteja interessado!
  5. Deveria ser <talkaction words="!addon" separator=" " script="addondoll.lua"/>
  6. Adicione o separator nas talkactions, e o comando é !addon first,mage
  7. 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? ?
  8. 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.
  9. 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.
  10. Qual a versão do TFS?
  11. 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.
  12. 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
  13. 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.
  14. Verifique scripts que possuem loops (for/while), e também verifique se possui algum addEvent recursivo no qual seja executado sempre.
  15. Verifique as portas do modem, para ver se está com o IP correto do IPv4.
  16. Um feliz natal atrasado, e um próspero ano novo para todos, que em 2019 possamos desfrutar de novas tecnologias!
  17. 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.
  18. Eu particularmente gosto do Ubuntu, utilizo ele a mais de 7 anos já. Qual erro que você tem em sua sources ao compilar?
  19. 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
  20. 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.
  21. 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.
  22. 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.
  23. 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.
  24. 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.
  25. 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.

Informação Importante

Confirmação de Termo