Create the user at character selection rather than login.

This commit is contained in:
Loïc Hoguin 2011-02-19 21:21:35 +01:00
parent b728731830
commit 2de4359c32
2 changed files with 4 additions and 6 deletions

View File

@ -66,7 +66,6 @@ event({char_select_create, Slot, CharBin}, #state{gid=GID}) ->
%% @doc Load the selected character into the game's default universe. %% @doc Load the selected character into the game's default universe.
event({char_select_enter, Slot, _BackToPreviousField}, State=#state{gid=GID}) -> event({char_select_enter, Slot, _BackToPreviousField}, State=#state{gid=GID}) ->
{ok, User} = egs_users:read(GID),
Folder = egs_accounts:get_folder(GID), Folder = egs_accounts:get_folder(GID),
[{status, 1}, {char, CharBin}, {options, OptionsBin}] = data_load(Folder, Slot), [{status, 1}, {char, CharBin}, {options, OptionsBin}] = data_load(Folder, Slot),
<< Name:512/bits, RaceBin:8, GenderBin:8, ClassBin:8, AppearanceBin:776/bits, _/bits >> = CharBin, << Name:512/bits, RaceBin:8, GenderBin:8, ClassBin:8, AppearanceBin:776/bits, _/bits >> = CharBin,
@ -78,8 +77,8 @@ event({char_select_enter, Slot, _BackToPreviousField}, State=#state{gid=GID}) ->
Character = #characters{slot=Slot, name=Name, race=Race, gender=Gender, class=Class, appearance=Appearance, options=Options}, % TODO: temporary set the slot here, won't be needed later Character = #characters{slot=Slot, name=Name, race=Race, gender=Gender, class=Class, appearance=Appearance, options=Options}, % TODO: temporary set the slot here, won't be needed later
UniID = egs_universes:defaultid(), UniID = egs_universes:defaultid(),
egs_universes:enter(UniID), egs_universes:enter(UniID),
User2 = User#users{uni=UniID, character=Character, area={1100000, 0, 4}, entryid=0}, User = #users{gid=GID, pid=self(), uni=UniID, character=Character, area={1100000, 0, 4}, entryid=0},
egs_users:write(User2), egs_users:write(User),
egs_users:item_add(GID, 16#11010000, #psu_special_item_variables{}), egs_users:item_add(GID, 16#11010000, #psu_special_item_variables{}),
egs_users:item_add(GID, 16#11020000, #psu_special_item_variables{}), egs_users:item_add(GID, 16#11020000, #psu_special_item_variables{}),
egs_users:item_add(GID, 16#11020100, #psu_special_item_variables{}), egs_users:item_add(GID, 16#11020100, #psu_special_item_variables{}),
@ -87,9 +86,9 @@ event({char_select_enter, Slot, _BackToPreviousField}, State=#state{gid=GID}) ->
egs_users:item_add(GID, 16#01010900, #psu_striking_weapon_item_variables{current_pp=99, max_pp=100, element=#psu_element{type=1, percent=50}}), egs_users:item_add(GID, 16#01010900, #psu_striking_weapon_item_variables{current_pp=99, max_pp=100, element=#psu_element{type=1, percent=50}}),
egs_users:item_add(GID, 16#01010a00, #psu_striking_weapon_item_variables{current_pp=99, max_pp=100, element=#psu_element{type=2, percent=50}}), egs_users:item_add(GID, 16#01010a00, #psu_striking_weapon_item_variables{current_pp=99, max_pp=100, element=#psu_element{type=2, percent=50}}),
egs_users:item_add(GID, 16#01010b00, #psu_striking_weapon_item_variables{current_pp=99, max_pp=100, element=#psu_element{type=3, percent=50}}), egs_users:item_add(GID, 16#01010b00, #psu_striking_weapon_item_variables{current_pp=99, max_pp=100, element=#psu_element{type=3, percent=50}}),
{ok, User3} = egs_users:read(GID), {ok, User2} = egs_users:read(GID),
State2 = State#state{slot=Slot}, State2 = State#state{slot=Slot},
psu_game:char_load(User3, State2), psu_game:char_load(User2, State2),
{ok, egs_game, State2}. {ok, egs_game, State2}.
%% Internal. %% Internal.

View File

@ -66,7 +66,6 @@ event(system_game_server_request, State=#state{socket=Socket}) ->
%% @todo Remove the put calls when all the send_xxxx are moved out of psu_game and into psu_proto. %% @todo Remove the put calls when all the send_xxxx are moved out of psu_game and into psu_proto.
event({system_key_auth_request, AuthGID, AuthKey}, State=#state{socket=Socket}) -> event({system_key_auth_request, AuthGID, AuthKey}, State=#state{socket=Socket}) ->
egs_accounts:key_auth(AuthGID, AuthKey), egs_accounts:key_auth(AuthGID, AuthKey),
egs_users:write(#users{gid=AuthGID, pid=self()}),
put(socket, Socket), put(socket, Socket),
put(gid, AuthGID), put(gid, AuthGID),
State2 = State#state{gid=AuthGID}, State2 = State#state{gid=AuthGID},