FlasH_Adi

Skills source game

Sep 7th, 2023 (edited)
753
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.38 KB | Source Code | 0 0
  1. service.h
  2. #define __FH_GIVE_SKILL__
  3.  
  4. cmd.cpp
  5. #if defined(__FH_GIVE_SKILL__)
  6. ACMD(do_give_skill);
  7. #endif
  8.  
  9. #if defined(__FH_GIVE_SKILL__)
  10.     { "give_skill", do_give_skill, 0, POS_DEAD, GM_PLAYER },
  11. #endif
  12.  
  13. @cmd_general.cpp
  14. ACMD(functia_ta)
  15. {
  16.     //CODU TAU CE AI TU ACOLO GEN INLOCUESTI CU ASTA
  17. #if defined(__FH_GIVE_SKILL__)
  18.     char arg1[256];
  19.     one_argument(argument, arg1, sizeof(arg1));
  20.  
  21.     if (!*arg1)
  22.     {
  23.         ch->ChatPacket(CHAT_TYPE_INFO, "Syntax Error");
  24.         return;
  25.     }
  26.     // if (ch->GetSkillGroup() != 0 && ch->GetLevel() < 5) //dacare nu are level 5 return
  27.     if (ch->GetSkillGroup() != 0 //nu necesita level.
  28.     {
  29.         ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("YOU_CAN_NOT_DO_THAT"));
  30.         return;
  31.     }
  32.  
  33.     int iValue = 0;
  34.     str_to_number(iValue, arg1);
  35.     ch->SetSkillGroup(iValue);
  36.     ch->ClearSkill();
  37.  
  38.  
  39.     extern void do_give_skill(LPCHARACTER ch, const char* argument, int cmd, int subcmd);
  40.     do_give_skill(ch, NULL, 0, 0);
  41. #else
  42.     .....
  43.    
  44.     int iValue= 0;
  45.     str to number(iValue, argl);
  46.     if (iValue) {
  47.         ch->SetSkillGroup(iValue);
  48.         ch->Clearskill();
  49.        
  50.         for(int i =-0;-i <SKIlL MAX NuM; i++)
  51.         {
  52.             if (true == ch->CanUseskill(i))
  53.             {
  54.                 ch->SetSkillLevel(i, 40);
  55.             }
  56.         }
  57.     }
  58.        
  59.     ch->UpdatePacket();
  60.     ch->ComputePoints();
  61.     ch->SkillLevelPacket();
  62. #endif
  63. }
  64.  
  65. #if defined(__FH_GIVE_SKILL__)
  66. ACMD(do_give_skill)
  67. {
  68.     ch->SetHorseLevel(30);
  69.     ch->SetSkillLevel(SKILL_HORSE, 30);
  70.     ch->SetSkillLevel(SKILL_COMBO, 2);
  71.  
  72.     for (int i = 0; i < SKILL_MAX_NUM; i++)
  73.     {   /*
  74.         SKILL_MASTER = 20
  75.         SKILL_GRAND_MASTER = 30
  76.         SKILL_PERFECT_MASTER = 40
  77.         */
  78.         if (true == ch->CanUseSkillForM1(i))
  79.         {
  80.             ch->SetSkillLevel(i, 20); // SKILL_MASTER
  81.         }
  82.         else
  83.         {
  84.             switch (i)
  85.             {
  86.             case SKILL_HORSE_WILDATTACK:
  87.             case SKILL_HORSE_CHARGE:
  88.             case SKILL_HORSE_ESCAPE:
  89.             case SKILL_HORSE_WILDATTACK_RANGE:
  90.                 ch->SetSkillLevel(i, 20); // SKILL_MASTER
  91.                 break;
  92.             case SKILL_LEADERSHIP:
  93.             case SKILL_CREATE:
  94.             case SKILL_MINING:
  95.             case SKILL_POLYMORPH:
  96.             case SKILL_HORSE_SUMMON:
  97.             case 132:
  98.             case SKILL_ROLE_PROFICIENCY:
  99.             case SKILL_INSIGHT:
  100.                 ch->SetSkillLevel(i, 40); // SKILL_PERFECT_MASTER
  101.                 break;
  102.             }
  103.         }
  104.     }
  105.    
  106.     ch->UpdatePacket();
  107.     ch->ComputePoints();
  108.     ch->SkillLevelPacket();
  109. }
  110. #endif
  111.  
  112. char_skill.h
  113. #if defined(__FH_GIVE_SKILL__)
  114. public:
  115.     bool CanUseSkillForM1(DWORD dwSkillVnum) const;
  116. #endif
  117.  
  118. char_skill.cpp
  119. cauta
  120. bool CHARACTER::CanUseSkill(DWORD dwSkillVnum) const
  121. pune deasupra lui
  122.  
  123. #if defined(__FH_GIVE_SKILL__)
  124. bool CHARACTER::CanUseSkillForM1(DWORD dwSkillVnum) const
  125. {
  126.     if (0 == dwSkillVnum) return false;
  127.  
  128.     if (0 < GetSkillGroup())
  129.     {
  130.         const int SKILL_COUNT = 7;
  131.         static const DWORD SkillList[JOB_MAX_NUM][SKILL_GROUP_MAX_NUM][SKILL_COUNT] =
  132.         {
  133.             { { 1, 2, 3, 4, 5, 6, 176 }, { 16, 17, 18, 19, 20, 21, 176 } },
  134.             { { 31, 32, 33, 34, 35, 36, 177 }, { 46, 47, 48, 49, 50, 51, 178 } },
  135.             { { 61, 62, 63, 64, 65, 66, 179 }, { 76, 77, 78, 79, 80, 81, 180 } },
  136.             { { 91, 92, 93, 94, 95, 96, 181 }, { 106, 107, 108, 109, 110, 111, 182 } },
  137.             { { 170, 171, 172, 173, 174, 175, 183 }, { 0, 0, 0, 0, 0, 0, 0 } },
  138.         };
  139.  
  140.         const DWORD* pSkill = SkillList[GetJob()][GetSkillGroup() - 1];
  141.  
  142.         for (int i = 0; i < SKILL_COUNT; ++i)
  143.         {
  144.             if (pSkill[i] == dwSkillVnum) return true;
  145.         }
  146.     }
  147.  
  148.     switch (dwSkillVnum)
  149.     {
  150.     case SKILL_LANGUAGE1:
  151.     case SKILL_LANGUAGE2:
  152.     case SKILL_LANGUAGE3:
  153.         return true;
  154.     }
  155.  
  156.     return false;
  157. }
  158. #endif
  159.  
Advertisement
Add Comment
Please, Sign In to add comment