Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Bom dia amigos, hoje venho pedir sua ajuda visto que estou recebendo alguns 
erros no console.

O primeiro npc é comprar a bless, recebo este erro no console
[0:48:46.533] [Error - LuaInterface::loadFile] data/npc/scripts/BlessMan.lua:40: 'do' expected near 'doPlayerAddBlessing'
[0:48:46.534] [Warning - NpcEvents::NpcEvents] Cannot load script: data/npc/scripts/BlessMan.lua
[0:48:46.535] data/npc/scripts/BlessMan.lua:40: 'do' expected near 'doPlayerAddBlessing'

meu script

 

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)
    if(not npcHandler:isFocused(cid)) then
        return false
    end

    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
    local price = 60000    -------- precio

    if msgcontains(msg, 'bless') then     ----------------Z lo que hay que decirle
        if isPremium(cid) == TRUE then
            if getPlayerMoney(cid) <= price then
                selfSay('I will give to you all blessings, but you will have to make a sacrifice. Are you prepared to pay '.. price ..' gold for the blessings?', cid)
                talkState[talkUser] = 1
            else
                selfSay('Oh. You do not have enough money.', cid)
                talkState[talkUser] = 0
            end
        else
            selfSay('Oh. Only premium players can buy blessings.', cid)
            talkState[talkUser] = 0
        end

    elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then
        if getPlayerBlessing(cid) < 0 then
            selfSay('Sorry, but you already have one of the blessing.', cid)
			talkState[talkUser] = 0
        else
			if doPlayerRemoveMoney(cid, price) == TRUE then
				for i = 1, 5 -----------then  --------> wajajajajaajajajajaajjajajjaaj
                doPlayerAddBlessing(cid, i)
                selfSay('Now the Gods blessed you.', cid)
            else
                selfSay('Oh. You do not have enough money.', cid)
            end
        end
		
    elseif msgcontains(msg, 'no') and (talkState[talkUser] == 1) then
        selfSay('Ok, Good Bye Adventurer.', cid)
        talkState[talkUser] = 0
    end
    return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Error NPC de task

Consola:

[0:48:46.737] [Error - LuaInterface::loadFile] data/npc/scripts/simple_task.lua:90: ')' expected near '∩'
[0:48:46.739] [Warning - NpcEvents::NpcEvents] Cannot load script: data/npc/scripts/simple_task.lua
[0:48:46.740] data/npc/scripts/simple_task.lua:90: ')' expected near '∩'

 

Script:

