Olá Pessoal , estou disponibilizando o source do comando /bau desenvolvido por mim ! Bom ele foi desenvolvido para um MuServer 97d porém creio que não tenha nem um problema em codar para outra versão =)
Source do Comando :
Código PHP:
void TrocaBau(short aIndex,char * Cod){
OBJECTSTRUCT *lpObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);
int BauCod = atoi(Cod);
char QueryBau[200],mensagem[200];
int TotalBau = CSQL->GetFieldInt("MuOnline.dbo.MEMB_INFO","BausExtra", "WHERE Memb___id = '%s'",lpObj->AccountID);
if (BauCod < 0 ){
GCServerMsgStringSend("Erro de Sintaxe : /bau <numero do baú>",aIndex,1);
return ;
}
else if(TotalBau < BauCod){
sprintf(mensagem,"[Erro] : Você ultrapassou o limite de %d báus!",TotalBau);
GCServerMsgStringSend(mensagem,aIndex,1);
return;
} else {
if(gObj_GetInt(lpObj->PlayerID,gObjWarehouseSave) == 0){
sprintf(QueryBau,"EXEC MuOnline.dbo.MUDAR_BAU %d,%s",BauCod,lpObj->AccountID);
CSQL->Exec(QueryBau);
sprintf(mensagem,"Baú trocado com sucesso! Você está usando o baú nº %d",BauCod);
GCServerMsgStringSend(mensagem,aIndex,1);
} else {
GCServerMsgStringSend("[Erro] : Feche o bau para usar esse comando!",aIndex,1);
return;
}
}
}
Função gObj_GetInt :
Código PHP:
long int gObj_GetInt(int PlayerID, int gObjParam){
return *(long int*)(PlayerID * gObjSize + gObjOffset + gObjParam);
}
#define :
Código PHP:
#define gObjWarehouseSave 0xC70
Procedures/Querys :
CRIAR_BAU :
Código PHP:
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 BausExtra=BausExtra+1 Where memb___id = @login
GO
MUDAR_BAU:
Código PHP:
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
Tabela:
Código PHP:
ALTER TABLE dbo.MEMB_INFO ADD
BausExtra int NOT NULL DEFAULT
GO
Tinha esquecido dessas Querys para alterar/criar as tabelas
Código PHP:
ALTER TABLE dbo.warehouse ADD
[BauUso] [int] NOT NULL CONSTRAINT [DF_warehouse_BauUso] DEFAULT (0)
GO
Código PHP:
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
Bom é isso pessoal , qualquer problema ,duvidas,dicas é só postar ou até mesmo me mandar um MP !
PS: Comecei a Codar PMS faz 1 mês , ainda minhas sources estão meio bagunçadas !
Atenciosamente , Luis Eduardo "Geniopx"
---------- Post added at 09:19 PM ---------- Previous post was at 08:50 PM ----------
Ah , você poder usar normalmente usando a source da DLL da NFMTeam ou do Jamel