Code:
USE [WarZ]
GO
/****** Object: StoredProcedure [dbo].[WZ_ACCOUNT_CREATE] Script Date: 01/06/2014 15:33:54 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- ----------------------------
-- Procedure structure for [WZ_ACCOUNT_CREATE]
-- ----------------------------
ALTER PROCEDURE [dbo].[WZ_ACCOUNT_CREATE]
@in_IP varchar(64),
@in_Email varchar(128),
@in_Password varchar(64),
@in_ReferralID int,
@in_SerialKey varchar(128),
@in_SerialEmail varchar(128)
AS
BEGIN
SET NOCOUNT ON;
-- Close Register from Launcher
-- select 2 as ResultCode, 'Registeration from Patcher/Launcher was closed.' as ResultMsg;
-- return;
--
-- NOTE: add new ResultCodes to updater CUpdater::CreateAccThreadEntry
--
-- check for serial key
--declare @KEYResultCode int = 99
--declare @KEYCustomerID int = 99
--declare @KeyserialType int = 99
--exec [BreezeNet].[dbo].[BN_WarZ_SerialGetInfo]
-- @in_SerialKey,
-- @in_SerialEmail,
-- @KEYResultCode out,
-- @KEYCustomerID out,
-- @KeyserialType out
--if @KEYResultCode <> 0 or @KEYCustomerID > 0) begin
-- select 3 as ResultCode, 'Serial not valid' as ResultMsg;
-- return
--end
declare @KeyserialType int = 2 -- Start Survivor Package
-- check if that account was created and refunded before (status 999)
declare @ReFundCustomerID int = 0
select @ReFundCustomerID=CustomerID from Accounts WHERE email=@in_Email and AccountStatus=999
if @ReFundCustomerID > 0) begin
-- change email to some unique one so it can be used again.
declare @dateTime varchar(128)
set @dateTime = REPLACE(CONVERT(VARCHAR, GETDATE(),111),'/','') + REPLACE(CONVERT(VARCHAR, GETDATE(),108),':','')
declare @ReFundedEmail varchar(128) = '(' + @dateTime + ') ' + @in_Email
update Accounts set email @ReFundedEmail where CustomerID @ReFundCustomerID
end
-- validate that email is unique
if exists (SELECT CustomerID from Accounts WHERE email=@in_Email) begin
select 2 as ResultCode, 'Email already in use' as ResultMsg;
return;
end
-- create user
declare @MD5FromPwd varchar(100)
exec FN_CreateMD5Password @in_Password, @MD5FromPwd OUTPUT
INSERT INTO Accounts (
email,
MD5Password,
dateregistered,
ReferralID,
lastlogindate,
lastloginIP
) VALUES (
@in_EMail,
@MD5FromPwd,
GETDATE(),
@in_ReferralID,
GETDATE(),
@in_IP
)
-- get new CustomerID
declare @CustomerID int
SELECT @CustomerID=CustomerID from Accounts where email=@in_Email
-- create all needed user tables
INSERT INTO UsersData (
CustomerID,
AccountType,
dateregistered,
IsPunisher
) VALUES (
@CustomerID,
@KeyserialType,
GETDATE(),
'0'
)
-- update UsersData set GamePoints=(GamePoints+100) where CustomerID @CustomerID
-- guest accounts have 48hrs play time (sync with WZ_ACCOUNT_APPLYKEY also)
if @KeyserialType = 3) begin
declare @dateActiveUntil datetime = DATEADD(hour, 48, GETDATE())
update UsersData set DateActiveUntil @dateActiveUntil where CustomerID @CustomerID
end
-- register CustomerID in BreezeNet
-- exec [BreezeNet].[dbo].[BN_WarZ_SerialSetCustomerID] @in_SerialKey, @CustomerID
-- default items and bonuses for account types
exec FN_AddItemToUser @CustomerID, 20174, 2000 -- Ex Military
exec FN_AddItemToUser @CustomerID, 20182, 2000 -- Ex Cage Fighter
exec FN_AddItemToUser @CustomerID, 20184, 2000 -- Hunter
-- TEST
exec FN_AddItemToUser @CustomerID, 20189, 2000 -- Rebel Without a Cause
-- exec FN_AddItemToUser @CustomerID, 20193, 2000 -- Average Joe
-- exec FN_AddItemToUser @CustomerID, 20194, 2000 -- The Mechanic
-- exec FN_AddItemToUser @CustomerID, 20195, 2000 -- Rockin Rollah
-- exec FN_AddItemToUser @CustomerID, 20201, 2000 -- Paramedic
-- 10 of each
--declare @i int = 0
--while(@i < 10) begin
-- set @i = @i + 1
-- exec FN_AddItemToUser @CustomerID, 101306, 2000 -- Flashlight
-- exec FN_AddItemToUser @CustomerID, 101261, 2000 -- Bandages
-- exec FN_AddItemToUser @CustomerID, 101296, 2000 -- Can of Soda
-- exec FN_AddItemToUser @CustomerID, 101289, 2000 -- Granola Bar
--end
-- BONUSES for packages - do not forget to sync them with [WZ_ACCOUNT_APPLYKEY]
if @KeyserialType = 0) begin
-- Legend package, 30$ 1GC=142
update UsersData set GamePoints=(GamePoints+1000) where CustomerID @CustomerID
end
if @KeyserialType = 1) begin
-- Pioneer package, 15$ 1GC=142
update UsersData set GamePoints=(GamePoints+500) where CustomerID @CustomerID
end
if @KeyserialType = 2) begin
-- Survivor Package, 0$ 1GC=142
update UsersData set GamePoints=(GamePoints+300) where CustomerID @CustomerID
end
-- success
select 0 as ResultCode
select @CustomerID as CustomerID, @KeyserialType as 'AccountType'
return
END