Jump to content

Tokei

Members
  • Posts

    655
  • Joined

  • Last visited

  • Days Won

    89

Tokei last won the day on February 11

Tokei had the most liked content!

Profile Information

  • Gender
    Male
  • Location
    Canada

Recent Profile Visitors

32977 profile views

Tokei's Achievements

  1. Heya, The HP/SP bars are data\texture\À¯ÀúÀÎÅÍÆäÀ̽º\basic_interface\gzeblue_left.bmp gzeblue_mid gzeblue_right And the AP bar is gzered_left / gzered_mid / gzered_right.
  2. I fixed the hyperlink color, along with the brush selection and the search brush (same download link as before). As for the 4 GB limit, that's a structural limit with GRF files and there's nothing that can be done about it unless Gravity updates their file format. For more context, the file table offset is defined as an unsigned integer and the entries within the file table are also defined as unsigned integers. Four bytes of data cannot go beyond 4294967295; if they do, they'll wrap back to 0 and starts corrupting data in your GRF. I'm afraid this is technically impossible. If your GRF reached 5+ GB in size, then it means you've lost data within your GRF without you knowing about it. As I mentioned above, if you go past 4 GB with your file offsets, the data wraps back to 0. The fact that your GRF loads means that the file table offset was indeed beyond the limit and is probably written right in the middle of your GRF instead of at the end of it. The file table has overwritten some of your files within your GRF and some indexes are linking to invalid data (and not by a small amount, about 1/5th of your GRF is unreadable). When that happens, the client won't be able to decompress the data as it won't be a valid zlib entry, and it will attempt to read from the next GRF listed.
  3. Updated to 1.8.6.6, this update mostly targets the map rendering: Added/fixed the RSM2 to RSM1 option when right-clicking a RSM2 file. The "anim" option will keep the rotation key frames, but it is not a perfect conversion; the scale/texture/offset key frames cannot be converted. The "flat" option will remove any kind of animation but will always be a perfect match with the original. I know this feature isn't that useful anymore since most clients support RSM2 files just fine, but I still hear people wanting to downgrade RSM2 files. You'll need to set the scale to (-1,1,1) in BrowEdit if you want to keep original model direction. Added the "Downgrade" option when right-clicking a RSW file. This will set the version of the RSW to 0x201 and GND to 0x107. All RSM2 files inside the RSW file will be converted to RSM1 and added to your GRF. The RSM2 models are also placed in their correct positions after conversion. Fixed the FPS counter. Added a "minimap" option to create minimaps: Added a face culling option to reflect the client's behavior more accurately. Added a copy/paste feature meant for BrowEdit 3 by using shift-left-click: Please keep your drama/trolling out of this thread, thank you. This forum is primarily dedicated towards developers, not players. I'd refer you to RMS, reddit or your own server forum instead.
  4. They shouldn't be encrypted, no. Unless Gravity revamped the rrf format, this tool should still work. You don't have to handle newer packets unless you want some information from them. For example, if there is a newer packet for displaying NPC messages, then they would simply not show up in the tool anymore until you added a parsing method for it. Anyway, you'd have to share your replay with me in private to look into what's happening. It's too vague as it is.
  5. You forgot the semi-colon after the first line: ALTER TABLE `char` ADD `achievement_points` INT to ALTER TABLE `char` ADD `achievement_points` INT; Other than that, it ran fine for me. (Also you may want to use a proper SQL editor like HeidiSQL instead of phpmyadmin...)
  6. Well that's a bit of a vague error, but usually that means either one of these two: You do not have the .net 3.5 and .net 4.0 properly installed. Or you have conflicting dlls in your folder where GRF Editor is running from (doesn't seem likely though?). So for starter, I'd recommend reinstalling .net 4.0, then .net 3.5, and go from there I suppose.
  7. That's a different issue though; rand(0, 0) doesn't make sense. You could edit the BUILDIN function to ignore such a case, since one could argue that rand(0, 0) should return 0. In the original script posted by InfectedX, it was impossible to have such a scenario so the error didn't make sense. That's why I suggested him to use an entirely different method instead.
  8. Hmm, I'm not entirely sure. My first guess would be the lack of a 1-pixel border around the image. But perhaps there's something else going on with the image itself (maybe it's a transparency image?), but I'd need to have a look at the act/spr files first.
  9. Ah no, the script I posted isn't meant to just copy paste and run. It's just if you have doubts with a mechanic or something; it's way too custom to be used and I'm too lazy to convert it to rAthena's standards.
  10. There is no issue with the code sample you've provided. It's a bit hard to read, but besides that, it works fine for me. To make your life easier though, may I suggest using a command like shufflearray instead? Like so: BUILDIN_DEF(shufflearray,"r?"), BUILDIN_FUNC(shufflearray) { map_session_data* sd = NULL; int i, j; int array_size = script_hasdata(st, 3) ? script_getnum(st, 3) : -1; struct script_data* data = script_getdata(st, 2); if (!data_isreference(data)) { ShowError("buildin_shufflearray: not a variable\n"); script_reportdata(data); script_pushnil(st); st->state = END; return SCRIPT_CMD_FAILURE; } const char* name = reference_getname(data); int32 id = reference_getid(data); if (not_server_variable(*name)) { sd = map_id2sd(st->rid); if (sd == NULL) return SCRIPT_CMD_SUCCESS; } if (array_size < 0) { array_size = script_array_highest_key(st, sd, reference_getname(data), reference_getref(data)); } // Start shuffling the array if (is_string_variable(name)) { for (i = array_size - 1; i > 0; i--) { j = rnd() % (i + 1); const char* temp_val = get_val2_str(st, reference_uid(id, i), reference_getref(data)); set_reg_str(st, sd, reference_uid(id, i), name, get_val2_str(st, reference_uid(id, j), reference_getref(data)), reference_getref(data)); set_reg_str(st, sd, reference_uid(id, j), name, temp_val, reference_getref(data)); script_removetop(st, -1, 0); script_removetop(st, -1, 0); } } else { for (i = array_size - 1; i > 0; i--) { j = rnd() % (i + 1); int64 temp_val = get_val2_num(st, reference_uid(id, i), reference_getref(data)); set_reg_num(st, sd, reference_uid(id, i), name, get_val2_num(st, reference_uid(id, j), reference_getref(data)), reference_getref(data)); set_reg_num(st, sd, reference_uid(id, j), name, temp_val, reference_getref(data)); script_removetop(st, -1, 0); script_removetop(st, -1, 0); } } return SCRIPT_CMD_SUCCESS; } Then you can simply code it like this: 1@thts,0,0,0 script #thanatos_main -1,{ OnInit: setarray .@rng_floors, 3, 4, 5, 6; shufflearray .@rng_floors; setarray 'floors, 1, 2, .@rng_floors[0], .@rng_floors[1], .@rng_floors[2], .@rng_floors[3], 7, 8; setarray 'maps$, instance_mapname("1@thts"), instance_mapname("2@thts"), instance_mapname("3@thts"), instance_mapname("4@thts"), instance_mapname("5@thts"), instance_mapname("6@thts"), instance_mapname("7@thts"), instance_mapname("8@thts"); setarray 'coords_coords, 0, 0, 0, 0, 27, 44, // 3rd floor 18, 97, 155, 100, 50, 18, 50, 18, 50, 18; // other stuff here... end; } 1@thts,32,166,0 script #setp02 45,2,2,{ end; OnTouch: .@next_floor = 3; warp 'maps$[.@next_floor], 'coords_coords[2 * .@next_floor + 0], 'coords_coords[2 * .@next_floor + 1]; end; } As you're clearly implementing Thanatos Tower, you might find some inspiration from when I wrote the script (though it uses quite a few custom script functions and it also has a custom hard mode, but it can probably still be of use). It's from kRO replay files, so the NPC coordinates should be very accurate. thanatos.txt
  11. It appears I reached the maximum messages amount (300), sorry about that. I've cleaned up my inbox, so it should be fine now.
  12. You can also use roBrowser: https://github.com/vthibault/roBrowser/blob/e4b5b53aa1f8b7e429bfa987ab321c96502ba1da/src/Loaders/Action.js Or GRF Editor: https://github.com/Tokeiburu/GRFEditor/blob/main/GRF/FileFormats/ActFormat/ActConverter.cs
  13. I would suggest to not speak nonsense on a development forum, it doesn't make you look good at all. This has absolutely nothing to do with sources being public. For that matter, the sources have been public for more than 10+ years on rAthena. Not only that, but C# is not a compiled language, it can be "decompiled" with little to no effort to begin with using tools like JetBrains. What's worse in what you said is that the encryption is applied via cps.dll, compiled in C++, which isn't released in the source at all. Even if someone didn't know the sources were public on rAthena, Act Editor has all the libraries in plain sight outside of the executable to begin with. For reference (because I've heard that comment many times already):
  14. I am aware. However this isn't a high priority for me at the moment. If someone wants to spend time on this, feel free to contact me. I'll get to this eventually, but it won't be anytime soon.
  15. Heya, I've been receiving messages about people selling NovaRO's decrypted GRFs and honestly... that's beyond stupid. The server is already closed down, anyone buying this is getting straight up scammed. You could have just asked. I put the key attached down there. I'm too lazy to upload the GRFs though, you'll have to find that yourself (or if someone want to host it and link it below, go ahead). Plus, we released installers without the files encrypted on accident multiple times, so it's not like these files weren't already accessible to begin with. nova.grfkey
×
×
  • Create New...