domodlib('task_func')
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)
   if(not npcHandler:isFocused(cid)) then
      return false
   end
   local talkUser,msg, str,rst = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid, msg:lower(),"",""
   local task,daily, hours = getTaskMission(cid),getDailyTaskMission(cid), 24
   if isInArray({"task","tasks","mision","mission"}, msg) then
      if task_sys[task] then
         if getPlayerStorageValue(cid, task_sys[task].start) <= 0 then
            if getPlayerLevel(cid) >= task_sys[task].level then
               setPlayerStorageValue(cid, task_sys[task].start, 1)
               npcHandler:say("[Task System] Felicidades, ahora estas participando en la task "..task_sys[task].name.." y deberas matar "..task_sys[task].count.." de esta lista: "..getMonsterFromList(task_sys[task].monsters_list)..". "..(#task_sys[task].items > 0 and "Ah y por favor traeme "..getItemsFromList(task_sys[task].items).." para mi." or "").."" , cid)
            else
               npcHandler:say("Disculpa, necesitas ser nivel "..task_sys[task].level.." para poder participar en la task de "..task_sys[task].name.."!", cid)
            end
         else
            npcHandler:say("Lo siento, actualmente ya participas en la task "..task_sys[task].name..". Puedes {entregar} en caso de que ya la hayas completado.", cid)
         end
      else
         npcHandler:say("Disculpa, por el momento no tengo ninguna task para ti!", cid)
      end
   elseif isInArray({"diaria","daili","daily","dayli","diario"}, msg) then
      if getPlayerStorageValue(cid, task_sys_storages[6]) - os.time() > 0 then
         npcHandler:say("Disculpa, debes esperar "..os.date("%d %B %Y %X ", getPlayerStorageValue(cid,task_sys_storages[6])).." para iniciar una nueva task diaria!", cid) return true
      elseif daily_task[daily] and getPlayerStorageValue(cid, task_sys_storages[5]) >= daily_task[daily].count then
         npcHandler:say("Tienes una task para {entregar} !", cid) return true
      end
      local r = doRandomDailyTask(cid)
      if r == 0 then
         npcHandler:say("Sorry, no tienes nivel para completar una task diaria.", cid) return true
      end
      setPlayerStorageValue(cid, task_sys_storages[4], r)
      setPlayerStorageValue(cid, task_sys_storages[6], os.time()+hours*3600)
      setPlayerStorageValue(cid, task_sys_storages[7], 1)
      setPlayerStorageValue(cid, task_sys_storages[5], 0)
       local dtask = daily_task[r]
      npcHandler:say("[Daily Task System] Felicidades, ahora estas participando en la task diaria de "..dtask.name.." y deberas matar "..dtask.count.." monstruos de esta lista: "..getMonsterFromList(dtask.monsters_list).." hasta "..os.date("%d %B %Y %X ", getPlayerStorageValue(cid,task_sys_storages[6]))..". Buena suerte!" , cid)
   elseif isInArray({"recibir","reward","recompensa","report","reportar","entregar","entrega"}, msg) then
      local v, k = task_sys[task], daily_task[daily] 
      if v then -- original task
         if getPlayerStorageValue(cid, v.start) > 0 then
            if getPlayerStorageValue(cid,task_sys_storages[3]) >= v.count then
               if #v.items > 0 and not doRemoveItemsFromList(cid, v.items) then
                  npcHandler:say("Disculpa, pero tambien necesitas entregar los items de esta lista: "..getItemsFromList(v.items), cid) return true
               end
          if v.exp > 0 then doPlayerAddExp(cid, v.exp) str = str.."".. (str == "" and "" or ", ") .." "..v.exp.." de exp" end
               if v.points > 0 then setPlayerStorageValue(cid, task_sys_storages[2], (getTaskPoints(cid)+v.points)) str = str.."".. (str == "" and "" or ", ") .." + "..v.points.."task points" end
               if v.money > 0 then doPlayerAddMoney(cid, v.money) str = str.."".. (str == "" and "" or ", ") ..""..v.money.." gps" end
               if table.maxn(v.reward) > 0 then GiveRewardsTask(cid, v.reward) str = str.."".. (str == "" and "" or ", ") ..""..getItemsFromList(v.reward) end
               npcHandler:say("Gracias! tus recompensas: "..(str == "" and "ninguna" or ""..str.."").." por haber terminado la task de "..v.name, cid)
               setPlayerStorageValue(cid, task_sys_storages[3], 0)
               setPlayerStorageValue(cid, task_sys_storages[1], (task+1))
            else
               npcHandler:say("Disculpa, pero aun no terminas la task de  "..v.name..". necesito que mates mas "..(getPlayerStorageValue(cid, task_sys_storages[3]) < 0 and v.count or -(getPlayerStorageValue(cid,task_sys_storages[3])-v.count)).." De estos horribles monstruos!", cid)
            end
         end
      end
      if k then -- daily task
         if getPlayerStorageValue(cid, task_sys_storages[7]) > 0 then
            if getPlayerStorageValue(cid, task_sys_storages[5]) >= k.count then
            if k.exp > 0 then doPlayerAddExp(cid, k.exp) rst = rst.."".. (rst == "" and "" or ", ") .." "..k.exp.." de exp" end
               if k.points > 0 then setPlayerStorageValue(cid, task_sys_storages[2], (getTaskPoints(cid)+k.points)) rst = rst.."".. (rst == "" and "" or ", ") .." + "..k.points.."task points" end
               if k.money > 0 then doPlayerAddMoney(cid, k.money) rst = rst.."".. (rst == "" and "" or ", ") ..""..k.money.." gps" end
               if table.maxn(k.reward) > 0 then GiveRewardsTask(cid, k.reward) rst = rst.."".. (rst == "" and "" or ", ") ..""..getItemsFromList(k.reward) end
               npcHandler:say("Gracias por tu ayuda! Recompensas: "..(rst == "" and "ninguna" or ""..rst.."").." por haber completado la task de "..k.name, cid)
               setPlayerStorageValue(cid, task_sys_storages[4], 0)
               setPlayerStorageValue(cid, task_sys_storages[5], 0)
               setPlayerStorageValue(cid, task_sys_storages[7], 0)
               else
               npcHandler:say("Disculpa pero no terminaste la task diaria de "..k.name..". Necesito que mates mas "..(getPlayerStorageValue(cid, task_sys_storages[5]) < 0 and k.count or -(getPlayerStorageValue(cid,task_sys_storages[5])-k.count)).." De estos monstruos!", cid)
            end
         end
      end
   elseif msg == "no" then 
      selfSay("Todo bien entonces", cid) 
      talkState[talkUser] = 0 
      npcHandler:releaseFocus(cid) 
   end
   return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Pfv algem pode me ajudar? +Repp

Link para o post
Compartilhar em outros sites

@Darwiinxp tenta assim o npc de bless:

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)
    if(not npcHandler:isFocused(cid)) then
        return false
    end

    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
    local price = 60000    -------- precio

    if msgcontains(msg, 'bless') then     ----------------Z lo que hay que decirle
        if isPremium(cid) == TRUE then
            if getPlayerMoney(cid) <= price then
                selfSay('I will give to you all blessings, but you will have to make a sacrifice. Are you prepared to pay '.. price ..' gold for the blessings?', cid)
                talkState[talkUser] = 1
            else
                selfSay('Oh. You do not have enough money.', cid)
                talkState[talkUser] = 0
            end
        else
            selfSay('Oh. Only premium players can buy blessings.', cid)
            talkState[talkUser] = 0
        end

    elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then
        if getPlayerBlessing(cid) < 0 then
            selfSay('Sorry, but you already have one of the blessing.', cid)
            talkState[talkUser] = 0
        else
            if doPlayerRemoveMoney(cid, price) == TRUE then
           doPlayerAddBlessing(cid, 1)
           doPlayerAddBlessing(cid, 2)
           doPlayerAddBlessing(cid, 3)
           doPlayerAddBlessing(cid, 4)
           doPlayerAddBlessing(cid, 5)
                selfSay('Now the Gods blessed you.', cid)
            else
                selfSay('Oh. You do not have enough money.', cid)
            end
        end
        
    elseif msgcontains(msg, 'no') and (talkState[talkUser] == 1) then
        selfSay('Ok, Good Bye Adventurer.', cid)
        talkState[talkUser] = 0
    end
    return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Link para o post
Compartilhar em outros sites

 

Já não me dá o erro no console, mas quando digo "hi", "bless" "yes"
isso aparece no console
[Warning - Bless William] NpcSystem:
Parameter 'keyword_reply2' missing. Skipping...

 

Link para o post
Compartilhar em outros sites

@Darwiinxp 

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)
    if(not npcHandler:isFocused(cid)) then
        return false
    end

    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
    local price = 60000    -------- precio

    if msgcontains(msg, 'bless') then     ----------------Z lo que hay que decirle
        if isPremium(cid) == TRUE then
            if getPlayerMoney(cid) <= price then
                selfSay('I will give to you all blessings, but you will have to make a sacrifice. Are you prepared to pay '.. price ..' gold for the blessings?', cid)
                talkState[talkUser] = 1
            else
                selfSay('Oh. You do not have enough money.', cid)
                talkState[talkUser] = 0
            end
        else
            selfSay('Oh. Only premium players can buy blessings.', cid)
            talkState[talkUser] = 0
        end

    elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then
        if getPlayerBlessing(cid) < 0 then
            selfSay('Sorry, but you already have one of the blessing.', cid)
            talkState[talkUser] = 0
        else
            if doPlayerRemoveMoney(cid, price) == TRUE then
                for i = 1, 5 then
                doPlayerAddBlessing(cid, i)
                selfSay('Now the Gods blessed you.', cid)
            else
                selfSay('Oh. You do not have enough money.', cid)
            end
        end
        
    elseif msgcontains(msg, 'no') and (talkState[talkUser] == 1) then
        selfSay('Ok, Good Bye Adventurer.', cid)
        talkState[talkUser] = 0
    end
    return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Link para o post
