Tudo que marcot postou
-
ERRO NA DISTRO
Basicamente, pelo que o log está informando: Na pokedex você está acessando alguma variável errada No catch o campo que você está acessando não existe (então dá pra pensar que ele não foi adicionado corretamente). Mas tenha em mente que sem código qualquer um vai ficar no achismo, porque muito plot twist pode acontecer quando você vê código alheio.
-
Preciso de ajuda com site
Ele não achou o config.lua, tem certeza que o caminho especificado é esse aí mesmo?
-
(Resolvido)Itens Empurrados
Caso queira editar apenas alguns em específico, iria pelo caminho mais fácil, colocando uma uniqueid neles. Se você deseja mudar todos, a ideia muda: você vai olhar algum programa para editar o arquivo items.otb, que fica em ./data/items/. No programa que você escolher provavelmente já vai achar tudo bem fácil de trocar. No link abaixo tem mais ou menos explicando o processo:
-
Como abrir server sem usar CD ?
Não tem muito segredo então, só joga os dois comandos dentro de um arquivo de texto e salva ele com o formato .bat
-
(Resolvido)baú, item dentro da backpack, demon parchment
Qual erro apareceu na distro? [EDIT] Aliás, no 0.4 no actions.xml não é esse o formato? <action actionid="60999" event="script" value="parch.lua"/>
-
(Resolvido)pegando key do bau
Estranho isso, porque aqui funcionou direitinho, você tem certeza que alterou os scripts corretos e deu o reload spells? Sem arma depois da modificação: Com arma depois da modificação: Com arma antes da modificação: Sem arma antes da modificação:
-
Como abrir server sem usar CD ?
-
(Resolvido)baú, item dentro da backpack, demon parchment
local cfg = { playerStorage = 60999, globalStorage = 60999, time = 60 * 60 * 24, -- Tempo em segundos positions = { {x=33060, y=31623, z=15}, {x=33066, y=31623, z=15}, {x=33060, y=31627, z=15}, {x=33066, y=31627, z=15} } } function isCooldownReady() return os.time() > getGlobalStorageValue(cfg.globalStorage) end function onUse(cid, item, frompos, item2, topos) if not isCooldownReady() then return true end for _, t in pairs(cfg.positions) do doSummonCreature("Demon", t) end setPlayerStorageValue(cid, cfg.playerStorage, 1) setGlobalStorageValue(cfg.globalStorage, os.time() + cfg.time) end No script acima eu coloco como valor de storage o tempo atual somado ao tempo (segundos) necessário para a quest poder ser ativada novamente. Eu fiz uns testes bem básicos aqui com tempos pequenos (como de 10 segundos) e aparentemente funciona.
-
(Resolvido)baú, item dentro da backpack, demon parchment
@bpm91, outra coisa que eu esqueci de perguntar, você quer que o timer funcione de qual forma? Cada player pode invocar os monstros uma vez por dia; Os monstros só podem ser invocados uma vez por dia, independente do jogador que o tenha feito;
-
(Resolvido)pegando key do bau
Você poderia postar como ficou o script após a modificação?
-
(Resolvido)baú, item dentro da backpack, demon parchment
@bpm91 Sobre o baú de quest, você tem certeza de que não está funcionando? Porque por padrão vem um script chamado walkback.lua em movements que possui justamente essa finalidade pelo que entendi aqui. Sobre a parchment quest, existe algum script de gatilho para dar respawn nesses demons?
-
(Resolvido)pegando key do bau
@bpm91 Segue abaixo o script de exori que estou utilizando: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA) setCombatParam(combat, COMBAT_PARAM_USECHARGES, true) local area = createCombatArea(AREA_SQUARE1X1) setCombatArea(combat, area) function onGetFormulaValues(cid, level, skill, attack, factor) local skillTotal, levelTotal = skill + attack, level / 5 return -(skillTotal * 0.5 + levelTotal), -(skillTotal * 1.5 + levelTotal) end setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") function onCastSpell(cid, var) return doCombat(cid, combat, var) end Note que temos ali uma função onGetFormulaValues, onde temos uma tupla sendo atribuida às variáveis skillTotal e levelTotal, que recebem: skillTotal = skill + attack levelTotal = level / 5 Estou supondo que o parâmetro attack corresponde ao ataque da arma que o jogador tem equipada, então para tirar o ataque dela da fórmula simplesmente troco a função onGetFormulaValues por esta: function onGetFormulaValues(cid, level, skill, attack, factor) local skillTotal, levelTotal = skill, level / 5 return -(skillTotal * 0.5 + levelTotal), -(skillTotal * 1.5 + levelTotal) end Teste no meu servidor e a arma, de fato, parou de influenciar no nível, mas é provável que você precise modificar a fórmula de damage.
-
(Resolvido)pegando key do bau
Eu recomendo você fazer consultas das funções enquanto estiver programando, porque isso dá uma noção enorme do como você vai fazer o seu código e quais são as limitações do LUA no otserver. Segue o link abaixo com a documentação do TFS 0.4: https://github.com/otservme/global860/blob/master/sources/doc/LUA_FUNCTIONS
-
(Resolvido)pegando key do bau
Ele está te dizendo aí que tentou chamar a função doSetItemActionId e disse que isso é um valor nil, porque se não me engano em LUA tudo que não tá criado é nulo. Não sei qual base está utilizando, mas a função de setar um action id para o TFS 0.4 é essa: doItemSetActionId(uid, aid) Onde uid é o unique id do item e aid possivelmente o id que você quer.
-
(Resolvido)Criar Mana/Health Cask em 8.6
Me soou como gambiarra esse script. Você chegou a testar dar use com 2 players, reiniciar o server, logar com apenas um dos jogadores e checara quantidade de cargas?
-
Erro BN_CTX_get
Eu chutaria que isso foi problema ao tentar acessar alguma das DLLs, você editou a source?
-
Aprendendo sobre funções LUA
Vou tentar explicar essa parte do CID de uma forma mais prática, demonstrando diferenças entre C e C++ e você pode tirar suas conclusões. Considere o pedaço de código abaixo, escrito na linguagem C (usaremos short em vez de bool, porque é C) struct Player { int id; short isPremmium; }; Nesse caso temos um tipo de dado Player, com um id e uma flag indicando se o jogador possui premmium. Vamos agora declarar uma variável de tipo player: struct Player jogador; jogador.id = 0; jogador.isPremmium = 0; Agora, uma função que verificaria se esse jogador possui premmium ou não, ficaria mais ou menos assim: short isPremmium(struct Player jogador) { return jogador.isPremmium; } Por que o jogador foi passado como parâmetro? Oras, porque a função precisa dele para ter o acesso, variáveis globais não são uma boa prática! Agora, vamos levar para um caso que não precisaria, na linguagem C++ Considere o código abaixo, correspondente ao anterior: class Player { private: int id; bool isPremmium; public: Player(int id, bool isPremmy); bool isPremmium() { return this->isPremmium; } }; Nesse caso, para criar um jogador e verificar se ele tem premmium, teriamos o seguinte pedaço de código: // Criando jogador de id=0 e não tem premmy Player* player = new Player(0, false); if (player->isPremmy()) { // Código } Note que, apesar de isPremmy não ter parâmetro, ainda temos a referência do objeto player criado na linha 2, anterior ao "isPremmy". De uma forma ou outra, você precisa especificar qual é o jogador em questão, isso vem das próprias linguagens de programação! Caso não tenha entendido muito bem algumas expressões utilizadas, recomendo dar uma estudada no básico de algumas linguagens como C/C++/LUA e ver outras partes teóricas como Programação Orientada a Objetos (é um conceito bem fácil de ser compreendido, depois que você entendeu o básico).
-
(Resolvido)Dúvida com a função FOR
Testei no ambiente interativo de LUA -- Input Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio > for i=10,0,-1 do >> print('Hello') >> end -- Output Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello Hello A variável I começa com 10, o loop acaba em 0 e o incremento é de -1 a cada loop. Note que repetiu o Hello 11 vezes.
-
Duvida na history gesior
Eu chutaria que você fez algo de errado com o HTML na hora de colocar a linha nova.
-
Codigos basicos de poketibias!
Não conheço os callbacks dos ots de pokemon, mas uma sugestão que fica para o tópico é mexer um pouco nessa formatação. Tenta colocar os códigos dentro de janelas de código pra ficar mais organizado, exemplo: function onUse(cid, item, frompos, item2, topos) if getPlayerStorageValue(cid, storage) == -1 then -- se voce souber o basico de ingles ja entende o que quer dizer, se o player nao tiver a storage, entao adicionaremos o listado abaixo! doPlayerAddMoney(cid, 5000) AddPokeToPlayer(cid, pokemon, 0, nil, ball) elseif getPlayerStorageValue(cid,storage) >= 1 then -- se o player tiver a storage entao uma mensagem sera enviada pra ele doPlayerPopupFYI(cid, "Voce ja fez essa quest!") -- voce tambem pode usar doPlayerSendTextMessage(cid,24, "Voce ja fez essa quest!") end end Isso deixa o tópico bem mais fácil de ler, visto que a tela fica menos poluída ?
-
Por Level para dar use no Item
Tenta adicionar estas três linhas de código logo depois daquela sequência de confugurações com aqueles local agua, local pedra, etc. local levelMinimo = 100 if getPlayerLevel(cid) < levelMinimo then return doPlayerSendTextMessage(cid, 27, "Voce nao possui level para usar este item.") end
-
[Duvida] Cores
Qual a base do seu servidor?
-
[Duvida] Cores
@Kevin Araujo, As cores do dano de uma skill são definidos conforme o TIPO DE DAMAGE da skill, que provavelmente está setada para COMBAT_PHYSICALDAMAGE. Alguns outros exemplos de tipos e suas cores aproximadas seriam: COMBAT_FIREDAMAGE COMBAT_ICEDAMAGE COMBAT_ENERGYDAMAGE COMBAT_HOLYDAMAGE E só relembrando que isso pode influenciar em imunidades contra atributos em monstros, como um Fire Elemental não tomar dano para Fire Damage.
-
[Ajuda] Spell a frente
Isso aí você modifica no Spells.xml, tem que ter o Direction="1" na linha correspondente à magia
-
Procuro Aulas ou Instrutor para Server Poketibia
@Kynhuu, Bom, esse negócio de criar os sistemas é complicado, porque é possível desenvolver sistemas simples sem ter conhecimento de programação, mas conforme seus sistemas se tornam mais complexos, a história muda. Os servidores de tibia, em geral, são implementados na linguagem de programação C++ e utiliza a linguagem LUA para os scripts. Ou seja, para você editar isso tudo, é bom você estudar LÓGICA DE PROGRAMAÇÃO e ir aprofundando nessas duas linguagens, conforme você for aprendendo. Depois que você pegar o básico, pode dar uma pesquisada no youtube em tópicos como: * Estruturas de Dados; * Programação Orientada a Objetos (POO); * Banco de Dados SQL; Só adiantando que isso não é coisa que você vai aprender do dia pra noite, mesmo pessoas que trabalham com isso há anos ainda precisam continuar aprendendo, então não se preocupe se achar o processo de aprendizado lento. Você pode tentar procurar materiais de universidades, também, visto que em diversos cursos de engenharia a programação é vista também.