Jump to content

VegaS™

Forum Moderator
  • Posts

    656
  • Joined

  • Last visited

  • Days Won

    187
  • Feedback

    100%

Everything posted by VegaS™

  1. I'm sorry for this guys, but if you want to fix it properly, that's the only solution, the rest is just a workaround.
  2. Ok, I just tested right now with a default metin2 client and that's not a real 'beep', it's an 'Asterisk' sound from Windows and it comes from PythonApplication.cpp: unsigned __GetWindowMode(bool windowed) { if (windowed) return WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX; return WS_POPUP; } If you remove WS_SYSMENU from the style, you won't get the sound anymore but you won't see the buttons and icon too. UPDATE Alright, after some debugging: Here is a fast fix and should work fine, I didn't test it so well. UserInterface\PythonApplicationProcedure.cpp [Hidden Content] Before: [Hidden Content] (everywhere in the client) After: [Hidden Content]
  3. game/src/constants.cpp I didn't check the code, but the aiPolymorphPowerByLevel array it's missing a value by default, that one should be 0 when you've level 0 on the skill itself, then for level 1 (10), level 2 (11) [...]. It should be like this: [Hidden Content]
  4. I can't test this right now in-game, but from a fast check, it seems that hide_horse_state command is sent from the server-side when you unsummon the horse, which is defined in interfaceModule.py as HideHorseState: def HideHorseState(self): self.affectShower.SetHorseState(0, 0, 0) def UpdateHorseState(self, level, health, battery): self.affectShower.SetHorseState(level, health, battery) That means when you unsummon the horse, the SetHorseState function is called with (0, 0, 0) arguments, and there's a condition which check if the level is 0, then set the self.horseImage variable as a null value, without arrange the images. So, in theory, we just need to call the __ArrangeImageList function after that, and it should be fine, the images will be sorted again. root/uiAffectShower.py Search for the function: def SetHorseState(self, level, health, battery): [...] Replace it with: [Hidden Content]
  5. Good news for p-servers and owners! In the last years, over one hundred people asked me if they can hire me to be their developer and I refused them because I was really busy, mostly with my university, full-time job, and other activities. Now, after over 10 years of activity in metin2 and over 4 years in companies as a Software Developer and recently advanced to Senior, I managed to organize my time and tasks really efficiently, and I'm pleased to announce that: Since today, I'll give the chance to owners to hire me as a developer! My defining characteristics: Mainly focused on Python and C/C++ with years of real experience, but I can code in multiple languages. Excellent communication skills and a good understanding of problems and requirements, with the ability to work as part of a diverse team. Ability to manage and plan in a fast-paced, team-focused environment, ability to manage time effectively and prioritize tasks. Flexible and resilient when it comes to stressful situations. Detail-oriented, organized, meticulous, and able to work at a fact-pace with tight deadlines. More information related to my educational and professional experience, you can find them here (click). You must have (a few steps can be done together later): good english skills for communicating with voice and text an application for project management like Trello, Jira, Azure DevOps, or YouTrack, that will boost productivity minimum knowledge-based of talking technical, expressing with clear words what you need, describing the tasks with information like scenarios, attaching photos, drawing different things for structures when it's related to a complex thing, and more GIT repository with your files Microsoft Teams for team meetings, they will be scheduled inside that app, there you have a calendar, activities, and a lot of stuff for boosting productivity, everything will be scheduled based on our time, excluding the urgent situations you must be a friendly, patient person and understand the principle of my personal life as well. Payment (the conditions are customizable for each person): The owner must have its own budget because it will be a fixed monthly salary. The payment will be done through my company, you'll receive an invoice for each payment, which means you've to be transparent with me related to your personal information or company ones. For more information, contact me: https://www.vegas-projects.com/contact-me/ Please don't contact me just for information if you're not sure what you want to do, and you're not prepared for this.
  6. Srcs/game/questlua_pc.cpp namespace quest { [...] int pc_is_cube_open(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); lua_pushboolean(L, ch && ch->IsCubeOpen()); return 1; } [...] } luaL_reg pc_functions[] = { [...] { "is_cube_open", pc_is_cube_open }, [...] } share/locale/country/quest/quest_functions pc.is_cube_open your_quest.lua if pc.is_cube_open() then say("CUBE_WINDOW_IS_OPEN") return end
  7. local job_items = { [0] = { {15, 1}, {11205, 1}, {12205, 1} }, [1] = { {1005, 1}, {11405, 1}, {12345, 1} }, [2] = { {15, 1}, {11605, 1}, {12485, 1} }, [3] = { {7005, 1}, {11805, 1}, {12625, 1} }, } local item_table = job_items[pc.get_job()] if item_table ~= nil then for key, value in ipairs(item_table) do pc.give_item2(unpack(value)) end end Just to know: pc.give_item2(unpack(value)) -- equivalent to: pc.give_item2(value[0], value[1]) -- equivalent to: local vnum, count = unpack(value) pc.give_item2(vnum, count)
  8. It should be like this: for key, value in ipairs(same_items) do pc.give_item2(unpack(value)) end
  9. imePasteString and chatGetLinkFromHyperlink is responsible for this. Here you have a small tutorial on how to disable it:
  10. It won't work because you just initialized the structure with the default values from the constructor, which means window_type will be always INVENTORY You already have the GetWindow function inside of CItem class, you can use it like this: if (MALL == item->GetWindow()) { [...] } Or if you really want to use TItemPos and the functions from it, you must initialize it properly: const TItemPos Cell(item->GetWindow(), item->GetCell());
  11. or: That's a small tip for the next time when you're coding, so you'll know if it's a critical warning and it needs real attention or not, based on the level. [Hidden Content]
  12. I will update the repo when I will have some free time, right now I'm very busy with the university and the job. For those who want to contribute to it, you can do a pull request in the GitHub repository.
  13. self.wndItem[itemSlotIndex].SetChangerImage() self.wndItem it's an object, basically a class (GridSlotWindow), not a list/tuple/dict [...], that means it doesn't have a __getitem__ method implemented by default. So, you should replace that line with a simple call as a member function from an instance: self.wndItem.SetChangerImage() The function must be implemented in ui.py inside of class GridSlotWindow. Seems that your 'system' is incomplete. But based on the function name, I think it's changing the base image of the slot, so you can try to add something like this: [Hidden Content] Of course, you've to change the image path based on your needs.
  14. Hi, thanks for the release, but you don't need any extra function, you just need to select the change look vnum. item.SelectItem(changelookVnum) valu3 = item.GetValue(3) # Set selected item as the old one because it's used later in other conditions item.SelectItem(oldItemVnum) So, the code should looks like: elif itemSubType == item.COSTUME_TYPE_HAIR: if self.__ItemGetRace() == player.GetRace(): value3 = item.GetValue(3) if app.ENABLE_CHANGE_LOOK_SYSTEM and getChangelookVnum: item.SelectItem(getChangelookVnum) value3 = item.GetValue(3) self.__ModelPreview(value3, 1, player.GetRace()) item.SelectItem(itemVnum)
  15. Summary Thread Last Update → Monday 1 April 2024 Powered by Core X Programming & Scripts 395 Topics Features & Metin2 Systems 421 Topics Bug Fixes 263 Topics Quest Functions & Features 38 Topics Commands 30 Topics Metadata 9 Topics Hack Protection & Security 28 Topics Interfaces 15 Topics
  16. Based on what martysama said in his reply, these are the changes you've to do: InstanceBase.h // Search for: typedef std::list<SEffectDamage> CommandDamageQueue; // Replace with: typedef std::queue<SEffectDamage> CommandDamageQueue; InstanceBaseEffect.cpp [Hidden Content] Exclamation: I'm not responsible for this solution.
  17. You are right, I helped some people with this problem in PM but I forgot to edit the topic. Update: For those who know what they're doing, I did a small script that doing this faster, otherwise, use the manual method from the first post. [Hidden Content]
  18. @ReFresh I have joined in many computers of players/owners during the last years, and trust me, I saw just a few people who're using 'small taskbar buttons'. Mainly, just the owners are using it since they have a lot of apps, but a player who's just a normal gamer, won't put all the games/apps he is playing/using to the taskbar for having it full, maybe just if he has a laptop with a small resolution, maximum. The badges on the taskbar buttons aren't available in the small taskbar mode, it's Microsoft logic and it's a good one. Otherwise, would be a mess since in this mode all of the icons are scaled and they losing quality, if they would add a small badge there, it would look so bad. Even on apps like Skype, Messenger is not working which it's directly for chatting and it's much more important a badge count of messages. I'm sure that for metin2 wouldn't be a drama for hundreds of players if hundreds of millions don't make it for real chatting apps. Take a look on an example of my screen 5120x1440, how it would look with the small taskbar buttons and a badge, both of them scaled, you really can't see it and I've glasses , you would need Magnifier Zoom to see it. So I think it's enough how it is right now: You still get a flash notification (flashing until you open it) when you have the small taskbar buttons enabled, you don't need anything more. Related to other activities, if you read the last line which I wrote in the first reply, then you will understand, so let's wait for that. Thanks for your feedback.
  19. M2 Download Center Download Here ( Internal ) [hide][Hidden Content]] Posted in 2020, but it was removed due to a rollback in the forum, now it's back. Hello girls, I think it's my first time when I release a system/feature directly for servers, until now I provided just scripts/functions for 'developers', let's see how it works. 1. Compatibility Most of you know that for applying a badge to the parent icon we need to have the application ungrouped. So, basically for this, we need to use Win32 API -> SetCurrentProcessExplicitAppUserModelID, which must be called during the application's initial startup routine, before presents any UI, basically in the initialization of singleton class would be fine. Before doing the ungroup of the taskbar, we've to check the operating system version, since many players in metin2 still using XP/Vista and this feature is working since Windows 7+. So there's a function called IsWindowsCompatibleVersion which check if the version is at least Windows7 then trying to do the ungroup and if successful then set a variable m_isWindowsCompatible to true, so we can check later other functions with it, that means the feature will be totally disabled for those who aren't compatible. 2. Cache features When the application is created it's loading all resources and creates only one object on the local system for the taskbar interface. 3. Features Show badges on the taskbar (ON/OFF) Flash notification + badge Counted flashes, using small taskbar icons + badge option 4. Activity Mini version: Paid version: If you find any problem, write me a PM or use the 'issues' category on GitHub, let's don't spam the topic with useless messages and keep it clean. If you implement it, attach a gif to the topic, and if many people use it, maybe I update the repository with other activities for free.
  20. I forgot the ui.py part, I updated the first reply, check it now.
×
×
  • 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.