está faltando um procedure, verifique-o código novamente!
Olá estou querendo adaptar esse comando de múltiplos baús na minha source
mais quando uso o comando estou recebendo o erro "Microsoft Visual C++ Runtime Library"
alguém poderia me ajudar não sei o que está errado
Comando:
Procedure:Código:void CHAT_COMMANDS::TrocaBau(short aIndex,char * Cod) { OBJECTSTRUCT * gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex); int BauCod = atoi(Cod); int Total = MYSQL->GetFieldInt("MuOnline.dbo.warehouse","Total","WHERE memb___id='%s'",gObj->AccountID); if (BauCod < 0 ){ GCServerMsgStringSend("Erro de Sintaxe : /bau <numero>",aIndex,1); return ; } else if(Total < BauCod){ sprintf(msN,"Você ultrapassou o limite de %d báus.",Total); GCServerMsgStringSend(msN,aIndex,1); return; } else { if(gObj_GetInt(gObj->aIndex,gObjWarehouseSave) == 0) { char SQLBuffer[2048]; sprintf_s(SQLBuffer,"EXEC MuOnline.dbo.MUDAR_BAU %d,%s",BauCod,gObj->AccountID); MYSQL->Exec(SQLBuffer); sprintf(msN,"Baú trocado com sucesso.",BauCod); GCServerMsgStringSend(msN,aIndex,1); sprintf(msN,"Você está usando o baú nº %d",BauCod); GCServerMsgStringSend(msN,aIndex,1); } else { GCServerMsgStringSend("Feche o baú para usar esse comando.",aIndex,1); return; } } }
Tabelas:Código:CREATE PROCEDURE [dbo].[MUDAR_BAU] (@bauCod INT,@login varchar(10)) AS BEGIN DECLARE @BAUUSO1 int set @BAUUSO1 = (SELECT BauUso FROM warehouse WHERE AccountID = @login) IF ( EXISTS ( SELECT * FROM VaultsExtra WHERE [IdAcc] = @bauCod ) ) and (@BAUUSO1 != @bauCod) BEGIN DECLARE @itemback varbinary(1200) DECLARE @money int set @money = (SELECT [Money] FROM warehouse WHERE AccountID = @login) set @itemback = (SELECT Items FROM warehouse WHERE AccountID = @login) IF (@bauCod > 0) AND (@BAUUSO1 = 0) BEGIN UPDATE VaultsExtra SET Items = @itemback,[Money]=@money WHERE login = @login AND IdAcc = 0 END UPDATE warehouse SET Items = (SELECT Items FROM VaultsExtra WHERE Login = @login AND IDAcc = @bauCod),[Money] = (SELECT [Money] FROM VaultsExtra WHERE Login = @login AND IDAcc = @bauCod),BauUso = @bauCod WHERE AccountID = @login UPDATE VaultsExtra SET Items = @itemback,[Money]=@money WHERE login = @login AND IDAcc = @BAUUSO1 END END GO
Código:ALTER TABLE dbo.warehouse ADD Total int NOT NULL DEFAULT (3) GO ALTER TABLE dbo.warehouse ADD [BauUso] [int] NOT NULL CONSTRAINT [DF_warehouse_BauUso] DEFAULT (0) GO CREATE TABLE [VaultsExtra] ( [login] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [bauCod] [int] IDENTITY (1, 1) NOT NULL , [items] [varbinary] (1200) NULL , [money] [int] NULL , [pw] [smallint] NULL , [IdAcc] [int] NOT NULL ) ON [PRIMARY] GO
está faltando um procedure, verifique-o código novamente!
Arrumei mais agora está falando que trocou o baú etc...
mais continua no mesmo baú
Comando:
Procedures:Código:void CHAT_COMMANDS::TrocaBau(short aIndex,char * Cod) { OBJECTSTRUCT * gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex); int BauCod = atoi(Cod); int Total = MYSQL->GetFieldInt("MuOnline.dbo.MEMB_INFO","Total","WHERE memb___id='%s'",gObj->AccountID); if (BauCod < 0 ){ GCServerMsgStringSend("Erro de Sintaxe : /bau <numero>",aIndex,1); return ; } else if(Total < BauCod){ sprintf(msN,"Você ultrapassou o limite de %d báus.",Total); GCServerMsgStringSend(msN,aIndex,1); return; } else { if(gObj_GetInt(gObj->aIndex,gObjWarehouseSave) == 0) { char SQLBuffer[2048]; sprintf_s(SQLBuffer,"EXEC MuOnline.dbo.MUDAR_BAU %d,%s",BauCod,gObj->AccountID); MYSQL->Exec(SQLBuffer); sprintf(msN,"Baú trocado com sucesso.",BauCod); GCServerMsgStringSend(msN,aIndex,1); sprintf(msN,"Você está usando o baú nº %d",BauCod); GCServerMsgStringSend(msN,aIndex,1); } else { GCServerMsgStringSend("Feche o baú para usar esse comando.",aIndex,1); return; } } }
Código:CREATE PROCEDURE [dbo].[CRIAR_BAU] (@login varchar(10)) AS BEGIN DECLARE @IDProce int set @IDProce = (select count(items) FROM VaultsExtra Where login = @login) IF (EXISTS ( SELECT * FROM VaultsExtra WHERE [bauCod] = 0 )) BEGIN set @IDProce = 0 END ELSE EXEC CRIAR_BAU @login set @IDProce = 1 END INSERT INTO VaultsExtra (login,items,[money],pw,IdAcc) VALUES (@login,0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,0,1,@IDProce) UPDATE MEMB_INFO set Total=Total+1 Where memb___id = @login GOTabelas:Código:CREATE PROCEDURE [dbo].[MUDAR_BAU] (@bauCod INT,@login varchar(10)) AS BEGIN DECLARE @BAUUSO1 int set @BAUUSO1 = (SELECT BauUso FROM warehouse WHERE AccountID = @login) IF ( EXISTS ( SELECT * FROM VaultsExtra WHERE [IdAcc] = @bauCod ) ) and (@BAUUSO1 != @bauCod) BEGIN DECLARE @itemback varbinary(1200) DECLARE @money int set @money = (SELECT [Money] FROM warehouse WHERE AccountID = @login) set @itemback = (SELECT Items FROM warehouse WHERE AccountID = @login) IF (@bauCod > 0) AND (@BAUUSO1 = 0) BEGIN UPDATE VaultsExtra SET Items = @itemback,[Money]=@money WHERE login = @login AND IdAcc = 0 END UPDATE warehouse SET Items = (SELECT Items FROM VaultsExtra WHERE Login = @login AND IDAcc = @bauCod),[Money] = (SELECT [Money] FROM VaultsExtra WHERE Login = @login AND IDAcc = @bauCod),BauUso = @bauCod WHERE AccountID = @login UPDATE VaultsExtra SET Items = @itemback,[Money]=@money WHERE login = @login AND IDAcc = @BAUUSO1 END END GO
Screen:Código:ALTER TABLE dbo.MEMB_INFO ADD Total int NOT NULL DEFAULT (3) GO ALTER TABLE dbo.warehouse ADD [BauUso] [int] NOT NULL CONSTRAINT [DF_warehouse_BauUso] DEFAULT (0) GO CREATE TABLE [VaultsExtra] ( [login] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [bauCod] [int] IDENTITY (1, 1) NOT NULL , [items] [varbinary] (1200) NULL , [money] [int] NULL , [pw] [smallint] NULL , [IdAcc] [int] NOT NULL ) ON [PRIMARY] GO
Há 1 usuários navegando neste tópico. (0 registrados e 1 visitantes)
Marcadores