Compartilhar em outros sites
2 minutos atrás, Baalszor disse:

@Darwiinxp 

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)
    if(not npcHandler:isFocused(cid)) then
        return false
    end

    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
    local price = 60000    -------- precio

    if msgcontains(msg, 'bless') then     ----------------Z lo que hay que decirle
        if isPremium(cid) == TRUE then
            if getPlayerMoney(cid) <= price then
                selfSay('I will give to you all blessings, but you will have to make a sacrifice. Are you prepared to pay '.. price ..' gold for the blessings?', cid)
                talkState[talkUser] = 1
            else
                selfSay('Oh. You do not have enough money.', cid)
                talkState[talkUser] = 0
            end
        else
            selfSay('Oh. Only premium players can buy blessings.', cid)
            talkState[talkUser] = 0
        end

    elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then
        if getPlayerBlessing(cid) < 0 then
            selfSay('Sorry, but you already have one of the blessing.', cid)
            talkState[talkUser] = 0
        else
            if doPlayerRemoveMoney(cid, price) == TRUE then
                for i = 1, 5 then
                doPlayerAddBlessing(cid, i)
                selfSay('Now the Gods blessed you.', cid)
            else
                selfSay('Oh. You do not have enough money.', cid)
            end
        end
        
    elseif msgcontains(msg, 'no') and (talkState[talkUser] == 1) then
        selfSay('Ok, Good Bye Adventurer.', cid)
        talkState[talkUser] = 0
    end
    return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

