Jump to content

Ai4rei

Members
  • Posts

    419
  • Joined

  • Last visited

  • Days Won

    36

Everything posted by Ai4rei

  1. I have that intention; thanks for dumping the important facts here, so I do not have to search through the entire granny project thread.
  2. Had some time to look into this, since I was sick. The openning.bik sample (bleach opening to be exact) certainly works in older clients, but does not in newer ones for some reason. There is actually no reason to diff anything to make openning.bik to work in general. The client auto-plays it, if it finds one, but only once. The fact, that it played the bink video is recorded in registry as BINKMODE setting (non-existing/0 = not played, 1 = played). Client that do have the login window also receive an additional button, that allows the video to be replayed. Newer clients start the video, but immediately cancel it so that it does not even appear. So basically when I find what's wrong, it won't become a plug-in to read opening.bik, but a fix to the bink player code. Edit #1: New clients apparently have the frame rendering code portion taken out, so the code actually behaves like: If there's time to render a frame, quit playing the video instead.
  3. Updated Open Setup Source to 2.6.2.180, see website for details on how to get it.
  4. Not really .-. http://rathena.org/b...2-06-18-client/ http://rathena.org/b...izard-quagmire/ Clients older than 2012-04-18 have this problem Well, it's an client error.. so im reporting it .-. Might be rA-only problem, I'm not able to reproduce this on eA. The first bugreport actually has a confirmation ratio of 0/6, basically a "it's just you". And 2012-07-02 is not "Clients older than 2012-04-18". Well, it's an client error.. so im reporting it .-. It's not WeeDiffGen related, this topic is not general client help-desk just because I'm following it. ragnazorg: In slow progress, though it looks like a completely pointless diff to me.
  5. It's just you, I have no problem with quagmire. Also off-topic.
  6. Yeah, I messed up while disassembling with two things (nAniIdx TEST and the bone string). Unlike you guys I do not use IDA+HexRays, so stuff like that can slip in while processing the assembly. Corrected version would be this: struct granny_animation* __cdecl C3dGrannyBoneRes::GetAnimation(int nType, int nAniIdx) { if( this->m_Animation[nType][nAniIdx] == NULL ) { g_Unknown1[0] = 0; if( nType >= 0 && nType <= 9 ) { if( nAniIdx >=0 && nAniIdx <= 4 ) { if( !nAniIdx ) { sprintf(g_Unknown1, "model\\3dmob\\%s", g_session.GetJobName(g_Unknown2[nType])); } else { sprintf(g_Unknown1, "model\\3dmob_bone\\%d_%s.gr2", nType, g_Unknown3[nAniIdx]); } if( g_Unknown1[0] && CFile::IsFileExist(g_Unknown1) ) { if( nType != 1 ) {// prevent guild flag from animating this->AddBone(g_Unknown1, nType, nAniIdx); } return this->m_Animation[nType][nAniIdx]; } } } } else { return this->m_Animation[nType][nAniIdx]; } return NULL; } Also do not forget the space to add assembly is scarce and relocating blocks of code annoying, so let stick with the easier approach, that was suggested at first. That is, official mobs keep their current mechanics and custom mobs (nType 10+) are all saved as bones, with nAniIdx 0 (non-bone) being "stand"-bone since the client also declares the string. Thus you also do not need to maintain the nType2MobId table, just add monsters at will into data\\ and lua. Remains to figure out how the client comes up with nType; I assume with an another table which we will need to maintain.
  7. WDGTranslateClient is not limited to any language, just edit WDGTranslateClient.txt to whatever you like.
  8. If you provide a way to change all patch parameters, someone might come up with the idea of using this patcher for their own patches. Then the auto-default/auto-create logic no longer seems ridiculous, not? Also it's the official behavior to assume patch ID 0 if there is no INF present. No comebacks at that...
  9. I consider this a bad thing not to know what the patcher is supposed to download to obtain the correct list of patches, but well. The difference is, one of them is being used with the old patch server (down in the mean while) and the other with the new patch server. Also it fails if it cannot find the .inf file.
  10. What kind of proxy? There are various ways to tunnel the client protocol, such as SOCKS4, SOCKS5 or reverse. The last one not requiring any changes to the client, actually.
  11. Continuing this PM-wise will probably be quite inefficient. char g_Unknown1[] A global variable used for setting up the 3dmob file name, there's probably no actual reason for it to be global. int g_Unknown2[] A constant fixed-size global array used for mapping nType (3dmob ID) to NPC/Mob IDs (that's why standing animations do not work for customs). const char* g_Unknown3[] A constant fixed-size global array used for mapping nAniIdx (animation type) to respective animation name (stand, move etc). Edit #1: Corrected wrong variable types. Edit #2: I noticed an another thing that I have been after for a while; the fact that guild flags no longer animate like they used to in very old clients. The reason for that turned out to be the AddBone exemption for guild flags: if( nType != 1 ) Which means, if the exemption is deleted, guild flags starting waving in the wind again.
  12. Sorry, I do not feel masochistic enough to support restore login window hex/diff, as stated some pages back.
  13. struct granny_animation* __cdecl C3dGrannyBoneRes::GetAnimation(int nType, int nAniIdx) { if( this->m_Animation[nType][nAniIdx] == NULL ) { g_Unknown1[0] = 0; if( nType >= 0 && nType <= 9 ) { if( nAniIdx >=0 && nAniIdx <= 4 ) { if( nAniIdx ) { sprintf(g_Unknown1, "model\\3dmob\\%s", g_session.GetJobName(g_Unknown2[nType])); } else { sprintf(g_Unknown1, "model\\3dmob\\%d_%s.gr2", nType, g_Unknown3[nAniIdx]); } if( g_Unknown1[0] && CFile::IsFileExist(g_Unknown1) ) { if( nType != 1 ) { this->AddBone(g_Unknown1, nType, nAniIdx); } return this->m_Animation[nType][nAniIdx]; } } } } else { return this->m_Animation[nType][nAniIdx]; } return NULL; }
  14. I just have one client but its multiple window is disabled..I hope there a diff for enabling it again.. Exact client date? I have a working diff for a while, it's just hard to make it into a working plugin. What is the recommended setting? ClientGraphics device:Direct3D T&L HAL Direct3D HAL (if T&L not available) otherwise whatever is available [*]Trilinear filter No [*]Sprite quality 100% [*]Texture quality 100% [*]Graphics card Avoid settings that cause screen smoothing/blurring. Avoid down-sampling of colors. As a side-note, for me there are almost no artifacts visible with 100% JPG quality; maybe you should post the screen-shots in question.
  15. 2012 are multiple windows enabled by default by Gravity. Around here. Point me to some working .bik file, then maybe. Unlikely if not impossible for my skills. The quality might depend on your client or graphics card settings.
  16. Added: WDGScreenshotQuality Changes JPEG quality value for screenshots. binary builds, sources No time for testing, see if it works.
  17. WDGAllowMultipleWindows is not being updated because Gravity removed the code from newer clients, thus there is nothing to enable. Latest (atwl) WDGDisableMultipleWindows should work up to at least 2012-07-02a, if not, post the WDG log. For newer clients it inserts the code that was removed by Gravity into the client.
  18. You will have a hard time with just a hex editor, but it's somewhat possible if you can make out the op-codes. You might want to consider getting into OllyDbg or at the very least HIEW (hex editor with basic disassembling capability, it's no longer for free, except the DOS version). And since we are already advertising, I recommend you to use HxD as hex editor.
  19. You can relocate strings to anywhere in the client. The downside (well not particulary with job names, but other strings) is, that you have to update all references to point to the new location. Let's say, you have and put the new name at offset 0x008966aa, then you have to update the assembly to point to that location Make sure you pick a place that is really unused. For example, area before the code section 0x400400~0x400FFF or the end of the code section.
  20. That would be 'Login - Error' as well.
  21. Random progress. ~ Prevent Client from Closing ~ Disregarding, that I have no idea where to begin, I need some information on the desired behavior. In-game - Exit to Windows Assume that should remain as it always was, quit to windows. Char Select - Cancel Used to return to the login window, but since there is not any, it quits. Char Select - Connection Reset Used to return to the login window, but since there is not any, it quits. Login - Error Used to return to the login window, but since there is not any, it quits. Login - Connection Reset Used to return to the login window, but since there is not any, it quits. ... Anything I missed? The situation, of course, changes when restore login window is in effect (not quite sure whether there is still enough code to restore the window in 2012 clients). ~ Rain ~ It turned out, that just mapping all functions will not work, as most of the structures grew in the mean time and there's also the compiler change to VC9.
  22. Work-in-progress news: CRagEffect::Rain code isolated, it's a 1k chunk of code and porting it asks for a lot of mapping to the target client code, but since it is self-contained, it should be do-able. Do not expect it too soon, though. The plug-in will be a nightmare for sure. Beret: I like the source that could bring langtype 12, too.
  23. Maybe. Someone might want to look for the official data\texture\effect\rain_gnd.tga in the meanwhile.
  24. malufett: Hold SHIFT key while clicking 'Close' button. That makes the patcher keep successfully downloaded patches. There will also be a resume-download feature in next version for patch servers that support it, that is, the patcher will reconnect to the server resume downloading the patch at the position, where it was interrupted. Antares: Manual patch works only for pending patches, not for missed patches. If you want to apply missed patches, you have to roll-back the patch ID in patch.inf (data.grf) or patchRE.inf (rdata.grf). You can also download rsu.merge and merge the patches with the GRF of your choice.
×
×
  • Create New...