CREATE PROCEDURE [dbo].[CreateAccount] @WindyCode varchar(50), @AccountPwd varchar(255), @Email varchar(255), @RegisterIP varchar(16), @ServerId int, @ShopBalance Bigint AS BEGIN SET NOCOUNT ON; DECLARE @Result varchar(20) DECLARE @EmailExists int; DECLARE @UsernameExists int; DECLARE @WindyCodeExists int; BEGIN TRY BEGIN TRANSACTION SELECT @EmailExists = COUNT(*) FROM AccountTable WHERE Email = @Email; SELECT @UsernameExists = COUNT(*) FROM AccountTable WHERE WindyCode = @WindyCode; SELECT @WindyCodeExists = COUNT(*) FROM RustyHearts_Auth.dbo.AuthTable WHERE WindyCode = @WindyCode; -- Check if account exists IF @EmailExists > 0 SET @Result = 'EmailExists'; ELSE IF @UsernameExists > 0 SET @Result = 'UsernameExists'; ELSE IF @WindyCodeExists > 0 SET @Result = 'UsernameExists'; ELSE SET @Result = 'NewUser'; -- Create new account IF @Result = 'NewUser' BEGIN INSERT INTO AccountTable (WindyCode, AccountPwd, Email, RegisterIP, CreatedAt, LastLogin, IsLocked, LoginAttempts, LastLoginIP) VALUES (@WindyCode, @AccountPwd, @Email, @RegisterIP, GETDATE(), GETDATE(), 0, 0, @RegisterIP); INSERT INTO RustyHearts_Auth.dbo.AuthTable (WindyCode, world_id, AuthID, Tcount, online, CTime, BTime, LTime, IP, LCount, ServerIP, ServerType, HostID, DBCIndex, InquiryCount, event_inquiry, CashMileage, channelling, pc_room_point, externcash, mac_addr, mac_addr02, mac_addr03, second_pass) VALUES (@WindyCode, 0, NEWID(), 0, '0', GETDATE(), GETDATE(), GETDATE(), @RegisterIP, 0, 0, 0, 0, 0, 5, 1, 0, 1, 0, 0, '00-00-00-00-00-00', '00-00-00-00-00-00', '00-00-00-00-00-00', ''); INSERT INTO CashTable (WindyCode, WorldId, Zen) VALUES (@WindyCode, @ServerId, @ShopBalance); SET @Result = 'AccountCreated'; END; COMMIT TRANSACTION; END TRY BEGIN CATCH ROLLBACK TRANSACTION; SET @Result = 'TransactionFailed'; END CATCH SELECT @Result as Result; END