[2:16:51.247] [Error - NpcScript Interface]
[2:16:51.249] (Unknown script file)
[2:16:51.250] Description:
[2:16:51.250] attempt to call a nil value
[2:16:51.252] stack traceback:

:c

Meu BlessMan.xml

<?xml version="1.0" encoding="UTF-8"?>
	<npc name="Bless William" script="BlessMan.lua" walkinterval="2000" floorchange="0" speechbubble="1">
	<health now="100" max="100"/>
	<look type="134" head="58" body="114" legs="87" addons="3"/>
	<parameters>
		<parameter key="module_keywords" value="1" />
		<parameter key="keywords" value="bless;blessings" />
		<parameter key="keyword_reply1" value="Excelente! si aun estas interesado confirmame la compra con {yes} para concluir ." />
	</parameters>
</npc>

 

Link para o post
Compartilhar em outros sites

@Darwiinxp 

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)
    if(not npcHandler:isFocused(cid)) then
        return false
    end

    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
    local price = 60000    -------- precio

    if msgcontains(msg, 'bless') then     ----------------Z lo que hay que decirle
        if isPremium(cid) == TRUE then
            if getPlayerMoney(cid) <= price then
                selfSay('I will give to you all blessings, but you will have to make a sacrifice. Are you prepared to pay '.. price ..' gold for the blessings?', cid)
                talkState[talkUser] = 1
            else
                selfSay('Oh. You do not have enough money.', cid)
                talkState[talkUser] = 0
            end
        else
            selfSay('Oh. Only premium players can buy blessings.', cid)
            talkState[talkUser] = 0
        end

    elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then
    if getPlayerBlessing(cid, 1) or getPlayerBlessing(cid, 2) or getPlayerBlessing(cid, 3) or getPlayerBlessing(cid, 4) or getPlayerBlessing(cid, 5) then
            selfSay('Sorry, but you already have one of the blessing.', cid)
            talkState[talkUser] = 0
        else
            if doPlayerRemoveMoney(cid, price) == TRUE then
        doPlayerAddBlessing(cid, 1)
        doPlayerAddBlessing(cid, 2)
        doPlayerAddBlessing(cid, 3)
        doPlayerAddBlessing(cid, 4)
        doPlayerAddBlessing(cid, 5)
                selfSay('Now the Gods blessed you.', cid)
            else
                selfSay('Oh. You do not have enough money.', cid)
            end
        end
        
    elseif msgcontains(msg, 'no') and (talkState[talkUser] == 1) then
        selfSay('Ok, Good Bye Adventurer.', cid)
        talkState[talkUser] = 0
    end
    return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Link para o post
