、Steam 发表于 2012-2-18 19:06:49

CS魔兽插件等级修改教程

其实不会太难的,本文转WC3.MOD论坛有改动

在 constants.inl 查找

代码:选择全部
#define MAX_LEVELS   10这里就是等级,改成你想要的等级- -该太多你看完后面你会后悔的。。。

在 war3ft.inl 查找

代码:选择全部
         // User is under level 10
         else if ( p_data < 10 )
         {
            pos += formatex( szRaceInfo, 255, "%s %L: %d   XP: %d/%d ", szShortRaceName, id, "WORD_LEVEL", p_data, p_data, XP_GetByLevel( p_data+1) );
            formatex( szXPInfo, 31, "%L: %d   XP: %d/%d", id, "WORD_LEVEL", p_data, p_data, XP_GetByLevel( p_data+1 ) );
         }

替换为

代码:选择全部
         // User is under level 10
         else if ( p_data < MAX_LEVELS )
         {
            pos += formatex( szRaceInfo, 255, "%s %L: %d   XP: %d/%d ", szShortRaceName, id, "WORD_LEVEL", p_data, p_data, XP_GetByLevel( p_data+1) );
            formatex( szXPInfo, 31, "%L: %d   XP: %d/%d", id, "WORD_LEVEL", p_data, p_data, XP_GetByLevel( p_data+1 ) );
         }

然后在同一文件中找到

代码:选择全部
         // User is under level 10
         else if ( p_data < 10 )
         {
            pos += formatex( szRaceInfo, 255, "%s %L: %d^nXP: %d/%d^n", szShortRaceName, id, "WORD_LEVEL", p_data, p_data, XP_GetByLevel( p_data+1) );
         
         }

替换为

代码:选择全部
         // User is under level 10
         else if ( p_data < MAX_LEVELS )
         {
            pos += formatex( szRaceInfo, 255, "%s %L: %d^nXP: %d/%d^n", szShortRaceName, id, "WORD_LEVEL", p_data, p_data, XP_GetByLevel( p_data+1) );
         
         }

在相同的文件查找

代码:选择全部
   // User is under level 10
   else if ( p_data < 10 )
   {
      iMsgPos += formatex( szMsg, 511, "%s %L: %d   XP: %d/%d", szRaceName, id, "WORD_LEVEL", p_data, p_data, XP_GetByLevel( p_data+1 ) );
   }

替换为

代码:选择全部
   // User is under level 10
   else if ( p_data < MAX_LEVELS-1 )
   {
      iMsgPos += formatex( szMsg, 511, "%s %L: %d   XP: %d/%d", szRaceName, id, "WORD_LEVEL", p_data, p_data, XP_GetByLevel( p_data+1 ) );
   }
在相同的文件查找

