-
Posts
43 -
Joined
-
Last visited
-
Feedback
0%
About .colossus.
Informations
-
Gender
Not Telling
Recent Profile Visitors
The recent visitors block is disabled and is not being shown to other users.
.colossus.'s Achievements
-
HiamGengo started following .colossus.
-
Gaminator95 started following .colossus.
-
karona200 started following .colossus.
-
Ciucciamelo started following .colossus.
-
jaxsarhan started following .colossus.
-
Strange OS problem
.colossus. replied to Crystal™'s topic in Community Support - Questions & Answers
maybe you just don´t have enough ram for your game cores -
Hey guys, with this snippet, the absorption chance is calculated nearly correctly using discrete distribution. I quickly picked out the Lennt system and "adapted" it to it. With other systems this shouldn't be too difficult either in char_item.cpp below #include "threeway_war.h" #include <random> replace switch (lVal) { case 2: { lVal = SASH_GRADE_2_ABS; } break; case 3: { lVal = SASH_GRADE_3_ABS; } break; case 4: { lVal = number(SASH_GRADE_4_ABS_MIN, SASH_GRADE_4_ABS_MAX_COMB); } break; default: { lVal = SASH_GRADE_1_ABS; } break; } SetSocket(SASH_ABSORPTION_SOCKET, lVal); with long percentageAdd = 0; std::random_device rd; std::mt19937 gen(rd()); std::discrete_distribution<> d({ 200, 100, 20, 10, 5, 1 }); percentageAdd = d(gen); SetSocket(SASH_ABSORPTION_SOCKET, lVal + percentageAdd); Absorption is possible from 0-5%. You can adjust or expand the distribution here: d({ 200, 100, 20, 10, 5, 1 });
-
#update SKILL_KWANKYEOK and SKILL_HORSE_WILDATTACK_RANGE are sending more than one packet. maximum of possible packets which are computed is now calculated properly. and yeah it could probably be solved better without using bSkillCD
-
yeah you´re right. i had this case not in my mind. i will adapt it in next days when i have some free time.
-
exactly, when you attack you don´t move, so there is no downside using this. when you are sending attack packets like you do on those waithacks and move it won´t be processed because of that simple check.
-
Hey guys, I noticed while the character was moving, attack packets are processed. It´s nothing special and just a small improvement in battle.cpp below: int battle_hit(LPCHARACTER pkAttacker, LPCHARACTER pkVictim, int & iRetDam) { add: if (pkAttacker->IsStateMove()) return (BATTLE_DAMAGE);
-
Hey guys, maybe you heard already about a new waithack method with poisonous cloud and some other stuff. i don´t want to go into details and just share a potential fix for that (i could not test it completly so some feedback is appreciated) in char.h // below bool bUsed; bool bSkillCD; DWORD dwHitCount; // add after bUsed(false), bSkillCD(false), dwHitCount(0), // below bool HitOnce(DWORD dwVnum = 0); bool IsSkillCooldown(DWORD dwVnum, float fSkillPower); // above void ResetSkill(); bool IsSkillCooldown(DWORD dwVnum, float fSkillPower) { return m_SkillUseInfo[dwVnum].IsSkillCooldown(dwVnum, fSkillPower) ? true : false; } in char_skill.cpp // above bool TSkillUseInfo::UseSkill(bool isGrandMaster, DWORD vid, DWORD dwCooltime, int splashcount, int hitcount, int range) bool TSkillUseInfo::IsSkillCooldown(DWORD dwVnum, float fSkillPower) { DWORD maxHitCount = 0; if (dwVnum == SKILL_KWANKYEOK || dwVnum == SKILL_HORSE_WILDATTACK_RANGE) { if (dwVnum == SKILL_KWANKYEOK) maxHitCount = static_cast<DWORD>(2 + floor(6 * fSkillPower)); else if (dwVnum == SKILL_HORSE_WILDATTACK_RANGE) maxHitCount = 5; dwHitCount++; if (dwHitCount > maxHitCount) return true; return false; } if (!bSkillCD) return true; bSkillCD = false; return bSkillCD; } // below bUsed = true; bSkillCD = true; dwHitCount = 0; in char_battle.cpp // above LPITEM pkBow, pkArrow; if (m_bType > 0 && m_me->IsSkillCooldown(m_bType, static_cast<float> (m_me->GetSkillPower(m_bType) / 100.0f))) return;
-
read my thread again --> in marty files its already fixed because only localhost has access as far as i remember. so you just need to enable ENABLE_PORT_SECURITY or delete everything because its not used
-
Hey guys, i noticed a core crash "exploit" someone is currently using with HEADER_CG_TEXT. its a simple buffer overflow in the HEADER_CG_TEXT packet. because the packet is not used you can just remove it. in marty files its already fixed because only localhost has access as far as i remember. packet.h HEADER_CG_TEXT = 64, packet_info.cpp Set(HEADER_CG_TEXT, sizeof(TPacketCGText), "Text", false); input.cpp if (bHeader == HEADER_CG_TEXT) ( [...] )
-
Hey guys, after i noticed some positive rule changes on the forum i will start to release some of my stuff i already published on an other forum. In the past I often had problems with the Exp/Yang/Drops of group members were also shared on different maps. The simplest solution was to just put the maps further apart, however I took a closer look why this is and fixed it accordingly. in char_battle.cpp // below FPartyAlignmentCompute f(-20000, pkKiller->GetX(), pkKiller->GetY()); // replace pkKiller->GetParty()->ForEachOnlineMember(f); pkKiller->GetParty()->ForEachOnMapMember(f, pkKiller->GetMapIndex()); // below f.m_iStep = 1; // replace pkKiller->GetParty()->ForEachOnlineMember(f); pkKiller->GetParty()->ForEachOnMapMember(f, pkKiller->GetMapIndex()); // below NPartyExpDistribute::FPartyTotaler f(ch); // replace pParty->ForEachOnlineMember(f); pParty->ForEachOnMapMember(f, ch->GetMapIndex()); // below NPartyExpDistribute::FPartyDistributor fDist(ch, f.member_count, f.total, iExp, pParty->GetExpDistributionMode()); // replace pParty->ForEachOnlineMember(fDist); pParty->ForEachOnMapMember(fDist, ch->GetMapIndex()); in char_item.cpp // below NPartyPickupDistribute::FCountNearMember funcCountNearMember(this); // replace pParty->ForEachOnlineMember(funcCountNearMember); pParty->ForEachOnMapMember(funcCountNearMember, GetMapIndex()); // below NPartyPickupDistribute::FMoneyDistributor funcMoneyDist(this, dwShare); // replace pParty->ForEachOnlineMember(funcMoneyDist); pParty->ForEachOnMapMember(funcMoneyDist, GetMapIndex()); // below NPartyPickupDistribute::FFindOwnership funcFindOwnership(item); // replace GetParty()->ForEachOnlineMember(funcFindOwnership); GetParty()->ForEachOnMapMember(funcFindOwnership, GetMapIndex());
-
Yeah we also discussed that topic and i´m fine with that if this are the rules. But i also want to mention that many people doesn´t have the requirements to sell here but they still do because they know the staff. Just my opignion that maybe the staff consider changing something.
-
totally agree with that. why should i even release something when my sales thread got closed and i "need to be active for more than 6 months". its not worth the effort.