Compartilhar em outros sites
Eu faço o diálogo normal, mas quando digo "yes" para confirmar,
 o npc não responde mais a mim.
21:30 Bless William: Welcome, Raynexz! I have been expecting you.
21:30 Raynexz [504]: bless
21:30 Bless William: Excelente! si aun estas interesado confirmame la compra con yes para concluir .
21:30 Raynexz [504]: yes
e isso continua aparecendo no console
[Warning - Bless William] NpcSystem:
Parameter 'keyword_reply2' missing. Skipping...

 

Link para o post
Compartilhar em outros sites

@Darwiinxp Amigo, as lib dos seus npcs devem estar erradas, podem não conter as funções necessárias, acabei de testar no meu server e funcionou normalmente.

Link para o post
Compartilhar em outros sites

 

existe alguma maneira de corrigir isso? Postando sua libs? uso TFS 0.4

12 minutos atrás, Baalszor disse:

@Darwiinxp Amigo, as lib dos seus npcs devem estar erradas, podem não conter as funções necessárias, acabei de testar no meu server e funcionou normalmente.

 

Amigo já resolvi isso, foi um erro nas palavras-chave! Tive que remover algumas linhas do meu arquivo .xml

 

foi assim que resolvi
 

<?xml version="1.0" encoding="UTF-8"?>
	<npc name="Bless William" script="BlessMan.lua" walkinterval="2000" floorchange="0" speechbubble="1">
	<health now="100" max="100"/>
	<look type="134" head="58" body="114" legs="87" addons="3"/>
	<parameters>
		<parameter key="keywords" value="bless;blessings" />

	</parameters>
</npc>

 

 

55 minutos atrás, Baalszor disse:

@Darwiinxp Amigo, as lib dos seus npcs devem estar erradas, podem não conter as funções necessárias, acabei de testar no meu server e funcionou normalmente.

com o god o script funciona bem,
 mas com os jogadores não, mesmo que tenha dinheiro, o npc diz o seguinte:

22:31 Qwerty [75]: hi
22:31 Bless William: Welcome, Qwerty! I have been expecting you.
22:32 Qwerty [75]: bless
22:32 Bless William: Oh. You do not have enough money.

 

