Skip to content

Remote IES modification system #124

@celophi

Description

@celophi

Summary
Changes to the client may be made dynamically by remotely modifying IES data through specified packets. It is extremely likely that server operators running Melia will want to customize the experience for players to their liking, and since distributing modified clients is not legal, the ability to use these packets will be highly desired.

Problem
In order to send a modification, intimate knowledge of how an IES is structured must be known to the application. Further, information required may change with each client release, and an incorrect structure can crash the client. We need a system that allows for making changes easily and safely. Such a system should make it easy on the server operators to add/remove new changes without needing to spend so much effort to find required information.

Data Requirements
The following data is required in order to make an IES change:

  • Filename of the IES.
  • ClassID of the row to be modified.
  • Column name identifying the modification.
  • Previous value to be overwritten. (Necessary when revoking a revision).

Items to Consider

  • Modifications should most likely exist as a table in the database.
  • Should modifications be applicable to single characters/accounts? (More complex, but maybe there is a reason someone might want this?)
  • A large number of modifications should not be sent as one packet. They need to be split up.
  • Should we make a feature to allow GMs to make modifications through CZ_CHAT? (Validation needs to be robust since a bad packet can crash clients.)
  • Modifications are not permanent by default and reset only once the client is closed. (It seems like there is code to flush changes to the files themselves).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions