• Content Count

  • Joined

  • Last visited

  • Days Won


OtherChoice last won the day on March 19

OtherChoice had the most liked content!

Community Reputation

16 Good

About OtherChoice

  • Rank

Profile Information

  • Gender
    Not Telling

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. OtherChoice

    open [help] Query at character creation - C++

    db/src/ClientManagerPlayer.cpp void CClientManager::__QUERY_PLAYER_CREATE(CPeer *peer, DWORD dwHandle, TPlayerCreatePacket* packet)
  2. OtherChoice

    open Newbie in metin2 (few questions)

    1. You should specific what do you mean by 'edit' and 'temporarily'. Many things can be modified including 3d elements, textures, values, mechanics. Basically anything you can and cannot see while playing. Some of those things can be changed during execution time through coding, like values, mechanics and loading different external files such as textures models and so on. The latters can only by created and modified by external programs (not during execution time) or by including a whole new system in client and/or server source (for example a Guild flag editor ingame). To have full access over game files you should learn how to code in the following languages: c++(client and server source), python(client root), lua(server-side quests), sql(database values) and probably also php, javascript, html5, css3 for a good website. There are also a few handy libraries to learn (and maybe update) if you want to deeply understand some nasty stuff around the source: namely boost and d3dx8, windows api and std (standard c++ library) are instead mandatory. Apart from coding you will need furthert knowledge to really get into every part of the game. This knowledge includes 3d modelling, existing plugins allow you to convert 3DS (3d studio) models in gr2 used by client, Texturing, i do prefer gimp but anything will work, Map creation, made insanely easier through WorldEditor, Effect creation, such as skill effects, projectiles, auras and so on also handled by WorldEditor. 2. Build your own 3. Usually server shutdown and restart won't take longer than a few minutes, downtime strictly depends on the operations you are performing while server is closed. You can edit the source codes and client files while server is up, compile them and then when ready replace the olders & restart server. 4.World Editor is pretty easy to setup have a D partition or mount a folder inside C as D and then create a folder named "ymir_work", extract your WorldEditor version inside that folder and you should be good (WorldEditor has a weird bug with my laptop viewport so I have to decrease Windows Resizing and Layout option from 125% to 100% to correctly display the editor). 5. Cannot help you here, I do not like CMS. If you do then make sure the one you choose is clean and flawless.
  3. OtherChoice

    solved Render Target Problem

    The problem was the far clip float value retrived in python application.cpp if (!PERF_CHECKER_RENDER_GAME) { m_kRenderTargetManager.RenderBackgrounds(); float fAspect=m_kWndMgr.GetAspect(); float fFarClip=m_pyBackground.GetFarClip(); m_pyGraphic.SetPerspective(30.0f, fAspect, 100.0, fFarClip); <---- fFarClip was smaller than dragon model far prespective
  4. OtherChoice

    solved Render Target Problem

    Tried with penger camera and still nothing displays, while every other model is showed correctly at the right size (both wild dog 101 and tree boss 2307 are perfectly centered and resized). TraceError("Actor Height: %f, Model: %d", fHeight, index); in SelectModel returns 0312 15:22:17197 :: Actor Height: 207.197571, Model: 2108 -----> for desert bandit 0312 15:22:33305 :: Actor Height: 2172.499023, Model: 2291 ----> for fire dragon The model and its properties are all ok and still it can't render. Is there any limitation for 3d vectors size in the custom defined camera?
  5. OtherChoice

    solved Render Target Problem

    UPDATE: After a while i discovered that if I set normal camera CAMERA_MAX_DISTANCE to something very large (10000000.0f) then zoom all the way out the model is rendered correctly Hello everybody, I have some problem rendering fire_dragon (2291) with CxL RenderTarget . Checked with multiple break points and TraceError(s) and everything seems ok. The model itself is displayed correctly when spawned, and also tried with older/custom version of it. All this made me believe that something might be wrong in camera settings for such a big model, so i tweaked with fov, aspect, near, far and SetViewParams(eye, target, up) but I had no luck. Anyone knows why this specific model is not rendering?
  6. OtherChoice

    c++ [RLS]RenderTarget

    I have some problem rendering fire_dragon (2291), I know there's should be something different about this model but I just can't figure it out. No syserr, any clue?
  7. OtherChoice

    [RLS]Simple Ingame Browser Update (IE 7 to IE 11)

    @Kori It will load any page that Internet Explorer 11 would (just open it, visit a web page and if you can display that embedded browser will as well). The differences between 7 and 11 are huge that I can't simply include them in a message (if you want to have a deep look into it check microsoft changelogs since version 7).
  8. I noticed embedded ingame browser is compatibility mode IE 7 by default, looked aroud the net and it seems that there's not so much detailed information about it. The best way would be to get your hands on chromium or something like that, but its a rather time sinking activity and since internet explorer emulated version can be easily changed with a new registry key i opted toward this solution. However (apparently, I actually searched very few sites) it seems that noone has ever mentioned it thus I decided to share the know-how with you. If anyone is interested this is a very simple example (very raw i suggest to at very least modify it): In UserInterface.cpp before bool Main(HINSTANCE hInstance, LPSTR lpCmdLine) void SetInternetRegKey() { LONG status; HKEY hKey; status = RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_BROWSER_EMULATION"), 0, KEY_ALL_ACCESS, &hKey); if ((status == ERROR_SUCCESS) && (hKey != NULL)) { DWORD standard = 11000; DWORD version; DWORD size = sizeof(version); DWORD type = REG_DWORD; status = RegQueryValueEx(hKey, TEXT("YOURCLIENTEXECUTABLEFILE.EXTENSION"), NULL, &type, (BYTE*)&version, &size); if (status != ERROR_SUCCESS) { status = RegSetValueEx(hKey, TEXT("YOURCLIENTEXECUTABLEFILE.EXTENSION"), NULL, REG_DWORD, (BYTE*)&standard, sizeof(standard)); if (status != ERROR_SUCCESS) { } } RegCloseKey(hKey); } } then in bool Main at the beginning add SetInternetRegKey(); bool Main(HINSTANCE hInstance, LPSTR lpCmdLine) { SetInternetRegKey(); <--------- here This will add a registry value for FEATURE_BROWSER_EMULATION (YOURCLIENTEXECUTABLEFILE.EXTENSION, 11000) which will tell browser to emulate IE 11 at the launch of the executable and only once. As I said above this is very raw and won't autodetect latest avaible IE and many other lacks which you can clearly see. All documentation about IE registry key for version/svcVersion can be found here https://support.microsoft.com/en-us/help/969393/information-about-internet-explorer-versions Do your homework (just a few hours i think) and you will have your nice and clean browser emulation to latest avaible IE version or use it as it is and have a poor compatibilty still working IE11 browser. Hope you find this useful, Have a nice day.
  9. OtherChoice

    open Falling problem

    Show me your ActorInstanceBattle.cpp i'll take a look too. However those has something worng probably void CActorInstance::__PushCircle(CActorInstance & rVictim) { const TPixelPosition& c_rkPPosAtk=NEW_GetAtkPixelPositionRef(); D3DXVECTOR3 v3SrcPos(c_rkPPosAtk.x, -c_rkPPosAtk.y, c_rkPPosAtk.z); const D3DXVECTOR3& c_rv3SrcPos = v3SrcPos; const D3DXVECTOR3& c_rv3DstPos = rVictim.GetPosition(); D3DXVECTOR3 v3Direction; v3Direction.x = c_rv3DstPos.x - c_rv3SrcPos.x; v3Direction.y = c_rv3DstPos.y - c_rv3SrcPos.y; v3Direction.z = 0.0f; D3DXVec3Normalize(&v3Direction, &v3Direction); rVictim.__SetFallingDirection(v3Direction.x, v3Direction.y); } void CActorInstance::__PushDirect(CActorInstance & rVictim) { D3DXVECTOR3 v3Direction; v3Direction.x = cosf(D3DXToRadian(m_fcurRotation + 270.0f)); v3Direction.y = sinf(D3DXToRadian(m_fcurRotation + 270.0f)); v3Direction.z = 0.0f; rVictim.__SetFallingDirection(v3Direction.x, v3Direction.y); } Check for null vectors and __SetFallingDirection function
  10. OtherChoice

    open Falling problem

    There's something wrong in client source in either m_PhysicsObject or __Push functions, if you changed anything about physics in gamelib project you probably messed up somewhere.
  11. OtherChoice

    solved [20€ PP]Mob Dont't Atack

    Ok i checked the source and i was recalling pretty much everything but a dumb thing insted of if (fDist < fMinDist || pkVictim->IsDead()) { pkVictim = pAttacker; fMinDist = fDist; } Use this if (fDist < fMinDist && !pAttacker->IsDead()) { pkVictim = pAttacker; fMinDist = fDist; } Tested and working. If you are willing to donate something i'll appreciate it, anyhow have a nice day!
  12. OtherChoice

    solved [20€ PP]Mob Dont't Atack

    I sent you a private message, check it out
  13. Hello everyone, I came across a really annoying problem and I hope you guys can help me. I need to change the structure of item_proto (/locale/lang/item_proto) to commit these changes: <ItemDef Vnum="" Name="'" LocalizedName="" Type="" SubType="" Weight="" Size="" AntiFlags="" Flags="" WearFlags="" ImmuneFlags="" Gold="" ShopBuyPrice="" LimitType0="" LimitValue0="" LimitType1="" LimitValue1="" ApplyType0="" ApplyValue0="" ApplyType1="" ApplyValue1="" ApplyType2="" ApplyValue2="" Value0="" Value1="" Value2="" Value3="" Value4="" Value5="" Socket0="" Socket1="" Socket2="" //add here// Socket3="" Socket4="" Socket5="" //end// RefinedVnum="" RefineSet="" AlterToMagicItemPercent="" Specular="" GainSocketPercent="" AddonType="" /> Basically i need to add a entry for those sockets (3,4,5). Tools around the web to crypt/decrypt item_proto are very "standardized", they only work with a standard item_proto template hence packing only standard entries, and no open source code is avaible. If you guys have any suggestion and/or solution I'll be very grateful. It seems that I was wrong i ended up solving the problem once I found this: https://github.com/martysama0134/m2a.py I wish to thank the respective owner.
  14. OtherChoice

    open Official logout method

    Uhm at first i would say you should remove it from HEADER_CG_CHAT HEADER_CG_WHISPER and try again, if this is not the problem it will need some deeper debugging
  15. OtherChoice

    open Official logout method

    Honestly i do not know why timed_event_cancel has no declaration however just go in game/battle.h, find extern void battle_end(LPCHARACTER ch); and add below extern bool timed_event_cancel(LPCHARACTER ch); then check game/battle.cpp should contain this function bool timed_event_cancel(LPCHARACTER ch) { if (ch->m_pkTimedEvent) { event_cancel(&ch->m_pkTimedEvent); return true; } return false; } Now you should not have any compiling error. Next you asked about packets: input_main.cpp handles packets with HEADER_CG (CG == client to game) in function int CInputMain::Analyze(LPDESC d, BYTE bHeader, const char * c_pData). Packets with HEADER_GC (GC == game to client) are instead handled by the client itself but according to the phase the client is in (eg. phaseGame, phaseSelect...). phaseGame packets (which are most probably what are you looking for) are recived in Userinterface/PythonNetworkStreamPhaseGame.cpp in void CPythonNetworkStream::GamePhase(). Other Client Packet Reciever And lastly there are some HEADER_GD packets which are game to database handled by db binary.