Jump to content

B4RC0D3

Inactive Member
  • Posts

    24
  • Joined

  • Last visited

  • Days Won

    2
  • Feedback

    0%

B4RC0D3 last won the day on May 26 2020

B4RC0D3 had the most liked content!

1 Follower

About B4RC0D3

Informations

  • Gender
    Male

Recent Profile Visitors

2796 profile views

B4RC0D3's Achievements

Proficient

Proficient (10/16)

  • Very Popular Rare
  • Reacting Well
  • Dedicated
  • First Post
  • Collaborator Rare

Recent Badges

1.3k

Reputation

  1. The Illirea project with the 27x27 map solved the whole thing back then by writing a script that always teleports you 1 chunk away. This involved creating ~700+ images, which were then assembled by hand. I know that Arthur (Kill_moves) did not use the WorldEditor for other projects with larger maps, e.g. Xavia (16x16 map), but used the “manual” method. However, the WE was not yet as well “fixed” as it is today.
  2. Maybe it's because of the offical gr2? I've got a similiar problem at the moment. Maybe we can identify the problem But for me it's bugged since i replaced the skills and models with the offical version. €dit: Wow Timing. May you be so kind to tell me what your problem was? Best regards
  3. Does this happen on just the first "load" of the map? (Just teleport to the position again, and you should be on top of it). If so, you need to change the order in your application class, which processes the background/map and the character.
  4. You may also encounter some problems with the calculations. As we portet our src to python 3.10 2 years ago, we had to cast several calculations explicitly. Like witdh = 100 / 20 [Python 2.7 it worked fine for us, but on Python 3.10 it throws back a float instead of an int] witdh = 100 // 20 <- Will work or width = int(100 / 20) will also work. I don't know if this will appear in your version, but for us it did. And i want to mention it to help reduce some unwanted behavior. Sidenote: For Cython not all features are supported! Example: Back then match/case, didn't worked on cythonizing, maybe it's now implemented, idk. But keep in mind, that maybe not all the new and fancy stuff is working for you, when you want to cythonize it.
  5. Maybe just buy those from their creator @ .plechito'. They can be found on https://plechito.com/
  6. For the EXP, have a look at this: [Hidden Content]
  7. NOTE: THIS ISN'T NEEDED BY THE TUTORIAL! For everyone to use, class MiddleBoard. With this you can use the offical loadingwindow.py Open UI.py and search for "class ThinBoard(Window):" and add below the WHOLE class: class MiddleBoard(Window): CORNER_WIDTH = 16 CORNER_HEIGHT = 16 LINE_WIDTH = 16 LINE_HEIGHT = 16 LT = 0 LB = 1 RT = 2 RB = 3 L = 0 R = 1 T = 2 B = 3 def __init__(self, layer = "UI"): Window.__init__(self, layer) CornerFileNames = [ "d:/ymir work/ui/pattern/thinboardb_corner_"+dir+".tga" for dir in ["LeftTop","LeftBottom","RightTop","RightBottom"] ] LineFileNames = [ "d:/ymir work/ui/pattern/thinboardb_line_"+dir+".tga" for dir in ["Left","Right","Top","Bottom"] ] Base = ExpandedImageBox() Base.AddFlag("not_pick") Base.LoadImage("d:/ymir work/ui/pattern/thinboardb_center.tga") Base.SetParent(self) Base.SetPosition(self.CORNER_WIDTH, self.CORNER_HEIGHT) Base.Show() self.Base = Base self.Corners = [] for fileName in CornerFileNames: Corner = ExpandedImageBox() Corner.AddFlag("attach") Corner.AddFlag("not_pick") Corner.LoadImage(fileName) Corner.SetParent(self) Corner.SetPosition(0, 0) Corner.Show() self.Corners.append(Corner) self.Lines = [] for fileName in LineFileNames: Line = ExpandedImageBox() Line.AddFlag("attach") Line.AddFlag("not_pick") Line.LoadImage(fileName) Line.SetParent(self) Line.SetPosition(0, 0) Line.Show() self.Lines.append(Line) self.Lines[self.L].SetPosition(0, self.CORNER_HEIGHT) self.Lines[self.T].SetPosition(self.CORNER_WIDTH, 0) def __del__(self): Window.__del__(self) def SetSize(self, width, height): width = max(self.CORNER_WIDTH*2, width) height = max(self.CORNER_HEIGHT*2, height) Window.SetSize(self, width, height) self.Corners[self.LB].SetPosition(0, height - self.CORNER_HEIGHT) self.Corners[self.RT].SetPosition(width - self.CORNER_WIDTH, 0) self.Corners[self.RB].SetPosition(width - self.CORNER_WIDTH, height - self.CORNER_HEIGHT) self.Lines[self.R].SetPosition(width - self.CORNER_WIDTH, self.CORNER_HEIGHT) self.Lines[self.B].SetPosition(self.CORNER_HEIGHT, height - self.CORNER_HEIGHT) verticalShowingPercentage = float((height - self.CORNER_HEIGHT*2) - self.LINE_HEIGHT) / self.LINE_HEIGHT horizontalShowingPercentage = float((width - self.CORNER_WIDTH*2) - self.LINE_WIDTH) / self.LINE_WIDTH self.Lines[self.L].SetRenderingRect(0, 0, 0, verticalShowingPercentage) self.Lines[self.R].SetRenderingRect(0, 0, 0, verticalShowingPercentage) self.Lines[self.T].SetRenderingRect(0, 0, horizontalShowingPercentage, 0) self.Lines[self.B].SetRenderingRect(0, 0, horizontalShowingPercentage, 0) if self.Base: self.Base.SetRenderingRect(0, 0, (float(width)-32)/float(self.Base.GetWidth()) - 1.0, (float(height)-32)/float(self.Base.GetHeight()) - 1.0) def ShowInternal(self): self.Base.Show() for wnd in self.Lines: wnd.Show() for wnd in self.Corners: wnd.Show() def HideInternal(self): self.Base.Hide() for wnd in self.Lines: wnd.Hide() for wnd in self.Corners: wnd.Hide() Now search for "elif Type == "thinboard":" and add below the elif: elif Type == "middleboard": parent.Children[Index] = MiddleBoard() parent.Children[Index].SetParent(parent) self.LoadElementThinBoard(parent.Children[Index], ElementValue, parent) Should look like: Now just add the visuals (if you didn't already got them out of Patch 19.0) DOWNLOAD
  8. No i didn't tested the Performance difference. Because, simplified , you can change so many parts on their input that the Output will be different. Even if you use the same password and salt the hash will be different in many ways. Test it with the online generator. If you just change the memory or the iterations ... You will get different outputs. So as an attacker i need all of this informations and not just to know the hash algorithm and can search for some rainbow tables and maybe find some Data. Even generated keys, which are stored on the server can be loaded by the algorithm to enhance the security of your system. So its hard to get rainbow tables or otherwise forced Data out of a argon2 Hash. SHA is good, that not the point here. But Argon2 can be better in a easier way of use. (OFC it is my personal way of thinking, so its free to everyone if they want to use it or not) €dit: Yes since PHP 7.2 Argon2 is useable as algorithm
  9. M2 Download Center Download Here ( Internal ) Hello togehter, today i want to share a small, but in my opinion, usefull security upgrade for your player password-hashes. The current default hash, which is used by the most of you (some exeptions might be out there) is the MD5 Hash. This hash might be not the best choice for hashing passwords in this modern days. This is why i thought about something to change there. And my solution for this is Argon2. This Method had won the Password Hashing Competition and this is why i had choosen this over bcrypt or scrypt. This tutorial isn't a 100% beginner firendly guide! Just follow my instructions if you got a little bit of c++ knowledge and know how to work with the source! Create the libargon2 Change the hash inner the game-core source (DEFAULT PASSWORD() MYSQL FUNC TUTORIAL) For now you just need to edit the account.account table and set the size for the password to 128 (Why 128? Db.h EArgon2::HASH_LENGTH = 64. 64 * 2 = 128) And you need to replace your hashes with the argon2 once. For this follow the link to the generation: [Hidden Content] Example config for the tutorial setup: Have fun
  10. This is a really good explained and easy to understandable guideline. I wish i had this as i learned more about metin2 and python in general a few years ago. Thanks for your time !
  11. Okay, so i'm sorry for my missunderstanding. Maybe someone like @xP3NG3Rx can provide some kind of pseudo code for this.
  12. You still didn't got the point? Okay here is my item_scale.txt. As you can see it just repeats for the new sashes. It isn't the offical method, but the positions are correct.
  13. Did you maybe thought about the way that all sash's use the same values for the position correction? If you watch the old values you will notice something. Don't just look straight forward. Sometimes you also need to watch your surroundings. That's how i had done it. It isn't the offical way, but it's working nicely for me and looks like the offical one. I hope you will get my hint. Greetings
  14. I've done this by sending the client an information what kind of datatypes in which order got send. So i modified my ChatPacket function to some kind of this: Also then i reversed this on the client-side to get the arguments and got myself a StringModifier to push args step by step. And this is almost everything you need. Here is how i call the strings on the Server: ch->ChatPacket(CHAT_TYPE_INFO, 934, "dd"); I hope this few hints will help you out for a bit.
  15. @Rakancito Maybe i'm wrong, but this version of the 17.5 archer skill is fixed to the character. On the offical server the "bomb" get's dropped on a localtion and isn't directly bound on the character himself. So my question is, is the GIF just an older development state or is it up2date? Here is a video (don't mind what the videocreator is talking ) what i'm talking about:
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.