Code:
ALTER PROCEDURE [dbo].[WZ_Char_SRV_SetStatus]
@in_CustomerID int,
@in_CharID int,
@in_Alive int,
@in_GamePos varchar(256),
@in_GameFlags int,
@in_Health float,
@in_Hunger float,
@in_Thirst float,
@in_Toxic float,
@in_TimePlayed int,
@in_XP int,
@in_Reputation int,
@in_GameDollars int,
@in_Stat00 int,
@in_Stat01 int,
@in_Stat02 int,
@in_Stat03 int,
@in_Stat04 int,
@in_Stat05 int,
@in_MapID int,
@in_ResWood int = 0,
@in_ResStone int = 0,
@in_ResMetal int = 0,
@in_CharData varchar(4000) = ''
AS
BEGIN
SET NOCOUNT ON;
--
-- this function should be called only by server, so we skip all validations
--
-- record last game update and update GameDollars with DELTA value
update UsersData set GameDollars=(GameDollars+@in_GameDollars), lastgamedate=GETDATE() where CustomerID=@in_CustomerID
if(@in_GameDollars > 0) begin
insert into DBG_GDLog (RecordTime, CustomerID, CharID, GameDollars)
values (GETDATE(), @in_CustomerID, @in_CharID, @in_GameDollars)
end
-- update basic character data
if @in_MapID = 2
update UsersChars set
GamePos=@in_GamePos,
GameFlags=@in_GameFlags,
Alive=@in_Alive,
Health=@in_Health,
Food=@in_Hunger,
Water=@in_Thirst,
Toxic=@in_Toxic,
TimePlayed=@in_TimePlayed,
LastUpdateDate=GETDATE(),
XP=@in_XP,
Reputation=@in_Reputation,
Stat00=@in_Stat00,
Stat01=@in_Stat01,
Stat02=@in_Stat02,
Stat03=@in_Stat03,
Stat04=@in_Stat04,
Stat05=@in_Stat05
where CharID=@in_CharID
else if @in_MapID = 3
update UsersChars set
GamePos2=@in_GamePos,
GameFlags=@in_GameFlags,
Alive=@in_Alive,
Health=@in_Health,
Food=@in_Hunger,
Water=@in_Thirst,
Toxic=@in_Toxic,
TimePlayed=@in_TimePlayed,
LastUpdateDate=GETDATE(),
XP=@in_XP,
Reputation=@in_Reputation,
Stat00=@in_Stat00,
Stat01=@in_Stat01,
Stat02=@in_Stat02,
Stat03=@in_Stat03,
Stat04=@in_Stat04,
Stat05=@in_Stat05
where CharID=@in_CharID
else if @in_MapID = 4
update UsersChars set
GamePos3=@in_GamePos,
GameFlags=@in_GameFlags,
Alive=@in_Alive,
Health=@in_Health,
Food=@in_Hunger,
Water=@in_Thirst,
Toxic=@in_Toxic,
TimePlayed=@in_TimePlayed,
LastUpdateDate=GETDATE(),
XP=@in_XP,
Reputation=@in_Reputation,
Stat00=@in_Stat00,
Stat01=@in_Stat01,
Stat02=@in_Stat02,
Stat03=@in_Stat03,
Stat04=@in_Stat04,
Stat05=@in_Stat05
where CharID=@in_CharID
else if @in_MapID = 5
update UsersChars set
GamePos4=@in_GamePos,
GameFlags=@in_GameFlags,
Alive=@in_Alive,
Health=@in_Health,
Food=@in_Hunger,
Water=@in_Thirst,
Toxic=@in_Toxic,
TimePlayed=@in_TimePlayed,
LastUpdateDate=GETDATE(),
XP=@in_XP,
Reputation=@in_Reputation,
Stat00=@in_Stat00,
Stat01=@in_Stat01,
Stat02=@in_Stat02,
Stat03=@in_Stat03,
Stat04=@in_Stat04,
Stat05=@in_Stat05
where CharID=@in_CharID
else if @in_MapID = 6
update UsersChars set
GamePos5=@in_GamePos,
GameFlags=@in_GameFlags,
Alive=@in_Alive,
Health=@in_Health,
Food=@in_Hunger,
Water=@in_Thirst,
Toxic=@in_Toxic,
TimePlayed=@in_TimePlayed,
LastUpdateDate=GETDATE(),
XP=@in_XP,
Reputation=@in_Reputation,
Stat00=@in_Stat00,
Stat01=@in_Stat01,
Stat02=@in_Stat02,
Stat03=@in_Stat03,
Stat04=@in_Stat04,
Stat05=@in_Stat05
where CharID=@in_CharID
else if @in_MapID = 7
update UsersChars set
GamePos6=@in_GamePos,
GameFlags=@in_GameFlags,
Alive=@in_Alive,
Health=@in_Health,
Food=@in_Hunger,
Water=@in_Thirst,
Toxic=@in_Toxic,
TimePlayed=@in_TimePlayed,
LastUpdateDate=GETDATE(),
XP=@in_XP,
Reputation=@in_Reputation,
Stat00=@in_Stat00,
Stat01=@in_Stat01,
Stat02=@in_Stat02,
Stat03=@in_Stat03,
Stat04=@in_Stat04,
Stat05=@in_Stat05
where CharID=@in_CharID
else if @in_MapID = 8
update UsersChars set
GamePos7=@in_GamePos,
GameFlags=@in_GameFlags,
Alive=@in_Alive,
Health=@in_Health,
Food=@in_Hunger,
Water=@in_Thirst,
Toxic=@in_Toxic,
TimePlayed=@in_TimePlayed,
LastUpdateDate=GETDATE(),
XP=@in_XP,
Reputation=@in_Reputation,
Stat00=@in_Stat00,
Stat01=@in_Stat01,
Stat02=@in_Stat02,
Stat03=@in_Stat03,
Stat04=@in_Stat04,
Stat05=@in_Stat05
where CharID=@in_CharID
else if @in_MapID = 9
update UsersChars set
GamePos8=@in_GamePos,
GameFlags=@in_GameFlags,
Alive=@in_Alive,
Health=@in_Health,
Food=@in_Hunger,
Water=@in_Thirst,
Toxic=@in_Toxic,
TimePlayed=@in_TimePlayed,
LastUpdateDate=GETDATE(),
XP=@in_XP,
Reputation=@in_Reputation,
Stat00=@in_Stat00,
Stat01=@in_Stat01,
Stat02=@in_Stat02,
Stat03=@in_Stat03,
Stat04=@in_Stat04,
Stat05=@in_Stat05
where CharID=@in_CharID
-- update generic character data (if provided)
if(@in_CharData <> '')
update UsersChars set CharData=@in_CharData where CharID=@in_CharID
-- update resources
update UsersData set ResWood=@in_ResWood, ResStone=@in_ResStone, ResMetal=@in_ResMetal where CustomerID=@in_CustomerID
if(@in_Alive = 0) begin
update UsersChars set DeathUtcTime=GETUTCDATE() where CharID=@in_CharID
-- set default backpack on death
update UsersChars set BackpackID=20176, BackpackSize=12 where CharID=@in_CharID
-- delete stuff from backpack
delete from UsersInventory where CustomerID=@in_CustomerID and CharID=@in_CharID
exec DBG_StoreApiCall 'Death', 0, @in_CustomerID, @in_CharID
end
exec WZ_UPDATE_Leaderboards @in_CustomerID
select 0 as ResultCode
END