Урока съм го тествал и нещата се получават , за тези които немогат нека знаят ,че грешката не е в урока.
Препоръчвам ви да работите с текстов едитор notepad ++ понеже има повече опции и е по добър.
в ...\cstrike\addons\amxmodx\scripting\ отваряте constants.inl и намирате
Код за потвърждение: Избери целия код
#define MAX_LEVELS
Отваряте 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[i], 63, "sprites/warcraft3/level/a_level_%d.spr", i );
}
Код за потвърждение: Избери целия код
// Store level sprite names
for ( i = 0; i < MAX_LEVELS+1; i++ )
{
formatex( g_szLevelSprites[i], 63, "sprites/warcraft3/level/a_level_%d.spr", i );
}
Код за потвърждение: Избери целия код
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;
}
Ето какво пише в XP.h : // Amount of XP needed to gain a level - Стойност на XP за следващо ниво.Ако искаш след 10 или 13 lvl както прецениш не го удвоявай или добавай + 10000 тоест ако 10 ниво е 51200 за 11 лвл добави + 10000 и така на татък.
А този ред : // Amount of XP awarded when killing a user of this level означава
Стойност на XP за убийство на всеки следващ лвл.Тоест ако на 10 лвл ти дава по 32 XP ,то можеш на всеки следващ лвл да си го направиш по 50 XP зависи как ще си калкулираш горните стойности.Защото ако си остане по 32 XP за всеки следващ лвл ,то ще вдигаш 16 лвл до другата година по това време.Ако ме разбираш
В constants.inl са самите ултимейти и способности на героите, там също трябва да се правят промени:
Ще намериш код:
Код за потвърждение: Избери целия код
// Constants for Abilities
new const Float:p_vampiric[3] = {0.10,0.20,0.30} // Vampiric Aura (skill 1)
new Float:p_unholy[3] = {265.0,285.0,300.0} // Unholy Aura (skill 2)
new Float:p_unholy_dod[3] = {33.3,66.6,100.0} // Unholy Aura (skill 2)
new const Float:p_levitation[3] = {0.8,0.6,0.4} // Levitation (skill 3)
new const p_invisibility[3] = {200,175,135} // Invisibility (skill 1)
new const p_devotion = 15 // Devotion Aura (skill 2)
new const Float:p_bash[3] = {0.10,0.20,0.30} // Bash (skill 3)
new const Float:p_critical[3] = {0.25,0.50,0.75} // Critical Strike (skill 1)
new const Float:p_grenade[3] = {2.0,3.0,4.0} // Critical Grenade (skill 2)
new const Float:p_ankh[3] = {0.333,0.666,1.0} // Equipment reincarnation (skill 3)
new const Float:p_evasion[3] = {0.1,0.175,0.25} // Evasion (skill 1)
new const Float:p_thorns[3] = {0.05,0.1,0.15} // Thorns Aura (skill 2)
new const Float:p_trueshot[3] = {0.1,0.2,0.35} // Trueshot Aura (skill 3)
new const Float:p_phoenix[3] = {0.333,0.666,1.0} // Phoenix (skill 1)
new const p_phoenix_dod[3] = {300,600,900} // Phoenix - DOD (skill 1)
new const Float:p_banish[3] = {0.05,0.10,0.15} // Banish (skill 2)
new const Float:p_mana[3] = {0.02,0.04,0.08} // Siphon Mana (skill 3)
new const Float:p_resistant[11] = {0.02, 0.04, 0.08, 0.12, 0.16, 0.20, 0.24, 0.28, 0.32, 0.36, 0.40} // Resistant Skin (Skill 4)
new const Float:p_heal[3] = {6.0,4.0,2.0} // Healing Wave (skill 1)
new const Float:p_hex[3] = {0.05,0.10,0.15} // Hex (skill 2)
new const p_serpent[3] = {1,2,3} // Serpent Ward (skill 3)
new const Float:p_concoction[11] = {0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.10, 0.15} // Unstable Concoction (Skill 4)
new const Float:p_fan[3] = {0.05,0.10,0.15} // Fan of Knives (skill 1)
new const Float:p_blink[3] = {0.333,0.666,1.0} // Blink (skill 2)
new const Float:p_shadow[3] = {0.05,0.10,0.15} // Shadow Strike (skill 3)
new const Float:p_harden[11] = {0.03, 0.05, 0.10, 0.15, 0.20, 0.25, 0.30, 0.35, 0.40, 0.45, 0.50} // Hardened Skin (Skill 4)
new const Float:p_impale[3] = {0.05,0.1,0.15} // Impale (skill 1)
new const Float:p_spiked[3] = {0.05,0.1,0.15} // Spiked Carapace (skill 2)
new const Float:p_carrion[3] = {0.05,0.10,0.15} // Carrion Beetle (skill 3)
new const Float:p_orb[11] = {0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.10, 0.15}
Код за потвърждение: Избери целия код
// Constants for Abilities
new const Float:p_vampiric[5] = {0.10,0.20,0.30,0.40,0.50} // Vampiric Aura (skill 1)
new Float:p_unholy[5] = {265.0,285.0,300.0,320.0,340.0} // Unholy Aura (skill 2)
new Float:p_unholy_dod[5] = {33.3,66.6,100.0,133.3,166.6} // Unholy Aura (skill 2)
new const Float:p_levitation[5] = {0.8,0.6,0.4,0.3,0.2} // Levitation (skill 3)
new const p_invisibility[5] = {200,175,135,120,105} // Invisibility (skill 1)
new const p_devotion = 15 // Devotion Aura (skill 2)
new const Float:p_bash[5] = {0.10,0.20,0.30,0.40,0.50} // Bash (skill 3)
new const Float:p_critical[5] = {0.25,0.50,0.75,0.85,1.00} // Critical Strike (skill 1)
new const Float:p_grenade[5] = {2.0,3.0,4.0,5.0,6.0} // Critical Grenade (skill 2)
new const Float:p_ankh[5] = {0.333,0.666,0.788,1.0,1.333} // Equipment reincarnation (skill 3)
new const Float:p_evasion[5] = {0.1,0.175,0.25,0.275,0.5} // Evasion (skill 1)
new const Float:p_thorns[5] = {0.05,0.1,0.15,0.2,0.3} // Thorns Aura (skill 2)
new const Float:p_trueshot[5] = {0.1,0.2,0.35,0.45,0.55} // Trueshot Aura (skill 3)
new const Float:p_phoenix[5] = {0.333,0.666,0.788,1.0,1.333} // Phoenix (skill 1)
new const p_phoenix_dod[5] = {300,600,900,1200,1500} // Phoenix - DOD (skill 1)
new const Float:p_banish[5] = {0.05,0.10,0.15,0.20,0.30} // Banish (skill 2)
new const Float:p_mana[5] = {0.02,0.04,0.08,0.12,0.16} // Siphon Mana (skill 3)
new const Float:p_resistant[17] = {0.02, 0.04, 0.08, 0.12, 0.16, 0.20, 0.24, 0.28, 0.32, 0.34, 0.36, 0.38, 0.40, 0.42, 0.44, 0.46, 0.48} // Resistant Skin
new const Float:p_heal[5] = {6.0,4.0,2.0,1.5,1.0} // Healing Wave (skill 1)
new const Float:p_hex[5] = {0.05,0.10,0.15,0.20,0.30} // Hex (skill 2)
new const p_serpent[5] = {1,2,3,4,5} // Serpent Ward (skill 3)
new const Float:p_concoction[17] = {0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.10, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17} // Unstable Concoction (Skill 4)
new const Float:p_fan[5] = {0.05,0.10,0.15,0.20,0.30} // Fan of Knives (skill 1)
new const Float:p_blink[5] = {0.333,0.666,0.8,1.0,1.333} // Blink (skill 2)
new const Float:p_shadow[5] = {0.05,0.10,0.15,0.20,0.30} // Shadow Strike (skill 3)
new const Float:p_harden[17] = {0.03, 0.05, 0.10, 0.15, 0.20, 0.25, 0.30, 0.35, 0.37, 0.40, 0.43,0.46,0.50,0.55,0.60,0.65,0.70} // Hardened Skin (Skill 4)
new const Float:p_impale[5] = {0.05,0.1,0.15,0.2,0.30} // Impale (skill 1)
new const Float:p_spiked[5] = {0.05,0.1,0.15,0.2,0.30} // Spiked Carapace (skill 2)
new const Float:p_carrion[5] = {0.05,0.10,0.15,0.2,0.30} // Carrion Beetle (skill 3)
new const Float:p_orb[17] = {0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.10, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17} // Orb of Annihilation (Skill 4)
Ето източника за този код:
В 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;
}
Код за потвърждение: Избери целия код
// 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};
в 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;
}
на този ред
new iXPLevelSaved[MAX_LEVELS+1] = {0,100,200,400,800,1600,3200,6400,12800,25600,51200};
трябва да калкулирате ило да въведете други стойности след 51200 за да се получи
тоест след тази стойност добавяте нейната x 2.
,51200,102400,204800,...
Добавям и 16 спрайта (sprites) за 16 нива(препоръчително е да са максимално толкова).
Ако случайно искате повече нива трябва да качите и още спрайта.Това може да го направите като влезнете в такъв сървър като ви се свялят файловете ще ви се намират на вашия клиент.От там може да копирате и да си ги добавите. Изтегли 16 sprites
Източник