ROChargenPHP
Features
Core
Support for .spr, .act, .pal, .grf, ...
.act file completed support (transparency, scale, color, rotate, ...)
Characters fully implemented ( body, head, hats, weapon, shield, robe, mount) with palettes support.
Can modify action, animation and direction.
Class to generate : Full Character / Character Head only / Monster-NPC-Homunculus / Avatar / Signature.
Cache system available (and can be set off) with configurable time to cache.
Emblem Loader available.
Client
Data.ini file support (to list your GRFs)
Support GRF (0x200 version only without DES encryption - repack before uploading) - the data folder is always read first.
Auto-Extract files from GRF if needed (optimize performance)
Updater script available to convert some lua files to PHP.
How to use
Really url-friendly:
myserver.com/chargen/<controller>/<data> // with url-rewriting
myserver.com/chargen/index.php/<controller>/<data> // without url-rewriting
Example for my character called "KeyWorld":
myserver.com/chargen/avatar/KeyWorld // avatar
myserver.com/chargen/signature/KeyWorld // signature
myserver.com/chargen/character/KeyWorld // full Character
myserver.com/chargen/characterhead/KeyWorld // Character's head
You can change the default link by modify the array $routes in the index.php file:
// $routes['url'] = controller
$routes['/avatar/(.*)'] = 'Avatar';
$routes['/character/(.*)'] = 'Character';
$routes['/characterhead/(.*)'] = 'CharacterHead';
$routes['/monster/(\d+)'] = 'Monster';
$routes['/signature/(.*)'] = 'Signature';
Custom display
At least, the tool is really easy to use, here an example on how to display a static character:
$chargen = new CharacterRender();
$chargen->action = CharacterRender::ACTION_READYFIGHT;
$chargen->direction = CharacterRender::DIRECTION_SOUTHEAST;
$chargen->body_animation = 0;
$chargen->doridori = 0;
// Custom data:
$chargen->sex = "M";
$chargen->class = 4002;
$chargen->clothes_color = 0;
$chargen->hair = 5;
$chargen->hair_color = 12;
// ... head_top, head_mid, head_bottom, robe, weapon, shield, ...
// Generate Image
$img = $chargen->render();
imagepng($img);
Examples / Demos
Sources
Get the source
(Thanks to report all bugs)
License
Instead of selling it, I give a try to "Open Source project with Donation".
So if you think, you would have buy it if i was selling it, think to give a donation ?
Notes
A directory "client" is in the project, it will be a good idea to move it to a directory not accessible by the user (for example /home/client/).
If you use generate images from GRFs you have to know it's a little slower, i recommend you in this case to allow the "AutoExtract" option to gain performance.
GRFs have to be save as 0x200 version without any encryption (even the official DES), good idea is to remove unused folders ( textures, wav, models)..
If you use the options Cache and AutoExtract, don't forget the script need to have a write access to the client and cache folder.
Thanks to Khazou for the acces to his server to fully testing the tool