代码:选择全部
   // Do we need to give this user XP?
   new iStartLevel = get_pcvar_num( CVAR_wc3_start_level );
   if ( p_data < XP_GetByLevel( iStartLevel ) && iStartLevel > 0 && iStartLevel <= 10 )
   {

替换为

代码:选择全部
   // Do we need to give this user XP?
   new iStartLevel = get_pcvar_num( CVAR_wc3_start_level );
   if ( p_data < XP_GetByLevel( iStartLevel ) && iStartLevel > 0 && iStartLevel <= MAX_LEVELS )
   {

在相同的文件查找

代码:选择全部
   // Store level sprite names
   for ( i = 0; i < 11; i++ )
   {
      formatex( g_szLevelSprites, 63, "sprites/warcraft3/level/a_level_%d.spr", i );
   }

替换为

代码:选择全部
   // Store level sprite names
   for ( i = 0; i < MAX_LEVELS+1; i++ )
   {
      formatex( g_szLevelSprites, 63, "sprites/warcraft3/level/a_level_%d.spr", i );
   }

然后在 xp.inl 中找到

代码:选择全部
new Float:iLevelMultiplier = ( fCurrentLevel / 10.0 ) + 1.0;

替换为

代码:选择全部
new Float:iLevelMultiplier = ( fCurrentLevel / float(MAX_LEVELS) ) + 1.0;

在相同的文件查找

代码:选择全部
XP_GetByLevel( iLevel )
{
   if ( iLevel < 0 || iLevel > 10 )
   {
      return 0;
   }

替换为

代码:选择全部
XP_GetByLevel( iLevel )
{
   if ( iLevel < 0 || iLevel > MAX_LEVELS )
   {
      return 0;
   }

在相同的文件查找

代码:选择全部
XP_GivenByLevel( iLevel )
{
   if ( iLevel < 0 || iLevel > 10 )
   {
      return 0;
   }

替换为

代码:选择全部
XP_GivenByLevel( iLevel )
{
   if ( iLevel < 0 || iLevel > MAX_LEVELS )
   {
      return 0;
   }

在 admin.inl 查找

代码:选择全部
      new iLevel = str_to_num( szArg2 );

      if ( iLevel < 0 || iLevel >= 11 )
      {
         ADMIN_Print( id, "%s Error, level must be in between (or equal to) 0 and 17", g_MODclient );

         return PLUGIN_HANDLED;
      }

替换为

代码:选择全部
      new iLevel = str_to_num( szArg2 );

      if ( iLevel < 0 || iLevel >= MAX_LEVELS+1 )
      {
         ADMIN_Print( id, "%s Error, level must be in between (or equal to) 0 and 17", g_MODclient );

         return PLUGIN_HANDLED;
      }





这些只是改了等级罢了,经验。技能等级那些还没改到得,请看下面- -



在 xp.h 查找

代码:选择全部
// Amount of XP needed to gain a level
new iXPLevelShortTerm            = {0,150,300,600,1000,1500,2100,2800,3400,4500,5500};
new iXPLevelSaved               = {0,100,200,400,800,1600,3200,6400,12800,25600,51200};

// Amount of XP awarded when killing a user of this level
new iXPGivenShortTerm            = {10,15,25,35,40,50,60,70,80,90,95};
new iXPGivenSaved               = {6,8,10,12,14,16,18,20,24,28,32};


并将其更改为

代码:选择全部
// Amount of XP needed to gain a level
new iXPLevelShortTerm            = {0,150,300,600,1000,1500,2100,2800,3400,4500,5500};
new iXPLevelSaved               = {0,100,200,400,800,1600,3200,6400,12800,25600,51200};

// Amount of XP awarded when killing a user of this level
new iXPGivenShortTerm            = {10,15,25,35,40,50,60,70,80,90,95};
new iXPGivenSaved               = {6,8,10,12,14,16,18,20,24,28,32};


解说下怎么自定义修改:

// XP 的金额需要获得一个级别
new iXPLevelShortTerm = {0,150,300,600,1000,1500,2100,2800,3400,4500,5500} ;<<<不保存 xp 他们需要每个级别的 new iXPLevelSaved = {0,100,200,400,800,1600,3200,6400,12800,25600,51200} ;<< 保存他们需要为每个级别的 xp 的 xp
// XP 时批出的量杀这一级别的用户
new iXPGivenShortTerm = {10,15,25,35,40,50,60,70,80,90,95} ;<< 多少给 xp 如果不是储蓄 xp
new iXPGivenSaved = {6,8,10,12,14,16,18,20,24,28,32} ;<< 如果保存 xp 给多少 xp


如何读取这现在是

代码:选择全部
new iXPLevelSaved               = {0,100,200,400,800,1600,3200,6400,12800,25600,51200};

0 级有 xp 是 0
级别 1 有 xp 是 100
对第 2 级有 xp 是 200
3 级别有 xp 是 400 等 … …注意:0代表0等级,不是1等级哦
0,100,200,400,800,1600,3200,6400,12800,25600,51200 这里的数值有10等级,当你修改20等级后面自己添加经验- -很麻烦。后面更麻烦的

如果您添加 x 金额水平,然后 51200 后,您将需要添加的级别,例如添加量 x

代码:选择全部
new iXPLevelSaved               = {0,100,200,400,800,1600,3200,6400,12800,25600,51200,60000,70000,80000};

这是一个示范,我改了13个等级。。


这个是经验修改

在 constants.inl 查找

代码:选择全部
#define MAX_SKILL_LEVEL


这是修改技能等级的。找到文件 skill_manager.inl,并找到

代码:选择全部
   // Technically we shouldn't have a skill level EVER greater than 3 right?
   if ( iLevel > 3 )
   {
      WC3_Log( false, "Setting skill %d to %d wtf?? (%d)", skill_id, iLevel, iDebugID );

      log_error( AMX_ERR_NATIVE, "Setting skill %d to %d wtf?? (%d)", skill_id, iLevel, iDebugID );

      return;
   }


并将其更改为

代码:选择全部
   // Technically we shouldn't have a skill level EVER greater than 3 right?
   if ( iLevel > MAX_SKILL_LEVEL )
   {
      WC3_Log( false, "Setting skill %d to %d wtf?? (%d)", skill_id, iLevel, iDebugID );

      log_error( AMX_ERR_NATIVE, "Setting skill %d to %d wtf?? (%d)", skill_id, iLevel, iDebugID );

      return;
   }

这个是技能等级

这个大意都是转WC3论坛,但是我修改编译成功无法游戏,我研究了下,解决方法找到了。。

首先,是因为缺少等级的SPR
打开SPR的warcraft3/level/
这里面我们分别看到0等级到10等级的SPR,所以说,你打开看看就知道了,然后你修改了20等级自己做多10个SPR放进去就解决了。。。

当然,文件名要跟着循环,类似a_level_0.spr这个是0等级的,你做好11等级的SPR改名为a_level_11.spr,一直循环下去你懂得。。


申精啊。。我要升级,,汉化+修改哈哈~~

还有什么不懂得可以找我,别加我Q,我邮箱留言即可 178480849@qq.com

Village 发表于 2012-2-18 19:53:05

顶起!支持LZ

、Steam 发表于 2012-2-18 22:31:27

呵呵,顶起把,哈哈。。

、Steam 发表于 2012-2-18 22:33:17

Village 发表于 2012-2-18 19:53 static/image/common/back.gif
顶起!支持LZ

你的魔兽论坛不错,。。。

Village 发表于 2012-2-18 22:50:30

哈哈!是在讽刺我吧?

zww011 发表于 2012-2-18 23:14:00

支持高手。。

cbydy 发表于 2012-4-26 07:27:42

好东西就是要拿出来分享。
学习中……

289415836 发表于 2012-10-25 23:33:26


看看吧 怎么样

lanmao 发表于 2012-10-26 13:24:26

。。 上面我看了。。 技能等级修改了。。 技能的效果呢。。 例如不死族 吸血。。 那个百分比也要像经验那样来添加?



                              借号发的帖。。

289415836 发表于 2012-10-27 20:19:55

lanmao 发表于 2012-10-26 13:24 static/image/common/back.gif
。。 上面我看了。。 技能等级修改了。。 技能的效果呢。。 例如不死族 吸血。。 那个百分比也要像经验那样 ...

比如你设定技能为19个 加大觉
那么可以这么设定
第一个技能 9级
第二个    5级
第三个    4级
外加大决1级
必须是19级
然后就修改升级的百分比
9级就必须设定9次
5级就5次
比如吸血
1级0.1
2级 0.12
同上 到9级 0.9都可以
页: [1] 2
查看完整版本: CS魔兽插件等级修改教程