Jump to content

VegaS™

Moderator
  • Content Count

    430
  • Joined

  • Last visited

  • Days Won

    120

VegaS™ last won the day on January 11

VegaS™ had the most liked content!

Community Reputation

1762 Chivalric

About VegaS™

  • Rank
    Noble
  • Birthday December 22

Informations

  • Gender
    Male
  • Location
    Romania

Social Networks

Recent Profile Visitors

17681 profile views
  1. I didn't said that you've to insert something, I mean that structure of your condition, it's non-sense, if (condition) retun false else return true; Because there're other checks which has to be checked, before you return that true, was enough just to return false if the condition was fulfilled, that's all. Difference means (x-y). Your code is bugged, please try to run it. // Example program #include <iostream> #include <string> int main() { int playerLevel = 50; int victimLevel = 66; int difference = playerLevel - victimLevel; if (d
  2. Thanks for release, but there's something wrong. First, you've to put the condition after it's checking the safe zone and others, you made a return true without checking those as well. (things will going wrong) Second, you'll get a negative number if: int player = 50; int victim = 80; int diff = player - victim; cout << (diff > 15) << endl; // -30 > 15 ? = false You've to use std::abs for getting the absolute value. The code should look like: if (ch && victim && !victim->IsPC()) { static const BYTE DIFFERENCE_LEVEL_ATTACK = 15; i
  3. You can't define a class function inside another. You could do it just with lambdas, struct or other gnu extensions, but that's not relevant for your case. Solution: Move function GetMonsterMaxHP: DWORD CPythonNonPlayer::GetMonsterMaxHP(...) { [...] } Outside of GetMatchableMobList function, should look like this: DWORD CPythonNonPlayer::GetMonsterMaxHP(...) { [...] // content } void CPythonNonPlayer::GetMatchableMobList(...) { [...] // content }
  4. Typical for romanians, they're so hungry for money.. @MadalinAlaska - Banned You should know that with those things what you did, you won't be happy in a long term. Have careful with karma, you'll have a server online in one day, those guys will revenge themselves somehow.
  5. @MadalinAlaska Other known accounts: Sanction: banned indefinitely order to stay away ( domestic authority ) Reasons: attacking/blackmailing other servers
  6. Thanks for the release, that's a good idea but instead of using metin2 TextFileLoader, you could use rapidjson or similar, which would be much faster and organized. Also, I would add a check of rank: if (rank < 0 || rank > MOB_RANK_S_KNIGHT) { sys_err("CommonDropitem : Syntax error %s : rank overvflow, node %s", c_pszFileName, stName.c_str()); return false; } Since you use it as an index of a vector and you get that value from a parser, you should be careful with it, otherwise, they'll get a crash core.
  7. That's right, the default code is crap for this scenario with extended requirements. If you add a value to vnum4 and count4, the refining will not work anymore for that ID, the required items will be ignored, you can upgrade the item without any requirements. Basically what they did is to set the material count just when the next column of 'vnum' is empty. Let's take two examples: The refine proto id 430, will have material_count = 1, because the next column 'vnum1' is empty and the condition was fulfilled. The refine proto i
  8. Thanks for my release from 2016, soon 5 years since it has been done. Shame on you... making copy-paste and uploading the code on GitHub, won't make you a "programmer".
  9. Also instead of that, you can simplify it: #ifdef ENABLE_GHOST_MODE STATEMANAGER.SaveRenderState(D3DRS_ALPHABLENDENABLE, IsGhostWeapon()); #else STATEMANAGER.SaveRenderState(D3DRS_ALPHABLENDENABLE, FALSE); #endif
  10. Thanks for release. case 19: return TRUE; break; Just to know, that this it's called "dead code". The break is not called anymore since you made a return... also some compilers will show "Unreachable code" warnings.
  11. Here're the references to understand how it's working step-by-step: char.cpp [Hidden Content] constants.cpp #define MAX_EXP_DELTA_OF_LEV 31 #define PERCENT_LVDELTA(me, victim) aiPercentByDeltaLev[MINMAX(0, (victim + 15) - me, MAX_EXP_DELTA_OF_LEV - 1)] #define PERCENT_LVDELTA_BOSS(me, victim) aiPercentByDeltaLevForBoss[MINMAX(0, (victim + 15) - me, MAX_EXP_DELTA_OF_LEV - 1)] constants.cpp const int aiPercentByDeltaLevForBoss_euckr[MAX_EXP_DELTA_OF_LEV] = { 1, // -15 0 [...] 180 // 15 30 }; const int aiPercentByDeltaLev_e
×
×
  • 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.