Ir para conteúdo

edaegonis

Membro
  • Registro em

  • Última visita

Tudo que edaegonis postou

  1. teria que ter um intervalo que fica verificando se os monstros já morreram. e caso contrário a função vai criar de novo. uma forma de fazer isso: usar um game storage que vai armazenar os IDs dos monstros que foram criados. daí a função de invervalo vai pegar o valor desse storage e ver se os monstros ainda estão vivos (usando ` Monster(monsterId) `) Esse tópico tem o que você precisa. ?
  2. edaegonis postou uma resposta no tópico em Suporte & Pedidos
    O que quis dizer é que usar PHP é meio ultrapassado. React e Node não é mais “estar na moda” e sim se adaptar ao mercado. Estou apenas incentivando o uso xD Mas nada contra os AAC atuais. Inclusive servem muito bem o propósito. @Yinz inclusive, já tenho uma base em Node de uma API que consulta os dados MySQL de um OT. Só preciso fazer uns updates pois isso foi feito em 2018: https://github.com/edaegonis/forgottensite E também trocar de nome, pois usar "forgotten" é meio plágio. Vou iniciar um projeto novo e pegar algumas coisas que existem nesse repositório. Quando eu fizer isso eu coloco a URL aqui para quem quiser contribuir. Vamos se falando pra dar continuidade ?
  3. edaegonis postou uma resposta no tópico em Suporte & Pedidos
    Cara, confesso que estou surpreso de ler esse tipo de sugestão, e fico feliz pois já estive pensando nessas possibilidades. NodeJS e React já não são tecnologias tão recentes, e hoje em dia a linguagem Javascript consegue alcançar todos tipos de soluções relacionadas a web e inclusive mobile. Acho que já passou da hora de trazer algo nesse sentido para OTServs. Só que, antes tarde do que nunca haha ? Estou me colocando a disponibilidade pra fazer parte desse projeto. Hoje eu trabalho como engenheiro e uso javascript em todas minhas aplicações. Vamos começar com um MVP com as funcionalidades mais essenciais de gerenciamento de conta(login, characters, etc.) e o básico de análise(highscores, etc.) O que acha?
  4. É simples, você pode usar o player storage para chegar nesse resultado. Na sua função verifique a vocação do player, e veja se o storage (que você criou) dele é menor do que o valor permitido para a vocação. Caso positivo, você adiciona vida/mana máxima ao player, e adiciona +1 ao valor da storage. Caso negativo, você pode enviar uma mensagem dizendo que já usou o limite
  5. Bom cara, eu posso tentar te ajudar, mas acho difícil pois o distro crashou no meio da conexão com o banco de dados, e ficamos sem nenhum erro para começar a debugar. Primeiramente, você tem o mysql server configurado na sua máquina? Se você tem o XAMPP para configurar o Apache do seu website, ele também pode configurar o ambiente do MySQL. Tente acessar o seu MySQL pelo terminal/bash (através do painel de controle do Xampp). Se você conseguir, digite esse comando: show databases; E me mostre o resultado
  6. Esse erro está sendo causado pois a tabela player_spells não existe no seu banco de dados. Acesse o seu banco de dados e rode essa query: CREATE TABLE `player_spells` ( `player_id` INT(11) NOT NULL, `name` VARCHAR(255) NOT NULL, INDEX `player_id` (`player_id`), FOREIGN KEY (`player_id`) REFERENCES `players` (`id`) ON DELETE CASCADE ); e veja se funciona
  7. Troque a linha 50 por isso e veja se funciona $config['site']['newchar_towns'][0] = array(1);
  8. Geralmente aí aparecme os towns configurados para os novos personagens no arquivo config/config.php Se o seu site tem esse arquivo coloque ele aqui para eu dar uma olhada
  9. Você está utilizando o TFS 1.3 e aparentemente existe um script chamando a função getPlayerStorageValue, e essa função não existe no TFS 1.3 Ela deve ser substituída por player:getStorageValue(key) Se você me passar o código eu posso te dar uma solução com mais precisão
  10. Esse erro está no arquivo newadvance.lua, na linha 10. No final dessa linha está chamando a função secondsToClock, mas essa função não é global e não está nesse arquivo. Solução: Acho essa linha deveria estar no início do arquivo newadvance.lua: STORAGE_FOR_TIMESTAMP = 15854 Insira essa função no final do arquivo newadvance.lua: local function secondsToClock(seconds, worded) -- Returns inputted seconds as a formatted string local seconds = tonumber(seconds) if seconds <= 0 then if worded == true then return "0 seconds."; else return "00:00:00"; end else local hours = string.format("%02.f", math.floor(seconds/3600)); local mins = string.format("%02.f", math.floor(seconds/60 - (hours*60))); local secs = string.format("%02.f", math.floor(seconds - hours*3600 - mins *60)); if worded == true then return ((seconds<3600 and "") or ((math.floor(seconds/3600) == 1 and "1 hour, ") or (math.floor(seconds/3600)) .. " hours, ")) .. ((seconds < 60 and "") or ((math.floor(seconds/60 - (hours*60)) == 1 and "1 minute, and ") or (math.floor(seconds/60 - (hours*60)).. " minutes, and "))) .. ((math.floor(seconds - hours*3600 - mins *60) == 1 and "1 second") or (math.floor(seconds - hours*3600 - mins *60).. " seconds")) .. "." else return hours..":"..mins..":"..secs end end end
  11. Bom pessoal, esse é um script bem simples, mas eu gosto da ideia dele, e não consegui encontrar por aí. É uma boa solução pra quando você quer summonar monstros numa quest, e se tiver vários players não ficará summonando monstros várias vezes. Esse script está sendo usado ao dar use num chest, mas está a seu critério onde utilizar. monstersToCreate = { [1] = { name = 'Lost Berserker', position = {x = 1034, y = 1425, z = 15} }, [2] = { name = 'Lost Thrower', position = {x = 1028, y = 1424, z = 15} }, [3] = { name = 'Lost Basher', position = {x = 1034, y = 1427, z = 15} }, [4] = { name = 'Lost Thrower', position = {x = 1040, y = 1423, z = 15} }, [5] = { name = 'Lost Husher', position = {x = 1030, y = 1430, z = 15} }, [6] = { name = 'Lost Husher', position = {x = 1038, y = 1429, z = 15} } } function onUse (player, item, param) if item:getActionId() == 45016 then if player:getStorageValue(45016) == -1 then player:addItem(2517, 1) -- shield of honour player:addItem(2502, 1) -- dwarven helmet local currentMonsters = Game.getStorageValue(45016) if currentMonsters then for v = 1, #currentMonsters do local monsterId = currentMonsters[v] local isMonsterAlive = Monster(monsterId) if not isMonsterAlive then local createdMonster = Game.createMonster(monstersToCreate[v].name, monstersToCreate[v].position) currentMonsters[v] = createdMonster:getId() end end Game.setStorageValue(45016, currentMonsters) else local createdMonsters = {} for i = 1, #monstersToCreate do local createdMonster = Game.createMonster(monstersToCreate[i].name, monstersToCreate[i].position) table.insert(createdMonsters, createdMonster:getId()) end Game.setStorageValue(45016, createdMonsters) end player:setStorageValue(45016, 1) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "You've got a reward.") else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "You've already got your reward.") end end return true end actions.xml: <action actionid="45016" script="seu_script.lua" /> Se alguém quiser aprimorar o script, sinta-se à vontade ?
  12. Esse erro acontece pois não está sendo possível conectar ao MySQL utilizando o usuário 'forgottenserver'@'localhost' A configuração das credenciais ficam no config.lua. Procure lá e troque para as credenciais corretas do seu MySQL server. As vezes, trocando o forgottenserver por root já funciona ?
  13. edaegonis postou uma resposta no tópico em Suporte Tibia OTServer
    @Emanueldk você pode hostear ele no seu próprio pc, se o seu roteador tiver as configurações corretas; mas essa forma é a mais complicada pois ainda existem provedores que bloqueiam esse acesso através do modem. Eu aconselho você colocar o seu site num host gratuito, existem vários por aí, por exemplo esse que já usei: https://infinityfree.net/ Você vai precisar basicamente fazer upload da pasta do seu site e do seu banco de dados. Acredito que eles possuam um tutorial ou algo do tipo. Qualquer dúvida só chamar aí ?
  14. @peterson18 está quase, faltou remover o if desnecessário acredito que a versão correta do script seria assim: 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 talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid local nome = getCreatureName(cid) if msgcontains(msg, "blz") or msgcontains(msg, "blzz") and talkState[talkUser] == 1 then selfSay("Olá, como está ".. nome ..", faz tempo que não aparece por aqui... Em que posso lhe ajudar?",cid) return true end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) veja se deu certo ?
  15. edaegonis postou uma resposta no tópico em Suporte Tibia OTServer
    E ai cara, tudo certo? Bom, primeiramente, vou te explicar uns conceitos sobre desenvolvimento web: CSS - esse é o cara que faz o estilo da sua página, ou seja, a maioria dos detalhes visuais. Por exemplo: a cor de um botão, o tamanho da fonte de um texto, a distância entre elementos, etc. Geralmente, dentro da pasta do seu site, ele é um arquivo com o nome styles.css. Se não existir esse nome, procure por arquivos que terminem com .css. Você vai precisar desse cara pra resolver alguns de seus problemas. HTML - esse aqui é responsável pela estrutura da sua página. Por exemplo: os textos, as tabelas, as imagens, os campos de digitar, os botões, etc. Geralmente os sites criados por gesior(de otserver em geral), o HTML fica em arquivos que terminam com .php. PHP - ele é responsável por gerar a parte dinâmica da sua página. Ele fica no lado do servidor, então, acredito que por agora o seu problema não seja com ele. Se você usa o navegador Google Chrome, vá para a sua página e aperte CTRL+SHIFT+C, vai abrir o inspecionador de elementos, tente brincar com esse cara. Com ele, você pode ver o estilo dos elementos e também qual arquivo .css que o elemento que você selecionou está utilizando: Além disso não tem muito o que eu possa ajudar, sem acessar o seu site.
  16. E ai cara, tudo certo? Lendo o seu código, percebo que talvez você esteja cometendo um pequeno erro de lógica, e alguns erros de semântica. 1- erros de semântica não há necessidade de colocar a sua variável em um objeto. como você está apenas declarando a variável nome, ela pode ser acessada diretamente, ou seja, essas linhas poderiam se resumir em: local nome = getCreatureName(cid) nesse contexto, a variável nome não existe, pois você criou ela dentro do objeto config, então ficaria config.nome 2- erro de lógica por que você está comparando a variável nome com o nome da criatura? Você já declarou a variável nome com o nome da criatura nas linhas anteriores dessa forma, acredito que esse if é desnecessário, e você pode remover. quando remover o if anterior, altere essa linha removendo o elseif e colocando um if no lugar, dessa forma: if msgcontains(msg, "blz") or msgcontains(msg, "blzz") and talkState[talkUser] == 1 then aqui você remove o config.nome e deixa apenas nome
  17. Cara, sem acesso ao seu ambiente para debugar, fica difícil encontrar o problema. Lendo o código, da pra ver que tem um redirect, mas acredito que o problema é que esteja dando um erro antes, que impede o redirect.
  18. edaegonis postou uma resposta no tópico em Formação de Equipe
    Se ainda estiver procurando pode chamar inbox ?
  19. edaegonis postou uma resposta no tópico em Formação de Equipe
    Ajudar em qual sentido? Seria legal especificar algum detalhe, se possível
  20. Estou disponível para ajudar na área de programação, seja lua ou web ?
  21. E ai cara, tudo certo? Esse erro está aparecendo pois a variável $cap não foi definida. Uma possível solução seria seguir esses passos: Remover essas 3 linhas desnecessárias (linha 310): Adicionar uma nova linha com a atribuição (linha 315): $cap = create_captcha($vals); Espero que tenha funcionado ?

Informação Importante

Confirmação de Termo