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


HGIDC
Resultados 1 a 7 de 7
  1. #1

    Avatar de bkpkbmu
    Data de Ingresso
    Mar 2012
    Localização
    São Paulo
    Idade
    20
    Posts
    112
    Agradecido
    23
    Agradeceu
    12
    Peso da Avaliação
    7

    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
    155
    Agradecido
    105
    Agradeceu
    73
    Peso da Avaliação
    7

    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
    24
    Posts
    1.090
    Agradecido
    46
    Agradeceu
    26
    Peso da Avaliação
    19

    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
    10

    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
    14
    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
    246
    Agradecido
    5
    Agradeceu
    4
    Peso da Avaliação
    10

    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
    26
    Posts
    57
    Agradecido
    24
    Agradeceu
    11
    Peso da Avaliação
    8

    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
  •