Jump to content

Jonathan

Advanced members
  • Content Count

    26
  • Joined

  • Last visited

  • Days Won

    7

Jonathan last won the day on July 5

Jonathan had the most liked content!

Community Reputation

36 Neutral

2 Followers

About Jonathan

  • Rank
    Cabin Boy

Recent Profile Visitors

3,783 profile views
  1. Hi all, I'm interested to buy the client and server source code in a state that compiles and runs. Ideally it would be in a git repo that starts from the released source, and fixed forward from there. I am not interested in any version of the Corsairs source - I am looking for clean client and server source code. And to be clear, 1.3X is correlating with IGG ToP 1, so use the corresponding source code. In case it matters, I am happy for this to be released publicly once it is complete and paid for. Feel free to message with any questions. Let me know any asking prices. Thanks! Kind regards, Jonathan
  2. When you say "handle 1.36 binaries" what do you mean exactly? Looks very cool, will you be posting updates here too?
  3. Just checked and it is a DNS issue, thank you!
  4. When is the website going live? Right now it redirects to the hosting "domain parked" page.
  5. The easiest way to do this is to click on the icons, copy the link that it directs you to, and then search for that link within your files. It should lead you to where you can set your own links. Do you find anything when you search for the links within your files? If not, which files are you using?
  6. Am not seeing the same issue, can see the video fine. Maybe there is a silent country restriction? Video mirror for resolution of 557 x 360: https://mega.nz/file/AAkywD4a#EcUqDRfgRJ3RemOfPAXkkMuqOVaCLw9aLRnYt3tBJUo Video mirror for 1280 x 828: https://mega.nz/file/MMMEFKoS#P0dv0aFirFZWxOQz8ZSrtysQ_yneKFzQcoydhjndV9M If you ever run into the same problem again, I just used streamabledl (https://streamabledl.com/) and I doubt there are any silent restrictions downloading videos through that site. It is possible I'm wrong and there are, but it could at least be worth a try.
  7. What is the vision for this server? Like what style of server is your team aspiring to make?
  8. I would encourage you to use the search function at the top right of each forum page. A quick search yielded the following result:
  9. What have you tried so far? Where did you get stuck?
  10. If you are just trying to determine the parameter so that you can use a startgame batch file... Open the game using whatever launcher, then open a command line prompt. Enter “WMIC /OUTPUT:ProcessList.txt PROCESS get Caption,Commandline,Processid”. View command line options used to open each open program inside ProcessList.txt - specifically, look for the command line options used to open Game.exe. Then write your batch file using those command line options instead of startgame.
  11. @barselon8 It is interesting math - I could be entirely wrong, but I would guess the reason for dividing by 1000 is to avoid using floats / doubles until absolutely necessary. This will have a positive impact on evaluating final values accurately, and also - more importantly - will reduce computational time. I'd imagine the performance differences were far more noticeable back when this game was first published. Looking at "GetChaAttr()" in the source, all values returned are whole numbers (either ints or longs) which further supports this idea. With regards to where the calculations are for "ATTR_ITEMC_MXHP"... "GetChaAttr() is in the source at "Source/Server/GameServer/src/Expand.h". This just points us to "nAttrVal = (long)pCCha->getAttr(sAttrIndex);". If we then follow the trail to "Source/Common/Common/include/ChaAttr.h" this points us to: inline LONG64 CChaAttr::GetAttr(long lNo) {T_B if (lNo >= ATTR_MAX_NUM) return -1; return m_lAttribute[lNo]; T_E} which begs the question of where "m_lAttribute" gets set. Navigating to "Source/Common/Common/src/ChaAttr.cpp" we find that the values in "m_lAttribute" are set based on the record retrieved via "CChaRecord *pCChaRecord = GetChaRecordInfo(lID);". In "Source/Common/Common/include/CharacterRecord.h" we find another inline function: inline CChaRecord* GetChaRecordInfo( int nTypeId ) { return (CChaRecord*)CChaRecordSet::I()->GetRawDataInfo(nTypeID); } and so on... that is the end of my sleuthing on this, but that should be fairly close to actually finding where the value gets set. Good luck!
  12. @barselon8 The only variable there is the "a", which is the character's role. The rest are all function calls to functions you can find within "functions.lua". e.g. function MxhpIa(a) --LuaPrint("Obtain character attribute mxhp_ia") local mxhpia=GetChaAttr(a, ATTR_ITEMC_MXHP)/ATTR_RADIX --[[取mxhp道具百分比]]-- return mxhpia end function MxhpIb(a) --LuaPrint("Obtain character attribute mshp_ib") local mxhpib=GetChaAttr(a, ATTR_ITEMV_MXHP) --[[取mxhp道具常数]]-- return mxhpib end In these functions, the first variable in the call to "GetCharAttr()" is again the character's role, and the second variable in those calls is the attribute being retrieved as defined in "AttrType.lua". The "ATTR_RADIX" variable is the attribute coefficient as defined in "variable.lua".
  13. No problem @barselon8. Which variables specifically are you referring to?
  14. @barselon8 If I am understanding correctly, you want to investigate the functions "Mxhp_final()", "Mxsp_final()", "Mnatk_final()", etc. in "functions.lua". e.g. function Mxhp_final(a) local mxhp_final=(BSMxhp(a) * MxhpIa(a) + MxhpIb(a) ) * math.max(0, MxhpSa(a)) + MxhpSb(a) --[[取当时实际mxhp]]-- --LG("chaattr_set", " BSMxhp = " , BSMxhp(a) , "MxhpIa = " , MxhpIa(a) , " MxhpIb = " , MxhpIb(a) , "MxhpSa = " , MxhpSa(a) , "MxhpSb = ", MxhpSb(a) , "\n" ) --LG("chaattr_set", "mxhp_final = ", mxhp_final , "\n" ) return mxhp_final end These functions are where the final values are calculated, which account for any additional stats provided by items.
  15. No problem at all @kyleflow! Your understanding is correct. The default "Check_CG_HechengBS()" per the 1.38 files posted by V3ct0r at is function Check_CG_HechengBS ( Item_Lv , Item_Type , Sklv ) local a = 0 local b = 0 Item_Lv = Item_Lv - 1 if Item_Type == 49 then a = math.max ( 0 , math.min ( 1 , ( 1 - Item_Lv * 0.10 + Sklv * 0.10 ) ) ) b = Percentage_Random ( a ) if Item_Lv < 3 then b = 1 end return b elseif Item_Type == 50 then a = math.max ( 0 , math.min ( 1 , ( 1 - Item_Lv * 0.05 + Sklv * 0.15 ) ) ) b = Percentage_Random ( a ) return b else LG( "Hecheng_BS","probability check determine item type is not a gem" ) return 0 end end So for this we would just need to work backwards. When "ItemType" is 49, for 100% success rate the calculation "1 - Item_Lv * 0.10 + Sklv * 0.10" needs to evaluate to 1, and when the "ItemType" is 50, for 100% success rate the calculation "1 - Item_Lv * 0.05 + Sklv * 0.15" needs to evaluate to 1. In both scenarios you just need to - as you correctly said - manipulate "STATE_HCGLJB" which will in turn manipulate "Sklv" in each of these calculations.
×
×
  • Create New...