Jump to content

xP3NG3Rx

Honorable Member
  • Posts

    839
  • Joined

  • Days Won

    393
  • Feedback

    100%

Everything posted by xP3NG3Rx

  1. It has syntax error somewhere in the lua file.
  2. You can play with ui.ImageBox().SetAlpha([0.0 .. 1.0])
  3. Of course every each clients contain the python files under the gameforge. Globally patchserver, same files, excluded the locale files. But you know, if you are making a new patch you have to check everything before you put it on the servers to make it available for everyone. If you are taking only one look on the root pack, you must see something is not correct there... In this case the size of the packed root file. This is totally incomprehensible to me right now, I'm just laughing on them
  4. No, they don't. Actually the Brazilian servers are running by ongame and not by gameforge O.o.
  5. The brazilian guys made the same mistake, or probably these actions aren't mistakes? [M2] BR Python core 15.03.18.7z
  6. Probably you can extend this for the FindVictim as well. I mean if an aggressive monster looks for a potential victim, it will skip the safe zone. Trigger.cpp --> FuncFindMobVictim Actually I am using this in the CHARACTER::Follow and works pretty well:
  7. The blinking method has been called when the whisper dialog is closed or minimized, I think you have to implement a new function like a kind of "seen" stuff, when a message arrives it starts to blinking and when you click on the dialog it stops. It sucks when you already "in" the board, because if a message arrives it would start to blink and you have to click out and click in again to stop it. Btw there is the "OnTop" function for to begin. I know it isn't impossible but these things are too little to take it too serious
  8. Here it is: [Hidden Content] Btw there is the filerequest thread, next time post there.
  9. You can communicate with the warehouse from the inventory through the interface.
  10. Not everyone have this bug
  11. Hello. I was looking inside the official python files and I found a little fix for this: Let me explain a bit the problem. If you leave open the inventory/dragon soul inventory/expanded taskbar or the affected objects and then you are using quest for teleportation, the windows what you left open will be closed because of the quest and when the quest executed those windows what you left open before would be opened again, but the warp is killing this procedure and that happens what you can see in the video, the windows are there but you cannot see them. Btw you can close them with escape key. The fix is coming from webzen: Simple, just execute a .Hide() function before the Destroy function has been called on that object what is stuck on the main window after teleport and that's it. For example: interfaceModule.py -> Interface class -> Close function: if self.wndInventory: self.wndInventory.Hide()#fix self.wndInventory.Destroy() if self.wndDragonSoul: self.wndDragonSoul.Hide()#fix self.wndDragonSoul.Destroy()
  12. Probably. I think the GUI has fix slots, so if you are trying to open a box which contain more items it will cry. But the idea isn't bad.
  13. Oh, than I'm really stupid, because I don't know any way from those .
  14. 2018 and still python22 gg&wp. btw for the errorlog there is the error_lookup.py
  15. Every patchservers are containing it. They cythonized tho, just packed with wrong script :rofl:
  16. No, I've tried 100 times to find a couple of functions what have never been changed and the patternfinder doesn't give back any valuable result. This is the reason why I stuck. And the offset of the functions always changed after every start so I can't tell to my tool that this function is on this offset hook it, because at the second start the function is on another offset already. Oh yeah, and I've tried the searching on the .BR binary as well and every single try was successful. So the lueco shell is sucks. Btw should be enough to modify only one byte in the memory and you'll be able to unpack via python. int __cdecl sub_5161660(int a1, int a2) { int v3; // ST14_4 char v4; // [esp+Ch] [ebp-164h] int v5; // [esp+15Ch] [ebp-14h] int v6; // [esp+160h] [ebp-10h] int v7; // [esp+16Ch] [ebp-4h] if ( !PyTuple_GetString(a2, 0, &v6) ) return Py_BuildException(0); if ( packExists(v6) ) { sub_53DA140(&v4); v7 = 0; v5 = 0; if ( sub_5441430(0, (int)&v4, v6, (int)&v5) ) { sub_53DA3D0(&v4); v3 = python27_Py_BuildValue("s#"); v7 = -1; sub_53DA580(&v4); return v3; } v7 = -1; sub_53DA580(&v4); } return Py_BuildException(0); } int __cdecl sub_5161660(int a1, int a2) { int result; // eax int v3; // ST14_4 char v4; // [esp+Ch] [ebp-164h] int v5; // [esp+15Ch] [ebp-14h] int v6; // [esp+160h] [ebp-10h] int v7; // [esp+16Ch] [ebp-4h] if ( !PyTuple_GetString(a2, 0, &v6) ) return Py_BuildException(0); sub_53DA140(&v4); v7 = 0; v5 = 0; if ( sub_5441430(0, (int)&v4, v6, (int)&v5) ) { sub_53DA3D0(&v4); v3 = python27_Py_BuildValue("s#"); v7 = -1; sub_53DA580(&v4); result = v3; } else { v7 = -1; sub_53DA580(&v4); result = Py_BuildException(0); } return result; } metin2client.exe:051616A0 test edx, edx metin2client.exe:051616A2 jnz short loc_51616CA metin2client.exe:051616A4 push 0 metin2client.exe:051616A6 call Py_BuildException metin2client.exe:051616AB add esp, 4 metin2client.exe:051616AE jmp loc_516176A metin2client.exe:051616B3 ; --------------------------------------------------------------------------- metin2client.exe:051616B3 mov eax, [ebp+var_10] metin2client.exe:051616B6 push eax metin2client.exe:051616B7 call packExists metin2client.exe:051616BC add esp, 4 FROM: 85 D2 75 0F 6A 00 E8 45 58 28 00 83 C4 04 E9 B7 00 00 00 8B 45 F0 50 E8 D4 FE FF FF 83 C4 04 TO: 85 D2 75 26 6A 00 E8 45 58 28 00 83 C4 04 E9 B7 00 00 00 8B 45 F0 50 E8 D4 FE FF FF 83 C4 04 "75 0F" is a short jump at 0x51616A2 Sig: (85 D2 75 0F 6A 00 E8 ?? ?? ?? ?? 83 C4 04 E9 ?? ?? ?? ?? 8B 45 F0 50 E8 ?? ?? ?? ?? 83 C4 04) + 3 The 26 instead of 0F will skip the dot and the extension check if-statement. So after the patch the packGet would looks like this: PyObject * packGet(PyObject * poSelf, PyObject * poArgs) { char * strFileName; if (!PyTuple_GetString(poArgs, 0, &strFileName)) return Py_BuildException(); CMappedFile file; const void * pData = NULL; if (CEterPackManager::Instance().Get(file, strFileName, &pData)) return Py_BuildValue("s#", pData, file.Size()); return Py_BuildException(); }
×
×
  • 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.