antiblock
Rodnia | Alpha & Omega

…Los†

Membro
  • Content Count

    321
  • Joined

  • Last visited

  • Days Won

    11

Posts posted by …Los†


  1. Em 02/08/2021 at 22:58, Keevin Aguiar disse:

    Muito Boa mano , como eu faço pra definir Por exemplo .. 100 % de taxa pro reino vermelho / 200% de taxa pro reino azul e 250% de taxa pro reino amarelo ?? consegui me ajudar ???

    desde já agradeço !!

     

    Estou utilizando esse método https://www.elitepvpers.com/forum/metin2-pserver-guides-strategies/3370351-release-automatic-default-priv-rates-db-startup.html?__cf_chl_managed_tk__=pmd_d003e9e72f3a6f070b7695d84c0cb7c0b7424ad6-1628174226-0-gqNtZGzNAzijcnBszQ16

    Recomendo que você utilize.


  2. Olá a todos!

    Se vc usa o paypal para pagamento automático no seu website como eu.
    Então você já deve ter tido a surpresa caso tenha criado uma conta NOVA.

     

    O Paypal segura o dinheiro para analise e envia como status On Hold que é o mesmo que 0 (Não confirmado).
    O pagamento fica retido até vc confirmar que enviou e qual status do pedido e o código de rastreamento.

    Massss, vendemos produtos digitais e isso não enquadra.
    Você precisa liberar o cash de imediato mesmo que o pagamento fique pendente para analise.

    Veja, o pagamento por parte do cliente esta ok, o que esta pendente é liberação por sua conta ser nova, é uma forma de checar se é uma transação legitima.

     

    Procure o seu script do paypal e nele busque:

     

    'Completed'

    Então você vai mudar esse parametro para:  'Completed' or 'On Hold' or 'Temporary hold'

    Aqui esta a minha linha: 

    if ( $responseNvp[ 'PAYMENTINFO_0_PAYMENTSTATUS' ] == 'Completed' or 'On Hold' or 'Temporary hold')

    Checagem dos status:
    https://www.masonadventures.com/paypal-payment-status/#:~:text=Pending – PayPal is reviewing the,d like to cancel it.
     

    Se você não utiliza pagamento automático, apenas desconsidere.

    By Lost


  3. Pessoal, boa tarde!

    Eu vi algumas quest sobre esse tema e vi que a quest precisava de algumas melhorias etc.. não tem muito mistério.

    Update: anteriormente essa quest limpava o tempo, porém ainda continuava a contar as horas restante, obviamente as rates permanecem ativadas.
    Atualizei para quando desativar o sistema de automação, você também vai desativar as rates.

     

     

    quest priv_empire begin -- Q
        state start begin -- S
    		when guild_man1.chat."GM: Sistema de RATES" or guild_man2.chat."GM: Sistema de RATES" or  guild_man3.chat."GM: Sistema de RATES" with pc.is_gm() begin 
    			say_title("Bem vindo " .. pc.get_name())
    			say("")
    			say("Deseja ativar as rates de forma automática? ")
    			say("Basta fala comigo e eu posso ativar.")
    			say("")
    			say_title("Que desejas fazer? ")
    			say("")
    
    			local menu = select("Ativar Rates", "Desativar Rates", "Sair")
    				if menu == 1 then	 
    					say_title("Informativo:") 
    					say("")
    					say("As rates automáticas foram ativadas.")
    					say("")
    					server_loop_timer("ratesauto", 60*60*23) -- AQUI É O TEMPO QUE ELA VAI SE AUTOATIVAR.  (ratesauto)
    					__give_empire_priv(0, 1, 50, 60*60*24) -- (TEMPO PARA O DROP ITENS) ESTA DEFINIDO COMO 50
    					__give_empire_priv(0, 2, 150, 60*60*24) -- (TEMPO PARA O GOLD) ESTA DEFINIDO COMO 150
    					__give_empire_priv(0, 4, 200, 60*60*24) -- (TEMPO PARA O XP) ESTA DEFINIDO COMO 200
    				elseif menu == 2 then	 
    					say_title("Informativo:")
    					say("")
    					say("Rates automáticas foram desativadas.")
    					say("")
    					clear_server_timer("ratesauto")
    					wait()
    					__give_empire_priv(0, 1, 50, 1) 
    					__give_empire_priv(0, 2, 150, 1) 
    					__give_empire_priv(0, 4, 200, 1)
    				elseif menu == 3 then 
    					return
    				end
    		end
    		
    		when ratesauto.server_timer begin -- auto rates inicio   
    			__give_empire_priv(0, 1, 50, 60*60*24)
    			__give_empire_priv(0, 2, 150, 60*60*24)
    			__give_empire_priv(0, 4, 200, 60*60*24)
    		end
    		
    	end -- S
    end -- Q

    Obs: se você tiver alguma forma de melhorar a quest, deixe abaixo para ter um conteúdo adequado a todos.
    Não vejo mau algum em corrigir ou atualizar.

     

    Atenciosamente,
    ByLost

     


  4. Olá!

    É um tutorial bem simples para resolver o erro: has modification time s in the future, nada mais é que ajuste de hora.

    Esse problema apresenta quando vamos compilar a source do game.
     

    #ee /etc/rc.conf

     

    No final vc vai colar "Se não houver"

    ntpd_enable="YES"

     

    Clica em esc e salve.

     

    Logo depois digite:

     

    #service ntpd start
    
    #tzsetup

     

    Feito isso o horário já vai ajustar.

     

    Para testar digite

    #date

    Se o problema continuar  vc estiver utilizando VIRTUAL BOX, você deve habilitar a opção:

     

    HARDWARE CLOCK em System/Sistema como mostra a imagem abaixo, precisa desligar o servidor antes de editar. Depois só ligar que já vai estar ok.

     

    33048f2b4680d71f7f22acb36b7d980e.png

     

    Para testar a data apenas digite:

    #date

     

     

    By


  5.  

    Em 13/04/2021 at 22:14, Lucas Sales disse:

    BOM DIA

    BOA TARDE

    BOA NOITE !

     

    - AMIGOS, ESTOU COM PROBLEMA NA HORA DO PERSONAGEM ENTRAR NO SERVIDOR.

    - ESTAMOS EM FASE DE TESTE VIA HAMACHI

    - JA TENTAMOS TODOS OS PORTMAPS POSSIVEL E NADA

    - A ENTRADA É DO SHURA 

    - OS IPS JA ESTA TUDO OK DENTRO DO ROOT.

    - NÃO ESTAMOS CONSEGUINDO DESCOBRIR QUAL É O PROBLEMA.

    - ALGUEM PODERIA NOS AJUDAR DEIXANDO ALGUMA MSG OU ALGO QUE POSSA SER!

     

    Vou aconselhar você trocar as files para 40k e vou te dizer o porquê.
     

    1. VPS é muito barata, tem várias ai de R$30 a R$40 que vai te atender bem com seus amigos para brincar.
    2. Você precisa de um computador no mínimo bom para rodar o servidor na sua maquina sem falar da sua internet.
    3. A maioria dos recursos disponíveis hoje é para files 40k +, então você vai encontrar muita incompatibilidade quando precisar mexer em alguma coisa.
    4. Se você precisar de suporte e ajuda, a maioria vai estar mais apita a te ajudar nas files 40k + e tenho certeza que você vai precisar de ajuda. Então ao postar aqui com essas files você não vai ter muita ajuda.

  6. Passa dia, passa mês e passa ano sempre a mesma coisa nessa comunidade, alguém a espreita de derrubar o trabalho de alguém de forma insana.
     

    1. Todo mundo do universo de Metin2 vende algo que não é de sua autoria, dito o isso o próprio Metin2, não é por que você editou alguma coisa que lhe da o poder de vender e chamar de seu. Tão logo se você tem algo em sua posse editando é ilegal e contra as leis de muitos países a fora.
    2. Ah mais o que ele vende tem grátis, sim tem, agora pensa, se uma pessoa tem dificuldade de achar X coisa, e não sabe procurar ou é mesmo preguiçoso, quando pede as pessoas mandam procurar (principalmente aqui), tão logo é viável para ela comprar algo que esta a tempo procurando e não acha, o dinheiro é dela e ela faz o uso que lhe convém. (Sim muitas pessoas fazem isso em toda parte do mundo).

     

    Essa comunidade não anda bem, teve um tempo que todos eram unidos e esse tipo de coisa não era visto, mesmo para um cara que esta revendendo coisas alheias, mais se funciona que mau tem? Detonar não é o caminho.
    O que se encontra aqui sempre as mesmas coisas, critica, critica e mais critica. Parece uma comunidade de gente mau amada que sempre anda a criticar tudo e a todos.

    Somos desenvolvedores, e perdemos um grande publico, pois hoje essa comunidade não é 1% do que foi a uns anos atrás que se via ai média de 30 tutoriais por dia, competições e tudo mais.
    Então preservar o pouco que se resta é importante.

    Muitas figuras abandonaram essa comunidade por essa hostilidade e essa frescura.

    Não tem uma vez que você passe por aqui e vê esse tipo de debate entre crianças, ou alguém a criticar o trabalho do outro, a aba de tutorial também esta carente, vamos postar que ajuda mais que ficar nessa palhaçada.

     

     

    Corrigir erro de português é uma coisa tão infantil que beira o ridículo. 
    Quão importante você acha que é na vida de alguém (de internet) que você acha que ela precisa ponderar a sua escrita para conversar ou debater com você? é uma entrevista de emprego ou o quê? precisa ser perfeito? Portanto corrigir a gramática de alguém é apenas uma forma de se sentir superior.

    Veja cometi alguns erros e pouco me importo em corrigir.
    Desculpe o desabafo mais essa comunidade esta mesmo infectada, esqueceram do real propósito para que lhe foi construída.


  7. Olá a todos!

    É um tut muito simples ok?

    Vai na source do cliente (Binário) e procure pelo arquivo: UserInterface e depois InstanceBaseEffect.cpp

     

    Procure a linha:

    void CInstanceBase::UpdateTextTailLevel(DWORD level)

    E em seguida a linha:

    sprintf(szText, "Lv %d ", level);

    qwLjVSH.png

     

    Faça a sua alteração e compile.

     

     

     

    Tutorial By Lost


  8. Olá a todos!

    A tempo não posto nada na comunidade.
    Pois bem, venho trazer algo feito pelo Marty, que nada mas é que limpar os arquivos duplicados na pasta PACK e deixar ela mais "clean" digamos assim.

    Isso é muito bom em vista que vamos colocando coisas na PACK e não sabemos ao certo se já tem em outra pasta (para mim não mais para alguém sim).

    Dito isso vamos ao tutorial que é bemmmmm simples.

    1º Você deve fazer backup do seu cliente.

     

    2º Você deve baixar os seguintes arquivos: https://mega.nz/folder/GcMUkLxK#ZCOPcVLDxIeKwAKiGQcY0w

     

    3ºVocê deve criar uma pasta chamada newpack e fazer o UNPACK (DESCOMPACTAR) toda sua pasta pack para esta pasta.

     

    4º Entre na pasta newpack e coloque os arquivos  pack_find_duplicates.bat e pack_find_duplicates.py

    a Depois execute o ficheiro .bat e ele vai fazer uma varredura da sua pack descompactada.

     

    OBS: você precisa ter o Python 2.7 instalado, se não tiver baixe, se tiver Windows 10 baixe a versão 3.9 na Windows Store.

     

    Pronto toda sua pasta pack foi limpa e os arquivos duplicados foram apagados, você pode constatar isso no ficheiro: duplicated_files.txt

     

     

    Agora vamos a parte do Index, afinal você apagou arquivos e eles precisam ganhar um caminho correto.

    1º Antes da pasta pack você cola os arquivos: pack_index_make.py e pack_index_make.bat

    Esse ficheiro esta programado para fazer index dos arquivos na pata newpack, por isso falei para vocês fazer unpack lá.. porem você pode editar se quiser.

     

    2º execute o ficheiro pack_index_make.bat e pronto, ele vai gerar um ficheiro chamado: newIndex, basta mover para a pack e refazer a compactação dos arquivos e testar o game.


    Uma atenção, mantenha  backup até ter certeza que nenhum arquivo foi corrompido.
    Não me responsabilizo por má utilização do tutorial.

     

    Tutorial: By Lost
    Créditos: MartySama
    Source: how-to-mt2-general/pack-cleaning at master · martysama0134/how-to-mt2-general · GitHub


  9. 7 horas atrás, tetecow disse:

    Obrigado, tópico resolvido! 

     

    +1

    :bideia:

     

    Usa isso também:

     

    ----------------------------------------------
    --Criador:	Lost
    --Origem:	Metin2
    --(Lua) Source Code Edit: Visual Code
    ----------------------------------------------
    quest mask begin
        state start begin
    		when 30183.use with pc.get_gold() >= 1583999999 begin
    		syschat("Quantidade não permitida.")
    		end
    		when 30183.use begin
    			pc.change_money(416000000)
    			pc.remove_item("30183",1)
    		end
        end
    end

    Configure de acordo com sua necessidade, dependendo das files tem muitos gold e você queira controlar o uso das mask.
    Boa sorte.


  10. 7 horas atrás, tetecow disse:

    não consegue atender a esta solicitação no momento.

    HTTP ERROR 500


    Esse erro é relacionado ao seu htaccess.
    Da uma lida: https://stackoverflow.com/questions/21158375/htaccess-file-gives-500-internal-server-error

    Apaga o seu arquivo .htaccess e testa se o site irá abrir. ( Pode ser que o seu website tenha a index em outra página, o site irá desformatar).
    Isso é apenas para ver se o erro 500 irá sumir. 
    Se o erro sumiu então configure corretamente o seu arquivo .htaccess como mostrei o link acima ou busque relacionado ao seu arquivo.

    Outra solução pode ser o host do seu website
    E também pode estar sofrendo ataque.

    De todo modo boa sorte.


  11. Olá!

    Venho trazer um simples tutorial para quem utilizar o Visual Code como editor: https://code.visualstudio.com/
    Para quem não sabe o @martysama0134  liberou uma extensão .quest para a ferramenta que facilita muito todo o processo.

     

    O erro que ocorreu é simples, o editor vem por padrão o UTF8 e não esta disponível o ANSI. 
    Existe uma linguagem que esta disponível bem parecida com a ANSI a ponto de suprir o que se precisa para o Metin2.

     

    Veja o que ocorre se eu escrever "ação" e salvar e depois reabrir.

    a??o

    Já com o Windows 1252

     

    ação

     

     

     

    1º  Clica com botão esquerdo do mouse em "quest".


    ay23DUh.png

     

    E depois clique em
     

    gTU0t3t.png

     

     

    Procure por: 

    "workbench.statusBar.visible": true,

     

    Abaixo você cole, se já estiver apenas altere para false.

    "files.autoGuessEncoding": false,

     

     


    No final você pode colar:
     

        "[lua]": {

            "files.encoding": "windows1252"

        },

        "[quest]": {

            "files.encoding": "windows1252"

        },

        "[cpp]": {

            "files.encoding": "windows1252"

        },

     

     

    Deve ficar como nesse exemplo:

     

    ObB9nVa.png

     

     

     

    Credit
    By Lost


  12. Com essa quest você vai ouvir exemplo "Olá bem vindo a cyber gamers" bom jogo bla bla bla.
     

    Vai em root > game.py e procure

    "mall"                    : self.__InGameShop_Show,

     

    Adicione abaixo

    #QUEST_SONGS BY LOST
    "welcome"                    : self.welcome_quest,
    #END OF QUEST_SOUND BY LOST

     

    Agora vai até o final e adicione:

    #QUEST_SOUND BY LOST
    def welcome_quest(self):
    	snd.PlaySound("sound/ui/welcome.wav")
    #END OF QUEST_SOUND BY LOST

     

    Agora vamos a quest.

    ----------------------------------------------
    --Criador:   Lost
    --Origem:    CYBERGAMERS
    --(Lua):     Source Code
    ----------------------------------------------
    quest give_basic_weapon begin
        state start begin
            when login begin    
                cmdchat("welcome")
    
    blablabla..

    Resumindo, com ctz você deve ter a quest de inicio etc.. então basta você acrescentar:

    cmdchat("welcome")

     

    Link app Android storyteller voice: https://play.google.com/store/apps/details?id=br.com.escolhatecnologia.vozdonarrador&hl=en
    Converte mp3 to wav: https://online-audio-converter.com/

    Credit: By Lost
    Enjoy


  13. 21 minutos atrás, Karbust disse:

    Não sei se sabes, mas tanto na source do cliente, do game e do dump proto existe uma struct com os campos. Existe tanto para itens como mobs, e têm de coincidir, senão dá barraca.

     

    No cliente basta procurar por isto:

    
    		typedef struct SMobTable
    		{
    			DWORD       dwVnum;
    			char        szName[CHARACTER_NAME_MAX_LEN + 1]; 
    			char        szLocaleName[CHARACTER_NAME_MAX_LEN + 1];
    
    			BYTE        bType;                  // Monster, NPC
    			BYTE        bRank;                  // PAWN, KNIGHT, KING
    			BYTE        bBattleType;            // MELEE, etc..
    			BYTE        bLevel;                 // Level
    			BYTE        bSize;
    
    			DWORD       dwGoldMin;
    			DWORD       dwGoldMax;
    			DWORD       dwExp;
    			DWORD       dwMaxHP;
    			BYTE        bRegenCycle;
    			BYTE        bRegenPercent;
    			WORD        wDef;
    
    			DWORD       dwAIFlag;
    			DWORD       dwRaceFlag;
    			DWORD       dwImmuneFlag;
    
    			BYTE        bStr, bDex, bCon, bInt;
    			DWORD       dwDamageRange[2];
    
    			short       sAttackSpeed;
    			short       sMovingSpeed;
    			BYTE        bAggresiveHPPct;
    			WORD        wAggressiveSight;
    			WORD        wAttackRange;
    
    			char        cEnchants[MOB_ENCHANTS_MAX_NUM];
    			char        cResists[MOB_RESISTS_MAX_NUM];
    
    			DWORD       dwResurrectionVnum;
    			DWORD       dwDropItemVnum;
    
    			BYTE        bMountCapacity;
    			BYTE        bOnClickType;
    
    			BYTE        bEmpire;
    			char        szFolder[64 + 1];
    			float       fDamMultiply;
    			DWORD       dwSummonVnum;
    			DWORD       dwDrainSP;
    			DWORD		dwMonsterColor;
    		    DWORD       dwPolymorphItemVnum;
    
    			TMobSkillLevel	Skills[MOB_SKILL_MAX_NUM];
    
    		    BYTE		bBerserkPoint;
    			BYTE		bStoneSkinPoint;
    			BYTE		bGodSpeedPoint;
    			BYTE		bDeathBlowPoint;
    			BYTE		bRevivePoint;
    		} TMobTable;

    Basta haver campos a mais ou a menos para o game não iniciar, o cliente crashar e o dump proto não converter de txt para mob_proto (ou item_proto) e dar erro.

     

    Depois ainda existem estas chaves:

    
    	static DWORD s_adwMobProtoKey[4] =
    	{   
    		4813894,
    		18955,
    		552631,
    		6822045
    	};
    
    static DWORD s_adwItemProtoKey[4] =
    {
    	173217,
    	72619434,
    	408587239,
    	27973291
    };

    Estas só interessam no cliente, se o dump proto tiver chaves diferentes, o cliente não lê e dá erro.

     

    O que é que eu não sei e que estou a falar mesmo?

     

    Tu é que és o BR aqui, portanto quem não pensa és tu, provavelmente nem nunca deves ter usado a source.

     

    O seu argumento é valido, pois a estrutura incompatível pode sim impedir que ele descompacte o ficheiro etc.. mais certamente ele esta usando um dump totalmente desatualizado para files 40k em fim.. quanto as chaves é bem improvável que seja isso pois só alguns servidores alteram as keys para mob e item_proto.. e files publicas como esta certamente não é o caso.. para finalizar eu acho que ele não vai entender nada do que você explicou.

     

     

    Quanto a você falar que ele por ser brasileiro ele é um ignorante (burro) você acabou de cometer um crime e uma intolerância, que por si só deve ser tratado por um psicólogo. Isso ai beira o nazismo se me permite dizer.

    Ofensas a uma pessoa por sua nacionalidade é uma coisa muito brutal. Eu penso que isso ai deve te custar uma punição e uma consulta com um psicólogo. Se esta comunidade tem intolerância a brasileiros então que deixe bem claro que brasileiros não são bem vindos. Sim eu me senti muito ofendido e sim esta não é a primeira vez que eu vejo isto por aqui, como já vi membros aqui dizer a frase "É por isso que escravizamos vocês".

     

    Sem +, aqui um burro brasileiro te ensinando modos humanos de ser.

     

    @p0w3r0ff


  14. Não li e não lerei e já cansei, como eu disse tantas outras x eu fiz a quest para mim e se adaptar a mim e partilhei para quem quiser usar pode usar de forma a se adaptar, como por exemplo usar um id account mais esta a entrar em outra questão que não é a questão.

     

    linha 1 limit1 vai funcionar.,

    se quiser usar e fazer uso e o sua conta é a 150 vai usar o id account como vc mesmo disse isso é obvio..

    mais vou dizer repetidamente foi feito a se adaptar a mim, se fosse mesmo para deixar do jeito de usar era mais complexo que isso.

     

    Não estou mesmo afim de explicar o obvio.. já que és MOD da comunidade e nós 2 sabemos muito bem quem tu és...  e Eu sou o dono do tópico por favor. 

     

    "Obs: 1º questão a quest deve funcionar e funciona mostrei nos print; 2 questão quem quiser usar mais de uma forma diferente ou corrigir e melhorar etc.. faça uso do seu braço e arrume.. assim como muitas outras coisas." 

    É uma mania muito feia de querer tudo a 100% a seu gosto não ao gosto de quem o fez.

    Pois a mim esta a 100% se queres melhor faça melhor e use a sua versão que mau tem? nenhum acho digno.

     

    #closethistopic


  15. Passo1: Clico np NPC > Manutenção

     

    dFBTV8a.jpg

     

     

    Passo2: Escolho a opção que for necessário:

     

    AzNmK2w.jpg

     

    Ativar 10 minutos ou ativar agora vai me da essa opção:

     

    iBRo1me.jpg

     

    Se eu clicar em Sim todos do banco de dados vai ficar SHUTDOWN - o char GM selecionado.

    Ilustração abaixo:

     

    nWNRzjk.png

     

    A mensagem abaixo vai aparecer para todos inclusive para o char GM selecionado, então vou reiniciar.

    para tirar o shutdown do server não do banco.

     

    1lkWJbP.png

     

    3º Clico em ativar agora veja o status do banco de dados: 

     

    Antes:

     

    jz26iRk.png

     

     

    Depois: 

     

    jHNDWw1.png

     

     

    Em seguida vou reiniciar a maquina e ninguém alem de mim vai conseguir logar, mesmo que criem outra conta como falei no tópico principal criei uma função em php que impede todos de cadastrar e claro ficando com status OK.

     

    Logo vou logar com a conta GM depois de reiniciar o servidor e pah:

     

    sMBL1yD.png

     

     

    Reiniciei o servidor e ainda continuam todos com status SHUTDOWN e me diz como ALGUEM VAI LOGAR!!!!!

     

    agIuSPn.png

     

    qdX2f0e.png

     

     

     

    Agora vou terminar a manutenção:

     

    Vou no mesmo NPC e clicar terminar manutenção:

     

    AzNmK2w.jpg

     

    ML8zwkH.png

     

     

    tabela account:

     

    DH3RlPL.png

     

    Sem precisar reiniciar o servidor todos ja podem logar.

     

     

    Impossível mesmo ser mais claro que isso juro que é mesmo impossível.

     

    Queres show queres chamar atenção para fortalecer o ego, não queria video, não queria prova

    não queria skype só queria mesmo ter razão mais não quis ver ou mostrar na pratica onde estava mau..

     

    Nol1VJn.png

     

    Logo volto a dizer, as X pessoas estão mais dispostas a te criticar que te ajudar talvez pelo ego e prazer de ser melhor que alguém.

     

    Feliz natal.

     

     


  16. "Para não falar que executar uma query dessas num servidor com um bom valor de contas criadas dá lag..."

     

    Mais é muito importante indexar as consultas que passam de 100 simultaneamente dependendo da sua maquina. Ao menos eu uso dessa forma para optimizar sua consulta.

     

    Justamente a mensagem vai pedir a todos para DESLOGAR D E S L O G A R, não importa se dar lag não vai ter ninguém a jogar para ter lag....

     

    "Ou ainda não entendes-te? Este comando mesmo com o status da conta alterado não vai deixar NINGUÉM entrar..."

     

    1º ativo a quest e coloco todos shutdown, porem informo que quero o GM online, então todos menos o GM vai ficar status SHUTODOWN.

    2º começa contar o tempo: 10 minutos depois executa o shutdown ( vai colocar todos offline e até os gm).

    3º reinicio a maquina e muda de off para shutdown nos status quando o player logar vai mostrar "Servidor em manutenção bla bla bla" porem o char GM vai logar porque o status esta OK.

     

    Fim desisto.

     


  17. 11 minutos atrás, Karbust™ # PT disse:

     

    E agora diz-me, quando é que o status de cada conta vai ser mudado para SHUTDOWN? o.O

     

    SHUTDOWN é o status definido globalmente para o servidor, todas as contas continuam com o status que tinham antes...

     

    Portanto, o status do GM vai continuar como OK, mas ele não vai poder continuar no jogo visto que o comando shutdown vai, como o nome diz, desligar o servidor (desliga o jogo, não a máquina)...

     

    Vai ver a source e tenta compreende-la e depois falamos...

     

    Nessa linha todas as contas inclusive a do GM vai ficar SHUTDOWN:

    mysql_direct_query("UPDATE account.account SET account.status='SHUTDOWN' WHERE status='OK'")

     

    Logo em seguida você vai ter uma pergunta:  say("Olá Administrador, você deseja ficar ativo?")

    mysql_direct_query("UPDATE account.account SET account.status='OK' WHERE status='SHUTDOWN'    limit 1;")

    Então nessa linha você muda seu char GM de SHUTDOWN para OK, assim quando reiniciar esse e somente esse char vai poder logar.

    Isso porque eu coloquei limit 1 na minha linha.

    Então quando terminar a manutenção vai ao NPC terminar a manutenção:

    mysql_direct_query("UPDATE account.account SET account.status='OK' WHERE status='SHUTDOWN'")

    Então todos que estão com o status SHUTDOWN vai para OK sem levar a OK os banidos etc.. isso porque o WHERE é um filtro.

     

    Mais é muito importante indexar as consultas que passam de 100 simultaneamente dependendo da sua maquina. Ao menos eu uso dessa forma para optimizar sua consulta.

     

     

    Off:

     

    Por acaso gostei disso kkkk


    Jσgαя мєтiи é αятє...
    รєя тσρ fαz ραятє...
    รєя cнαмαdσ dє cнєαтєя є мσdα...
    мαร cнєgαяєร à мiинα αlтυяα é fσdα!


  18. Vou tentar desenhar da melhor forma possivel:

     

     

     

    1º vai o GM ao NPC logo ele clica em iniciar a manutenção .

    2º quando chegar aos 10 minutos (mesmo que o player ou quem é que seja não esteja para receber a mensagem)

    não vai fazer diferença porque o char GM vai tomar DC e vai precisar logar e para isso precisa reiniciar a maquina uma vez que executou o comando "shutdown", então mesmo que alguém fique logado vai ser deslogado, a mensagem é só formalidade pode ser dar o shutdown, vocês se apegaram mensagem porem  a principal funcionalidade é o banco de dados.

     

    "Nem quero imaginar o stress que isto vai causar na máquina com tanto acesso à db, ainda por cima a ir buscar a account.account inteira."

     

    Isso deve ser problema a quem programa de uma forma errônea, em vista que você pode e deve utilizar indexar as consultas grandes no banco de dados tão logo não vai ter qualquer problema.

     

    "Basicamente, deverias usar server_timers em vez de timers, visto que os timers são para a personagem, se fores abaixo ou te teleportares o temporizador para, o que não acontece com os timers..."

     

     

    Em 16/11/2018 at 20:36, Karbust™ # PT disse:

    Basicamente, deverias usar server_timers em vez de timers, visto que os timers são para a personagem, se fores abaixo ou te teleportares o temporizador para, o que não acontece com os timers...

     

    Btw, esse status SHUTDOWN não te faz nada, o comando shutdown não deixa entrar ninguém, nem mesmo gm's com esse status. Qualquer status diferente de OK vai sempre dar erro...

     

    Estou pleno de acordo com o que tu disse, deveria ser assim mais é capricho por hora, uma vez que meu char GM que vai ficar online precisa relogar vou precisar reiniciar a maquina então todos vão ficar off.

     

    "Btw, esse status SHUTDOWN não te faz nada, o comando shutdown não deixa entrar ninguém, nem mesmo gm's com esse status. Qualquer status diferente de OK vai sempre dar erro..."

     

    Nessa parte falou enorme besteira, uma vez que se você tivesse ao menos olhado a questão vai ver a opção, "deseja ficar online" logo o GM vai mudar de SHUTDOWN para OK.

     

    A função SHUTDOWN você pode definir de forma adequada uma mensagem que o servidor esta em manutenção;

     

     

    Bom acho que mais desenhado e perca de tempo que isso não tem.

     

    Teste.


  19. 2 minutos atrás, ruizinho-o disse:

    Nada com nada? Já te disse onte está o bug da quest pah, não sabes ler? "Então faça o seguinte, enquanto esses timers funcionam, altere personagem e depois entre no jogo."

    Eu quando tiver tempo mando-te essa quest corrigida.

    Não tens de agradecer. Boa noite.

     

    Não precisa me ensinar a fazer quest pois tenho humildade de verificar e se for o caso voltar é corrigir pois foi a única coisa útil que disse de resto só foi ego e mais ego.. passar bem.


  20. 1 minuto atrás, ruizinho-o disse:

    Então faça o seguinte, enquanto esses timers funcionam, altere personagem e depois entre no jogo.

    Não é critica patética, patético é essa quest, que foi aqui publicada e futuramente poderá ser usada e está mal feita e com problemas.

    Sem mais de momento, mais a mais, um letter não funciona só para mandar send_letter; utilizar uma function em que só mudava o local do tempo para evitar essas linhas todas dos timers não ficava mal. HardCode ao mais alto nível. lmao.  Se o que te estou a dizer é demais para o que percebes, que penso que não seja nada demais, desculpe.

     

    Novamente nada com nada.

    Obrigado. E ainda deixo a vc 1 like pelo aparente desespero de se ter 1.


  21. 3 horas atrás, ruizinho-o disse:

    Código péssimo e muita coisa que não faz sentido.

    Mau uso dos timer's, devias meter uma quest flag dentro de um letter para quando alterares , teleportares  ou saíres do jogo em geral com a personagem os timer's não serem perdidos.

    Selecionas tudo (*) das tabelas sem necessidade nenhuma, em quest não tem mal (apesar de não ser necessário), mas em C++ tinhas sempre possibilidade dependesse do local de levares sql inj.

     

    camon, 

    if == 1 then

    if == 2 then

    if == 3 then

    ---

    say("XXSA")

    say("XX")

    --

    2014?

     

    A forma da quest não está incorreta o que tu diz esta desnecessário penso eu ser os ("") ah quem goste de programar de cada forma chegando a cada resultado.

     

    A quest não funciona em Letter você não percebeu mais funciona no npc.

     

    outra questão pode se usar [ENTER] em uma conversa do BOX ou pode de usar  () em say a alguns que usam say2.. Bom se a mim agrada say ("") será mesmo que devo mudar para agradar alguém? (nops).

     

    A questão dos IF? novamente pode ser usar 1 if e outros elseif com a utilização de apenas 1 end e novamente vou entrar no mesmo argumento a mim assim agrada portanto :) 

     

    Portanto chega devagar na humildade conheça a comunidade e agrega algum comentário construtivo pois esse é quase ofensivo e opressor.

     

    Não tem como pular o time em vista que o comando shutdown  poe abaixo todos os Channel. mesmo que desligue o time não é importante é sim o shutdown final.

     

    Mais nada construtivo ou que ee agrega o comentário que por hora mais pareceu a criticar, talvez pode se julgar crítico etc mais não tem competência para tal, pois se tivesse percebido não fiz a quest a agradar a você ou a outro é sim a mim.

     

    Caso queira uma quest vide 2018 faça você mesmo, pois desta forma ja me agrada e me resulta então já basta.

     

    Na próxima crítica patética  (como deve ser sua life) vê se antes alguém se preocupou em agradar seu fino paladar ou simplesmente quis ajudar.


  22. Olá comunidade!

     

    Vou deixar aqui a minha quest que fiz para a manutenção para servidores de metin2.

     

    Bom essa quest funciona da seguinte forma, você deve alterar o "NomeDoChar" para o nome do seu char GM de confiança.. em seguida somente com ele vai até o npc guarda da praça para habilitar a sua manutenção..

     

    Então vai escolher o tempo para desligar todos os player e em seguida vai escolher se o seu char GM vai ficar online durante esse processo.. ou seja? todos vão ficar inativo:

     

    status: "SHUTDOWN"

     

    Porem o seu char GM ficará com status "OK"

     

    Em seguida volte a reiniciar a sua maquina e logar com essa conta e ficara ativo e todos os players que estão OK não conseguiram logar.. quando terminar a manutenção volte novamente ao NPC e clique em terminar a manutenção e todos que estavam SHUTDOWN vai voltar para OK.. isso porque a query tem 1 filtro "WHERE" para que não volte também os banidos etc..

     

    Só tem uma OBS.. que foi para mim esta quest então eu tenho uma função no meu site script em php que desabilita o cadastro assim evita de criar conta durante o processo e vim como status OK e consiga logar..  mais pode te ajudar de alguma forma ok?

     

    Claro que pode ser feito algumas melhorias como exemplo verificar no php se o server esta em manutenção caso esteja a conta é criada porem ao invés de OK vai para

    SHUTDOWN.. mais como eu disse a quest foi feita para mim e assim já me atende.

     

    Espero ter ajudado.

     

    ----------------------------------------------
    --Criador:	Lost
    --Origem:	NÃO IMPORTA
    --(Lua) Source Code
    ----------------------------------------------
    quest manutencao begin
    	state start begin
    		when guild_man1.chat."Manutenção" or guild_man2.chat."Manutenção" or guild_man3.chat."Manutenção" with pc.get_name() == "NomeDoChar" begin
    			say_title("Manutenção:")
    			say("")
    			say("Quer aplicar manutenção?")
    			say("Então escolha opção adequada!")
    			say("")
    			local s = select("Ativar 10 Minutos", "Ativar Agora!","Terminar Manutenção!", "Sair")
    			if s == 1 then
    			timer("shutdown1", 1)
    			local res1, res2 = mysql_direct_query("select * from account.account;")
    			mysql_direct_query("UPDATE account.account SET account.status='SHUTDOWN' WHERE status='OK'")
    			syschat("O Estado do servidor foi alterado.")
    			say_title("Manutenção:")
    			say("")
    			say("Olá Administrador, você deseja ficar ativo?")
    			say("")
    			local a = select("Sim", "Não")
    			if a == 1 then
    			local res1, id = mysql_direct_query("select * from account.account;")
    			mysql_direct_query("UPDATE account.account SET account.status='OK' WHERE status='SHUTDOWN'	limit 1;")
    			syschat("você ficará ativo durante a manutenção.")
    			end
    			if a == 2 then
    			return
    			end
    			end
    			if s == 2 then
    			timer("shutdown7", 1)
    			local res1, res2 = mysql_direct_query("select * from account.account;")
    			mysql_direct_query("UPDATE account.account SET account.status='SHUTDOWN' WHERE status='OK'")
    			syschat("O Estado do servidor foi alterado.")
    			say_title("Manutenção:")
    			say("")
    			say("Olá Administrador, você deseja ficar ativo?")
    			say("")
    			local a = select("Sim", "Não")
    			if a == 1 then
    			local res1, id = mysql_direct_query("select * from account.account;")
    			mysql_direct_query("UPDATE account.account SET account.status='OK' WHERE status='SHUTDOWN'	limit 1;")
    			syschat("você ficará ativo durante a manutenção.")
    			end
    			if a == 2 then
    			return
    			end			
    			end
    			if s == 3 then
    			local res1, res2 = mysql_direct_query("select * from account.account;")
    			mysql_direct_query("UPDATE account.account SET account.status='OK' WHERE status='SHUTDOWN'")
    			syschat("A manutenção foi terminada.")
    			end
    			if s == 4 then
    			return
    			end
    		end
    		when shutdown1.timer begin
    			notice_all("Atenção !!!")
    			notice_all("Manutenção: O servidor será desligado em 10 minutos!")
    			notice_all("Efetue logout para evitar que itens sejam perdidos!")
    			timer("shutdown2", 60*5)
    		end
    		when shutdown2.timer begin
    			notice_all("Atenção !!!")
    			notice_all("Manutenção: O servidor será desligado em 5 minutos!")
    			notice_all("Efetue logout para evitar que itens sejam perdidos!")
    			timer("shutdown3", 60*3)
    		end
    		when shutdown3.timer begin
    			notice_all("Atenção !!!")
    			notice_all("Manutenção: O servidor será desligado em 2 minutos!")
    			notice_all("Efetue logout para evitar que itens sejam perdidos!")
    			timer("shutdown4", 60)
    		end
    		when shutdown4.timer begin
    			notice_all("Atenção !!!")
    			notice_all("Manutenção: O servidor será desligado em 1 minuto!")
    			notice_all("Efetue logout para evitar que itens sejam perdidos!")
    			timer("shutdown5", 30)
    		end
    		when shutdown5.timer begin
    			notice_all("Atenção !!!")
    			notice_all("Manutenção: O servidor será desligado em 30 segundos!")
    			notice_all("Efetue logout para evitar que itens sejam perdidos!")
    			timer("shutdown6", 15)
    		end
    		when shutdown6.timer begin
    			notice_all("Atenção !!!")
    			notice_all("Manutenção: O servidor será desligado em 15 segundos!")
    			notice_all("Para mais informações acesse: www.nomedoseuserver.org")
    			timer("shutdown7", 5)
    		end
    		when shutdown7.timer begin
    			command("shutdown")
    		end
    	end
    end