
Histórico de Curtidas
-
edaegonis deu reputação a Cat em Yutae - Cidade + HuntsYutae
Fiz essa cidade a alguns anos e estava guardada no meu PC. Completei ela com 5 hunts, pois tinha um comprador interessado, porém o mesmo foi assaltado e desistiu da compra, então decidi postar pra vocês. O mapa é simples, mas tem vários acessos pela cidade pra WAR e locais para NPC, é uma cidade completa, as houses já vem cadastradas, mais informações e imagens abaixo.
Informações:
Versão: 11.0
Depots: 38
Criaturas: 596
Casas: 24 (maior casa: "Plazza C GH II" (145 sqm))
Show Off Cidade:
Templo & Depot:
Norte da Cidade e Porto
Centro da Cidade:
Arredores:
Saída sul para as hunts com algun s mobs:
Show Off Hunts:
1 - Azul: Shock Head, Betrayed Wraith, Destroyer e Blightwalker
Imagens:
2 - Amarelo: Serpent Spawn, Medusa e Wyvern,
Imagens:
3 - Laranja: Wailing Window, Son of Verminor e Plaguesmith.
Imagens:
4 - Vermelho: Silencer, Demon, Behemoth, Dark Torturer e Juggernaut.
Imagens:
5 - Rosa: Fury, Grim Reaper e Hellhound.
Imagens:
6 - Cinza: Serpent Spawn & Medusa
7 - Marrom: Betrayed Wraith, Blightwalker e Undead Dragon.
A ilha das fury acompanha um depot:
Baixar mapa:
Yutaev1_Nolis.rar
Créditos:
@SamueLGuedes
@Cat
-
edaegonis deu reputação a luanluciano93 em [ZNOTE] New Styller LayoutFiz um layout para um projeto que estou desenvolvendo ... usei como base o znote que é o melhor ACC na minha opinião.
https://www,newstyller.com
Gostaria de ideias, críticas, opiniões ...
-
edaegonis recebeu reputação de Cat em Hati New AACO 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 ?
-
edaegonis recebeu reputação de Cat em Hati New AACCara, 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?
-
edaegonis recebeu reputação de luanluciano93 em Hati New AACO 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 ?
-
edaegonis deu reputação a Pedro. em Hati New AACAta, do jeito que lí deu entender que node e react ja tava ultrapassado kakakak.
Maneiro esse projetin, em 2018 tu ja codava assim, top. Vamo por pra frente sim! ?
-
edaegonis recebeu reputação de Pedro. em Hati New AACO 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 ?
-
edaegonis recebeu reputação de Pedro. em Hati New AACCara, 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?
-
edaegonis deu reputação a Pedro. em Hati New AACOlá, gostaria de saber a opinião de vocês sobre criar um novo AAC em NodeJS. sei que hoje a comunidade tem ótimos aacs como Znote, MyAAC, até o proprio gesior, mas desde que larguei o php, tenho pensado em fazer algo com javascript. Eu já vi algumas discussões sobre Apache, NGIX, Cache, pensei em fazer o back com o node e o front com React. Deixa sugestões aí, se vocês acham válido inciar um projeto c essas tecnologias.
O projeto foi criado no Github, e será publico para quem quiser contribuir.
O projeto vai ser estruturado em NodeJS e React.
Express MySQL Axios Sequelize Bootstrap Bundle Sass Joi Crypto React e dependencies.
Por enquanto o projeto tá bem crú, pois meu nível de javascript não é lá aquelas coisas, então qualquer sugestão, criticas construtivas, serão bem-vindas.
https://github.com/pedrogiampietro/Hati
-
edaegonis deu reputação a Cat em Sistema de teleports por waypoints (descobrir áreas no mapa)Waypoint teleport system é um dispositivo de teletransporte. O principal objetivo de um waypoint é fornecer viagens rápidas entre as áreas que um jogador descobriu. Esse sistema foi desenvolvido por Oen432. (Apenas traduzi)
Demonstração:
Instalação
Abra data/movements/movements.xml. Adicione XML: <movevent event="StepIn" actionid="4236" script="waypoints.lua" /> Abra data/creaturescripts/creaturescripts.xml. Adicione XML: <event type="ModalWindow" name="WaypointsModal" script="modal_windows.lua"/> Faça o Download de waypoints.rar abaixo, no final do tópico. Copie waypoints.lua para data/movements/scripts/waypoints.lua. Copie modal_windows.lua para data/creaturescripts/scripts/modal_windows.lua.
Configuração Todas as configurações estão em - data/movements/scripts/waypoints.lua.
WINDOW_ID - ignore.
BUTTON_ACCEPT - ignore.
BUTTON_CLOSE - ignore.
WAYPOINTS_STORAGE - base storage id, mude se já está sendo usado esse (garanta que de WAYPOINTS_STORAGE para WAYPOINTS_STORAGE + Number of waypoints, as storages não estejam sendo utilizadas em outro código).
WAYPOINTS - lista de waypoints disponíveis
name - nome que será mostrado na lista e quando o waypoint for ativado
position - posição do piso no mapa, aqui é onde o jogador será teleportado
Download
waypoints-1_0_0.rar
-
edaegonis deu reputação a luanluciano93 em [TFS 1.3] OUTFIT BÔNUSOlá, em data/events/scripts/creature.lua (implemente o código substituindo a função onChangeOufit, e verifique se ela esta definida como 1 em events.xml)
function createBonusCondition(id, params) local condition = Condition(CONDITION_ATTRIBUTES, CONDITIONID_DEFAULT) condition:setParameter(CONDITION_PARAM_TICKS, -1) condition:setParameter(CONDITION_PARAM_SUBID, id) for i = 1, #params do local param = params[i].param local value = params[i].value condition:setParameter(param, value) end return condition end outfitBonus = { -- [{male outfit id, female outfit id}] = createBonusCondition(ID, parameters & values) [{128, 136}] = createBonusCondition(1, { {param = CONDITION_PARAM_STAT_MAGICPOINTS, value = 10}, {param = CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT, value = 110} } ), [{129, 137}] = createBonusCondition(2, { {param = CONDITION_PARAM_STAT_MAXMANAPOINTSPERCENT, value = 200} } ) } function getBonusCondition(outfit) for outfits, bonus in pairs(outfitBonus) do if table.contains(outfits, outfit) then return bonus end end return nil end function Creature:onChangeOutfit(outfit) if not self:isPlayer() then return true end local previousBonusCondition = getBonusCondition(self:getOutfit().lookType) local newBonusCondition = getBonusCondition(outfit.lookType) if previousBonusCondition then self:removeCondition(CONDITION_ATTRIBUTES, CONDITIONID_DEFAULT, previousBonusCondition:getSubId()) end if newBonusCondition then self:addCondition(newBonusCondition) end return true end Em data/creaturescript/scripts/login.lua (dentro da função onLogin implemente o código a seguir)
-- Outfit bonus local bonusCondition = getBonusCondition(player:getOutfit().lookType) if bonusCondition then player:addCondition(bonusCondition) end Para configurar usa o exemplo a seguir:
outfitBonuses = { [{male outfit id, female outfit id}] = createBonusCondition(ID, parameters & values) } O ID deve ser diferente para cada bônus, de modo que o script pode identificar entre as condições.
Os parâmetros devem estar dentro de uma tabela: {param = alguma_condição_parâmetro, value = valor_para_mudar}
Aqui estão os parâmetro disponíveis no TFS 1.3:
CONDITION_PARAM_OWNER CONDITION_PARAM_TICKS CONDITION_PARAM_HEALTHGAIN CONDITION_PARAM_HEALTHTICKS CONDITION_PARAM_MANAGAIN CONDITION_PARAM_MANATICKS CONDITION_PARAM_DELAYED CONDITION_PARAM_SPEED CONDITION_PARAM_LIGHT_LEVEL CONDITION_PARAM_LIGHT_COLOR CONDITION_PARAM_SOULGAIN CONDITION_PARAM_SOULTICKS CONDITION_PARAM_MINVALUE CONDITION_PARAM_MAXVALUE CONDITION_PARAM_STARTVALUE CONDITION_PARAM_TICKINTERVAL CONDITION_PARAM_FORCEUPDATE CONDITION_PARAM_SKILL_MELEE CONDITION_PARAM_SKILL_FIST CONDITION_PARAM_SKILL_CLUB CONDITION_PARAM_SKILL_SWORD CONDITION_PARAM_SKILL_AXE CONDITION_PARAM_SKILL_DISTANCE CONDITION_PARAM_SKILL_SHIELD CONDITION_PARAM_SKILL_FISHING CONDITION_PARAM_STAT_MAXHITPOINTS CONDITION_PARAM_STAT_MAXMANAPOINTS CONDITION_PARAM_STAT_SOULPOINTS CONDITION_PARAM_STAT_MAGICPOINTS CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT CONDITION_PARAM_STAT_MAXMANAPOINTSPERCENT CONDITION_PARAM_STAT_SOULPOINTSPERCENT CONDITION_PARAM_STAT_MAGICPOINTSPERCENT CONDITION_PARAM_PERIODICDAMAGE CONDITION_PARAM_SKILL_MELEEPERCENT CONDITION_PARAM_SKILL_FISTPERCENT CONDITION_PARAM_SKILL_CLUBPERCENT CONDITION_PARAM_SKILL_SWORDPERCENT CONDITION_PARAM_SKILL_AXEPERCENT CONDITION_PARAM_SKILL_DISTANCEPERCENT CONDITION_PARAM_SKILL_SHIELDPERCENT CONDITION_PARAM_SKILL_FISHINGPERCENT CONDITION_PARAM_BUFF_SPELL CONDITION_PARAM_SUBID CONDITION_PARAM_FIELD CONDITION_PARAM_DISABLE_DEFENSE CONDITION_PARAM_SPECIALSKILL_CRITICALHITCHANCE CONDITION_PARAM_SPECIALSKILL_CRITICALHITAMOUNT CONDITION_PARAM_SPECIALSKILL_LIFELEECHCHANCE CONDITION_PARAM_SPECIALSKILL_LIFELEECHAMOUNT CONDITION_PARAM_SPECIALSKILL_MANALEECHCHANCE CONDITION_PARAM_SPECIALSKILL_MANALEECHAMOUNT CONDITION_PARAM_AGGRESSIVE Créditos: INFERNUM (OTLAND)
-
edaegonis deu reputação a Delkdors em Atlantis - Mapa PróprioMapa - Atlantis
Download:
Atlantis.otbm
Varredura
RME e Client utilizado para fazer o mapa
primeira vez que postar se tiver algo
errado ou algo para corrigir no mapa me avise pfv
-
edaegonis recebeu reputação de KotZletY em [AJUDA] COLOCANDO SERVIDOR EM MYSQLBom 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
-
edaegonis recebeu reputação de mullino em (Resolvido)Mana e Life Scroll por vocation com LimiteÉ 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
-
edaegonis recebeu reputação de Andersen96 em (Resolvido)Ajudaaaa pleaseTroque a linha 50 por isso e veja se funciona
$config['site']['newchar_towns'][0] = array(1);
-
edaegonis recebeu reputação de KotZletY em (Resolvido)[Creaturescript] tempo pra avançar um level ----> "you advanced from level 227 to level 228 in 20 minutes and 40 seconds"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
-
edaegonis recebeu reputação de poko360 em (Resolvido)[Creaturescript] tempo pra avançar um level ----> "you advanced from level 227 to level 228 in 20 minutes and 40 seconds"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
-
edaegonis recebeu reputação de Storm em Monstros são criados apenas se já forem mortosBom 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 ?
-
edaegonis recebeu reputação de peterson18 em Erro Script Função getCreatureName@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 ?
-
edaegonis recebeu reputação de chateadoagr em IVCG RADBR CONTRATO PROFISSIONAIS!Estou disponível para ajudar na área de programação, seja lua ou web ?
-
edaegonis recebeu reputação de ntoshinobiacademy em Erro ao Criar conta no SiteE 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 ?