Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 10/04/19 in all areas

  1. ... #closed btw: you should really work on your code quality.
    4 points
  2. Instead of repeating yourself in every reply that the code is bullshit, how about showing us your coding skills and let us criticize it too? I'm sure that i'll have a lot of fun, and not only me. ? Btw, is funny how you're talking about shit code and say to people 'learn how to code', when you do this:
    4 points
  3. Holly kebab! This code looks like chernobyl.
    3 points
  4. BAN All public systems in TR forum looks like this "Aura system :D" ?
    2 points
  5. (2.4) Content Don't post commercial stuff others made and/or sell commercial stuff others made.
    2 points
  6. M2 Download Center Download Here ( Internal ) Download Here ( Latest Version ) This WE is a version compiled directly by me which includes infinite fixes and features. It's certain that you won't longer use the worldeditor_en! To make it simple, I wrote all the details about this feature and the common WE inside the relative config file: (called WorldEditorRemix.ini) ; Info: ; -) 100% translated ; -) granny2.11 ; -) F6 as Insert alternative ; -) many default features not present inside the worldeditor_en (probably, that binary was taken out from an SVN long time ago and resource hacked) such as Ins for all regions and skyboxes ; -) WASD UPLEFTDOWNRIGHT to move around (+asynchronous diagonally movements) ; -) UP-LEFT-DOWN-RIGHT to move around*10 (+asynchronous diagonally movements) ; -) config file for few things ; Output options by default ; few others such as default WASD movement ; whether or not Insert should let you go where you were before the press ; no MAI dump when saving atlas ; whether or not DevIL should compress and remove alpha from minimap.dds ; whether or not loading .mdatr building heights ; default textureset when creating maps ; overlapped tabs ; other stuff ; -) several bugfixes ; default title app name ; attempting to write to an empty textureset name when creating new maps ; ViewRadius doubled every load&save ; shadowmap.dds creation ; assert when saving atlas ; crash when adjusting height ; many buffer under/overflows ; *.mdc collision data saving (for game_test) ; not checking output options when loading maps ; water brush waterid bug (the id was increased until 256 each time the function was called; now it's based on the water height just like it should be) ; init texture map reload map crash and last 2px always blank ; square shape even for up/down height brushes ; add textureset texture button (+multiselection) ; remove textureset texture feature (just selecting a texture from the list and pressing DELETE) ; creation of empty textureset with index -1 (changed to 0) ; change baseposition button ; misspelled stuff ; skybox bottom image (nb: you also need a fixed launcher for this) ; removed boring CTRL requirement (to move the camera) when editing daylight/attr ; fixed refresh texture imagebox onKey pressing the down/up keys (like when onClicking them) ; fixed TextureSet file creation if not existing ; fixed new wolfman motion event handling ; fixed crash when editing animation attack bones and 00010.gr2 was missing ; fixed locale/ymir/mob_proto load (it autodetects the most common structures) and <map>/regen.txt load/save ; fixed ./group.txt load ; fixed load/save/edit <map>/regen.txt (very nice for "m" regens, untested for "g") ; load from PACK is available if pack/property is present! Be sure pack/Index exists! ; fixed multi-object selection crash ; fixed crash when previewing a missing texture ; fixed not clearing of old environment (e.g. skybox) when switching maps ; fixed not creating property folders in root tree (object tab) ; fixed object attachment in Model Tab ; fixed newly particles names in Effect Tab ; fixed crash when saving a .mse script with no mesh model ; fixed crash when inserting a lower gradient ; -) created new TextureSet field when creating new maps ; -) created new Change/Delete Texture buttons when double-clicking a texture ; -) created Background Music playback and Shadow Recalculate buttons ; -) created water height "set 0z", "+1z", "-1z" buttons ; -) server_attr generator ; -) every crash will generate a logs/WorldEditorRemix_{target}_{date}.dmp file useful for debugging ; -) implemented a "water path" mapsettings option (the launcher requires additional code) ; -) implemented a "wind strength" msenv option (the launcher requires additional code) ; -) the "encrypt data" feature does nothing (unimplemented) ; Note: ; 0) there are no regressions in this version! a bug here means it'd also be present in older WE versions too! ; 1) the shadow output option is tricky: when UpdateUI is called, shadows are hidden although the check is pressed (i implemented the shadow recalculate function for that) #fixed since v11 ; 2) the bgm player requires /miles and the fadein/out doesn't work until you load the map ; 3) the adjusting height button works only if mdatr height is detected ; 4) the Debug version is laggy when working on maps such as n_flame_dungeon and n_ice_dungeon (by default, because SphereRadius are intensively checked in SphereLib\spherepack.h) ; 5) if you load a map, the script panels (where you load .msa et similia) will have the camera perspective a little fucked up (0z instead of -32767z or 0x 0y -163,94z) ; 6) few tree objects are not movable and/or highlightable after placed on the ground and their selection is invisible (you can still delete 'em) ; trick: draw a square selecting a normal building and 'em, then move the building and you'll see all of 'em will be moved! ; 7) the server_attr generator will clean all the unused flags! attr[idx]&=~0xFFFFFFF8; ; 8) you can read files from pack/Index 'n stuff but be aware that Property will not be considered! #fixed since v15 ; 9) the MonsterAreaInfo features are laggy and buggy as fuck ; 10) even though you can select many textures at once (using ctrl+click on textureset list; for brushing or initializing a base texture), you can't delete more than one at the same time ; 11) the .mdatr height is tricky; if you move a building, the height will not be refreshed until you put a new building or whatever you want to trigger the update event ; 12) by default, the worldeditor tries to render only the first 8 terrain textures of a 32x32px region (nb: a 1x1 map is a 256x256 px region) ; 13) the minimap rendering cannot catch the buildings/trees inside the first 2x2 regions due a ymir cache fault and you need to set the camera to "see" them ; 14) when the textureset, environment, etc load fails, the old filename still remains loaded ; 15) the attr flag "3" (three) has no implementation, so don't use it! ; 16) load from PACK doesn't load texturesets from files for first (if they are already in pack/), and the object placer's object list will remain empty because it takes the list from property/ (and not from pack/property) ; 17) to save the regen.txt you press CTRL+S ; 18) if you enable the wireframe (f4) when on Attr Tab, you see the terrain all white ; 19) the water brush disappears when the camera renders the waterwheel small/big effect ; 20) the monster area info goes under ground if you're outside the relative sectree ; 21) the full skybox may be displayed only after the top picture has been added (if the other textures have already been inserted) ; 22) the slider in the Attr Tab is something like "16 photoshop layers" in which you can split your attrs; not so helpful and quite confusing sometimes ; 23) the fixed model - object attachment attaches static objects (hairs'skeleton will not mirror the playing animation) ; 24) in environment tab, if you insert lower gradients, you may end up with an out of range crash #fixed since v30 ; 25) brushes working out-of-screen/map-range may affect random terrain places ; TODO: ; A) look at more than 8 textures for region -> DONE ; B) create a shortcut to fix the #5 note -> DONE ; C) disable the radius <= GetRadius()+0.0001f check to fix the #4 note -> REJECTED ; the worldeditor_en calls this assert and, if ignored, the lag ceases to exist (this will not occur in source version) ; at least, if the release version is not a problem for you, use that in those few cases when .mse are abused and try to kill the debug one ; D) translation in more languages other than english -> REJECTED ; english should be enough! ; E) alternative path for d: -> REJECTED ; you can mount d as a subpath of c like this: ; subst d: "c:\mt2stuff" ; F) need to fix note #19 #25 -> TODO [shortcuts] ; ### SHORTCUTS ; # ESC(ape) Clean cursor ; # Canc(el|Delete) Delete stuff such as selected buildings ; # Ctrl+S Save map ; # Ins(ert) or F6 Save shadowmap|minimap.dds ; # F3 BoundGrid Show/Hide ; # F4 Render UI Show/Hide ; # F11 WireFrame Show/Hide ; # R Reload Texture ; # Z and X Decrease/Increase Texture Splat by 0.1 ; # CapsLock Show GaussianCubic effect if shadows are displayed ; # L-Shift+1-6 Show TextureCountThreshold flags (&2-7) as colors on the ground ; # L-Shift+8 Set Max Showable texture to 8 (de-fix note 12) ; # L-Shift+0 Set Max Showable texture to 255 (fix note 12) ; # H Refresh MDATR Heights (useful when you move an object) (fix note 11) ; # Y Set Perspective as default (fix note 5) ; # T Set the Camera to catch all the object on the screen (w/a note 13) then you'll be ready to press Insert/F6 ; # DO NOT HAVE AN OBJECT SELECTED WHEN USING THOSE SHORTCUTS (MW1-7) ; # MouseWheel+1 move cursor x rotation ; # MouseWheel+2 move cursor y rotation ; # MouseWheel+3 move cursor z rotation ; # MouseWheel+4 move cursor height base (1x) ; # MouseWheel+5 move cursor height base (0.5x) ; # MouseWheel+6 move cursor height base (0.05x) ; # MouseWheel+7 move cursor ambience scale (1x) ; # MouseWheel+Q move selected object height base (1x) ; # MouseWheel+9 move selected object x position (1x) (+asyncronous) ; # MouseWheel+0 move selected object y position (1x) (+asyncronous) ; # MW+RSHIFT+9|0 as above but *10x (+asyncronous) ; # MW+RCONTROL+9|0 as above but *100x (+asyncronous) ; # MouseLeft Insert Objects ; # MouseRight Move camera (it could require CTRL too) ; # SPACE Start move/selected animation in Object/Effect/Fly CB ; # ESC Stop animation in Effect/Fly CB [config] ; ### CONFIG OPTIONS VIEW_CHAR_OUTPUT_BY_DEFAULT = 1 VIEW_SHADOW_OUTPUT_BY_DEFAULT = 1 VIEW_WATER_OUTPUT_BY_DEFAULT = 1 ; WINDOW_HEIGHT_SIZE = 1080 ; WINDOW_WIDTH_SIZE = 1920 WINDOW_FOV_SIZE = 45 ; #100 = 1px (minimal px movement when pressing WASD) WASD_MINIMAL_MOVE = 100 ; came back from where you were before pressing Insert/F6 NO_GOTO_AFTER_INSERT = 1 ; disable MAI dumps when saving atlas and/or pressing Insert/F6 NOMAI_ATLAS_DUMP = 1 ; disable minimap.dds alpha saving and enable compression NOMINIMAP_RAWALPHA = 1 ; enable .mdatr height collision loading when moving on buildings or adjusting terrain DETECT_MDATR_HEIGHT = 1 ; disable fog when loading maps NOFOG_ONMAPLOAD = 1 ; refresh all checkbox configurations when loading maps 'n stuff REFRESHALL_ONUPDATEUI = 0 ; set a default mapname prefix when creating new maps ("" to disable) NEW_MAP_MAPNAME_PREFIX = "metin2_map_" ; display a default textureset when creating new maps ("" to disable) ; note: it loads the filepath if exists, otherwise it will create an empty textureset file NEWMAP_TEXTURESETLOADPATH = "textureset\metin2_a1.txt" ; create a default textureset as "textureset/{mapname}.txt" ; note: this option is not considered if NEWMAP_TEXTURESETLOADPATH is not empty. [before v24] ; note: this option is not considered if the TextureSet path input is not empty when creating a new map [since v24] NEWMAP_TEXTURESETSAVEASMAPNAME = 1 ; remove the weird attr flags from the generated server_attr SERVERATTR_REMOVE_WEIRD_FLAGS = 1 ; show diffuse lighting to object VIEW_OBJECT_LIGHTING = 1 ; path of mob_proto used for regen MOB_PROTO_PATH = "locale/ymir/mob_proto" ; select monster area info checkbox at startup VIEW_MONSTER_AREA_INFO = 0 ; brush cursor / object selection color RGB float between 0.0 to 1.0 (default: green -> 0 1 0) RENDER_CURSOR_COLOR_R = 0.0 RENDER_CURSOR_COLOR_G = 1.0 RENDER_CURSOR_COLOR_B = 0.0 Download: [Hidden Content] How To Map: This release will not cover this part. Look at CryPrime`s tutorials to understand how to do it. About the ServerAttr Generator: (since v14) This is a beta function but it should work fine. I tested it on gm_guild_build (1x1), metin2_map_a1 (4x5), metin2_map_trent (2x2), metin2_n_snowm_01 (6x6) and the result was the same as the blackyuko map editor. (I use a different lzo version and I clean deprecated and useless flags, so the size is different from this last one but the "final image" will be the same; using game_test to fix his server_attr will let mine and his perfectly equal byte per byte) I also give you the source code of my server_attr generator function. CLICK A server_attr file is based on all the attr.atr files merged into a one raw RGBA image and each one scaled from 256x256 to 512x512. After that, the image will be splitted into sectors of 128x128 px and each one compressed using lzo compression. The server_attr header is composed by the size of the map*4. (e.g. a 4x4 will have a 16x16 size with 256 sectors inside) (gj ymir CLICK) An uncompressed server_attr sector is just like this: CLICK (the sub 4 byte header is the size returned by the LzoCompress which indicates how much the compressed sector data are large) Each attr.atr is just like this: CLICK (the header is composed of 6 byte in total: 3 WORDs respectively for version, width and height; they are always 2634, 1, 1 so don't bother about it) A single attr.atr scaled from 256x256 to 512x512 will be just like this: CLICK You can use the game_test (from source) to perform few tasks like: Create a server_attr from a .mcd file (I won't suggest it) a <collision data filename> <map directory> Regenerate an old server_attr to server_attr.new using the current lzo compression and cleaning useless flag CLICK c <filename> Other stuff such as b to create a character instance or q to quit About the SkyBox Bottom pic fix: (since v21) Both metin2launch.exe and worldeditor.exe should be edited to see the bottom pic of the skybox. Ymir messed up the code wrongly flipping the bottom image. Open ./Srcs/Client/EterLib/SkyBox.cpp and replace: ////// Face 5: BOTTOM v3QuadPoints[0] = D3DXVECTOR3(1.0f, -1.0f, -1.0f); v3QuadPoints[1] = D3DXVECTOR3(1.0f, 1.0f, -1.0f); v3QuadPoints[2] = D3DXVECTOR3(-1.0f, -1.0f, -1.0f); v3QuadPoints[3] = D3DXVECTOR3(-1.0f, 1.0f, -1.0f); with: ////// Face 5: BOTTOM v3QuadPoints[0] = D3DXVECTOR3(1.0f, 1.0f, -1.0f); v3QuadPoints[1] = D3DXVECTOR3(1.0f, -1.0f, -1.0f); v3QuadPoints[2] = D3DXVECTOR3(-1.0f, 1.0f, -1.0f); v3QuadPoints[3] = D3DXVECTOR3(-1.0f, -1.0f, -1.0f); then recompile. Credits:
    1 point
  7. M2 Download Center Download Here ( Internal ) Download Here ( GitHub ) Hello, [Hidden Content] You have a video example on that I made. You need to make the encoding match. You can use Bandi Video Converter. Result:
    1 point
  8. M2 Download Center Download Here ( Internal ) Hi, today I want to show you a tool for comparing files such as: locale_game.txt locale_interface.txt item_names mob_names and etc... Struct KEY[TAB]VALUE DOWNLOAD VT
    1 point
  9. M2 Download Center Download Here ( Internal ) This is my first new map i have created. You can use it as Trademap. Free feel to use. Important Please do not release this without my permissions elsewhere as it's only for metin2dev!
    1 point
  10. M2 Download Center Download ( Latest Version )
    1 point
  11. M2 Download Center Download Here ( Internal ) Hi, Halloween is almost here and i've finished halloween stuff for this year. As always i release something for free, for this time the halloween broom mount. Download: [Hidden Content]
    1 point
  12. Hi everyone! Halloween is coming! And as every year, i prepared stuff for the event! Videos:
    1 point
  13. root/introLogo.py self.videoList = ["logo1.avi", "logo2.avi"] [....] self.playingVideo = app.OnLogoOpen(self.videoList[self.nextLogoIndex])
    1 point
  14. It is like talking to a wall. @Rakancito gave him an advice and he responded with a (put it up your a$$) comment .
    1 point
  15. Dude, I'm the one who sold this system. dude, if you prefer is int type ,use int type, but I use byte type, and never encountered a problem before
    1 point
  16. No, sorry. i forgot to ask @Raylee to close this topic.
    1 point
  17. Yes, i can, anyone can code in turkish code.
    1 point
  18. I think your 2 brain cells are fighting who to go first or something. @kiyagan when I replyed to your topic about aura system you told me to ask people about you bcs you are somekind of big shit... and here we are now. The almighty Turckish Dev. Condolences for the guys that bought this sistem.
    1 point
  19. yeah its working now!! Thanks a lot...
    1 point
  20. Public shit lafını duydunmu hiç.
    1 point
  21. This is not insulting, it's constructive. The system works more or less well, but it could work better. Hello, don't worry, I explain maybe why they say this is a mess, don't take it as an insult, it's a tip for your code if you are going to sell it at 190 EUR, 1. There are things that can work without initializing builders, you need to understand the difference between object and class. 2. It's great that you use Pointers, but abuse of memory space, many things could work without using a pointer, it's not bad, but neither good, I would advise you to read a little more about OOP concepts. 3. (THIS DOESN'T HAVE A LOT OF RELEVANCE BUT IT MATTERS) It's good that you do code in Turkish (it is your language), but there is a programming standard for something, notation please, nor the Chinese program in Chinese, well, this also has to See why the programming is in English, but wtf, you just don't understand anything, there is something called Programming Standards, I would love to program in Spanish, and I don't program in Spanish. 4. Abuses of the data type BYTE, just by observing the code I could notice that everything is in BYTE, it is not bad, but I bet you that one day there will be a crash just because the datatype does not support more than 8 bits, I think That here you need to study the size of each datatype. 5. You handle the exceptions badly, why do you put a NULL factor in an ARITHMETIC type ?, I would understand if they were pointers, but they are not, you should simply study a little more about this, even the compiler will scream. I could keep listing, but I feel lazy to continue checking, it may work personally, but it could work better, maybe you should consider that a lot. Regards ^^.
    1 point
  22. Imagine buying this for 190 £
    1 point
  23. Thanks for release, the idea isn't bad, but there're some bad things. I'll show you the problems part and how can be improved, there're just advices, i hope you'll get them. def __del__(self): if len(self.eventList) > 0: self.eventList.clear() If you're using Python 2+ or Python 3.2 and below, you can't use the clear() method (allowed on 3.3+), also as i said in the second message you don't need to check the length of the list, already the clear() method doing that inside and there's no reason to put it to __del__ method, it will be called when the object is garbage collected. if you really want to use in future, something outside of this and want just to check the list if isn't empty, is enough to do it just with if some_list, like a normal boolean, there no need to check the length of the list if you don't use it in your code. if len(self.eventList) > 0: for j in xrange(len(self.eventList)): [...] You don't have to check the list if you already did a numeric range loop or iterator based loop. app.GetTime() + time I would say to use app.GetGlobalTimeStamp() instead of app.GetTime(), if you teleport while the event is running, the event function will run after 10 seconds like. While app.GetGlobalTimeStamp() will run after the specific time, because is the server timestamp and is updated on each enter in game. if i == 0: self.eventList[j].clear() I would put here an big exclamation, with this you creating 999999999 lines in syserr, what you do here is like: While Process() function is called in OnUpdate, so, your condition trying to get the returned value from an specific function, what means the next update time or 0 to destroy the event/clear it. Everything's fine until you return 0 and event should be stopped yes? But there is a problem, you clear the specific dictionary of event and still remained in the list [{}], and the Process() function will take your self.eventList with the items included, the empty dictionaries from your events, and of course even if you've [{}, {}, {}], that doesn't mean your list is empty, have 3 items, so, the loop will trying to read an empty dictionary and you'll get key errors in each milisecond. The method which you need is to delete the dictionary itself from the list after the result value from the function is 0, like this: _______________________________________ I wrote fast some self extensions, if somebody is interested i'll do another updates in the next days. You can use unlimited arguments on functions, now is using the apply method which returns the result of a function or class object called with supplied arguments, with the old structure you could use just one argument. You can lock/unlock an event for being processed, it's like a prevent in some actions, if the event is created and you want to do something, you should lock the event, do some actions then you can unlock it again and the process function will run where remained. Delete an event instantly and force it to stop the process. Adding return t.EXIT inside of the running function, will delete the event too. Functions to check if an event exists or is locked or not. Check if the function is a method type. Delete the events with a properly method. Using app.GetGlobalTimeStamp() now will give you the chance to run the event after teleport where timer remained instantly. _______________________________________ The code: [Hidden Content] PS: Don't quote this reply, will be updated.
    1 point
  24. A few badges and a small edition of three images. Maybe it will be useful to someone
    1 point
  25. I recently made a switchbot interface. It came out quite interesting, so i can boast:
    1 point
  26. Reupload: [Hidden Content]
    1 point
  27. 1 point
  28. When it comes to working with source code files (C++, LUA, Python) you will encounter a situation where you want to compare files. To help you comparing files there are two tools which we can recommend for that: Beyond Compare With Beyond Compare you are able to compare files and folders and easily find any mismatches. But you have to install another program to use it. Notepad++ Compare Plugin If you already have notepad++ installed, the compare plugin comes in handy. (Thanks to @Johnny69 for this recommendation.)
    1 point
  29. There are a bunch of tools you need to work on your private server. This is only an overview. If you want to know how to work with these programs please use google. There are a lot of tutorials out there. Please notice: Some of these programs do need a valid license which you have to buy. Yes, there are cracks on the internet but sometimes it's worth the money. You decide! Filetransfer (FTP / SFTP) Managing your server (console, ssh) Managing your database (MySQL / MariaDB) Working on text files (there are a lot of them in your sever) Working on image files (there are a lot of them in your client) Oh, one advice at the end: If you want an easy solution on how to install all these programs you just should have a look on [Hidden Content].
    1 point
  30. The server died because it didn't bring any profits to Paul as players modded only once and wouldn't mod again. This, again, is Paul's fault for not being capable to come up with new things for them to buy. He milked the same cow hoping the cow would give him milk forever. You are talking about hiring someone as if you had any sayings in it. Every decision you made went first through Dahlia & Belius.
    1 point
  31. 1 point
  32. I can't find that texture ... at all. The old monk armour texture.
    1 point
  33. Hello Community, I'm not sure what I should tell you about me, and what you really want to know. I'm Jonas (yeah my name isn't Chuck and I'm not Chuck Norris ). I am 17 years old know and was born at the 29th September 1997 and develop now since 5 years, for the people who don't know mathematics I started developing when I was 12 and discovered Metin2 a short time after it was free in Germany (i think it was 2007). I think the most who read this now should know who am i. But for the one who don't know it, I started here as the first member (yeah my id is 1 ). First I was the technical admin (installed the forum and so on), and now after Shogun left the team I'm the head of this little board. If someone want to know more about me just ask here don't be shy Kind regards Chuck
    1 point
  34. önce savaş bölgesi sisteminizi uygun şekilde yapın. Oyuncu haritaya girdiğinde yetenekleri mükemmelleşir, fakat haritayı terk ettiğinde oyun özü verir. Önce kodunu doğru yap ve sonra kod bilgimi göster. Your Combat zone system is constantly in trouble. You learn to code first.
    0 points
×
×
  • 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.