-
Total de itens
21 -
Registro em
-
Última visita
Tipo de Conteúdo
Perfis
Fóruns
Calendário
Publique
Posts postados por edaegonis
-
-
20 minutos atrás, Yinz disse:
O que seria melhor que o Node hoje na atualidade? Dino? Eu citei Node e React, porque pra mim no momento é uma versão lts de ambos estáveis, com uma comunidade gigantesca e muito conteúdo, e bibliotecas para consumir. E o bom do Javascript como tu citou é que consegue alcançar todos os tipos, inclusive com o React Native.
Eu to bastante afim de iniciar esse projeto sim.
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- Pedro., luanluciano93 e Cat reagiu a isso
- 1
- 2
-
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?
-
É 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
-
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
-
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
-
Troque a linha 50 por isso e veja se funciona
$config['site']['newchar_towns'][0] = array(1);
- Andersen96 reagiu a isso
- 1
-
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
-
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
-
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
-
Bom pessoal, esse é um script bem simples, mas eu gosto da ideia dele, e não consegui encontrar por aí.
CitarAo usar um item, a função irá criar monstros em determinadas posições e salvar seus cid's no global storage.
Após isso, ao dar use, a função verifica e cria apenas os monstros que já morreram.
É 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
-
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
-
@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í
-
@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
- peterson18 reagiu a isso
- 1
-
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.
-
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
Citarlocal config = { nome = getCreatureName(cid), }
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)
Citarif nome == getCreatureName(cid) then
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
Citarif nome == getCreatureName(cid) then
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.
Citarelseif msgcontains(msg, "blz") or msgcontains(msg, "blzz") and talkState[talkUser] == 1 then
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
CitarselfSay("Olá, como está ".. config.nome ..", faz tempo que não aparece por aqui... Em que posso lhe ajudar?",cid)
aqui você remove o config.nome e deixa apenas nome
-
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.
-
Se ainda estiver procurando pode chamar inbox
-
Ajudar em qual sentido? Seria legal especificar algum detalhe, se possível
-
Estou disponível para ajudar na área de programação, seja lua ou web
- chateadoagr reagiu a isso
- 1
-
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
- ntoshinobiacademy reagiu a isso
- 1
Spawn monstros alavanca
em Suporte Tibia Otserv
Postado
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.