Jump to content

Evor

Member
  • Posts

    84
  • Joined

  • Last visited

  • Days Won

    1
  • Feedback

    0%

Evor last won the day on November 6 2014

Evor had the most liked content!

About Evor

Informations

  • Gender
    Male

Recent Profile Visitors

2786 profile views

Evor's Achievements

Enthusiast

Enthusiast (6/16)

  • First Post
  • Collaborator
  • Week One Done
  • One Month Later
  • One Year In

Recent Badges

71

Reputation

  1. Hello, stuck with proper UV maps caluclation.... (yeah, rectangle too complicated figure) So, all in all i've got something like this: with that: float fWidth = m_width; float fHeight = m_height; float texReverseWidth = 1.0f / (fWidth); // TextureWidth float texReverseHeight = 1.0f / (fHeight); // TextureHeight float su = m_renderRect.left * texReverseWidth; float sv = m_renderRect.top * texReverseHeight; float eu = texReverseWidth * (m_renderRect.left + (m_renderRect.right - m_renderRect.left)); float ev = texReverseHeight * (m_renderRect.top + (m_renderRect.bottom - m_renderRect.top)); SAFE_RELEASE(m_lpd3dOriginalRenderTarget); SAFE_RELEASE(m_lpd3dOldDepthBufferSurface); TPDTVertex pVertices[4]; pVertices[0].position = TPosition(m_renderRect.left - 0.5f, m_renderRect.top - 0.5f, 0.0f); pVertices[0].texCoord = TTextureCoordinate(su, sv); pVertices[0].diffuse = 0xffffffff; pVertices[1].position = TPosition(m_renderRect.left + fWidth - 0.5f, m_renderRect.top - 0.5f, 0.0f); pVertices[1].texCoord = TTextureCoordinate(eu, sv); pVertices[1].diffuse = 0xffffffff; pVertices[2].position = TPosition(m_renderRect.left - 0.5f, m_renderRect.top + fHeight - 0.5f, 0.0f); pVertices[2].texCoord = TTextureCoordinate(su, ev); pVertices[2].diffuse = 0xffffffff; pVertices[3].position = TPosition(m_renderRect.left + fWidth - 0.5f, m_renderRect.top + fHeight - 0.5f, 0.0f); pVertices[3].texCoord = TTextureCoordinate(eu, ev); pVertices[3].diffuse = 0xffffffff; if (CGraphicBase::SetPDTStream(pVertices, 4)) { CGraphicBase::SetDefaultIndexBuffer(CGraphicBase::DEFAULT_IB_FILL_RECT); STATEMANAGER.SetTexture(0, GetRenderTargetTexture()); STATEMANAGER.SetTexture(1, NULL); STATEMANAGER.SetVertexShader(D3DFVF_XYZ | D3DFVF_TEX1 | D3DFVF_DIFFUSE); STATEMANAGER.DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 4, 0, 2); } On the other hand, i've got this: with that: float fWidth = m_width; float fHeight = m_height; float texReverseWidth = 1.0f / (desc.Width); // ScreenWidth float texReverseHeight = 1.0f / (desc.Height); // ScreenHeight float su = m_renderRect.left * texReverseWidth; float sv = m_renderRect.top * texReverseHeight; float eu = texReverseWidth * (m_renderRect.left + (m_renderRect.right - m_renderRect.left)); float ev = texReverseHeight * (m_renderRect.top + (m_renderRect.bottom - m_renderRect.top)); SAFE_RELEASE(m_lpd3dOriginalRenderTarget); SAFE_RELEASE(m_lpd3dOldDepthBufferSurface); TPDTVertex pVertices[4]; pVertices[0].position = TPosition(m_renderRect.left - 0.5f, m_renderRect.top - 0.5f, 0.0f); pVertices[0].texCoord = TTextureCoordinate(su, sv); pVertices[0].diffuse = 0xffffffff; pVertices[1].position = TPosition(m_renderRect.left + fWidth - 0.5f, m_renderRect.top - 0.5f, 0.0f); pVertices[1].texCoord = TTextureCoordinate(eu, sv); pVertices[1].diffuse = 0xffffffff; pVertices[2].position = TPosition(m_renderRect.left - 0.5f, m_renderRect.top + fHeight - 0.5f, 0.0f); pVertices[2].texCoord = TTextureCoordinate(su, ev); pVertices[2].diffuse = 0xffffffff; pVertices[3].position = TPosition(m_renderRect.left + fWidth - 0.5f, m_renderRect.top + fHeight - 0.5f, 0.0f); pVertices[3].texCoord = TTextureCoordinate(eu, ev); pVertices[3].diffuse = 0xffffffff; if (CGraphicBase::SetPDTStream(pVertices, 4)) { CGraphicBase::SetDefaultIndexBuffer(CGraphicBase::DEFAULT_IB_FILL_RECT); STATEMANAGER.SetTexture(0, GetRenderTargetTexture()); STATEMANAGER.SetTexture(1, NULL); STATEMANAGER.SetVertexShader(D3DFVF_XYZ | D3DFVF_TEX1 | D3DFVF_DIFFUSE); STATEMANAGER.DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 4, 0, 2); } I'm missing something, but this direct api makes me crazy. All help gladly appreciated. Regards!
  2. @Kronzu Search for QuestionDialogItem2 and paste here ur py-class. (my guess is uicommon.py) Detail: Class QuestionDialogItem2 dosen't have dropType attribute.
  3. Hello. Does anyone have clean database sql files? Regards.
  4. Is it possible to extract new cython modules? I'm curious if there is any nifty way of doing so.
  5. Hello folks. I encountered a very strange problem with the itemtext. When i drop any item it is working for a while, but one moment and it become like this: How can i fix this issue? I haven't any idea. Regards.
  6. He want's to disable moving certain items (with antiflags) on taskbar, so players cannot use them by pressing hot keys. For me, it's matter of client-side edit.
  7. Same here, maybe cyberghost permit only some countries to their offer?
  8. Hello folks. Today i will show you have to solve some more or less serious bugs. P2P BASHPANEL: DB Account BUG: Kind regards.
  9. Having the information public is the fastest way to get people to take action against it and the fix is in the thread. If you're able to create libs then it should be no problem for you Also having the hack we could test if the c++ fix works [Hidden Content] password: metin2dev only for testing purposes only and i don't know this works because i didn't use it While reading source, i think that, it is an older version of kick hack, because of using WHISPER instead of MESSENGER (friend adding.). Regards..
  10. Hello. Recently, my server is doing really strange things. The main problem is that after several minutes players got randomly disconnected. I mean, they are logged in the first channel, in the first map of empire and randomly they got disconnected. I'm unable to debug game core (more than 1000 players). My syslog showed only that: [Hidden Content] I removed sequence checking: if (m_pPacketInfo->IsSequence(bHeader)) { BYTE bSeq = lpDesc->GetSequence(); BYTE bSeqReceived = *(BYTE *) (c_pData + iPacketLen - sizeof(BYTE)); if (bSeq != bSeqReceived) { LPCHARACTER ch = lpDesc->GetCharacter(); if(!ch) { lpDesc->SetPhase(PHASE_CLOSE); return true; } } lpDesc->push_seq(bHeader, bSeq); lpDesc->SetNextSequence(); } and i bump buffer size from 8192 to 9216. I got really confused... Kind regards, Evor.
  11. Nova has an account here on nickname "Alpha". Ask him for further information.
  12. Hello folks. I don't know if it was "a feature" or not, but it was really annoying and it caused some bugs. So, let's begin. Firstly, we should go to the char.cpp (and we will stay here) Now, let's find the ApplyPoint function and then certain cases.. case APPLY_MAX_HP: case APPLY_MAX_HP_PCT: { int i = GetMaxHP(); if(i == 0) break; PointChange(aApplyInfo[bApplyType].bPointType, iVal); float fRatio = (float)GetMaxHP() / (float)i; PointChange(POINT_HP, GetHP() * fRatio - GetHP()); } break; case APPLY_MAX_SP: case APPLY_MAX_SP_PCT: { int i = GetMaxSP(); if(i == 0) break; PointChange(aApplyInfo[bApplyType].bPointType, iVal); float fRatio = (float)GetMaxSP() / (float)i; PointChange(POINT_SP, GetSP() * fRatio - GetSP()); } break; This part of code is written by Nova, which is used in novaline, but i know that some of you use it in other branches. It is causing the main problem, we should change it to look like this: case APPLY_MAX_HP: case APPLY_MAX_HP_PCT: { int i = GetMaxHP(); if(i == 0) break; PointChange(aApplyInfo[bApplyType].bPointType, iVal); } break; case APPLY_MAX_SP: case APPLY_MAX_SP_PCT: { int i = GetMaxSP(); if(i == 0) break; PointChange(aApplyInfo[bApplyType].bPointType, iVal); } break; Done, now we should conern next problem, it will cause a disproportion between max_hp and current hp. Moving on, we should find PointChange function (still in char.cpp). Then, find case POINT_MAX_HP and POINT_MAX_SP, and change it like that: case POINT_MAX_HP: { SetPoint(type, GetPoint(type) + amount); int i = GetMaxHP(); int hp = GetRealPoint(POINT_MAX_HP); int add_hp = MIN(3500, hp * GetPoint(POINT_MAX_HP_PCT) / 100); add_hp += GetPoint(POINT_MAX_HP); add_hp += GetPoint(POINT_PARTY_TANKER_BONUS); SetMaxHP(hp + add_hp); float fRatio = (float)GetMaxHP() / (float)i; PointChange(POINT_HP, GetHP() * fRatio - GetHP()); val = GetMaxHP(); } break; case POINT_MAX_SP: { SetPoint(type, GetPoint(type) + amount); int i = GetMaxSP(); int sp = GetRealPoint(POINT_MAX_SP); int add_sp = MIN(800, sp * GetPoint(POINT_MAX_SP_PCT) / 100); add_sp += GetPoint(POINT_MAX_SP); add_sp += GetPoint(POINT_PARTY_SKILL_MASTER_BONUS); SetMaxSP(sp + add_sp); float fRatio = (float)GetMaxSP() / (float)i; PointChange(POINT_SP, GetSP() * fRatio - GetSP()); val = GetMaxSP(); } break; Short description: I'm using Nova method to calculate HP/SP ratio gain. It should prevent people from using it as a infinite source of hp (using affect.add(max_hp.. affect.add(hp... we would create another bug.) Kind regards, Evor. @DISCLAIMER This method was tested by me and my team. We find it fixing the whole problem, but whenever you find another bug, please report it. Ratio calculation courtesy of Nova.
  13. M2 Download Center Download Here ( Internal ) Hello guys! It is common that, whenever u want to use an old mob_proto, u need to rewrite mob_color column for every mob (serverside mob_proto dosen't include mob_color). I write this really simple python code to convert old mob_proto columns to a sql version of it. (Simply, insert that .sql file). To do: - Place your old mob_proto_dump.xml in a folder with converter.py - Remove first and last line of mob_proto_dump.xml - Make sure that u have python installed. (no matter which version) - Run it and save time Kind regards. @Update. Smaller code.
  14. Hm i see, so it is an error with setting variable. By the way, did somebody rise the yang limit in exchange / private shop menu?
  15. Hello. Did somebody find out how to convert str (input) to a long long value? Kind regards. In c++ afaik it is atoll, but i don't know if it is something for python. In the worst scenario i should write a c++ func which converts it.
×
×
  • 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.