E que tenho dinheiro suficiente, como faço para resolver isso?

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.


  • Conteúdo Similar

    • Por matheuzinPXT
      Iae meus queridos, boa noite. 

      Jogava na época do 8.60. Tenho vontade de montar um server, e fico com algumas dúvidas.
       
      Vejo alguns servidores com sistemas bem diferentes, asas nos personagens, várias sprites, os itens que possuem efeitos/animações estão rápidos igual as versões 12+
       
      Como funciona? É feito um cliente próprio para essas alterações ou utilizado o próprio da cip mesmo?
       
      Estou começando a estudar programação, e quero aprender mais sobre o jogo
       
    • Por DiigooMix
      Olá pessoal, gostaria de saber como posso resolver esse problema de login failed no cliente 13x.

       
      Server que estou usando como base: Canary 13x
      Cliente com IP configurado
      Não sei se tem algo errado com isso, mas mesmo com a distro mostrando "server online", no site aparece "server offline"

       
      Site que estou usando: Canary AAC
      Li em muitos posts que pode ser algo relacionado com o "login.lua", mas não achei esse arquivo  para o site Canary AAC. Se houver alguém com este arquivo, poderia me disponibilizar, por gentileza?
       
       
      Uma segunda dúvida
      Como posso revolver o problema com as imagens do site?

       
      Agradeço desde já por toda e qualquer ajuda.
    • Por marcoshps11
      Neste tutorial, irei ensinar configurar o Docker no windows e rodar seu otserver
       
       
      - Diferença entre Docker x Máquina virtual:
        Docker e Máquinas Virtuais (VMs) ambas são fundamentais usadas para isolar recursos em um sistema de computação, mas funcionam de maneiras muito diferentes.
       
        VMs são ambientes de computação completos, incluindo um sistema operacional (SO) completo, que simulam o hardware de um computador físico. Isso significa que cada VM é um sistema autônomo e independente.   Já o Docker, usa a tecnologia de contêineres. Os contêineres compartilham o mesmo sistema operacional do host, mas mantêm seu próprio espaço de processo, arquivos e rede. Isso significa que eles são muito mais leves do que as VMs, pois não precisam de um SO completo, e podem ser iniciados e parados muito mais rapidamente.
      - Vantagens em utilizar o Docker
       O Docker oferece várias vantagens significativas:
      Eficiência de recursos: Como os contêineres Docker compartilham o SO do host, eles são mais leves e usam menos recursos do que as VMs. Portabilidade: O Docker permite que você "construa uma vez, execute em qualquer lugar". Uma vez criado um contêiner Docker, ele pode ser executado em qualquer sistema que suporte o Docker, independentemente das configurações subjacentes. Isolamento: Cada contêiner Docker é isolado do resto do sistema, o que ajuda a evitar conflitos entre diferentes aplicações e versões de software. Integração e entrega contínua: O Docker se integra bem com ferramentas de CI/CD (Integração Contínua / Entrega Contínua), permitindo a automatização de testes e implantação de aplicações. Escalabilidade e Orquestração: O Docker facilita a escalabilidade de aplicações, permitindo que múltiplos contêineres sejam implantados facilmente. Além disso, com ferramentas como Docker Swarm e Kubernetes, a orquestração de contêineres se torna eficiente e gerenciável  
       
      Colocando a mão na massa
       
      Este tutorial será dividido nas seguintes etapas:
      Preparação do Windows Instalando o Docker Instalando imagens mariadb e phpmyadmin Realizando a build da imagem TFS  
      1º PASSO:  Preparando o Windows com o subsistema Linux.
       
      AVISO: Essa Etapa será necessária somente caso ainda não possua o subsistema Linux ativado em seu windows
       
      Os comandos a seguir, serão todos utilizando o POWERSHELL do windows, na barra de pesquisa digite POWERSHELL e execute como administrador.
       

       
      Com o POWERSHELL aberto, execute os seguintes comandos:
       
      Habilitando subsistema Linux:
        dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart  
       
      Habilitando recurso de máquina virtual: dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart  
      Baixe e instale Kernel do Linux:  
      https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
       
      Após essa etapa, será necessário reiniciar o computador para atualização, após reiniciar, abra novamente o PowerShell
       
      Definindo o WSL 2 como padrão: wsl --set-default-version 2  
       
      Após esses passos, basta entrar na Microsoft Store e instalar o sistema Ubuntu:


       
      Após a instalação, abra o Ubuntu, como será a primeira vez, irá solicitar para que digite um nome de usuário e uma senha.

       
       
       
      Etapa 1 concluída.
       
      Fonte: https://learn.microsoft.com/pt-br/windows/wsl/install-manual
       
      2º PASSO:  Instalando Docker.
       
      este é um passo simples, apenas entre no site oficial do Docker, baixe e instale o Docker Desktop

      https://www.docker.com/
       

       
       
      Etapa 2 concluída.
       
       
      3º PASSO:  Instalando imagens MariaDB e phpMyAdmin
       
       Assim como no passo 1, execute novamente o PowerShell como administrador e siga os seguintes passos:
       
      Primeiro vamos baixar as imagens necessárias, execute os seguintes comandos: docker pull mariadb  
      docker pull phpmyadmin/phpmyadmin  
       
      Agora iremos criar uma "Rede" para que o docker se comunique entre os containers que iremos utilizar. Execute o seguinte comando:  
      docker network create mynetwork  
        mynetwork é o nome que defini neste caso, você pode utilizar o nome que achar melhor, porém lembre-se desse nome que iremos utilizar nos próximos passos.
       
      Agora iremos iniciar essas imagens, utilizando os seguintes comandos:  
      docker run --name mariadb --network=mynetwork -e MYSQL_ROOT_PASSWORD=your_password -d mariadb  
      your_password = altere pela senha que deseja utilizar no mysql
      mynetwork = é o nome que criamos no passo anterior
       
      docker run --name myadmin --network=mynetwork --link mariadb:db -d -p 8080:80 phpmyadmin/phpmyadmin  
      Lembrando novamente, mynetwork é o nome criado anteriormente
       
      Após esses passos, será possível ver seu container rodando no Docker Desktop:

       
      Etapa 3 concluída.
       
      4º PASSO:  Gerando Imagem do TFS e configurações necessárias:

       
      Baixe a TFS, nesse exemplo será o repositório oficial https://github.com/otland/forgottenserver Extraia os arquivos após baixar com o container mariadb e phpmyadmin rodando, acesse http://localhost:8080/  com o login root, e a senha que criou no passo 3, crie uma nova base de dados e importe o arquivo schema.sql do servidor edite o arquivo config.lua.dist
       -- MySQL
      mysqlHost = "mariadb"
      mysqlUser = "root"
      mysqlPass = "SUA SENHA CRIADO NO PASSO 3"
      mysqlDatabase = "NOME DA DATABASE"
      mysqlPort = 3306
      mysqlSock = ""

      mariadb é o nome do container que estamos rodando o mysql  
       
      ** Caso queira utilizar todo potencial do seu computador na hora de buildar a TFS, no arquivo Dockerfile, edite a linha 18:
      RUN cmake --preset default && cmake --build --config RelWithDebInfo --preset default para
       
      RUN cmake --preset default && cmake --build --config RelWithDebInfo --preset default -- -j 16  
      onde 16 é o numero de processadores lógicos que deseja ser utilizados, não é necessário utilizar 100% porém quanto mais melhor, porém caso utilize mais do que está disponível poderá travar,  então utilize a quantidade mostrada pra menos.
      no gerenciador de tarefas aba desempenho, é possível visualizar a quantidade de núcleos e processadores lógicos do seu CPU


       
      Após isso, entre no Power Shell e execute o comando:  
      docker build -t server .  
       onde "server" é o nome da imagem que será gerada
       
      Após isso, é só iniciar o servidor com o seguinte comando  
      docker run --name server --network=mynetwork -p 7171:7171 -p 7172:7172 -d server  
      lembrando que mynetwork é o nome que geramos no passo 3, e o ultimo parametro é nome da imagem que geramos anteriormente.
       
      Você poderá ver seu sevidor ronando no Docker Desktop:
       

       
      caso queira parar algum servidor ou iniciar novamente, é só clicar no botão de ação:
       

       
      Caso precise fazer alguma alteração no server, basta utilizar os comandos de build e run citados anteriormente.
       
       
       
       
      Lembrando que isso é um tutorial básico para rodar o servidor na máquina local, qualquer dúvida ou sugestão, deixe comentário.
       
    • Por becertified
      .Qual servidor ou website você utiliza como base? 
      Base PokeWish+PokeLight.
      Qual o motivo deste tópico? 
      Como resolver o problema de status? é sem estado e não pode ser adicionado ao otserverlist.
       
    • Por gprada
      .Qual servidor ou website você utiliza como base? 
      Canary 13.11
       
      Qual o motivo deste tópico? 
      Dificuldade em liberar portas
       
      Fala galera do Tibia King, bom dia!
       
      Estou tentando liberar as portas 7171, 7172 e 8080 para que outros usuários possam acessar através de um ip dinâmico configurado no No-IP.
       
      Quando eu pingo o IP dinâmico, percebo que ele aponta para o IP do meu PC corretamente. Porém, não consigo acessar nem o site nem o game através do IP dinâmico, só usando localhost.
       
      As configurações aplicadas tanto no firewall do Windows 10 como no modem da Vivo estão nas imagens em anexo. Alguém teria alguma ideia do que tô fazendo de errado?
       
      Valeu!


×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo