-
Posts
855 -
Joined
-
Days Won
402 -
Feedback
100%
Content Type
Forums
Store
Feature Plan
Release Notes
Docs
Events
Everything posted by xP3NG3Rx
-
-
That is the class pointer of the MainStream class. networkModule.py: introLogin.py:
- 1 reply
-
- 2
-
-
Cube System Limit Yang
xP3NG3Rx replied to notbugme's topic in Community Support - Questions & Answers
Probably with this? else if ("info" == TokenVector[1]) { if (5 != TokenVector.size()) { TraceError("CPythonNetworkStream::ServerCommand(c_szCommand=%s) - Strange Parameter Count : %s", c_szCommand); return; } long long gold = atoll(TokenVector[2].c_str()); UINT itemVnum = atoi(TokenVector[3].c_str()); UINT count = atoi(TokenVector[4].c_str()); PyObject * poArgs = PyTuple_New(3); PyTuple_SetItem(poArgs, 0, PyLong_FromLongLong(gold)); PyTuple_SetItem(poArgs, 1, PyInt_FromLong(itemVnum)); PyTuple_SetItem(poArgs, 2, PyInt_FromLong(count)); PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_Cube_UpdateInfo", poArgs); } -
How to reduce Dragon Stone Shard
xP3NG3Rx replied to Femintods's topic in Community Support - Questions & Answers
-
Once I've met with this problem, the reason was a comma before the new weapon type, nothing else. It was missing from here: The weapon type of the quiver has been overflowed and got 255 as value. You can check it with this code: if app.ENABLE_QUIVER_SYSTEM: import chat chat.AppendChat(1, str((itemType, itemSubType))) if itemSubType != item.WEAPON_QUIVER: self.__AppendMetinSlotInfo(metinSlot) else: bHasRealtimeFlag = 0 for i in xrange(item.LIMIT_MAX_NUM): (limitType, limitValue) = item.GetLimit(i) if item.LIMIT_REAL_TIME == limitType: bHasRealtimeFlag = 1 if bHasRealtimeFlag == 1: self.AppendMallItemLastTime(metinSlot[0]) else: self.__AppendMetinSlotInfo(metinSlot)
-
official GF-Like Inventory Slot Marking System
xP3NG3Rx replied to xP3NG3Rx's topic in Features & Metin2 Systems
This isn't a bad idea, maybe I'll take it to my TODO list. -
Block Enchant and Reinforce for weapons?
xP3NG3Rx replied to Metin2 Dev's topic in Community Support - Questions & Answers
Via antiflag. -
Thanks for it.
-
I think I need a proper base-finder of process only, but I'm not good enough in hacking soo.
-
I'm not a hero, and will not, sorry
-
[Request] Function "SetPercentageWithScale"
xP3NG3Rx replied to Seryov's topic in Community Support - Questions & Answers
Actually this is the same as the normal just with scale, I cannot understand ymir why did it this way. I mean if you don't change the scale, it is in standard case 1.0 so basically the new functions are not necessary. Just enough to multiply the sizes with the scales. -
[Request] Function "SetPercentageWithScale"
xP3NG3Rx replied to Seryov's topic in Community Support - Questions & Answers
#ui.py def SetPercentageWithScale(self, curValue, maxValue): wndMgr.SetRenderingRectWithScale(self.hWnd, 0.0, 0.0, -1.0 + float(curValue) / float(maxValue), 0.0) // EterPythonLib/PythonWindowManagerModule.cpp PyObject * wndImageSetRenderingRectWithScale(PyObject * poSelf, PyObject * poArgs) { UI::CWindow * pWindow; if (!PyTuple_GetWindow(poArgs, 0, &pWindow)) return Py_BuildException(); float fLeft; if (!PyTuple_GetFloat(poArgs, 1, &fLeft)) return Py_BuildException(); float fTop; if (!PyTuple_GetFloat(poArgs, 2, &fTop)) return Py_BuildException(); float fRight; if (!PyTuple_GetFloat(poArgs, 3, &fRight)) return Py_BuildException(); float fBottom; if (!PyTuple_GetFloat(poArgs, 4, &fBottom)) return Py_BuildException(); if (pWindow->IsType(UI::CExpandedImageBox::Type())) ((UI::CExpandedImageBox*)pWindow)->SetRenderingRectWithScale(fLeft, fTop, fRight, fBottom); else if (pWindow->IsType(UI::CAniImageBox::Type())) ((UI::CAniImageBox*)pWindow)->SetRenderingRectWithScale(fLeft, fTop, fRight, fBottom); return Py_BuildNone(); } // Bottom of the file where is the functionlist: { "SetRenderingRectWithScale", wndImageSetRenderingRectWithScale, METH_VARARGS }, // EterPythonLib/PythonWindow.h // class CExpandedImageBox --> Public function definition: void SetRenderingRectWithScale(float fLeft, float fTop, float fRight, float fBottom); // class CAniImageBox --> Public function definition: void SetRenderingRectWithScale(float fLeft, float fTop, float fRight, float fBottom); // EterPythonLib/PythonWindow.cpp // Add this near to the CExcpandedImageBox functions void CExpandedImageBox::SetRenderingRectWithScale(float fLeft, float fTop, float fRight, float fBottom) { if (!m_pImageInstance) return; ((CGraphicExpandedImageInstance*)m_pImageInstance)->SetRenderingRectWithScale(fLeft, fTop, fRight, fBottom); } // Add this near to the CAniImageBox functions struct FSetRenderingRectWithScale { float fLeft, fTop, fRight, fBottom; void operator () (CGraphicExpandedImageInstance * pInstance) { pInstance->SetRenderingRectWithScale(fLeft, fTop, fRight, fBottom); } }; void CAniImageBox::SetRenderingRectWithScale(float fLeft, float fTop, float fRight, float fBottom) { FSetRenderingRectWithScale setRenderingRect; setRenderingRect.fLeft = fLeft; setRenderingRect.fTop = fTop; setRenderingRect.fRight = fRight; setRenderingRect.fBottom = fBottom; for_each(m_ImageVector.begin(), m_ImageVector.end(), setRenderingRect); } // EterLib/GrpExpandedImageInstance.h // class CGraphicExpandedImageInstance --> Public function definition: void SetRenderingRectWithScale(float fLeft, float fTop, float fRight, float fBottom); // EterLib/GrpExpandedImageInstance.cpp void CGraphicExpandedImageInstance::SetRenderingRectWithScale(float fLeft, float fTop, float fRight, float fBottom) { if (IsEmpty()) return; float fWidth = float(GetWidth() * m_v2Scale.x); float fHeight = float(GetHeight() * m_v2Scale.y); m_RenderingRect.left = fWidth * fLeft; m_RenderingRect.top = fHeight * fTop; m_RenderingRect.right = fWidth * fRight; m_RenderingRect.bottom = fHeight * fBottom; } A couple of minutes of RE -
It has syntax error somewhere in the lua file.
-
crontab + api much more sexy
-
I think that will never gonna happen.
-
Request TGA Fade in fade out effect
xP3NG3Rx replied to Seryov's topic in Community Support - Questions & Answers
You can play with ui.ImageBox().SetAlpha([0.0 .. 1.0]) -
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
-
No, they don't. Actually the Brazilian servers are running by ongame and not by gameforge O.o.
-
The brazilian guys made the same mistake, or probably these actions aren't mistakes? [M2] BR Python core 15.03.18.7z
-
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:
-
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
-
Here it is: [Hidden Content] Btw there is the filerequest thread, next time post there.
