Siga-nos em...
Follow us on Twitter Follow us on Facebook Watch us on YouTube
Registro

Alpha Servers
Resultados 1 a 7 de 7
  1. #1

    Avatar de bkpkbmu
    Data de Ingresso
    Mar 2012
    Localização
    São Paulo
    Idade
    26
    Posts
    98
    Agradecido
    24
    Agradeceu
    12
    Peso da Avaliação
    13

    Padrão Duvida C++ Comando Reset .

    programadores c++ gostaria de tirar uma duvida que esta me atormentando
    em meu comando /resetar esta tudo certo mais quando estou no level requerido para resetar eu digito /resetar que no caso ea sintax do meu comando
    mais da erro de c++ ai o gs fecha mais conhecido como crash
    gostaria de saber o que esta errado em meu comando


    Segui o código abaixo :
    Código:
    void CHAT_COMMANDS::CMDRESET(DWORD aIndex)
    { 
    	int AtivaReset = GetPrivateProfileInt("[ResetCommand]","AtivaReset",1,CFG_GAMESERVER);
    	int Level = GetPrivateProfileInt("[ResetCommand]","Level",350,CFG_GAMESERVER);
    	unsigned int Price = GetPrivateProfileInt("[ResetCommand]","Price",50000000,CFG_GAMESERVER);
    
    	if (AtivaReset == 0)
    	{
    		GCServerMsgStringSend("Comando desativado.", aIndex,1);
    		return;
    	}
    
    	OBJECTSTRUCT* gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);
    
    	if (gObj->Level < Level)
    	{
    		GCServerMsgStringSend("Você Não Esta No Nivel Necessario Para Resetar.", aIndex, 1);
    		return;
    	}
    
    	if (gObj->Money < Price)
    	{
    		GCServerMsgStringSend("Você Não possui Zen Necessario Para Resetar.", aIndex, 1);
    		return;
    	}
    	else
    		
    	MYSQL->Exec("UPDATE Character SET Resets = Resets+1, resetdiario = resetdiario + 2, resetsemanal = resetsemanal + 2 WHERE Name = '%s'",gObj->Name);
    	gObj->Level = 1;
    	gObj->Experience = 0;
    	gObj->Money = gObj->Money - Price;
    	gObjTeleport(aIndex,0,125,125);
    	gObjCloseSet(aIndex,1);
    	char Resetado[100];
    	sprintf_s(Resetado, "[%s] Você Foi Resetado Com Sucesso.", gObj->Name);
    	GCServerMsgStringSend(Resetado,aIndex,1);
    }
    Espero que me ajudem . Att

  2. #2

    Avatar de Sunligth
    Data de Ingresso
    Jun 2012
    Localização
    Sao Paulo
    Posts
    154
    Agradecido
    109
    Agradeceu
    73
    Peso da Avaliação
    13

    Padrão

    acredito que seja erro nos offsets das funções, tente remover essa parte

    MYSQL->Exec("UPDATE Character SET Resets = Resets+1, resetdiario = resetdiario + 2, resetsemanal = resetsemanal + 2 WHERE Name = '%s'",gObj->Name);
    gObj->Level = 1;
    gObj->Experience = 0;
    gObj->Money = gObj->Money - Price;
    gObjTeleport(aIndex,0,125,125);
    gObjCloseSet(aIndex,1);

    e teste!

  3. #3



    Avatar de João Neto
    Data de Ingresso
    Nov 2010
    Localização
    Barzinho de Lorencia
    Idade
    30
    Posts
    1.085
    Agradecido
    50
    Agradeceu
    30
    Peso da Avaliação
    25

    Padrão

    @bkpkbmu,

    Se o seu reset estiver igualzinho esse que você postou, o erro está no else pois você não utilizou as chaves para abrir e fechar { }.
    Outra coisa não precisa daquele ultimo laço ali ELSE, pois se você já fez condição IF para todas opções anteriormente ele só vai executar o bloco lá em baixo depois de completar as condições...

    Código:
    void CHAT_COMMANDS::CMDRESET(DWORD aIndex)
    { 
    	int AtivaReset = GetPrivateProfileInt("[ResetCommand]","AtivaReset",1,CFG_GAMESERVER);
    	int Level = GetPrivateProfileInt("[ResetCommand]","Level",350,CFG_GAMESERVER);
    	unsigned int Price = GetPrivateProfileInt("[ResetCommand]","Price",50000000,CFG_GAMESERVER);
    
    	if (AtivaReset == 0)
    	{
    		GCServerMsgStringSend("Comando desativado.", aIndex,1);
    		return;
    	}
    
    	OBJECTSTRUCT* gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);
    
    	if (gObj->Level < Level)
    	{
    		GCServerMsgStringSend("Você Não Esta No Nivel Necessario Para Resetar.", aIndex, 1);
    		return;
    	}
    
    	if (gObj->Money < Price)
    	{
    		GCServerMsgStringSend("Você Não possui Zen Necessario Para Resetar.", aIndex, 1);
    		return;
    	}
    
    	MYSQL->Exec("UPDATE Character SET Resets = Resets+1, resetdiario = resetdiario + 2, resetsemanal = resetsemanal + 2 WHERE Name = '%s'",gObj->Name);
    	gObj->Level = 1;
    	gObj->Experience = 0;
    	gObj->Money = gObj->Money - Price;
    	gObjTeleport(aIndex,0,125,125);
    	gObjCloseSet(aIndex,1);
    	char Resetado[100];
    	sprintf_s(Resetado, "[%s] Você Foi Resetado Com Sucesso.", gObj->Name);
    	GCServerMsgStringSend(Resetado,aIndex,1);
    
    }
    Teste e veja se funciona agora!

    Atenciosamente,
    João Neto.
    Hidden Content
    Um verdadeiro guerreiro sabe que ao perder uma batalha
    está melhorando sua arte de manejar a espada.
    Saberá lutar com mais habilidade
    na próxima vez.

  4. #4

    Avatar de k12leito
    Data de Ingresso
    Sep 2009
    Localização
    Santa Catarina
    Posts
    91
    Agradecido
    1
    Peso da Avaliação
    16

    Padrão

    faz tempo que não mexo com server mais vou tentar ajudar,

    Verifique se todas as tabelas estão corretas e tente faz um if se for o primeiro resete do player ao invez dessa parte ser
    MYSQL->Exec("UPDATE Character SET Resets = Resets+1, resetdiario = resetdiario + 2, resetsemanal = resetsemanal + 2 WHERE Name = '%s'",gObj->Name);
    deixe
    MYSQL->Exec("UPDATE Character SET Resets = 1, resetdiario = 1, resetsemanal = 1 WHERE Name = '%s'",gObj->Name);
    teste e veja se funciona.

  5. #5

    Avatar de Omegamon
    Data de Ingresso
    Dec 2011
    Localização
    ...
    Posts
    12
    Agradecido
    0
    Agradeceu
    0
    Peso da Avaliação
    0

    Padrão

    Posta o erro pra ver, mais é provavel que esqueceu alguma coluna ^^

  6. #6

    Avatar de ronyelias
    Data de Ingresso
    May 2010
    Localização
    na minha casa
    Posts
    242
    Agradecido
    5
    Agradeceu
    4
    Peso da Avaliação
    16

    Padrão

    Eu não sou programador de C++ mais eu só vi comando /reset em MuOnline e pelo que sei o servidor usa Base de Dados SQLServer e não MySQL
    então o erro está no seu comando onde executa a Query de reset. POis está assim MYSQL->Exec pela lógica seria MSSQL->Exec.

    @k12leito

    Sua dica tambem está para MYSQL e ninguem conseguirá dar mais que 1 reset no jogo, todos os resets serão =1

    Edit;
    Pela source vi que não é pra MuOnline e Sim pra Grand Chease , por causa das variaveis GCGameServer...
    Última edição por ronyelias; 01-09-2012 às 06:29 PM.

  7. #7

    Avatar de gneccao
    Data de Ingresso
    Aug 2010
    Localização
    11111111111111111
    Idade
    33
    Posts
    55
    Agradecido
    23
    Agradeceu
    9
    Peso da Avaliação
    14

    Padrão

    @ronyelias, o nome ta certo 'e MySql, pq ele instanciou a class Conexao com o Nome de Mysql..

    as Funcoes que vc diz com o nome GCGameServer, eh do mu memso, apenas com esse nome, mas o comando eh de Mu, e pelo q me lembro ja foia arrumado, era merda na query, tinha q antes de enviar o comando usar o sprintf e a varaivel q recebia o sprintf, q iria pra query.

 

 

Informações de Tópico

Usuários Navegando neste Tópico

Há 1 usuários navegando neste tópico. (0 registrados e 1 visitantes)

Tópicos Similares

  1. |Dúvida| Comando /reset
    Por michetti no fórum Dúvidas
    Respostas: 7
    Último Post: 10-09-2012, 01:58 PM
  2. [Resolvido][Dúvida]Comando strtok
    Por nightmbr no fórum C++
    Respostas: 5
    Último Post: 11-08-2010, 04:50 PM

Marcadores

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • Você não pode enviar respostas
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •