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:
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;
}
}
}
Procedure:
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
Tabelas:
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