Login
On this page
Use core.login from on_tick(stage) while stage == core.stage.LOGIN to inspect the login flow and manage characters from the character-selection screen.
Reordering, deletion, and restoration affect the account's character list. A true result means the action was submitted, not that it has completed. Re-read the character list before sending another action.
Login Steps
| Step | Meaning |
|---|---|
1 | World and channel selection |
2 | Character selection |
3 | New-character setup |
4 | New-character name entry |
Other values may appear during transitions.
Character Structure
get_characters() returns one record per created character:
| Property | Type | Description |
|---|---|---|
id | number | Stable character ID |
index | number | Zero-based display position |
name | string | Character name |
level | number | Character level |
job | number | Job ID |
ghost | boolean | Whether deletion is pending |
delete_deadline | number | Deletion eligibility time as a Unix timestamp, or 0 |
deletion_ready | boolean | Whether permanent deletion is currently eligible |
Character actions accept a returned character record, a character ID, or a zero-based display index. Prefer passing the complete record; numeric values are resolved as IDs first and then as indices.
Functions
core.login.get_step() -> number | nil
Returns the current login step, or nil when the login interface is unavailable.
core.login.get_char_count() -> number | nil
Returns the number of created characters during character selection.
core.login.get_total_slot_count() -> number | nil
Returns the account's total available character slots during character selection.
core.login.get_empty_slot_count() -> number | nil
Returns the number of unoccupied character slots during character selection.
core.login.get_characters() -> table<login_character> | nil
Returns the current character list during character selection.
core.login.move_character_to_front(character: login_character | number) -> boolean
Moves the selected character to the front of the displayed character order.
core.login.soft_delete_character(character: login_character | number) -> boolean
Starts the deletion waiting period for an active character that is not already pending deletion.
core.login.hard_delete_character(character: login_character | number) -> boolean
Permanently deletes a character whose deletion waiting period has completed.
core.login.restore_character(character: login_character | number) -> boolean
Restores a character that is pending deletion.
function on_tick(stage)
if stage ~= core.stage.LOGIN then return end
if core.login.get_step() ~= 2 then
return
end
for _, character in ipairs(core.login.get_characters() or {}) do
if character.ghost and not character.deletion_ready then
core.login.restore_character(character)
break
end
end
end