Jump to content

KeyWorld

Members
  • Content Count

    95
  • Joined

  • Last visited

  • Days Won

    8

Reputation Activity

  1. Upvote
    KeyWorld got a reaction from ljsb in ROChargenPHP - Free PHP Character Viewer   
    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-rewritingmyserver.com/chargen/index.php/<controller>/<data> // without url-rewriting Example for my character called "KeyWorld":myserver.com/chargen/avatar/KeyWorld // avatarmyserver.com/chargen/signature/KeyWorld // signaturemyserver.com/chargen/character/KeyWorld // full Charactermyserver.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

  2. Upvote
    KeyWorld got a reaction from Patskie in Hercules 1st 2014 MegaPatch   
    Basically:
    https://github.com/HerculesWS/Hercules/blob/master/src/map/script.c#L1105
    https://github.com/HerculesWS/Hercules/blob/master/src/map/script.c#L3011
    https://github.com/HerculesWS/Hercules/blob/master/src/map/script.c#L3425
     
    Number in script are integer, supported from -2147483647 to 2147483647, else it lead to overflow error.
    So if you can't create a number greater than this value, you will never be able to select an index superior than 2147483647 in an array.
  3. Upvote
    KeyWorld reacted to sketchyphoenix in CrashSaver   
    It's not helping anything. Here's why.
     
    What you're saying is that wasting processing time and memory (that increases with each player on the server, I might add) to clutter up the entire codebase with potentially large amounts of cache for the off-chance that 1 tiny little entry is going to have anything remotely useful to gather from it. The best part? You can still gather all that player data and not a single bit of it is useful if it turns out somebody just plain wrote buggy code. This is literally how you should not debug a program, ever.
     
    Crashes that happen that can't be so easily figured out from crash reports are almost always buggy code. It doesn't matter what skill somebody used, what level they are, what they were doing because all that data is accurate. What's not accurate is how it's being handled. That takes time to localize the problem, studying the flow of execution, identifying the error, correcting it, then testing it.
  4. Upvote
    KeyWorld got a reaction from Ind in Hercules 1st 2014 MegaPatch   
    Basically:
    https://github.com/HerculesWS/Hercules/blob/master/src/map/script.c#L1105
    https://github.com/HerculesWS/Hercules/blob/master/src/map/script.c#L3011
    https://github.com/HerculesWS/Hercules/blob/master/src/map/script.c#L3425
     
    Number in script are integer, supported from -2147483647 to 2147483647, else it lead to overflow error.
    So if you can't create a number greater than this value, you will never be able to select an index superior than 2147483647 in an array.
  5. Upvote
    KeyWorld got a reaction from Euphy in help me improve this merge sort algorithm   
    It's not cheating, it's just reducing commands calls

    The best for now is counting sort in Hercules. Can't write it now in my phone but it will execute faaaar faster.
     
    Edit: So I checked today in a slow server, with some stupids greats optimizations in all functions. Here my results using 1000 elements :

    [Debug]: script debug : 0 110144879 : ==== [SORT] Testing for 1000 elements.[Debug]: script debug : 0 110144879 : [merge_sort] Time used -> 405 ms [PASSED][Debug]: script debug : 0 110144879 : [comb_sort] Time used -> 394 ms [PASSED][Debug]: script debug : 0 110144879 : [counting_sort] Time used -> 57 ms [PASSED] [Debug]: script debug : 0 110144878 : ==== [SORT INDEX] Testing for 1000 elements.[Debug]: script debug : 0 110144878 : [merge_sort_index] Time used -> 608 ms [PASSED][Debug]: script debug : 0 110144878 : [comb_sort_index] Time used -> 483 ms [PASSED]  
    So as you can see, a hacky Comb Sort is faster than a hacky merge sort in all cases.
    If you want to cheat even more, you can use my hackyyyy counting sort (but it does not sort indexes).
     
    Have fun: http://rathena.org/board/pastebin/2kto2abymrp/
  6. Upvote
    KeyWorld got a reaction from AnnieRuru in help me improve this merge sort algorithm   
    So rathena sux
    Only implement a buggy version of .@var++ sux a lot...
    So let say I forget about rathena for this script now.
     
    I know about getd() and setd(), the only problem with this command is the memory leak it create (specially in this case), so I'm not fan of it anymore
    So here a new version, with the *counting_sort_index*, and also a big bonus : asm functions (for fun).
     
    http://upaste.me/2d0f10561576aed88
     
    [Debug]: script debug : 0 110198899 : ==== [SORT INDEX] Testing for 1000 elements.[Debug]: script debug : 0 110198899 : [merge_sort_index] Time used -> 610 ms [PASSED][Debug]: script debug : 0 110198899 : [merge_sort_index_asm] Time used -> 578 ms [PASSED][Debug]: script debug : 0 110198899 : [comb_sort_index] Time used -> 508 ms [PASSED][Debug]: script debug : 0 110198899 : [comb_sort_index_asm] Time used -> 476 ms [PASSED][Debug]: script debug : 0 110198899 : [counting_sort_index] Time used -> 94 ms [PASSED][Debug]: script debug : 0 110198899 : [counting_sort_index_asm] Time used -> 91 ms [PASSED][Debug]: script debug : 0 110198900 : ==== [SORT] Testing for 1000 elements.[Debug]: script debug : 0 110198900 : [merge_sort] Time used -> 407 ms [PASSED][Debug]: script debug : 0 110198900 : [merge_sort_asm] Time used -> 378 ms [PASSED][Debug]: script debug : 0 110198900 : [comb_sort] Time used -> 385 ms [PASSED][Debug]: script debug : 0 110198900 : [comb_sort_asm] Time used -> 343 ms [PASSED][Debug]: script debug : 0 110198900 : [counting_sort] Time used -> 57 ms [PASSED][Debug]: script debug : 0 110198900 : [counting_sort_asm] Time used -> 53 ms [PASSED]
  7. Upvote
    KeyWorld got a reaction from Patskie in help me improve this merge sort algorithm   
    So rathena sux
    Only implement a buggy version of .@var++ sux a lot...
    So let say I forget about rathena for this script now.
     
    I know about getd() and setd(), the only problem with this command is the memory leak it create (specially in this case), so I'm not fan of it anymore
    So here a new version, with the *counting_sort_index*, and also a big bonus : asm functions (for fun).
     
    http://upaste.me/2d0f10561576aed88
     
    [Debug]: script debug : 0 110198899 : ==== [SORT INDEX] Testing for 1000 elements.[Debug]: script debug : 0 110198899 : [merge_sort_index] Time used -> 610 ms [PASSED][Debug]: script debug : 0 110198899 : [merge_sort_index_asm] Time used -> 578 ms [PASSED][Debug]: script debug : 0 110198899 : [comb_sort_index] Time used -> 508 ms [PASSED][Debug]: script debug : 0 110198899 : [comb_sort_index_asm] Time used -> 476 ms [PASSED][Debug]: script debug : 0 110198899 : [counting_sort_index] Time used -> 94 ms [PASSED][Debug]: script debug : 0 110198899 : [counting_sort_index_asm] Time used -> 91 ms [PASSED][Debug]: script debug : 0 110198900 : ==== [SORT] Testing for 1000 elements.[Debug]: script debug : 0 110198900 : [merge_sort] Time used -> 407 ms [PASSED][Debug]: script debug : 0 110198900 : [merge_sort_asm] Time used -> 378 ms [PASSED][Debug]: script debug : 0 110198900 : [comb_sort] Time used -> 385 ms [PASSED][Debug]: script debug : 0 110198900 : [comb_sort_asm] Time used -> 343 ms [PASSED][Debug]: script debug : 0 110198900 : [counting_sort] Time used -> 57 ms [PASSED][Debug]: script debug : 0 110198900 : [counting_sort_asm] Time used -> 53 ms [PASSED]
  8. Upvote
    KeyWorld got a reaction from AnnieRuru in help me improve this merge sort algorithm   
    It's not cheating, it's just reducing commands calls

    The best for now is counting sort in Hercules. Can't write it now in my phone but it will execute faaaar faster.
     
    Edit: So I checked today in a slow server, with some stupids greats optimizations in all functions. Here my results using 1000 elements :

    [Debug]: script debug : 0 110144879 : ==== [SORT] Testing for 1000 elements.[Debug]: script debug : 0 110144879 : [merge_sort] Time used -> 405 ms [PASSED][Debug]: script debug : 0 110144879 : [comb_sort] Time used -> 394 ms [PASSED][Debug]: script debug : 0 110144879 : [counting_sort] Time used -> 57 ms [PASSED] [Debug]: script debug : 0 110144878 : ==== [SORT INDEX] Testing for 1000 elements.[Debug]: script debug : 0 110144878 : [merge_sort_index] Time used -> 608 ms [PASSED][Debug]: script debug : 0 110144878 : [comb_sort_index] Time used -> 483 ms [PASSED]  
    So as you can see, a hacky Comb Sort is faster than a hacky merge sort in all cases.
    If you want to cheat even more, you can use my hackyyyy counting sort (but it does not sort indexes).
     
    Have fun: http://rathena.org/board/pastebin/2kto2abymrp/
  9. Upvote
    KeyWorld got a reaction from AnnieRuru in Hercules 1st 2014 MegaPatch   
    Basically:
    https://github.com/HerculesWS/Hercules/blob/master/src/map/script.c#L1105
    https://github.com/HerculesWS/Hercules/blob/master/src/map/script.c#L3011
    https://github.com/HerculesWS/Hercules/blob/master/src/map/script.c#L3425
     
    Number in script are integer, supported from -2147483647 to 2147483647, else it lead to overflow error.
    So if you can't create a number greater than this value, you will never be able to select an index superior than 2147483647 in an array.
  10. Upvote
    KeyWorld got a reaction from evilpuncker in ROChargenPHP - Free PHP Character Viewer   
    Addded a debug mode to trace errors in the latest version if you have problem installing it.

    Just open index.php and uncomment the line:
    // Set on the debug//Debug::enable(); Once it's done you will have access to all debugs, infos and errors:
     


     
     
    Hope it helps
  11. Upvote
    KeyWorld got a reaction from AnnieRuru in help me improve this merge sort algorithm   
    Optimized version of the merge sort index :
    function script mergeSortIndex { .@size = getarg(2); copyarray .@arr, getarg(0), .@size; while (.@i < .@size) { set .@idx[.@i], .@i; .@i++; } .@width = 1; while (.@width < .@size) { .@left = 0; while (.@left < .@size) { .@middle = .@size < .@left + .@width ? .@size : .@left + .@width; .@right = .@size < .@left + .@width * 2 ? .@size : .@left + .@width * 2; .@l = .@left; .@m = .@middle; while (.@l < .@middle && .@m < .@right) { if (.@arr[.@l] < .@arr[.@m]) { .@tmp_arr[.@left] = .@arr[.@l]; .@tmp_idx[.@left] = .@idx[.@l]; .@l++; } else { .@tmp_arr[.@left] = .@arr[.@m]; .@tmp_idx[.@left] = .@idx[.@m]; .@m++; } .@left++; } if (.@middle - .@l) { copyarray .@tmp_arr[.@left], .@arr[.@l], .@middle - .@l; copyarray .@tmp_idx[.@left], .@idx[.@l], .@middle - .@l; .@left += .@middle - .@l; } if (.@right - .@m) { copyarray .@tmp_arr[.@left], .@arr[.@m], .@right - .@m; copyarray .@tmp_idx[.@left], .@idx[.@m], .@right - .@m; .@left += .@right - .@m; } } .@width *= 2; copyarray .@arr, .@tmp_arr, .@size; copyarray .@idx, .@tmp_idx, .@size; } copyarray getarg(1), .@tmp_idx, .@size; return;}
  12. Upvote
    KeyWorld got a reaction from AnnieRuru in help me improve this merge sort algorithm   
    Hi Annie
     
    I'll check later more deeply your script to see if there are rooms for improvements, not much time currently.
    But from what I remember (maybe not the case anymore) the script engine do not like recursion (call functions, return to the previous state) and that's what slowing down the script.
  13. Upvote
    KeyWorld got a reaction from AnnieRuru in Is this possible?   
    @Annie
     
    Just because it's you <3
    You miss array element in the setmapflag
     
    And because it's too much time since the last time I touch to Athena script, just cheating:
     
    - script warp_banned -1,{OnInit: setarray .@denymap_2nd$, "morocc", "payon", "aldebaran"; // Maps NOT for second jobs. Add more with a comma, last member should have a semicolon setarray .@denymap_3rd$, "amatsu", "gonryun", "geffen"; // Same as above, but for third jobs .@denymap_2ndSize = getarraysize(.@denymap_2nd$); .@denymap_3rdSize = getarraysize(.@denymap_3rd$); for (.@i = 0; .@i < .@denymap_2ndSize; .@i++) { setmapflag .@denymap_2nd$[.@i], mf_loadevent; } for (.@i = 0; .@i < .@denymap_3rdSize; .@i++) { setmapflag .@denymap_3rd$[.@i], mf_loadevent; } .@joinMap_2nd$ = "x1" + implode( .@denymap_2nd$, "x1") + "x1"; .@joinMap_3rd$ = "x1" + implode( .@denymap_3rd$, "x1") + "x1"; end;OnPCLoadMapEvent: .@class = eaclass(); .@search$ = "x1" + strcharinfo(3) + "x1"; if ( ((.@class & (EAJL_UPPER | EAJL_2)) && strpos(.@joinMap_2nd$, .@search$) > -1) || ((.@class & EAJL_THIRD) && strpos(.@joinMap_3rd$, .@search$) > -1) ) { dispbottom "You're not supposed to be here..."; warp "SavePoint",0,0; }}  
  14. Upvote
    KeyWorld got a reaction from Patskie in Hercules WPE Free - June 14th Patch   
    I'm going to play with this features soon. As far I see :
    - only the map-server use this feature.
    - nothing sent to the client to say "hey for now you need to switch to encryption" - bothersome...
    - basic encryption in only the header of the packet and only from the packets sent from client (not from server).
     
    Am I correct ?
  15. Upvote
    KeyWorld reacted to Yommy in RO2 Client Source Code <3   
    RO2 Client source codes
    https://mega.co.nz/#!V9VTgR7R!b2XpJnTVvs_Ps_OkuX1eDElPf7N85aXih4StuIJ8Omk
     
    and the Saga server emu
    https://mega.co.nz/#!1w0nwCDL!MpQTbSfrAhcTBnyy4pi1XTw29BgTUcadD7LoSe3ANhk
     
     
    let me know if you find some goodies
  16. Upvote
    KeyWorld got a reaction from JulioCF in Hercules 1st 2014 MegaPatch   
    Welcome 2014.
    Great job.
  17. Upvote
    KeyWorld got a reaction from Patskie in Flux Control Panel for Hercules   
    Don't say something I didn't write.   It's not because I post a list of technologies than all have to be used, even if it's a base from a good framework, the pros and crons have to be studied before writing a piece of code. If I had enough time to write a CP, it will be already done for years but I already have some problems to regularly work on my personal projects to add a new one to the queue.   The exploits i were talking are already in discussion with Xantara and CalciumKid to find the better approach to fix it without potentially provoke a massive hack of a big part of pservers. The main problem of this exploit : it required some fix on templates folder but no servers are using the default one because of theirs custom design (so it's an update that will break all current servers).   I'm not here to promote myself, just to discuss but it seems like when an opinion diverges from yours we just are the bad guys and you need to spit on me to discredit myself and all I said, just grow up guys, I think you are enough older to have a discussion without bashing the guy in front of you.
  18. Upvote
    KeyWorld got a reaction from Legend in ROChargenPHP - Free PHP Character Viewer   
    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-rewritingmyserver.com/chargen/index.php/<controller>/<data> // without url-rewriting Example for my character called "KeyWorld":myserver.com/chargen/avatar/KeyWorld // avatarmyserver.com/chargen/signature/KeyWorld // signaturemyserver.com/chargen/character/KeyWorld // full Charactermyserver.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

  19. Upvote
    KeyWorld got a reaction from Uzieal in ROChargenPHP - Free PHP Character Viewer   
    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-rewritingmyserver.com/chargen/index.php/<controller>/<data> // without url-rewriting Example for my character called "KeyWorld":myserver.com/chargen/avatar/KeyWorld // avatarmyserver.com/chargen/signature/KeyWorld // signaturemyserver.com/chargen/character/KeyWorld // full Charactermyserver.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

  20. Upvote
    KeyWorld got a reaction from Virtue in ROChargenPHP - Free PHP Character Viewer   
    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-rewritingmyserver.com/chargen/index.php/<controller>/<data> // without url-rewriting Example for my character called "KeyWorld":myserver.com/chargen/avatar/KeyWorld // avatarmyserver.com/chargen/signature/KeyWorld // signaturemyserver.com/chargen/character/KeyWorld // full Charactermyserver.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

  21. Upvote
    KeyWorld got a reaction from KaitoKid in ROChargenPHP - Free PHP Character Viewer   
    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-rewritingmyserver.com/chargen/index.php/<controller>/<data> // without url-rewriting Example for my character called "KeyWorld":myserver.com/chargen/avatar/KeyWorld // avatarmyserver.com/chargen/signature/KeyWorld // signaturemyserver.com/chargen/character/KeyWorld // full Charactermyserver.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

  22. Upvote
    KeyWorld got a reaction from mleo1 in ROChargenPHP - Free PHP Character Viewer   
    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-rewritingmyserver.com/chargen/index.php/<controller>/<data> // without url-rewriting Example for my character called "KeyWorld":myserver.com/chargen/avatar/KeyWorld // avatarmyserver.com/chargen/signature/KeyWorld // signaturemyserver.com/chargen/character/KeyWorld // full Charactermyserver.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

  23. Upvote
    KeyWorld got a reaction from Xgear in ROChargenPHP - Free PHP Character Viewer   
    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-rewritingmyserver.com/chargen/index.php/<controller>/<data> // without url-rewriting Example for my character called "KeyWorld":myserver.com/chargen/avatar/KeyWorld // avatarmyserver.com/chargen/signature/KeyWorld // signaturemyserver.com/chargen/character/KeyWorld // full Charactermyserver.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

  24. Upvote
    KeyWorld got a reaction from jTynne in ROChargenPHP - Free PHP Character Viewer   
    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-rewritingmyserver.com/chargen/index.php/<controller>/<data> // without url-rewriting Example for my character called "KeyWorld":myserver.com/chargen/avatar/KeyWorld // avatarmyserver.com/chargen/signature/KeyWorld // signaturemyserver.com/chargen/character/KeyWorld // full Charactermyserver.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

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.