|
其实不会太难的,本文转WC3.MOD论坛 有改动
在 constants.inl 查找
代码:选择全部
#define MAX_LEVELS 10 这里就是等级,改成你想要的等级- -该太多你看完后面你会后悔的。。。
在 war3ft.inl 查找
代码:选择全部
// User is under level 10
else if ( p_data[id][P_LEVEL] < 10 )
{
pos += formatex( szRaceInfo[pos], 255, "%s %L: %d XP: %d/%d ", szShortRaceName, id, "WORD_LEVEL", p_data[id][P_LEVEL], p_data[id][P_XP], XP_GetByLevel( p_data[id][P_LEVEL]+1) );
formatex( szXPInfo, 31, "%L: %d XP: %d/%d", id, "WORD_LEVEL", p_data[id][P_LEVEL], p_data[id][P_XP], XP_GetByLevel( p_data[id][P_LEVEL]+1 ) );
}
替换为
代码:选择全部
// User is under level 10
else if ( p_data[id][P_LEVEL] < MAX_LEVELS )
{
pos += formatex( szRaceInfo[pos], 255, "%s %L: %d XP: %d/%d ", szShortRaceName, id, "WORD_LEVEL", p_data[id][P_LEVEL], p_data[id][P_XP], XP_GetByLevel( p_data[id][P_LEVEL]+1) );
formatex( szXPInfo, 31, "%L: %d XP: %d/%d", id, "WORD_LEVEL", p_data[id][P_LEVEL], p_data[id][P_XP], XP_GetByLevel( p_data[id][P_LEVEL]+1 ) );
}
然后在同一文件中找到
代码:选择全部
// User is under level 10
else if ( p_data[id][P_LEVEL] < 10 )
{
pos += formatex( szRaceInfo[pos], 255, "%s %L: %d^nXP: %d/%d^n", szShortRaceName, id, "WORD_LEVEL", p_data[id][P_LEVEL], p_data[id][P_XP], XP_GetByLevel( p_data[id][P_LEVEL]+1) );
}
替换为
代码:选择全部
// User is under level 10
else if ( p_data[id][P_LEVEL] < MAX_LEVELS )
{
pos += formatex( szRaceInfo[pos], 255, "%s %L: %d^nXP: %d/%d^n", szShortRaceName, id, "WORD_LEVEL", p_data[id][P_LEVEL], p_data[id][P_XP], XP_GetByLevel( p_data[id][P_LEVEL]+1) );
}
在相同的文件查找
代码:选择全部
// User is under level 10
else if ( p_data[iTargetID][P_LEVEL] < 10 )
{
iMsgPos += formatex( szMsg, 511, "%s %L: %d XP: %d/%d", szRaceName, id, "WORD_LEVEL", p_data[iTargetID][P_LEVEL], p_data[iTargetID][P_XP], XP_GetByLevel( p_data[iTargetID][P_LEVEL]+1 ) );
}
替换为
代码:选择全部
// User is under level 10
else if ( p_data[iTargetID][P_LEVEL] < MAX_LEVELS-1 )
{
iMsgPos += formatex( szMsg, 511, "%s %L: %d XP: %d/%d", szRaceName, id, "WORD_LEVEL", p_data[iTargetID][P_LEVEL], p_data[iTargetID][P_XP], XP_GetByLevel( p_data[iTargetID][P_LEVEL]+1 ) );
}
在相同的文件查找
代码:选择全部
// Do we need to give this user XP?
new iStartLevel = get_pcvar_num( CVAR_wc3_start_level );
if ( p_data[id][P_XP] < 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[id][P_XP] < 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[11] = {0,150,300,600,1000,1500,2100,2800,3400,4500,5500};
new iXPLevelSaved[11] = {0,100,200,400,800,1600,3200,6400,12800,25600,51200};
// Amount of XP awarded when killing a user of this level
new iXPGivenShortTerm[11] = {10,15,25,35,40,50,60,70,80,90,95};
new iXPGivenSaved[11] = {6,8,10,12,14,16,18,20,24,28,32};
并将其更改为
代码:选择全部
// Amount of XP needed to gain a level
new iXPLevelShortTerm[MAX_LEVELS+1] = {0,150,300,600,1000,1500,2100,2800,3400,4500,5500};
new iXPLevelSaved[MAX_LEVELS+1] = {0,100,200,400,800,1600,3200,6400,12800,25600,51200};
// Amount of XP awarded when killing a user of this level
new iXPGivenShortTerm[MAX_LEVELS+1] = {10,15,25,35,40,50,60,70,80,90,95};
new iXPGivenSaved[MAX_LEVELS+1] = {6,8,10,12,14,16,18,20,24,28,32};
解说下怎么自定义修改:
// XP 的金额需要获得一个级别
new iXPLevelShortTerm [MAX_LEVELS + 1] = {0,150,300,600,1000,1500,2100,2800,3400,4500,5500} ;<<<不保存 xp 他们需要每个级别的 new iXPLevelSaved [MAX_LEVELS + 1] = {0,100,200,400,800,1600,3200,6400,12800,25600,51200} ;<< 保存他们需要为每个级别的 xp 的 xp
// XP 时批出的量杀这一级别的用户
new iXPGivenShortTerm [MAX_LEVELS + 1] = {10,15,25,35,40,50,60,70,80,90,95} ;<< 多少给 xp 如果不是储蓄 xp
new iXPGivenSaved [MAX_LEVELS + 1] = {6,8,10,12,14,16,18,20,24,28,32} ;<< 如果保存 xp 给多少 xp
如何读取这现在是
代码:选择全部
new iXPLevelSaved[MAX_LEVELS+1] = {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[MAX_LEVELS+1] = {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 |
|