Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation since 11/28/2020 in all areas

  1. Evening all! You know when you have one of those days and can't wait for it to end? That sums up the entirety of 2020. All of it. It's been tough for people all around the world with the sheer amount of ridiculousness over the last 12 months and eventually there will be a light at the end of the tunnel. It has been 6 years since I last posted a Christmas message, and as is customary at Christmas here in the UK, we get a message from the Queen. This message though, is aimed at 2020 as a whole. If you're lucky enough to be with family this Christmas, treasure them. If you're out celebrating with friends, be kind to everyone you meet. If you're in the hospitality industry serving others with little time to yourself, werk it girl. *snaps fingers* Whatever you're doing, stay safe. And wherever you are in the world, the rAthena team wishes you a Merry Christmas, Happy Holidays and Season's Greetings.
    19 points
  2. Hi all! I improved the NPC images (1190 sprites up to episode 18.1) using a neural network (ESRGAN) and made new HD sprites. Want to show you my final work! What do you thinking about it?
    17 points
  3. Welcome rAthena Community! Hello everyone Ren here, so it has come to my attention through the discord channel alot of you are having issues setting up your new clients and are having issues or your new and want to jump right into the server construction but cant figure out how to properly set up a new 2020 client without errors or issues. I am here to finally remedy that! The guides on the documentation are here and there and newcomers can't figure out why they are having errors and tend to skip things here and there. Below I will fully explain from start to finish how to set up a Ragnarok 2020 Client for Renewal and Pre Renewal use! Lets Begin! Okay so below I've decided to skip text and shoot for a video tutorial this will eliminate more errors and create a better reference! Please do exactly as I do to eliminate error this includes making new folders to make a tidy work space! (Note for video I will not be redownloading files as I do not like clutter. I will also be using a text editor to type.) Guide Links KRO - Full Client For Ragnarok Game Files (Akkarins File) NEMO - Client exe Patcher for your server (Most Updated) NEMO RagClient - The latest supported client for 2020! ROTranslation - Chris's Full RO Translation (Most Updated) GRF Editor - GRF tool to open grfs and create them (Requires rAthena Account) MISINFORMATION ON VIDEO REGARDING ITEMINFO_V5.LUA I WANTED TO POINT OUT CORRECT INFORMATION REGARDING ITEMINFO_V5 LUA THAT I REALIZED I MISINFORMED IN THE VIDEO WHEN EVER UPDATING RSU IT WILL OVERWRITE ORIGINAL ITEMINFOS V5 FOR ALL 2020 CLIENTS. IN PATCH ON NEMO PLEASE MAKE YOUR OWN /ITEMINFOSERVER.LUA SO KRO DOESNT OVERWRITE! JUST COPY THE INFORMATION FROM ORIGINAL V5 AND MAKE IT YOUR OWN! Information Regarding Language Types Other Then English Okay so I wanted to give a few details on regarding languages other then english that are not covered within the video. If your looking to change the language to russian for example please make sure you have this patch below enabled while patching! - Always load korean external settings file! Then you can select other language type numbers 0-17 etc. Here is also my text document with the steps! // Welcome to the 2020 client set up guide // Alot of you have been having issues with setting up the new client if you follow this video from start to finish you will be able to 1. Have a properly running server client side 2. Learn to be more organized 3. Add custom items // Lets start step 1. Make a new folder on your desktop for your server client files and tools. A clean enviroment will help with less errors! This means installing a fresh copy of the full kRO game. Also follow my organization of where i place all my tools and files. step 2. Download all the required files to have a full client side, all of these files can be found on my guide post and save them to the tools folder. step 3. Extract the full kRO to your game files folder within your server folder & update using the 2 RSU patchers. step 4. Install GRF Editor onto your windows system , this has its own folder within program files. step 5. Extract the rest of the tools one by one into your tools folder. step 6. Go back to your game files folder and make sure that kRO is fully updated by running the two patchers 1 by 1. After downloading all the neccessary tools and extracting the game files and updating we may now continue on to building a fresh GRF for your servers use! This is better then using old grfs that have to much stuff that will conflict with the new client files. This client also uses new resource files and new system folder files which will be covered. okay lets begin. step 1. open grf editor step 2. navigate to your rotranslation folder step 3. copy or drag both basic texture sub folders into data folder on grf editor step 4. if your planning on running a pre renewal drag the renewal data over first but if your planning on running renewal like i am drag the pre over first then the renewal step 5. now we completed building our basic server grf we will now edit our connection file called clientinfo.xml you can delete the sclientinfo as it is not needed with the new client now we can save the grf to our game files folder where everything is for the game! Keep grf editor open for adding custom items later on. now we can move on to creating the client to use for the server! step 1. navigate to the nemo folder inside our tools folder! step 2. browse for your ragexe that you downloaded. I'm using 20200401 which is most current and pre set in on the server side step 3. load the client step 4. load the ro translation profile for 2020 this is all pre defined for the client so we can skip through step 5. this is the name of our config file to point the client to the grf we can change it to our own custom name used step 6. this is important so if your running an earlier client you might use the original iteminfo.lua this is the new item info which doesnt get overwritten by kro in updates this is where some of our information will go for the custom items. step 7. now we can load the recommended patches step 8. dont worry about the errors as they are just telling you those patches are not for the latest client it still selects the recommended ones we need! step 9. selecting our own patches. You can pick through which ones you want but if your not advanced just follow me this is for increasing your custom item view range it is recommended you choose between 5000-8000 as customs view start at 3000 this might change later on if kro decides to release more. we will go with 5000 because i dont see us adding anymore then 200 custom items. step 10. lets recheck to make sure we got everything beautiful now we can apply the patches and move our client to our game files folder with our grf! you can rename your client to what ever you want! now that we created our grf and made our client we can go back to the ro translation folder step 11. navigate to the pre renewal or renewal folder if your making a pre renewal server add the renewal system folder to your game files folder and overwrite first then add the pre renewal systems folder on top of that just like we did with the grf in my case i am making a renewal so ill do opposite now the next folder once weve done that we can test the client if you get some weird text you have to edit your data.ini and rename it to yourserver.ini like we did for the patch now we can move on to adding the custom items!!! step 1 . re open grf editor in this case ill use my grf step 2. navigate to your tools folder and to the folder that holds your custom items step 3. follow me step 4. now we can edit the two files needed to correctly link the client with the server side. navigate to the data/luafiles514/lua step 5. extract both files that i do and they will end up in your game directory under the folder data we can go ahead and open the accessory id! okay this is important!!! just copy like i did above and edit the names make sure its 100% matching save the file and we can open the next file which is accessory id mistake i made is that we were in the accname so we just swap around :P same thing goes on here we just copy the above line and edit out. now the 3000 is our view id not the item id which @item calls for this will be the view display of our custom which is why we set the patch for 5000 so we will start at 3000 gives original items a bit of room now we can save! step 6. drag the two files back into the grf and save now were completely done with the grf! now we can move back to our game files folder for the last task! move to the system folder to iteminfo_v5.lub/lua heres where we add the actual item db number in this case i used 30000 just copy what i did and youll be fine you just have to make sure when you add the item into the item db whether it be sql/yml that you set the right item id and view id also the AEGIS name will be _Equilibrium_Wings here on the item info you can see there is none it links to a different part of the grf but deff make sure to add the _ under the aegis name! All done that wasnt so hard! -Renzadic!
    15 points
  4. Heya, This post is meant to explain the file format of RSM2 for those who are interested and want to play with them. I haven't seen many projects exploring the topic and I've finished digging through the file for GRF Editor. I shared some of the structure pubicly in BrowEdit's Discord almost a year ago, but the fields were still unknown at that point. Also before anyone asks, no I am not making a public converter for RSM2 > RSM1. That's not fully possible anyway. General The structure of a RSM file is quite simple. It's a list of mesh data with transformations applied to them. Each mesh has a transformation matrix, a position, a parent, etc. Then you have the transformation components on the mesh: Offset/Translation RotationAngle RotationAxis Scale And at last, you have the animation components on the mesh: RotationKeyFrame ScaleKeyFrame All the code presented below comes from GRF Editor. Also the structure varies quite a bit even among the 2.2 version and the 2.3 version. I was unable to find any model using versions 2.0 or 2.1. I'd guess they were only used internally...? Who knows. Animation duration changes In previous versions, below 2.2, the AnimationLength field and the frame animation field represented time in milliseconds. So a model such as ps_h_01.rsm has 48000 as a value for AnimationLength, which means the animation lasts for a whole 48 seconds before it resets. The key frames for the transformations work in the same manner. In version 2.2 and above, the AnimationLength field reprensents the total amount of frames in the model. So a model such as reserch_j_01.rsm2 has a value of 300. The keyframes would therefore range between 0 and 300. The duration is given by the new FramesPerSecond field, which is 30 for almost all 2.0 models currently existing. The delay between frames would then be 1000 / FramesPerSecond = 33.33 ms. The duration would be 1000 / FramesPerSecond * AnimationLength = 1000 / 30 * 300 = 10000 ms in our example. Shading Nothing new there, but I thought I'd go over the topic quickly. The ShadeType property is used to calculate the normals. There are three types that have been found in models to this day: 0: none; the normals are all set to (-1, -1, -1). 1: flat; normals are calculated per triangle, with a typical cross product of the 3 vertices. 2: smooth; each face of a mesh belongs to a smooth group, the normal is then calculated by adding the face normal of each connected vertices. In the real world, most models end up using the smooth shading type. The smooth group is a bit confusing at first if you've never heard of it, but some reading on the topic will help you. These are common techniques. Textures In previous versions, below 2.3, the textures were defined at the start of the file. Each mesh then defines a list of indices. So for example, a mesh could define these indices: "2, 5, 0" which means the mesh has 3 textures. Each face of the mesh then has a TextureId property from 0 to 2 in our example. If the face TextureId is 1, it would refer to the second indice previously defined, which is 5. This means that the texture used for this face would be the 5th texture defined at the start of the model. In version 2.3 and above, the textures are defined per mesh instead. There are no longer using texture indices. The TextureId defined for each face refers directly to the texture defined of that particular mesh. So say the TextureId for a face is 1, then the first texture defined on the mesh is the corresponding one. Transformation order In version 2.2 and above, the Scale/Offset/RotationAngle/RotationAxis properties were removed. Instead, it relies on animation frames or the TransformationMatrix. The order looks as such: /// <summary> /// Calculates the MeshMatrix and MeshMatrixSelf for the specified animation frame. /// </summary> /// <param name="animationFrame">The animation frame.</param> public void Calc(int animationFrame) { MeshMatrixSelf = Matrix4.Identity; MeshMatrix = Matrix4.Identity; // Calculate Matrix applied on the mesh itself if (ScaleKeyFrames.Count > 0) { MeshMatrix = Matrix4.Scale(MeshMatrix, GetScale(animationFrame)); } if (RotationKeyFrames.Count > 0) { MeshMatrix = Matrix4.Rotate(MeshMatrix, GetRotationQuaternion(animationFrame)); } else { MeshMatrix = Matrix4.Multiply2(MeshMatrix, new Matrix4(TransformationMatrix)); if (Parent != null) { MeshMatrix = Matrix4.Multiply2(MeshMatrix, new Matrix4(Parent.TransformationMatrix).Invert()); } } MeshMatrixSelf = new Matrix4(MeshMatrix); Vertex position; // Calculate the position of the mesh from its parent if (PosKeyFrames.Count > 0) { position = GetPosition(animationFrame); } else { if (Parent != null) { position = Position - Parent.Position; position = Matrix4.Multiply2(new Matrix4(Parent.TransformationMatrix).Invert(), position); } else { position = Position; } } MeshMatrixSelf.Offset = position; // Apply parent transformations Mesh mesh = this; while (mesh.Parent != null) { mesh = mesh.Parent; MeshMatrixSelf = Matrix4.Multiply2(MeshMatrixSelf, mesh.MeshMatrix); } // Set the final position relative to the parent's position if (Parent != null) { MeshMatrixSelf.Offset += Parent.MeshMatrixSelf.Offset; } // Calculate children foreach (var child in Children) { child.Calc(animationFrame); } } The original vertices are then multiplied by MeshMatrixSelf for their final positions. MeshMatrix is the resulting transformation matrix of a particular mesh only, without taking into account its parents matrixes or the mesh position. The MeshMatrixSelf is the final transformation matrix that will be applied to the vertices. Contrary to previous versions, the TransformationMatrix is applied all the way to the children. The matrix invert function may not be available in all common librairies, so here is the implementation used: public Matrix4 Invert() { if (this.IsDistinguishedIdentity) return this; if (this.IsAffine) return this.NormalizedAffineInvert(); float num1 = this[2] * this[7] - this[6] * this[3]; float num2 = this[2] * this[11] - this[10] * this[3]; float num3 = this[2] * this[15] - this[14] * this[3]; float num4 = this[6] * this[11] - this[10] * this[7]; float num5 = this[6] * this[15] - this[14] * this[7]; float num6 = this[10] * this[15] - this[14] * this[11]; float num7 = this[5] * num2 - this[9] * num1 - this[1] * num4; float num8 = this[1] * num5 - this[5] * num3 + this[13] * num1; float num9 = this[9] * num3 - this[13] * num2 - this[1] * num6; float num10 = this[5] * num6 - this[9] * num5 + this[13] * num4; float num11 = this[12] * num7 + this[8] * num8 + this[4] * num9 + this[0] * num10; if (IsZero(num11)) return false; float num12 = this[0] * num4 - this[4] * num2 + this[8] * num1; float num13 = this[4] * num3 - this[12] * num1 - this[0] * num5; float num14 = this[0] * num6 - this[8] * num3 + this[12] * num2; float num15 = this[8] * num5 - this[12] * num4 - this[4] * num6; float num16 = this[0] * this[5] - this[4] * this[1]; float num17 = this[0] * this[9] - this[8] * this[1]; float num18 = this[0] * this[13] - this[12] * this[1]; float num19 = this[4] * this[9] - this[8] * this[5]; float num20 = this[4] * this[13] - this[12] * this[5]; float num21 = this[8] * this[13] - this[12] * this[9]; float num22 = this[2] * num19 - this[6] * num17 + this[10] * num16; float num23 = this[6] * num18 - this[14] * num16 - this[2] * num20; float num24 = this[2] * num21 - this[10] * num18 + this[14] * num17; float num25 = this[10] * num20 - this[14] * num19 - this[6] * num21; float num26 = this[7] * num17 - this[11] * num16 - this[3] * num19; float num27 = this[3] * num20 - this[7] * num18 + this[15] * num16; float num28 = this[11] * num18 - this[15] * num17 - this[3] * num21; float num29 = this[7] * num21 - this[11] * num20 + this[15] * num19; float num30 = 1.0f / num11; this[0] = num10 * num30; this[1] = num9 * num30; this[2] = num8 * num30; this[3] = num7 * num30; this[4] = num15 * num30; this[5] = num14 * num30; this[6] = num13 * num30; this[7] = num12 * num30; this[8] = num29 * num30; this[9] = num28 * num30; this[10] = num27 * num30; this[11] = num26 * num30; this[12] = num25 * num30; this[13] = num24 * num30; this[14] = num23 * num30; this[15] = num22 * num30; return this; } New transformation animations TranslationKeyFrames In version 2.2 and above, PosKeyFrames are added. If you've seen the previous formats, you may be confused by this. I've seen PosKeyFrames in many implementations, but version 1.6 adds ScaleKeyFrames, not TranslationKeyFrames. The name is self-explanatory: it translates the mesh. TextureKeyFrames In version 2.3 and above, TextureKeyFrames are added. Similar to other transformations, they are defined as: struct TextureKeyFrame { public int Frame; public float Offset; } The TextureKeyFrames target a specific texture ID from the mesh and have different animation types. The Offset affects the UV offsets of the textures. The animation types are: 0: Texture translation on the X axis. The texture is tiled. 1: Texture translation on the Y axis. The texture is tiled. 2: Texture multiplication on the X axis. The texture is tiled. 3: Texture multiplication on the Y axis. The texture is tiled. 4: Texture rotation around (0, 0). The texture is not tiled. Main mesh In previous versions, below 2.2, there could only be one root mesh. This is no longer the case with newer versions. Code And those were all the changes! Here is a full description of the structure (which is again based on GRF Editor). # # RSM structure # private Rsm(IBinaryReader reader) { int count; // The magic of RMS files is always GRSM Magic = reader.StringANSI(4); MajorVersion = reader.Byte(); MinorVersion = reader.Byte(); // Simply converting the version to a more readable format Version = FormatConverters.DoubleConverter(MajorVersion + "." + MinorVersion); // See "Animation duration changes" above for more information. AnimationLength = reader.Int32(); ShadeType = reader.Int32(); Alpha = 0xFF; // Apparently this is the alpha value of the mesh... but it has no impact in-game, so... if (Version >= 1.4) { Alpha = reader.Byte(); } if (Version >= 2.3) { FrameRatePerSecond = reader.Float(); count = reader.Int32(); // In the new format, strings are now written with their length as an integer, then the string. In previous versions, strings used to be 40 in length with a null-terminator. // The syntax below may be a bit confusing at first. // reader.Int32() reads the length of the string. // reader.String(int) reads a string with the specific length. for (int i = 0; i < count; i++) { MainMeshNames.Add(reader.String(reader.Int32())); } count = reader.Int32(); } else if (Version >= 2.2) { FrameRatePerSecond = reader.Float(); int numberOfTextures = reader.Int32(); for (int i = 0; i < numberOfTextures; i++) { _textures.Add(reader.String(reader.Int32())); } count = reader.Int32(); for (int i = 0; i < count; i++) { MainMeshNames.Add(reader.String(reader.Int32())); } count = reader.Int32(); } else { // Still unknown, always appears to be 0 though. Reserved = reader.Bytes(16); count = reader.Int32(); for (int i = 0; i < count; i++) { _textures.Add(reader.String(40, '\0')); } MainMeshNames.Add(reader.String(40, '\0')); count = reader.Int32(); } // The Mesh structure is defined below for (int i = 0; i < count; i++) { _meshes.Add(new Mesh(reader, Version)); } // The rest of the structure is a bit sketchy. While this is apparently what it should be (some models do indeed have those), they have absolutely no impact in-game and can be safely ignored when rendering the model. if (Version < 1.6) { count = reader.Int32(); for (int i = 0; i < count; i++) { _scaleKeyFrames.Add(new ScaleKeyFrame { Frame = reader.Int32(), Sx = reader.Float(), Sy = reader.Float(), Sz = reader.Float(), Data = reader.Float() }); } } count = reader.Int32(); for (int i = 0; i < count; i++) { VolumeBoxes.Add(new VolumeBox() { Size = new Vertex(reader.Float(), reader.Float(), reader.Float()), Position = new Vertex(reader.Float(), reader.Float(), reader.Float()), Rotation = new Vertex(reader.Float(), reader.Float(), reader.Float()), Flag = version >= 1.3 ? reader.Int32() : 0, }); } } # # Mesh structure # public Mesh(IBinaryReader reader, double version) { int count; if (version >= 2.2) { Name = reader.String(reader.Int32()); ParentName = reader.String(reader.Int32()); } else { Name = reader.String(40, '\0'); ParentName = reader.String(40, '\0'); } if (version >= 2.3) { count = reader.Int32(); for (int i = 0; i < count; i++) { Textures.Add(reader.String(reader.Int32())); } // This is more so for backward compatibility than anything. The texture indices now refer to the texture list of the mesh directly. for (int i = 0; i < count; i++) { _textureIndexes.Add(i); } } else { count = reader.Int32(); for (int i = 0; i < count; i++) { _textureIndexes.Add(reader.Int32()); } } // The TransformationMatrix is 3x3 instead of 4x4 like everything else in the universe. TransformationMatrix = new Matrix3( reader.Float(), reader.Float(), reader.Float(), reader.Float(), reader.Float(), reader.Float(), reader.Float(), reader.Float(), reader.Float()); if (version >= 2.2) { // In 2.2, the transformations are already applied to the mesh, or calculated from the animation key frames. None of these properties are used anymore. Offset = new Vertex(0, 0, 0); Position = new Vertex(reader); RotationAngle = 0; RotationAxis = new Vertex(0, 0, 0); Scale = new Vertex(1, 1, 1); } else { // The Offset is the translation vector for the mesh. translated > scaled > rotated >TransformationMatrix. Offset = new Vertex(reader.Float(), reader.Float(), reader.Float()); // Position is the distance between the mesh and its parent. Position = new Vertex(reader.Float(), reader.Float(), reader.Float()); RotationAngle = reader.Float(); RotationAxis = new Vertex(reader.Float(), reader.Float(), reader.Float()); Scale = new Vertex(reader.Float(), reader.Float(), reader.Float()); } count = reader.Int32(); for (int i = 0; i < count; i++) { _vertices.Add(new Vertex(reader.Float(), reader.Float(), reader.Float())); } count = reader.Int32(); for (int i = 0; i < count; i++) { _tvertices.Add(new TextureVertex { Color = version >= 1.2 ? reader.UInt32() : 0xFFFFFFFF, U = reader.Float(), V = reader.Float() }); } count = reader.Int32(); // A face has changed a little in the new version. The SmoothGroup isn't only bound to the face itself, but can be bound to the vertex itself instead. for (int i = 0; i < count; i++) { Face face = new Face(); int len = -1; if (version >= 2.2) { len = reader.Int32(); } face.VertexIds = reader.ArrayUInt16(3); face.TextureVertexIds = reader.ArrayUInt16(3); face.TextureId = reader.UInt16(); face.Padding = reader.UInt16(); face.TwoSide = reader.Int32(); if (version >= 1.2) { face.SmoothGroup[0] = face.SmoothGroup[1] = face.SmoothGroup[2] = reader.Int32(); if (len > 24) { // It is unsure if this smooth group is applied to [2] or not if the length is 28. Hard to confirm. face.SmoothGroup[1] = reader.Int32(); } if (len > 28) { face.SmoothGroup[2] = reader.Int32(); } } _faces.Add(face); } // This was weirdly predicted to be in model version 1.6... which never existed? Either way, it is safe to set it as >= 1.6 if (version >= 1.6) { count = reader.Int32(); for (int i = 0; i < count; i++) { _scaleKeyFrames.Add(new ScaleKeyFrame { Frame = reader.Int32(), Sx = reader.Float(), Sy = reader.Float(), Sz = reader.Float(), Data = reader.Float() // Useless, has in impact in-game }); } } count = reader.Int32(); for (int i = 0; i < count; i++) { _rotFrames.Add(new RotKeyFrame { Frame = reader.Int32(), // Qx, Qy, Qz, Qw Quaternion = new TkQuaternion(reader.Float(), reader.Float(), reader.Float(), reader.Float()) }); } if (version >= 2.2) { count = reader.Int32(); for (int i = 0; i < count; i++) { _posKeyFrames.Add(new PosKeyFrame { Frame = reader.Int32(), X = reader.Float(), Y = reader.Float(), Z = reader.Float(), Data = reader.Int32() // Useless, has in impact in-game }); } } // Texture animations, look at "Textures" above for more information if (version >= 2.3) { count = reader.Int32(); for (int i = 0; i < count; i++) { int textureId = reader.Int32(); int amountTextureAnimations = reader.Int32(); for (int j = 0; j < amountTextureAnimations; j++) { int type = reader.Int32(); int amountFrames = reader.Int32(); for (int k = 0; k < amountFrames; k++) { _textureKeyFrameGroup.AddTextureKeyFrame(textureId, type, new TextureKeyFrame { Frame = reader.Int32(), Offset = reader.Float() }); } } } } } I'm also sharing the program I used to test the RSM2 files. It's a bit messy, but it does the job and might help someone. This testing program no longer has any purpose to me as it's been merged into GRF Editor already. https://github.com/Tokeiburu/RSM2/tree/master/Rsm2 The provided model is the following (it contains all the new features of RSM2): The chain on the right as well as the lights use these new texture animations. The red ball uses the translation key frames. This test project can read any RSM or RSM2 file as well as save them (you can edit RSM/RSM2 models via source). Changing the header version to change the output file will cause issues depending on which version you go from and to. With that said, have fun...! One day I'll make GRF Editor sources public again, one day.
    13 points
  5. Need the latest kRO Install folder for your private server? Look no further! ----> Download <---- Latest: 2020-01-24 Installation: Official kRO Updated: 06/04/2021 Download Link: http://bit.ly/latestkro Package contains RSU RO Patcher Lite for kRO and kRO RE by [Ai4rei] This package is maintained by [Akkarin] This ZIP archive is 3.50GB in size and includes all BGMs plus the latest RSU ([2021-02-19] Release 4.0.0.1213) Simply download, extract, play! A fan of this topic? Hit the rep button
    12 points
  6. Hello and Good Day guys! It's nice to be back in the world of mapping! Here is a new look for Prontera! Check the in-game screenshot here, Hope you like it guys.
    12 points
  7. 4CrAM - 4th Class rAthena Mod Welcome to the topic page for 4CrAM, a project that adds fully working support for 4th jobs (and other future trait era jobs) and all the systems that comes with them. This mod was started back in July of 2020 and slowly revealed to people a few months later as development progressed. The project's development is split into multiple phases with each one focusing on the development of certain things and as of the time of typing this 2 of the 3 phases are completed. With 6 of the 12 jobs completed I feel its time to fully reveal the project here to the public. So what are the 4th jobs and what do they offer? 4th jobs are a new era of jobs I like to call "Trait Era" jobs. These jobs are very unique compared to other jobs due to a number of new game mechanics that comes with them call the trait system and the AP system. To the right side you will see a lower half of the stats window with a bunch of new stats related info. This is the traits system and only trait era jobs can access it. When a player changes into a trait era job and levels above 200, they get trait or T.Status Points which can be spent on one of the 6 T.Stats which will increases the T.Sub-Stats and even affect regular sub-stats. This system adds a whole new layer to a character's build, allowing for a bigger variety of builds. T.Stats are also very powerful as the T.Sub-Stats they affect have a big impact on a character's performance. The other thing to the top left is a 3rd gauge that appears in the UI once you become one of these trait era jobs. This is the AP (Action Point) system. AP can be gained by using certain skills and is used as a requirement for casting some of the most powerful skills. You can even see a white bar below the character on screen right below the HP/SP bars. Finally, (not shown here as its not coded in yet) trait era jobs have access to new level 5 weapons and level 2 armors which offer more attack and defense increase per refine and also another new system called the ranking system which adds a rank mark on the equip, making the gains from refinements much higher. With all these new mechanics its clear that these jobs are much more powerful and more fun to play then the previous jobs and brings a new era to the world of RO. Im excited to finally reveal the project to the public and bring this new era to the private server community. However, unlike my previous project 3CeAM, 4CrAM is a closed source project that can only be accessed by purchasing access permissions to the repository's im hosting the code on. To keep it short, im treating this project as my job and a source of income due to these difficult times (Fuck you COVID). But on the bright side it means im able to spend most of my time working on this project instead of working at some place outside my home and having little time for the project. If your interested you can check out the project's facebook page and join my discord server where you can chat with the community, see screenshots of the progress, get announcements, and also get more info on the project and its pricing. 4CrAM Facebook Page https://www.facebook.com/4CrAM 4CrAM Discord Server https://discord.gg/NSm44Wp
    12 points
  8. Happy Thanksgiving everyone. Since I couldn't get the turkey, I thought I would bring this instead. Without further ado, Let me introduce... WARP (Windows Application Revamp Package) Why this name? Because I like using acronyms and this name sounded apt. Plus it's the function & features that matter more. And no, I am not gonna change the name. Why not just fix up NEMO? The codebase for NEMO is pretty much ancient at this point. So rather than fixing it up, I decided to go the route of creating it fresh from scratch. The end result is a far superior product. OK, but what if you end up AFRO (Away From RO)again? Well, I can't promise that I will be around forever. However, this time around, I am releasing the source code for the tool as well. So, exactly what has changed? Well, quite a few things. Let's start off with how the GUI looks now. As you can see, the GUI is much more modern and aesthetically pleasing thanks to @Haziel & @Hadrias . The package comes with 3 tools - Console version (for simple patching), Main GUI, and Tester GUI (for batch testing). A big salute to @4144 for keeping NEMO alive while I was AFRO . Ok, jokes aside, I discussed with him about the changes he made and I have incorporated almost all of them but with some differences. Language & Styles are now on the bottom as you can see. All the remaining menus have now been shifted to drawers (moving side panels). To reveal them you can either swipe from the respective edge or click the button at the top. The right side drawer houses all the Extensions (Used to be called 'Addons' in NEMO). They are now loaded independently of the client. This avoids unnecessary redefinitions and now you can also use Extensions for activities that don't need a loaded client. All the common functions have been added to the 'Quick Actions' group and all the remaining ones are in the left drawer, which is not many. If you have suggestions for more features let me know. Moving on to the Back end (This is of no use to the regular user. So you can skip this part if you want) It was high time for us to have a proper input file format. Enter YAML. Love it or hate it but it's here to stay. Frankly, I like it more than libconfig and INI. You would be seeing YAML being used for almost every file in WARP. This includes input files for Patches & Extensions, Files defining those two, Session files, etc. Writing patches is far more flexible now. Say goodbye to PTYPE_HEX and \xAB. Now we can do wild card searches with the actual wild cards inside hex codes. Of course, we still need to have some well-defined characters for that. Currently, we have 2 forms of wildcards - Nibble wise - For e.g. => A? , ?? , ?3 Bit wise - For e.g. => [1.0...01] If you have any suggestions about it let me know. Speaking of writing hex code, I have provided functions looking almost identical to Assembly instructions for generating their equivalent hex code. This helps in making the hex code more human-readable and adds a little more flexibility. User inputs have a few more types and little more flexibility in specifying constraints now. Scripts have proper segregation now. Please follow them when adding your own. Only the scripts inside the 'Init' folder gets reloaded each time the client is loaded. This avoids unnecessary reloads. exe has now become 'Exe'. But in addition to this, you get 2 more objects - System (for filesystem activities) & Warp (whatever is outside the scope of the other two) Many of the functions used for retrieving some constant information in the 'Exe' have become properties now. For e.g. PEoffset, ImageBase, BuildDate, etc. During patching, the Diff section is only added if you have inserted any code using one of the 'Add' functions. Also, the Diff section now grows dynamically as per requirement (in increments of Section Alignment of course). In addition to the Patched Exe, The tool also generates an (Extra Patch Info) file with the suffix '.epi'. It holds just enough info for the tool to recognize existing patches in an exe from a previous patch session. So how is it useful? Let's say you have a patched client and its EPI file. But you don't have the original anymore. Now you can remove 1 or 2 patches and keep the rest OR even restore the original from the patched exe. Last, but not least, I am providing documentation about everything including the API. But bear with me for a bit, as I am still working on the documentation part. I probably forgot more points to add here, but I think this pretty much covers the important stuff. Anyways you can read in detail at the Wiki Is it ready to be used now? The tool is definitely ready. I have added most of the patches but not all just yet. But I was not able to test all the patches in-game. So please don't attack me if something failed. I would appreciate a Bug Request in Github instead. You can also come to Discord as well, if you prefer that. Also note, that some patches are still failing for new clients, and some failing for old ones. However, I saw the same behavior in NEMO, so that would be part of the next stage of operations - Updating Patch scripts. So, where do I get it from? https://github.com/Neo-Mind/WARP How to use it? There is a User Guide in the git repo (best viewed from Github itself). Everyone is used to NEMO by now, so it shouldn't be difficult to use this even without the guide. Plus the Github wiki is pretty detailed. Any last words before we close this? Just like in the case of NEMO, my intention with WARP is to create a common tool for patching without being restricted to RO or which OS you use it in. For this reason, you will be seeing multiple branches in the Git repo. If you are planning to use WARP for patching some other application, Create a branch using the 'win32' branch as a starting point That's about it from me for now.
    12 points
  9. Version 1.0.3

    898 downloads

    Mystic Project is about to open its last opus. For the occasion, Mystic Project has decided to make a gift to the community of rAthena and release one of its contents ! We've chosen the Battleground Extended, a memorable feature created by the eAmod and adapted for the new version of rAthena 2020. What are Battleground Extended ? They are an upgrade of the official Battleground made by the eAmod years ago and enhanced overtime. Battleground guide Name Description Flavius Same as official. The Goal is to destroy each's crystal. Flavius Capture The Flag The objective of the Flavius Battle CTF is to score 3 points before your enemy, by capture their Flag. To capture a Flag you need to take the enemy flag, and bring it to your base flag. If your base flag is captured too, you need to kill the flag carrier and take the flag back to your base. Flavius Death Match Each team has a certain number, Kill all the enemy players to let their Team without points. Protect your army. Flavius Stone Control Take the Stones in the middle of the battlefield and put in on your base, in the Stone Points. Each Stone will give points to your team. First team reach 99 points wins the game. Protect your stones from to be captured by the enemy. Tierra Eye of Storm There are two bases, North and South which teams can capture by holding position on the Base more than the other team. Each base will give you points each 5 seconds of Domination. If your Team control both bases the amount of points increases. To get additional points, in the middle there is a Flag spawn, capture it and put it on any of your team Bases. The first Team reach 99 points wins the match. Tierra Bossnia Attack the enemy base and destroy each MVP Guardian. To do damage to the guardian your team must capture the Balance Flag in the middle base. Each team have 5 guardian to be protected or killed. Tierra Domination There are three bases, North, Center and South which teams can capture by holding position on the Base more than the other team. Each base will give you points each 5 seconds of Domination. The first Team reach 99 points wins the match. Krieger Von Midgard (KVM) Same as official, regular PVP. Double Inferno There are 2 teams in the battlefield, your team and the opposite enemies. Kill the enemy players, collect the skulls and bring them to the Sacrifice Totem to win points. You can collect your own team skulls and bring then to your Sacrifice Totem to avoid other teams to score but it won't count as points. If you get killed all your skulls will be drop to the floor, including your own skull. First Team to get 80 points wins the battle. Conquest If you are Attacking, destroy the enemy defenses and it's Flag. If you are Defending, protect your castle defenses and the Flag. Rush Fight to capture the Castle and organize your team to defend it. If you fail on the first capture, kill the defender and take it for your team. Poring Ball It is a soccer game, a poring (the ball) will be in the middle of the field. The match lasts 5min. The team that has the most goals win the game. Super Bomberman The classic game specially made in Ragnarok Online. The goal is to defeat the enemies by putting bombs that will explode on them. It is a 2vs2 version of the game. Peco Peco Racer Coming soon... ( Mario Kart - RO version : Preview Alpha Version Video ) New Battleground Queue System Battleground Commands @joinbg will warp you only to the battleground room. (Use interface UI Battleground to join any running BG or create one) @leavebg will warp you out of the the current battleground you're in. @listenbg display or not the battleground explanations. @order is only for the leader, an huge announce will be displayed to the team. @reportafk is only for the leader, expulsing someone who is AFK. @bginfo will display all curent running BGs + amount of players + scores for each team and remaining time of the BG Battleground Skills @bgskill is used by the leader. I left it there as a memory but you better use the guild interface alt + g -> guild skill tree The leader can use the following skills: - Emergency Recall: Warp everyone from the team to the leader. - Battle Orders: All guild members visible on the guild leader screen will receive +5 STR, DEX, INT. (Now having a status icon on the right) - Regeneration: All guild members visible on the guild leader screen will increase their HP and SP regen rate. (Now having a status icon on the right) - Restore: All guild members visible on the guild leader screen will have their HP and SP restored to 90% of the respective maximum. - Chargeshout Flag: The leader will summon a guild flag. - Chargeshout Beating: Anyone in the guild can use this skill, it will warp to the guild flag IF you are on the same map as the flag. - Emergency Move: All guild members visible on the guild leader screen will receive the effect of speed potion, increasing walking speed by 25%. Kill Count Each person killed on a battlefield will be counted in your guild information. This is like a rank. In bg_common.txt, you will find this. If you already use OnPCKillEvent, I recommend you to remove this code and add it to yours. Red / Blue Teams Upon your arrival on the battlefield, you are going to see yourself in a clan (alt + g) and a guild (ctrl + g). Blue Team : Red Team : Each team-mate will have this emblem by their character's name. Enemies will be displaying the opposite emblem. Some battlefields will change your cloth dye as well for the attributed color but don't worry, you will get yours back as soon as the game is over. You can communicate with your team through the guild chat. When you leave the battlefield, the clan will be removed and you will be back in your actual guild. Battleground Happy Hours Battleground happy hours happen everyday from 4pm to 8pm during which, rewards obtained are increased by 60%. (Configurable in npc/battleground/bg_common.txt) Battleground Rewards Telma/Erundek NPCs from the official battleground are there to exchange Consumables / Stuff. However, some of you rather customize the rewards. It's up to you to remove Telma/Erundek. If you want to customize Rewards, here is a frame (located in bg_common.txt) made to buy stuff directly with badges. Poring Ball Youtube Video Demonstration : Ragnarok Online - DaRO : BattleGround Extended + - YouTube The original Poring Ball Map was created by us 14 years ago. (On the left). At the time, we had poor experience in mapping so my apologies if you don't find it attractive. However, you can always purchase the beautiful rework done by Olrox (on the right): https://olroxgraphics.com/index.php?/store/product/107-soccer-stadium/ Depending on which map you will pick, you need to configurate the Poring Ball. I assume you already have Olrox's map so by default, it is this configuration. If you want the free map that is included in this pack, you need to comment /* */ Olrox Poring Ball Map and remove the comment of Grenat Poring Ball Map (See orange sign) Bomberman Video Demonstration : Super Bomberman Ragnarok Online YouTube Video I've read a lot of times people asking about it ! We are releasing the new Bomberman Battleground Version with 3 bomberman maps (two of them are made by us) In bg_bomberman.txt, you will find this code. Make sure to remove it and add it to your OnPCStatCalcEvent, otherwise just leave it there. Some newer rAthena version doesn't have OnPCStatCalcEvent anymore, you may need to reinstall it. Installation : In this package, you will find : - BattlegroundExtended.diff : You will need to apply this patch. (cmd -> cd rathena -> git apply BattlegroundExtended.diff ) It has been created in 2020 and work with the latest rAthena. (Possibly working on previous version from 2018+). - NPC folder: I strongly recommend to delete all BG NPCs and only install the ones that are in this folder. It is compatible with the new BG Queue Systeme. Please review Poring Ball.txt to configurate your poring ball as well as bg_common for the happy hour rate. - DB: I did put items in txt and yml files since I don't know which version you guys are using. DO NOT copy paste in your db folder. Only take what's inside each files. - Client: Contains items/maps/texture/files/lua (for the new BG queue system)/bomberman music etc... Extract the contents inside your RO client folder. This patch modifies a lot of files, you may need to install the diff manually depending on your rAthena version. Once installed, please recompile your map_cache with the client data installed in the directory/grf the server reads to compile it. Configuration : Your server might be different than ours. This is why, it is important to configurate well the system. conf/battle/battleground.conf -> Search for battleground eAmod and configure them. db/battleground.xml -> "Color" represents the clothes palette given upon arrival on the battlefield. The player's Palette will come back to the original one when the BG is over. If you don't want players to have different cloth color, just put 0 or do not put anything at all. In our server, Color : 6 is blue, and 22 is red. Therefore, this is our configuration. I let you configure yours. Additional New Script Commands : * getnpcinfo <type>{,<char_id>} type: NPC_X: X, NPC_Y: Y * setporingball; (When activated, it would be like an OnClickedCell, almost ;), it calls a script for the poring ball (Or other things if you want to add things there). * getporingballx() / getporingbally(); (Get coordination of a clicked cell) * removeporingball; (Remove poring ball mode (Clickable cell calling a script) * getunitdir <unit_id/account_id>; (Get direction the unit is looking) * ispcsit <account_id> (Get information if a pc is sit or not) * unitpush <unit_id/account_id>,<dir>,<cells>; (Push (knockback) a specific target in a specific direction) * areaeffect( effect id, x, y); Any Questions ? You can contact me on Discord: Grenat50#5220 for support regarding the installation. Support post : Release: Battleground Extended 2020 ! With Bomberman/Poring Ball - Source Releases - rAthena Team Mystic Project.
    Free
    12 points
  10. Here are the ruins of a big, modern city. It's not easy to make tall buildings in RO, but I think it came out nicely. Please reply if you'd like to see more map showcases in the future.
    11 points
  11. First of all, I apologize for the horrible English. The panel's official language is in PT-BR, if someone wants to translate they can send me PM or wait until I do a translation. ======= Hello guys, I present to you a panel that I developed in open source totally free for the community, developed in Laravel 8. Project Link: https://github.com/rscodexx/ragpainel Demo: https://rscode.com.br/ragpainel/ Functions [] General [] View users online. [] View accounts total. [] View chars total. [] View guilds total [] Top 3 players (PVP, WOE and MVP). [] User [] Register Account [] Login Account [] Change account (photo, password, email and birthdate). [] View last ip [] View days vip [] View cashpoints [] Forgot password [] Forgot login [] Admin [] View Logs [] Manager Credits [] Manager Vip [] Manager Staff [] Manager Bans [] Manager Tickets [] Configs Panel [] Rankings [] WOE [] MVPs [] Zenys [] PVP [] Events [] Database [] View Itens [] View Monsters [] Support [] NewTicket [] ViewTickets [] Donate [] To do Donate [] Consult Donates Layout Mobile Desktop Technologies The following tools were used in the construction of the project: Minimum Requirements PHP in version 7.3 or higher BCMath PHP Active Extension CtypePHP Active Extension Fileinfo PHP Active Extension JSONPHP Active Extension Mbstring PHP Active Extension OpenSSL PHP Active Extension PDO PHP Active Extension TokenizerPHP Active Extension XMLPHP Active Extension Install on Windows. Prerequisites: Before you begin, you will need to have the following tools installed on your machine: GIT, Apache, Mysql (Or any other type of database), Composer If you do not know how to install and configure a server environment, you can use tools that are all ready as: Xampp Wamp In addition, it is good to have an editor to work with the code as VSCode Running the Backend (server) # Clone project $ git clone https://github.com/rscodexx/ragpainel.git # Or download the project directly from the repository: https://github.com/rscodexx/ragpainel # Rename the file .env-example(is in the root folder of the project) to .env and config: DB_CONNECTION=mysql # DB Type DB_HOST=127.0.0.1 # DB Ip DB_PORT=3306 # DB Port DB_DATABASE=ragpainel DB Name DB_USERNAME=ragnarok DB User Name DB_PASSWORD=ragnarok DB User Password TIMEZONE=America/Sao_Paulo # Time Zone LOCALE=pt-BR # Language(only the one supported for now). FALLBACK_LOCALE=pt-BR # Language for erros(only the one supported for now) # Access the project folder on your terminal $ cd ragpainel # After entering the project directory, install the composer and its dependencies. $ composer install # Wait for the installation # Install the panel tables, still with terminal open in the project directory use: $ php artisan migrate # There, your server is installed and configured. Running the web application (Frontend) # Start your server, to access the panel you need to access the public folder, an example below: $ http://localhost/ragpainel/public # You can also run the application without the need for an apache server configured through php artisan. # Access the project folder in your terminal $ cd ragpainel # Type the command: $ php artisan serve # Just click on the generated link to start the panel. # Use the command CTRL + C to shut down the server. How to contribute to the project? Post all the bugs and errors found here: https://github.com/rscodexx/ragpainel/issues If you want, you can make a DONATION
    11 points
  12. Hi, I'm Tio Akima. I'm drawing some custom heads, with beards, tattoos, symbols, etc ... This aged appearance contributes to a medieval environment ... What do you think? Any idea? @EDIT: I finished these funny heads hahahaha xD finally There are 8 new Viking heads VIDEO:
    10 points
  13. NPC and MVP for Ragnarok Online RE4 Merchant (npc) and Nemesis (mvp) from Resident Evil "Hello Strange" hahahha .. well ... it was funny
    10 points
  14. View File Battleground Extended 2020 ! With Bomberman/Poring Ball Mystic Project is about to open its last opus. For the occasion, Mystic Project has decided to make a gift to the community of rAthena and release one of its contents ! We've chosen the Battleground Extended, a memorable feature created by the eAmod and adapted for the new version of rAthena 2020. What are Battleground Extended ? They are an upgrade of the official Battleground made by the eAmod years ago and enhanced overtime. Battleground guide Name Description Flavius Same as official. The Goal is to destroy each's crystal. Flavius Capture The Flag The objective of the Flavius Battle CTF is to score 3 points before your enemy, by capture their Flag. To capture a Flag you need to take the enemy flag, and bring it to your base flag. If your base flag is captured too, you need to kill the flag carrier and take the flag back to your base. Flavius Death Match Each team has a certain number, Kill all the enemy players to let their Team without points. Protect your army. Flavius Stone Control Take the Stones in the middle of the battlefield and put in on your base, in the Stone Points. Each Stone will give points to your team. First team reach 99 points wins the game. Protect your stones from to be captured by the enemy. Tierra Eye of Storm There are two bases, North and South which teams can capture by holding position on the Base more than the other team. Each base will give you points each 5 seconds of Domination. If your Team control both bases the amount of points increases. To get additional points, in the middle there is a Flag spawn, capture it and put it on any of your team Bases. The first Team reach 99 points wins the match. Tierra Bossnia Attack the enemy base and destroy each MVP Guardian. To do damage to the guardian your team must capture the Balance Flag in the middle base. Each team have 5 guardian to be protected or killed. Tierra Domination There are three bases, North, Center and South which teams can capture by holding position on the Base more than the other team. Each base will give you points each 5 seconds of Domination. The first Team reach 99 points wins the match. Krieger Von Midgard (KVM) Same as official, regular PVP. Double Inferno There are 2 teams in the battlefield, your team and the opposite enemies. Kill the enemy players, collect the skulls and bring them to the Sacrifice Totem to win points. You can collect your own team skulls and bring then to your Sacrifice Totem to avoid other teams to score but it won't count as points. If you get killed all your skulls will be drop to the floor, including your own skull. First Team to get 80 points wins the battle. Conquest If you are Attacking, destroy the enemy defenses and it's Flag. If you are Defending, protect your castle defenses and the Flag. Rush Fight to capture the Castle and organize your team to defend it. If you fail on the first capture, kill the defender and take it for your team. Poring Ball It is a soccer game, a poring (the ball) will be in the middle of the field. The match lasts 5min. The team that has the most goals win the game. Super Bomberman The classic game specially made in Ragnarok Online. The goal is to defeat the enemies by putting bombs that will explode on them. It is a 2vs2 version of the game. Peco Peco Racer Coming soon... ( Mario Kart - RO version : Preview Alpha Version Video ) New Battleground Queue System Battleground Commands @joinbg will warp you only to the battleground room. (Use interface UI Battleground to join any running BG or create one) @leavebg will warp you out of the the current battleground you're in. @listenbg display or not the battleground explanations. @order is only for the leader, an huge announce will be displayed to the team. @reportafk is only for the leader, expulsing someone who is AFK. @bginfo will display all curent running BGs + amount of players + scores for each team and remaining time of the BG Battleground Skills @bgskill is used by the leader. I left it there as a memory but you better use the guild interface alt + g -> guild skill tree The leader can use the following skills: - Emergency Recall: Warp everyone from the team to the leader. - Battle Orders: All guild members visible on the guild leader screen will receive +5 STR, DEX, INT. (Now having a status icon on the right) - Regeneration: All guild members visible on the guild leader screen will increase their HP and SP regen rate. (Now having a status icon on the right) - Restore: All guild members visible on the guild leader screen will have their HP and SP restored to 90% of the respective maximum. - Chargeshout Flag: The leader will summon a guild flag. - Chargeshout Beating: Anyone in the guild can use this skill, it will warp to the guild flag IF you are on the same map as the flag. - Emergency Move: All guild members visible on the guild leader screen will receive the effect of speed potion, increasing walking speed by 25%. Kill Count Each person killed on a battlefield will be counted in your guild information. This is like a rank. In bg_common.txt, you will find this. If you already use OnPCKillEvent, I recommend you to remove this code and add it to yours. Red / Blue Teams Upon your arrival on the battlefield, you are going to see yourself in a clan (alt + g) and a guild (ctrl + g). Blue Team : Red Team : Each team-mate will have this emblem by their character's name. Enemies will be displaying the opposite emblem. Some battlefields will change your cloth dye as well for the attributed color but don't worry, you will get yours back as soon as the game is over. You can communicate with your team through the guild chat. When you leave the battlefield, the clan will be removed and you will be back in your actual guild. Battleground Happy Hours Battleground happy hours happen everyday from 4pm to 8pm during which, rewards obtained are increased by 60%. (Configurable in npc/battleground/bg_common.txt) Battleground Rewards Telma/Erundek NPCs from the official battleground are there to exchange Consumables / Stuff. However, some of you rather customize the rewards. It's up to you to remove Telma/Erundek. If you want to customize Rewards, here is a frame (located in bg_common.txt) made to buy stuff directly with badges. Poring Ball Youtube Video Demonstration : Ragnarok Online - DaRO : BattleGround Extended + - YouTube The original Poring Ball Map was created by us 14 years ago. (On the left). At the time, we had poor experience in mapping so my apologies if you don't find it attractive. However, you can always purchase the beautiful rework done by Olrox (on the right): https://olroxgraphics.com/index.php?/store/product/107-soccer-stadium/ Depending on which map you will pick, you need to configurate the Poring Ball. I assume you already have Olrox's map so by default, it is this configuration. If you want the free map that is included in this pack, you need to comment /* */ Olrox Poring Ball Map and remove the comment of Grenat Poring Ball Map (See orange sign) Bomberman Video Demonstration : Super Bomberman Ragnarok Online YouTube Video I've read a lot of times people asking about it ! We are releasing the new Bomberman Battleground Version with 3 bomberman maps (two of them are made by us) In bg_bomberman.txt, you will find this code. Make sure to remove it and add it to your OnPCStatCalcEvent, otherwise just leave it there. Some newer rAthena version doesn't have OnPCStatCalcEvent anymore, you may need to reinstall it. Installation : In this package, you will find : - BattlegroundExtended.diff : You will need to apply this patch. (cmd -> cd rathena -> git apply BattlegroundExtended.diff ) It has been created in 2020 and work with the latest rAthena. (Possibly working on previous version from 2018+). - NPC folder: I strongly recommend to delete all BG NPCs and only install the ones that are in this folder. It is compatible with the new BG Queue Systeme. Please review Poring Ball.txt to configurate your poring ball as well as bg_common for the happy hour rate. - DB: I did put items in txt and yml files since I don't know which version you guys are using. DO NOT copy paste in your db folder. Only take what's inside each files. - Client: Contains items/maps/texture/files/lua (for the new BG queue system)/bomberman music etc... Extract the contents inside your RO client folder. This patch modifies a lot of files, you may need to install the diff manually depending on your rAthena version. Once installed, please recompile your map_cache with the client data installed in the directory/grf the server reads to compile it. Configuration : Your server might be different than ours. This is why, it is important to configurate well the system. conf/battle/battleground.conf -> Search for battleground eAmod and configure them. db/battleground.xml -> "Color" represents the clothes palette given upon arrival on the battlefield. The player's Palette will come back to the original one when the BG is over. If you don't want players to have different cloth color, just put 0 or do not put anything at all. In our server, Color : 6 is blue, and 22 is red. Therefore, this is our configuration. I let you configure yours. Additional New Script Commands : * getnpcinfo <type>{,<char_id>} type: NPC_X: X, NPC_Y: Y * setporingball; (When activated, it would be like an OnClickedCell, almost ;), it calls a script for the poring ball (Or other things if you want to add things there). * getporingballx() / getporingbally(); (Get coordination of a clicked cell) * removeporingball; (Remove poring ball mode (Clickable cell calling a script) * getunitdir <unit_id/account_id>; (Get direction the unit is looking) * ispcsit <account_id> (Get information if a pc is sit or not) * unitpush <unit_id/account_id>,<dir>,<cells>; (Push (knockback) a specific target in a specific direction) * areaeffect( effect id, x, y); Any Questions ? You can contact me on Discord: Grenat50#5220 for support regarding the installation. Support post : Release: Battleground Extended 2020 ! With Bomberman/Poring Ball - Source Releases - rAthena Team Mystic Project. Submitter grenat50 Submitted 02/03/2021 Category Source Modifications Video Content Author Grenat  
    9 points
  15. Version 1.0.0

    602 downloads

    Experiment your First Bootstrap Flux. Design by @Mihael Flux Integrated Themes. Some of New rA Devs msg me to share the themes in Flux Integrated, Here you go I hope you like it. Thank you very much rAthena Developers. Installation: Step 1: upload the Addon Folder on your flux name skyzone.zip make sure it is extracted. Step 2: upload the themes on your themes name is purple_themes. Step 3: open the applocation.php that located on your config Folder Step 4: find 'ThemeName' => array('default', 'bootstrap'), and add the purple themes it is look like bellow + 'ThemeName' => array('purple_themes', 'default', 'bootstrap'), NOTE: - do not remove the default to override all pages on the default flux. - this is 100% free release. do not sell. - Orange Themes by Mihael will be next upload.
    Free
    9 points
  16. Hello, everyone. I came back to show you some more of my work. The works of these examples were inspired by anime and requests by some people. -- Non-approved Paid Service --
    8 points
  17. I always dreamed of playing a Ragnarok Online in High Definition, well .. Gravity unfortunately never bothered to make a version like this (probably because they want to keep the pixelated style until the end of RO) but different from Gravity, a long time ago necessary to recreate all ragnarok textures for HD and here are the results. List of what I improved: • Sprites: Monsters Homunculus Heads Classes / mounts Npcs Male and female items (equipable look and everything else) • Texture: All map textures. All bmp Cards (mob or mvp cards) Collections folder Pets Cardbmp folder Mini maps Illust World map. ---------- Prontera: Izlude: Geffen: Morroc: I don't want to make the post that big, so I'll just leave these, but the entire client 2020 is in HD. I really liked the result, I will soon work on a FULL HD. Thanks for your attention!
    8 points
  18. View File Caça Toupeiras / Whack-A-Mole [PT-BR]: O script funciona como instância, é um jogo onde o player pode iniciar uma partida sempre que quiser, quanto mais toupeiras ele acertar mais pontos ele acumula, a partida termina quando ele somar o máximo de erros que pode cometer (configurável), o player precisa acertar um mínimo de toupeiras por ciclo, conforme os ciclos aumentam os acertos mínimos também (limitando-se ao máximo de 3), acertar o cachorro contará como erro, os pontos não são acumulativos ou seja, o player entrará par ao rank com o primeiro char que ele fez a partida e será contado por conta, quando ele atingir um valor máximo de pontos na partida que supera o do seu rank anterior ele atualiza, o rank reseta todo o domingo as 12h e converte os pontos para usar na loja da toupeira. Cred: Tio Akima (criador do mapa) Cred: Frost (guia add custom npc) [ENG]: The script works as an instance, it is a game where the player can start a game whenever he wants, the more moles he hits the more points he accumulates, the game ends when he adds up the maximum mistakes he can make (configurable), the player needs hitting a minimum of moles per cycle, as the cycles increase the minimum hits as well (limited to a maximum of 3), hitting the dog will count as an error, the points are not cumulative ie the player will enter the rank with the first char he made the match and will be counted on account, when he reaches a maximum point value in the match that exceeds that of his previous rank he updates, the rank resets every Sunday at 12pm and converts the points to use in the mole shop . NOTE: Perhaps the translation was not the best, so you can send a suggestion that I will be correcting. Cred: Tio Akima (map creator) Cred: Frost (guide add custom npc) Submitter Hyroshima Submitted 03/01/2021 Category Games, Events, Quests Video https://youtu.be/A_Y_9LxSWt4 Content Author Hyroshima  
    8 points
  19. Hello everyone. Today i would like to share with you Yggdarsil bot, a discord bot that was created with the launch of my private server for simple verification, and has grown ever since to provide a fun and interactive game/discord experience. Features and commands Multilanguage support Account verification (Link your in-game account to your discord account) Mob/Item lookup In-game rewards Server donation Vendors Search Auction System And that's mostly all the available commands Discord Events/Minigames Yggdrasil Bot can also run several different minigames on discord, and reward the event winners in-game directly. Random Drops Trivia Event Disguise Event Boss Fights And that'd be all folks. Any feedback is appreciated
    8 points
  20. Hello everyone, Updated changes on the platform from below spoilers: Changelog v1.0.0 - Date: 01/14/2021 Changelog v1.0.1 - Date: 01/16/2021 Details: PHP Framework Laravel 8.x. HTML5, Javascript with jQuery, CSS3 for theme templating. Bootstrap 5 Framework Responsive & Mobile Friendly PHP 7.4 required (and other Laravel dependencies). Clean Design SEO Friendly Feature Plan - Player Dashboard: Account Feature (Register, Login, Forgot Password, Account Setting) Donate system (paypal and skrill ready) News & Events Ticket support system(WIP) GM Task List Item Shop Feature Plan - Admin Dashboard: Ban Module System (ban or unban from the platform) Manage Item Cash Shop (Fully working with lastest rathena item_cash_db table) CMS Latest Donation (You can see the amount and account who made the donation) Ticket Support System (WIP) Theme configuration (We are still debating if this should be a thing. since you just need a bit of html and css knowledge to edit front page). We are also open to suggestions and idea. We are not gonna abandon the project anytime soon and we would like to have people to test and make us fix backdoors that could appear to make the system more secure. As a matter of fact, we are developing our rathena renewal server in order to test this new platform!. Sorry for the spoiler if it's too big I'm not really used to forums now days.... Also sorry for any grammar mistakes. English is not really my first language Edit: Clic on this Discord Server to access our server. At the moment is just me and no body else, but I believe we can make a good community out of it! Edit #2 : All new updates about the platform will be posted only on discord. This is to prevent more text wall and some other issues it might bring. Edit #3 : Screen Previews are all within discord server.
    8 points
  21. Version 1.8.0

    38,910 downloads

    Hey everyone, This is a GRF tool I started to develop for my own personnal use, but I thought I'd share it since I've upgraded the UI. Its primary goal is to be easy to use while offering a wide variety of options and customizations. The software is quite stable and can handle large operations easily. How to install Download the zip archive provided from the download link at the bottom of this description or directly from there : http://www.mediafire.com/?aflylbhblrzpz0h Install the application with GRF Editor Installer.exe; if you are missing a .NET Framework you will be prompted to download it. Once you are done, you can start the program from the link on your desktop. Key features Overall speed is faster (or at least equal) than any GRF tool. Common operations : add, delete, merge, extract, preview, save. Undo and redo for any operation. It can open any GRF file. Clean and very interactive interface. Saving formats supported : 0x200, 0x103 and 0x102 (through the Settings page) and conversion to the Thor format. Instant filter and search options (example : "map .gat"). File association and context menus integration for .grf, .gpf, .rgz and .thor (through the Settings page). Can rebuild separated images into one file easily. Drag and drop (with the ALT key, can be modified in the Settings page). This is a big part of the software; most of the items can be moved around within the application itself or from/to Windows Explorer. Tools Sprite editor : a simple sprite editor with powerful features. Semi-transparent images can be added, you can easily change the order or replace images, etc. This tool can convert images in the wrong type by showing you multiple solutions (merging a new palette, dithering the image by using current palette, using the closest color, and a few more). Grf validation : allows you to validate a GRF with multiple settings. It can detect corrupted GRF entries, invalid sprites, empty files, non-GRF files, duplicate files and a lot more. Flat maps maker : generates flat maps from .gat and .rsw files. Useful to generate WoE maps or to fasten up the loading time. Patch maker : generates a GRF patch based on two different GRFs. Hash viewer : shows the hash code (both CRC32 and MD5) for files. Image converter : converts an image to any format requested (BMP, PNG, JPG, TGA). GrfCL : used to create batch files (.bat) which can automate tasks on GRF files. See the content in GrfCL.rar in the download for more information. This tool can be customized from the sources as well. Palette recolorer : creates new sprites by changing their colors (this tool is now deprecated). Client database editor : allows modifications of the database client files (txt and lua) with easy and simple tools. Work in progress. Grf encryption The encryption feature has been enabled again. It's similar to what it used to be and it has been tested on client versions ranging from 2012-08-01 to 2014-02-05. Some error messages will be displayed if necessary. If you have an issue, copy the error message (with the code, if there's one) and send me the client executable with the cps.dll file generated by GRF Editor. There shouldn't be compatibility issues anymore though! Thor files Thor files are patches used by Thor Patcher ( http://thor.aeomin.net/ ). Because of their similarity with the GRF file structure, they have been integrated within GRF Editor. The primary utility of this feature is that it allows you to add encrypted files to a Thor patch. All the other options can be achieved by using Thor Maker. You'll find the necessary steps below, but test your patches before sending them off to players (I've done a lot of testing on my end, but better be safe). If you're using SecureGRF, then make a new GRF, add the files and encrypt it. In GRF Editor, open the encrypted GRF you just made, use "Save as" and name the new file with a .thor extension. That's it, if you want to change the output directory, click on the root node of the project and select the tab "Container options". You can select the output mode and the GRF to merge the patch with. Simply save again if you change these properties. If you're using GRF Editor's encryption, then make a new Thor file (File > New > New Thor) and add the files you want to patch it with. Right-click on the files you want to encrypt and use Encryption > Encrypt. Technical stuff Requires .Net Framework 3.5 (SP1) Client Profile to run (3.5 or more will work as well). Automatically converts file name encoding to their proper values (you can change the encoding). Data virtualization is used as much as possible to preview files, meaning the files aren't completely loaded. Right-clicking an item will bring up the available options with that file. Preview file formats : txt, log, xml, lua, lub, bmp, png, tga, jpp, db, ebm, pal, gnd, rsw, gat, rsm, str, spr, act, imf, fna and wav. Services are "crash ready", meaning that you will be warned about a failed operation and no work will be lost (the application won't close and crash). It tries to continue operating even if it meets unsual conditions. Operations can be cancelled by clicking on the button near the progress bar. The warning level can be changed to avoid messages like "Please select a folder first." When prompted with an error, use Ctrl-C to copy the current dialog's content. Some screenshots! 1) Previewing an act file, while showing the search feature 2) Preview of a model file (rsm) 3) Preview of GrfCL with the MakeGrf command 4) Preview of maps 5) Preview of Grf validation 6) Search feature (press Ctrl-F or Ctrl-H to bring up within a text editor) Got a feedback? I'd gladly hear you out and fix issues you have with the program.
    Free
    8 points
  22. This is a project I started a week ago, including two maps and a bunch of models and textures. For the most part, the ground textures were made for another project a year or two ago, and all of the buildings and custom retextured models are things I made over the last several days. This is a remake/replacement for juperos_01 and juperos_02. I kept the idea of an ancient, high-tech civilization and used the Juperos/Schwarzvalt symbol in a few of the textures, but otherwise I did not intend to recreate the original maps accurately. I think they are kind of a pain in the ass to walk around in. The maps have a few exits that do not lead anywhere right now. I intend to make a replacement for the other parts of Juperos sometime in the new year, so you can consider this post "Part 1." I hope you like it. Please reply if you'd like to see more map showcases in the future. jup_fild01 jup_fild02
    7 points
  23. I made an island that bullies innocent ships trying to sail past it. Please reply if you'd like to see more map showcases in the future.
    7 points
  24. Hii! o/ This was my fourth custom map! Back in December 2018, a client requested a room for events that looked very scary. The map that was originally requested was the "green room" to the north, and I added the southern "endless room" as an extra. But this room originally looked fairly simple. Later on I made a "make up" or update to these rooms, and I added the side decorations, as well as "special effects" (glows and smokes). I also made the southern room look more properly like Endless Tower, hence the name of the map! Additionally, now the northern room looks even more like a cave where really spooky things occurred >:3 The last screenshots belong to the older first version, for comparison purposes. + Map Overview + +Southern Room+ +Northern Room+ +Older Version+ +Glowing Effects Preview+ https://cdn-animation.artstation.com/p/video_sources/000/453/297/endless-effects.mp4
    7 points
  25. Evening all! With the recent forum updates comes some new shiny features from IPS. The feature I'm most excited about is the new Achievements and Ranks. The old Badges & Awards plugin has been merged into the new Achievements system on the forums - I'm sure some of you have already begun to receive additional badges for posting content or uploading a file! The ancient Ranks system has been replaced with the new one and updated to use the names of familiar in-game mobs. The order is different to the old one and the number of points for each rank has changed slightly, but I can see that some of you are already quickly climbing the ladder! The following table details how many points gets you to which rank, and how to earn those desirable points. Posting a comment/reply: 5 points Following a content item: 2 points Following a member: 2 points Following a node (forum, album, category, etc): 2 points Posting a content item: 10 points Reacting to a user's post/content item: 1 point for both giver and receiver There are other methods, but to reduce forum spam I'm omitting them from this list. Remember; spamming the forum will result in Warning Points which may result in your account being suspended. Happy posting!
    7 points
  26. Hello people, I'm Katakuri. I'm on a part of learning deeply on spriting and I hoped you like it. ----------------------------------------------------------------------------------------------------------------------------- Various headgears, monster & weapons from different anime. ----------------------------------------------------------------------------------------------------------------------------- 2020 Update Equipment Set for each job/classes Seven Deadly Sins - Sacred Treasure Weapons Monsters Vermilion Bird Suzaku Midgard's Bane Grordag the Twin Head Wounded Dragon Giant Rat - with Recolors Tailed Cape Squid Game Hoodie FREE RELEASE Owl Mask Link Chubby Meow Link Randoseru / School Bag (Japanese) Link Notes: 1. Sprites came from different game resources which I reworked to make it ROish looks. 2. I won't teach where to find raw image references of it. 3. I will always update this topic as I accomplished something new. 4. I'm newbie regards this matter but I always helping myself to get better. 4. Feel free to comment thanks. 5. If you want to contact me here's my discord. Katakuri#4880 For more works of mine kindly join us on our discord channel! Link: Click me for Discord Link!
    7 points
  27. Objective Load scripts not from your standard `rathena/npc` directory but instead, from a remote server via http/https. Design goals Parameters for NPC script loading would be: (a) remote http/https URL (b) support for request header for authorization purposes (e.g. API key) e.g. https://some-ro-developer.com/servers/some-ro-server-1/scripts/my-private-script?version=0 Authorization: Bearer <API token or key> The API token or key can be stored in a git ignored ENV file, so that unauthorized users don't have access to the source code Failure to download the script will result to no operation- warnings but not fatal server crashes The downloaded file must be a single `.txt` file The file is then hashed by the server, and cross-checked to ensure data consistency e.g. https://some-ro-developer.com/servers/some-ro-server-1/scripts/my-private-script?version=1.0.0&type=hash returns "70460b4b4aece5915caf5c68d12f560a9fe3e4" which should match the file's hash The file's existing supported versions can be checked (returns JSON array) e.g. https://some-ro-developer.com/servers/some-ro-server-1/scripts/my-private-script?type=versions returns ["1.0.0", "1.0.1", "1.1.0"] Caching - Can download the files into a git-ignored directory on the actual server for caching purposes If the requested file and version already exists in cache AND the file's hash matches the hash of the server, no need to download the file again NOTE: Not entirely sure yet if I want the download to be perform the caching, because it goes against the whole idea of "not having the source code on your server" aspect. Benefits By adding this source capability, we: enable RO developers who produce intellectual property (NPC scripts in this specific case) to have some control over their IP. NOTE: It is still possible for RO developer scammers to sell shady scripts/sell scripts that aren't theirs, grant their customers temporary access, and then remove access from their customers. enables RO developers to sell licenses to their IP, and revoke license (disable API token) after some validity period (e.g. 3 months). Opens up the opportunity for a monthly or yearly pricing of their NPC script licenses. enable RO developers to share their rAthena server folder to co-developers without risk of accidentally granting them access to other IP that they aren't supposed to share. e.g. RO Admin builds server. RO Admin buys 10 NPC scripts, with license to use in one RO. server. RO Admin hires RO Support dev. RO Support dev granted access to rAthena server files because they have work to do. RO Support dev now has access to npc scripts they didn't purchase, and is a vulnerability. Related source code Specifically, the following files need to be changed/extended: int npc_addsrcfile(const char* name, bool loadscript) - in src/map/npc.cpp Probably adding a new function called int npc_addremotesrcfile(const char* resource_url, char* resource_hash, char* resource_version, bool loadscript) - in src/map/npc.cpp Usage Potentially using it on an npc script would look like this: remotenpc: <URL> <VERSION> <HASH> remotenpc: https://some-ro-developer.com/servers/some-ro-server-1/scripts/my-private-script 1.0.0 70460b4b4aece5915caf5c68d12f560a9fe3e4 Thoughts I wanted to get the thoughts/vibe of the community before pushing through with this idea. I know that we're an open-source community that wants to encourage full-sharing of source code. But I think that the strict constraints that follows from that is something to consider. It limits the number of developers you can onboard onto your team, or needing to think about whether "you trust everyone". I think doing this (a) encourages developers to produce great NPC scripts, (b) enables developers to make good money on it, (c) positions rAthena or whoever to start up some kind of dependency management/NPC scripts platform (similar to npm, or composer) where server owners can shop for NPC scripts. Securely designed remote script access enable developers to focus on writing NPC scripts opportunity for NPC script customization layer developers can now easily scale up their marketing on some dependency management/NPC scripts platform well-paid developer happy developer more scripts happy community I will definitely be exploring this on my own, but I wanted to know what the community thinks about it. PS: Potentially a source of revenue as well for rAthena to sustain itself. I am open to the idea of assisting in the architecture design for that platform.
    7 points
  28. Hi all, I put together a command-line tool to help save time when porting lots of existing items to an rAthena server: https://github.com/Latiosu/dp2rathena I noticed that the rAthena community often refers to divine-pride.net (DP) as a source of truth, so I figured it would be useful to connect with their API. Summary The tool uses data from divine-pride.net and attempts to map the API response to a desired rAthena database format. Installation Requires Python 3.6+ and pip installed: pip install dp2rathena Usage Generate a divine-pride.net API key if you don't have one yet (registration required), then you can start converting data: Example 1: Store API key and convert items with id 501 and 1101 dp2rathena config dp2rathena item 501 1101 Produces this output: Example 2: Convert mobskills for mobs with id 1002, 1049 and 1299 and save to a file called "attacks.txt" (re-uses stored API key if present) dp2rathena mobskill 1002 1049 1299 > C:\Users\Latios\Desktop\attacks.txt Produces a file in the Desktop folder called "attacks.txt": Example 3: Convert mob with id 20357 to mob_db.yml format dp2rathena mob 20357 Produces following command-line output: Further instructions can be found at the repository: https://github.com/Latiosu/dp2rathena Limitations I've moved this section to the GitHub repository above to keep it up-to-date. --- Let me know if you'd like to be able to convert other data from DP, some other suggestion or any questions. Edit: Add terminal animation for a visual explanation
    7 points
  29. Hello, everyone! I'm Lynx of SolaceRO. I'm sharing our old database that's worth 1 month of research and application. I used to own SorinRO back in 2016. It's at episode 6 when it died. In our database, we have corrected the mob stats, drop, and spawns. Please keep in mind that this is not 100% accurate to the official server. I have used the following references: Leaked Aegis files for RussiaRO and MalaysiaRO WoE and Juno Guidebook (based on PhilippineRO) Old emulators (Fusion, Vidar, Freya, jAthena, etc.) P.S. Use it at your own risk. Review the files before implementing. SorinRO EP5 Spawn & Mob_Db.zip
    7 points
  30. @Alberan Wow, thanks that you say about ESRGAN! I work with some npc sprites and it`s really looking good in game~ New part of sprites:
    7 points
  31. Version 1.1.1

    659 downloads

    Ehh since my event scripts are piling up, I decided to make an Event Manager // Basic Event Manager // By Mabuhay /*-=-=-=-=-=-=-=-=-=-=-=-=-=- Currently added are the ff : {#} NAME - "NPC_NAME" [1] Bombring - "Event_Bombring" [2] Dice - "Event_Dice" [3] Last Man Standing - "Event_LMS" [4] Novice V Zombie - "Event_NvZ" [5] Poring Catcher - "Poring_Catcher" [6] Poring Hunter - "Poring_Hunter" (Added 12-15-2019) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/ // For easier management of Event NPCs ///////////////////////////////////// // NOTE: // ///////////////////////////////////// // I don't support any modifications unless I want to. // But if you want to change things especially the rewards, // Please refer to my F_Reward Functions // https://rathena.org/board/files/file/4068-itemvariablepoints-reward-function-for-beginners-or-lazy/ // You should be able to easily change the rewards // If you have basic scripting knowledge Header Settings: OnInit: // 1 = item reward // 2 = variable/cashpoints reward // If you want to set item and variable/cashpoints rewards, do 1|2. // If you only want 1, just choose between 1 or 2 $event_options = 1|2; // If item reward enabled // What items will be rewarded setarray $event_item_reward, 501, 10, 502, 5; // If variable reward.. set to your variable. // If cashpoints.. set to #CASHPOINTS / #KAFRAPOINTS (Free Cash Points) $event_var$ = "#EVENTVARIABLE"; // Variable name? // If cash points, set to Cash Points // If your custom var, set to the name of that thing. $event_var_name$ = "Custom Points"; // How much points gain if #VAR / #CASHPOINTS / #KAFRAPOINTS? $event_var_gain = 1; $event_item_arr = getarraysize($event_item_reward); // @eventstart for GM bindatcmd "eventstart", strnpcinfo(0)+"::OnStart",60,60; // @eventjoin bindatcmd "eventjoin", strnpcinfo(0)+"::OnJoinEvent"; end; You may now use @eventstart for GMs to select which ones to start. @eventjoin for players to enter and see which event is currently active Event timers / Clock are to be set here : // OnClock<hour><minute>: donpcevent "<npc_name>::OnStart"; OnClock0000: donpcevent "Event_Bombring::OnStart"; end; //----- 12 mn OnClock0100: donpcevent "Event_Dice::OnStart"; end; OnClock0200: donpcevent "Event_LMS::OnStart"; end; OnClock0300: donpcevent "Poring_Catcher::OnStart"; end; OnClock0400: donpcevent "Event_NvZ::OnStart"; end; OnClock0500: donpcevent "Poring_Hunter::OnStart"; end; OnClock0600: donpcevent "Event_Bombring::OnStart"; end; //----- 6 am OnClock0700: donpcevent "Event_Dice::OnStart"; end; OnClock0800: donpcevent "Event_LMS::OnStart"; end; OnClock0900: donpcevent "Poring_Catcher::OnStart"; end; OnClock1000: donpcevent "Event_NvZ::OnStart"; end; OnClock1100: donpcevent "Poring_Hunter::OnStart"; end; OnClock1200: donpcevent "Event_Bombring::OnStart"; end; //----- 12 nn OnClock1300: donpcevent "Event_Dice::OnStart"; end; OnClock1400: donpcevent "Event_LMS::OnStart"; end; OnClock1500: donpcevent "Poring_Catcher::OnStart"; end; OnClock1600: donpcevent "Event_NvZ::OnStart"; end; OnClock1700: donpcevent "::OnStart"; end; OnClock1800: donpcevent "Event_Bombring::OnStart"; end; //----- 6 pm OnClock1900: donpcevent "Event_Dice::OnStart"; end; OnClock2000: donpcevent "Event_LMS::OnStart"; end; OnClock2100: donpcevent "Poring_Catcher::OnStart"; end; OnClock2200: donpcevent "Event_NvZ::OnStart"; end; OnClock2300: donpcevent "Poring_Hunter::OnStart"; end; //----- 11 pm Currently I just alternately activate events per hour. You can change the event time as you wish. You may choose any of the ff: OnClock<hour><minute>: OnMinute<minute>: OnHour<hour>: On<weekday><hour><minute>: OnDay<month><day>: I hope this helps. If you want me to add more, just PM me on an event script that needs to be updated. Thank you. Compatibility is your responsibility. No backward Compatibility Support. Enjoy! NOTE : If you find this useful, please click the Upvote button to motivate me to do stuffs like this And you are welcome!
    Free
    7 points
  32. I'm back. Check it out. Dungeon map? I think it looks better with a fog effect. Please reply if you'd like to see more map showcases in the future.
    6 points
  33. View File GRF Editor Hey everyone, This is a GRF tool I started to develop for my own personnal use, but I thought I'd share it since I've upgraded the UI. Its primary goal is to be easy to use while offering a wide variety of options and customizations. The software is quite stable and can handle large operations easily. How to install Download the zip archive provided from the download link at the bottom of this description or directly from there : http://www.mediafire.com/?aflylbhblrzpz0h Install the application with GRF Editor Installer.exe; if you are missing a .NET Framework you will be prompted to download it. Once you are done, you can start the program from the link on your desktop. Key features Overall speed is faster (or at least equal) than any GRF tool. Common operations : add, delete, merge, extract, preview, save. Undo and redo for any operation. It can open any GRF file. Clean and very interactive interface. Saving formats supported : 0x200, 0x103 and 0x102 (through the Settings page) and conversion to the Thor format. Instant filter and search options (example : "map .gat"). File association and context menus integration for .grf, .gpf, .rgz and .thor (through the Settings page). Can rebuild separated images into one file easily. Drag and drop (with the ALT key, can be modified in the Settings page). This is a big part of the software; most of the items can be moved around within the application itself or from/to Windows Explorer. Tools Sprite editor : a simple sprite editor with powerful features. Semi-transparent images can be added, you can easily change the order or replace images, etc. This tool can convert images in the wrong type by showing you multiple solutions (merging a new palette, dithering the image by using current palette, using the closest color, and a few more). Grf validation : allows you to validate a GRF with multiple settings. It can detect corrupted GRF entries, invalid sprites, empty files, non-GRF files, duplicate files and a lot more. Flat maps maker : generates flat maps from .gat and .rsw files. Useful to generate WoE maps or to fasten up the loading time. Patch maker : generates a GRF patch based on two different GRFs. Hash viewer : shows the hash code (both CRC32 and MD5) for files. Image converter : converts an image to any format requested (BMP, PNG, JPG, TGA). GrfCL : used to create batch files (.bat) which can automate tasks on GRF files. See the content in GrfCL.rar in the download for more information. This tool can be customized from the sources as well. Palette recolorer : creates new sprites by changing their colors (this tool is now deprecated). Client database editor : allows modifications of the database client files (txt and lua) with easy and simple tools. Work in progress. Grf encryption The encryption feature has been enabled again. It's similar to what it used to be and it has been tested on client versions ranging from 2012-08-01 to 2014-02-05. Some error messages will be displayed if necessary. If you have an issue, copy the error message (with the code, if there's one) and send me the client executable with the cps.dll file generated by GRF Editor. There shouldn't be compatibility issues anymore though! Thor files Thor files are patches used by Thor Patcher ( http://thor.aeomin.net/ ). Because of their similarity with the GRF file structure, they have been integrated within GRF Editor. The primary utility of this feature is that it allows you to add encrypted files to a Thor patch. All the other options can be achieved by using Thor Maker. You'll find the necessary steps below, but test your patches before sending them off to players (I've done a lot of testing on my end, but better be safe). If you're using SecureGRF, then make a new GRF, add the files and encrypt it. In GRF Editor, open the encrypted GRF you just made, use "Save as" and name the new file with a .thor extension. That's it, if you want to change the output directory, click on the root node of the project and select the tab "Container options". You can select the output mode and the GRF to merge the patch with. Simply save again if you change these properties. If you're using GRF Editor's encryption, then make a new Thor file (File > New > New Thor) and add the files you want to patch it with. Right-click on the files you want to encrypt and use Encryption > Encrypt. Technical stuff Requires .Net Framework 3.5 (SP1) Client Profile to run (3.5 or more will work as well). Automatically converts file name encoding to their proper values (you can change the encoding). Data virtualization is used as much as possible to preview files, meaning the files aren't completely loaded. Right-clicking an item will bring up the available options with that file. Preview file formats : txt, log, xml, lua, lub, bmp, png, tga, jpp, db, ebm, pal, gnd, rsw, gat, rsm, str, spr, act, imf, fna and wav. Services are "crash ready", meaning that you will be warned about a failed operation and no work will be lost (the application won't close and crash). It tries to continue operating even if it meets unsual conditions. Operations can be cancelled by clicking on the button near the progress bar. The warning level can be changed to avoid messages like "Please select a folder first." When prompted with an error, use Ctrl-C to copy the current dialog's content. Some screenshots! 1) Previewing an act file, while showing the search feature 2) Preview of a model file (rsm) 3) Preview of GrfCL with the MakeGrf command 4) Preview of maps 5) Preview of Grf validation 6) Search feature (press Ctrl-F or Ctrl-H to bring up within a text editor) Got a feedback? I'd gladly hear you out and fix issues you have with the program. Submitter Tokei Submitted 01/10/2013 Category GRF Files Content Author  
    6 points
  34. RO Patcher Lite About Replacement for Gravity's RO patcher. Works faster and doesn't consume your entire memory for just seeing it crashing, aside from this, it works almost exactly as the official patcher does, so that it shouldn't break, unless Gravity changes something vital to their patcher. It works on every 32-bit and 64-bit Microsoft* Windows* platform and is free of any cost. Known Issues None. Download & Website http://ai4rei.net/p/rsu License This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 4.0 International License.
    6 points
  35. Browedit 01 - Basic Tutorial Ragnarok Online Map Editor *The map is available to download in Rathena, link in the video description. Subtitles in English and Portuguese. Special thanks to @Taiga (PTBR Translation) Browedit 02 - Basic & Intermediate Tutorial Ragnarok Online Map Editor Browedit 03 - Quick Tips: Navigation Browedit 04 - Quick Tips: Lightmaps Browedit 05 - Quick Tips: Mini Map Browedit 06
    6 points
  36. Hi everyone, It's been a while since I've published something. Today I'm releasing the code of a patcher I've been working on for some time. The idea was to make an open-source drop-in replacement for the Thor patcher while also bringing some improvements. The project has been developed in Rust and the UI is based on the webview project. The project also includes a cross-platform, command-line THOR patch generator. The patcher's current features are the following: Customizable, web-based UI Cross-platform (Windows 7/8/10, Linux, macOS) Configurable through an external YAML file HTTP/HTTPS support GRF file patching (version 0x101, 0x102, 0x103 and 0x200) THOR patch format support Drop-in replacement for the Thor patcher SSO login support (i.e., can act as a launcher) Manual patching Can use multiple patch mirrors The project's repository can be found here: https://github.com/L1nkZ/rpatchur (and documentation can be found here). Contributions are welcome! Releases v0.3.0: https://github.com/L1nkZ/rpatchur/releases/tag/v0.3.0 v0.2.3: https://github.com/L1nkZ/rpatchur/releases/tag/v0.2.3 v0.2.2: https://github.com/L1nkZ/rpatchur/releases/tag/v0.2.2 v0.2.1: https://github.com/L1nkZ/rpatchur/releases/tag/v0.2.1 v0.2.0: https://github.com/L1nkZ/rpatchur/releases/tag/v0.2.0 v0.1.0: https://github.com/L1nkZ/rpatchur/releases/tag/v0.1.0
    6 points
  37. MobDB -> YAML! As of Git Hash: 7992e08, rAthena's monster database has been converted to YAML! Sorry for the delay of this post! What this means: The monster database being in YAML format means that the database is now much more human-readable, just like the item database. This allows for quick review, modification, and addition of monsters without having to memorize the CSV format or use any third party tools. The parser now also has much better error handling when reading monsters into memory so tracking down those pesky typos is a thing of the past! The update combines mob_race2 and mob_drop databases into the mob_db so there is much less searching around multiple databases when doing anything with monsters! The Mode field has been adjusted. rAthena will now be following the Aegis format of utilizing AI and Class to define monster modes. Don't fret, the Mode field is still fully supported for any custom monster modes! A detailed document with the AI and Class values can be found in doc/mob_db_mode_list.txt. Each monster can now be classified with multiple RaceGroups. Before a monster was limited to a single group, but that is a thing of the past! As with any YAML conversion we have provided an option in the CSV2YAML tool built right into rAthena! Just build the CSV2YAML tool within Visual Studio or via Make and run the executable. The tool will provide you with general steps and convert your custom monsters right on over to the YAML format! Following suit with the item database conversion, the monster database will still support SQL! Simply continue to utilize the YAML2SQL tool which can convert the YAML monster database into SQL format. This allows servers who utilize SQL to continue with this method. What this means to developers: Pull Requests can be reviewed much quicker and much more simpler. Identifying the actual change to the monster and easily verifying said change without having to count commas! Comparing monster data to Aegis becomes easier for the AI and Class as it's easy to identify immediately what the monster's mode should be without having to count the custom mode bits in rAthena. Additional features being added to the monster database no longer requires the development of a side database. A vast majority of the monster data is now part of the mob_db structure and can continue to grow in this format! As already seen with the Green Aura for MVP update from kRO. Redefined Import System: Now that the mob_db is in YAML format, the adjustment of monsters is much simpler. If a change is being made to an monster only the parts that are being changed have to be defined in the import. Below are some examples: Adjusting Scorpion attack to 1000. - Id: 1001 Attack: 1000 Allow Amon Ra to walk and adjust the Yggdrasil Berry to a Diamond at 80% drop rate. - Id: 1511 Modes: CanMove: true MvpDrops: - Item: Diamond Rate: 8000 Index: 0 Check out the mob_db documentation for further details! Thanks to @Lemongrass, @nitrous, and lukasrmattos for their help!
    6 points
  38. Olá pessoal, apresento para vocês um painel que eu desenvolvi em código aberto totalmente gratuito para a comunidade, desenvolvido em Laravel 8. Link do projeto: https://github.com/rscodexx/ragpainel Demonstração: https://rscode.com.br/ragpainel/ Funcionalidades [] Geral [] Visualizar jogadores online. [] Visualizar total de contas. [] Visualizar total de personagens. [] Visualizar total de clãns. [] Top 3 jogadores de (PVP, WOE e MVP). [] Usuário [] Criar conta [] Registrar conta [] Alterar dados da conta(foto, senha, e-mail e deta de nascimento). [] Visualizar quantidade de acessos. [] Visualizar data e hora do último acesso. [] Visualizar último ip acessado. [] Visualizar quantidade de dias vip. [] Visualizar quantidade de créditos. [] Esqueceu sua senha [] Esqueceu seu login [] Administrador [] Visualizar Logs [] Gerenciar Créditos [] Gerenciar Vip [] Gerenciar Equipe [] Gerenciar Banimentos [] Gerenciar Tickets [] Configurações do Painel [] Rankings [] WOE [] MVPs [] Zenys [] PVP [] Eventos [] Database [] Visualizar Itens [] Visualizar Monstros [] Suporte [] Criar Ticket [] Visualizar Tickets [] Doações [] Fazer Doação [] Consultar Doações Layout Celular Desktop Tecnologias As seguintes ferramentas foram usadas na construção do projeto: Requisitos Mínimos PHP na versão 7.3 ou superior BCMath PHP Extensão ativa Ctype PHP Extensão ativa Fileinfo PHP Extensão ativa JSON PHP Extensão ativa Mbstring PHP Extensão ativa OpenSSL PHP Extensão ativa PDO PHP Extensão ativa Tokenizer PHP Extensão ativa XML PHP Extensão ativa Instalação no Windows. Pré-requisitos Antes de começar, você vai precisar ter instalado em sua máquina as seguintes ferramentas: GIT, Apache, Mysql (Ou qualquer outro tipo de banco de dados), Composer Se você não sabe instalar e configurar um ambiente de servidor, pode utilizar ferramentas que já vem tudo pronto como: Xampp Wamp Além disto é bom ter um editor para trabalhar com o código como VSCode Rodando o Backend (servidor) servidor) # Clone este projeto $ git clone https://github.com/rscodexx/ragpainel.git # Ou baixe o projeto direto do repositório: https://github.com/rscodexx/ragpainel # Renomeie o arquivo .env-example(está na pasta raiz do projeto) para .env e configure. DB_CONNECTION=mysql #Tipo de banco de dados. DB_HOST=127.0.0.1 #IP do banco de dados. DB_PORT=3306 #Porta do banco de dados. DB_DATABASE=ragpainel #Tabela do banco de dados. DB_USERNAME=ragnarok #Usuário do banco de dados DB_PASSWORD=ragnarok #Senha do banco de dados. TIMEZONE=America/Sao_Paulo #Horário LOCALE=pt-BR #Idioma geral. FALLBACK_LOCALE=pt-BR #Idioma das mensagens de erro. # Acesse a pasta do projeto em seu terminal/cmd $ cd ragpainel # Após entrar no diretório do projeto instale o composer e suas dependências. $ composer install # Aguarde a instalação. # Instale as tabelas do painel, ainda com cmd aberto no diretório do projeto utilize: $ php artisan migrate # Pronto, o seu servidor está instalado e configurado. Rodando a aplicação web (Frontend) # Inicie o seu servidor, para acessar o painel é necessário acessar a pasta public, um exemplo abaixo: $ http://localhost/ragpainel/public # Você também pode rodar a aplicação sem precisar de um servidor apache configurado através do php artisan. # Acesse a pasta do projeto em seu terminal/cmd $ cd ragpainel # Digite o comando: $ php artisan serve # Basta clicar no link gerado para iniciar o painel. # Use o comando CTRL + C para desligar o servidor. Como contribuir para o projeto? Poste todos os bugs e erros encontrados aqui: https://github.com/rscodexx/ragpainel/issues Caso queira, pode fazer uma DOAÇÃO.
    6 points
  39. Version 1.0.0

    339 downloads

    [PT-BR]: O script funciona como instância, é um jogo onde o player pode iniciar uma partida sempre que quiser, quanto mais toupeiras ele acertar mais pontos ele acumula, a partida termina quando ele somar o máximo de erros que pode cometer (configurável), o player precisa acertar um mínimo de toupeiras por ciclo, conforme os ciclos aumentam os acertos mínimos também (limitando-se ao máximo de 3), acertar o cachorro contará como erro, os pontos não são acumulativos ou seja, o player entrará par ao rank com o primeiro char que ele fez a partida e será contado por conta, quando ele atingir um valor máximo de pontos na partida que supera o do seu rank anterior ele atualiza, o rank reseta todo o domingo as 12h e converte os pontos para usar na loja da toupeira. Cred: Tio Akima (criador do mapa) Cred: Frost (guia add custom npc) [ENG]: The script works as an instance, it is a game where the player can start a game whenever he wants, the more moles he hits the more points he accumulates, the game ends when he adds up the maximum mistakes he can make (configurable), the player needs hitting a minimum of moles per cycle, as the cycles increase the minimum hits as well (limited to a maximum of 3), hitting the dog will count as an error, the points are not cumulative ie the player will enter the rank with the first char he made the match and will be counted on account, when he reaches a maximum point value in the match that exceeds that of his previous rank he updates, the rank resets every Sunday at 12pm and converts the points to use in the mole shop . NOTE: Perhaps the translation was not the best, so you can send a suggestion that I will be correcting. Cred: Tio Akima (map creator) Cred: Frost (guide add custom npc)
    Free
    6 points
  40. Whatch it in HD and Full Screen mode and give me your opinion/suggestion =D Discord for contact: Daniel '-'#0070 OBs: Its easy to edit the MvP's name and the words vivo (alive) and Morto (Dead) from portuguese to english
    6 points
  41. Extended @partybuff Heya, it's been a while since I've been active on this Forum. Currently I'm planning to comeback and this topic is a proof of that. Extended @partybuff is a source/client modification of the popular command called @spb. Features Display party member's buffs in Party Windows (ALT+Z) Display a special bar above party members with the active buffs. Working on latest rAthena. ----- B - Blessing A - Increase Agi S - Spirit Link F - Full Chemical Protection + - Devotion ----- Screenshots Video Known Limitations Special Bar only work when /effect is active. Works on clients above 2015-05-07. It's a party setting which means if it's active will affect all online party members.
    5 points
  42. Note: This map was made during my Browedit tutorial. * If you are interested to learn how to develop your own custom RO Map, please check the link below. ro_room v0.1 Very simple room map with custom texture. ro_room v0.2 Very simple room map with custom texture & 3D models. ro_room v0.3 Very simple room map with custom texture, 3D models, lightmap & minimap. Thanks for Downloading. ro_room-by_speedrun_v0.3.rar ro_room-by_speedrun_v0.2.rar ro_room-by_Speedrun_v0.1.rar
    5 points
  43. View File Compendium Compendium - A levelable battle pass inspired majority of games out there. Feature : Easy customizable settings. Three types of selectable daily quest. Daily quest requirements are randomized. Daily quest count resets everyday. Compendium resets on the first day of the month. Rewards are sent via mail. '@compendium' command to access the compendium Settings : Adding a reward on the compendium Rewards : "Level | Reward ID, Amount, Reward ID, Amount,... ==| Level order doesn't matter but 'duplicates' will bug out the script. setarray .compendium_reward$, "1|501:10,502:20", "10|501:20,502:30", "5|501:100,502:500"; Adding a monster/item/mvp to hunt or collect Just add the ID on the following line. setarray .mvp_list setarray .hunt_list setarray .gather_list Changing EXP given on the quest types. .gathering_exp = 50; .hunt_exp = 50; .mvp_hunt_exp = 100; Submitter crazyarashi Submitted 12/09/2020 Category Utilities Video Content Author crazyarashi  
    5 points
  44. FYI, I have also added Custom Shields & Custom Jobs patches in WARP and yes it supports all clients from 2010 - 2021. New features Custom Shields: Maximum Shield count can be customized now (limited to 127 for now). You can also validate a shield id based on the job id by modifying ValidateShieldID function in ShieldTable_F.lub. Custom Jobs: All the Lua files are now in a different folder called 'JobInfo' to avoid mixing in with others. The tables have gone through some changes as well. You can specify different strings based on servicetype. For e.g. "korea" and "america" can have different strings. To achieve this, you need to specify an override table with the name LT_<servicetype number>. For e.g. LT_0 specifies overrides for korea servicetype. Check PCNames.lub to get a clearer idea. At present it is only used for name changes & palette path changes. Scaling for Baby Jobs can be changed. You can change this in Shrink_Map inside PCIDs.lub. There is one caveat though, due to client limitation, the factor needs to be specified as an IEEE hex string. (no floating point support in Lua function calls ) For both: You get the option to copy the files to your patched client area. The files are copied only if you apply the patch. For Custom Shields, the max shield value also gets updated in the copied file automatically. I was planning on more amount of changes in Custom Jobs, but it's on hold for now.
    5 points
  45. Version 1.0.0

    1,006 downloads

    CHESHIRE SET CUSTOM HEADGEAR & CUSTOM ROBE Greetings again, rAthena! I'm Haziel, once more, I'm back planning on new freebies every week! Cheshire Set consists in a one Custom Headgear and a Custom Garment, Cheshire Ears and Cheshire Tail. I hope you enjoy the final product! If you're interested on my work, reach me at: By downloading this file, you agree with my Terms of Service: • YOU WILL NOT remove my signature from any of the included files. • YOU WILL NOT alter, edit, recolour any of my files unless for your personal use. • YOU WILL NOT repost, repass or mirror my work nor edited versions of it anywhere. • YOU WILL NOT sell, resell or in any manner, ask money or rewards using my work as exchange. • YOU WILL NOT claim my work as yours.
    Free
    5 points
  46. Pokemon League Map Hi, I'm doing some duel maps. I made a map of yu-gi-oh now i finished a pokemon map The next one will be a map of Naruto. [ ok ] - yugi-oh [ ok ] - pokemon [ ... ] - naruto Didn't see the map of yugi-oh? you can check it out here:
    5 points
  47. Version 1.0.0

    229 downloads

    *Don't forget to add required skill on your suit item skill "RK_DRAGONTRAINING",5; skill "NC_MADOLICENCE",5; Report all error/bugs in the forum post not in the PM for faster fix, Thanks! By downloading this file, you agree with my Terms of Service: • You are not allowed remove my signature from any of the included files. • You are not allowed claim my work as yours. • I can give you support, but please, do not message me. If you like it, give me a
    Free
    5 points
  48. Version 1.0.0

    133 downloads

    All homunculus sprites with high resolution. Free for use.
    Free
    5 points
  49. Updated to 1.8.3.7: Fixed an issue where directory/uncompressed data files would not be visible when loading a GPF file.
    5 points
×
×
  • Create New...

Important Information

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