War3FT - Как да добавите повече нива в вашия сървър

В този раздел ще намерите много полезни теми, свързани с CS 1.6

В темите можете да пишете единствено ако имате въпрос, свързан с конкретния урок!
Post Reply
User avatar
3agopka
Потребител
Потребител
Posts: 110
Joined: 11 Sep 2011, 03:19
Skype: demon555-666
CS Nick: 3agopka
Favorite version: CS: Global Offensive
Steam Community ID: 3agopka

War3FT - Как да добавите повече нива в вашия сървър

Post by 3agopka »

Здравейте , ще ви покажа как да си добавите повече нива в мода War3FT
Урока съм го тествал и нещата се получават , за тези които немогат нека знаят ,че грешката не е в урока.

Препоръчвам ви да работите с текстов едитор notepad ++ понеже има повече опции и е по добър.
в ...\cstrike\addons\amxmodx\scripting\ отваряте constants.inl и намирате

Code: Select all

    #define MAX_LEVELS

като добавяте нивото което искате

Отваряте war3ft.inl , намирате

Code: Select all

             // 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 ) );
             }
Замествате с

Code: Select all

             // 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 ) );
             }
в същия файл намирате

Code: Select all

             // 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) );
             
             }
замествате с

Code: Select all

             // 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) );
             
             }
по на долу намирате

Code: Select all

       // 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 ) );
       }
и замествате с

Code: Select all

       // 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 ) );
       }
отново в същия файл на долу намирате

Code: Select all

       // 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 )
       {
и замествате с

Code: Select all

       // 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 )
       {
намирате

Code: Select all

       // Store level sprite names
       for ( i = 0; i < 11; i++ )
       {
          formatex( g_szLevelSprites[i], 63, "sprites/warcraft3/level/a_level_%d.spr", i );
       }
Замествате с

Code: Select all

       // 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 );
       }

В xp.inl намирате

Code: Select all

    new Float:iLevelMultiplier = ( fCurrentLevel / 10.0 ) + 1.0;
----->

Code: Select all

    new Float:iLevelMultiplier = ( fCurrentLevel / float(MAX_LEVELS) ) + 1.0;
намирате

Code: Select all

    XP_GetByLevel( iLevel )
    {
       if ( iLevel < 0 || iLevel > 10 )
       {
          return 0;
       }
----->

Code: Select all

    XP_GetByLevel( iLevel )
    {
       if ( iLevel < 0 || iLevel > MAX_LEVELS )
       {
          return 0;
       }
Намирате

Code: Select all

    XP_GivenByLevel( iLevel )
    {
       if ( iLevel < 0 || iLevel > 10 )
       {
          return 0;
       }
замествате с

Code: Select all

    XP_GivenByLevel( iLevel )
    {
       if ( iLevel < 0 || iLevel > MAX_LEVELS )
       {
          return 0;
       }
В admin.inl намирате

Code: Select all

          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;
          }
-------->

Code: Select all

          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 намирате

Code: Select all

    // 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};
замествате с

Code: Select all

    // 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 намирате

Code: Select all

    #define MAX_SKILL_LEVEL
и добавяте броя на уменията (колкото са и нивата)

Отивате в skill_manager.inl , намирате

Code: Select all

       // 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;
       }
и презамествате с

Code: Select all

       // 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,...

Добавям и 22 спрайта (sprites)
Изтегли war3ft 22 level sprites
Мисля , че ще е полезна на много които си имат някаква представа от модове така ,че може темата да се закачи
Източник
Last edited by 3agopka on 08 Apr 2015, 10:38, edited 1 time in total.
User avatar
PhotoKiller
Потребител
Потребител
Posts: 89
Joined: 31 Jan 2014, 17:09
Favorite version: CS: 1.6
Location: Русе
Contact:

Re: War3FT - Как да добавите повече нива в вашия сървър

Post by PhotoKiller »

Поне дай линк към оригиналната тема.
Ето я и нея http://wc3mods.net/forums/viewtopic.php?t=3759 .
User avatar
3agopka
Потребител
Потребител
Posts: 110
Joined: 11 Sep 2011, 03:19
Skype: demon555-666
CS Nick: 3agopka
Favorite version: CS: Global Offensive
Steam Community ID: 3agopka

Re: War3FT - Как да добавите повече нива в вашия сървър

Post by 3agopka »

Поне дай линк към оригиналната тема.
Има ли смисъл от това след като съм я превел ?
User avatar
shhnedo
0_0
0_0
Posts: 474
Joined: 07 Nov 2009, 17:59

Re: War3FT - Как да добавите повече нива в вашия сървър

Post by shhnedo »

Да, при положение, че си взел чуждия труд и на всичкото отгоре прекарваш читателите през adfly линк, за да стигнат до reupload-натия в DOX.bg архив!
User avatar
3agopka
Потребител
Потребител
Posts: 110
Joined: 11 Sep 2011, 03:19
Skype: demon555-666
CS Nick: 3agopka
Favorite version: CS: Global Offensive
Steam Community ID: 3agopka

Re: War3FT - Как да добавите повече нива в вашия сървър

Post by 3agopka »

линка е оправен.
ако ви е по лесно да ви давам направо линкове към сръбски , румънски и всякакви чуждестранни сайтове за уроци ?
понеже всички знаят тези езици ... ??
User avatar
shhnedo
0_0
0_0
Posts: 474
Joined: 07 Nov 2009, 17:59

Re: War3FT - Как да добавите повече нива в вашия сървър

Post by shhnedo »

Не се прави на ударен и не изопачавай нещата! Превеждаш ЧУЖД УРОК! Следователно е редно да пуснеш линк към първоизточника или най-малкото да го споменеш някъде в дъното на поста си!

=======================================================
3agopka wrote:Сериозно ли ааа. ама верно.Провери някой урок дали има линк към оригинала !Дали някой си е направил труда да преведе от чуждестранни сайтове нещо или всеки е копирал от други български форуми !
Айде стига ...Боли ме фара за линка , урока е преведен и това е факт !
Сметкаджийска логика на дете. Щом другите така го раздават, ми дай и аз да не съм по-назад, ама като ми кажат нещо - показвам рогата. Да си измиеш ръцете с другите е най-лесно. ;]
Аз спирам до тук.
User avatar
3agopka
Потребител
Потребител
Posts: 110
Joined: 11 Sep 2011, 03:19
Skype: demon555-666
CS Nick: 3agopka
Favorite version: CS: Global Offensive
Steam Community ID: 3agopka

Re: War3FT - Как да добавите повече нива в вашия сървър

Post by 3agopka »

Сериозно ли ааа. ама верно.Провери някой урок дали има линк към оригинала !Дали някой си е направил труда да преведе от чуждестранни сайтове нещо или всеки е копирал от други български форуми !
Айде стига ...Боли ме фара за линка , урока е преведен и това е факт !
User avatar
LAWLIET
CS-GOLD Owner
CS-GOLD Owner
Posts: 116
Joined: 06 Nov 2010, 19:09
Skype: LawlietBG
CS Nick: LAWLIET
Favorite version: CS: 1.6
Steam Community ID: kaloian5
Location: В cs-bg.info
Contact:

Re: War3FT - Как да добавите повече нива в вашия сървър

Post by LAWLIET »

Хубаво преведен урок, но има програмки който правят това с 2 клика и имат много много повече опций и т.н. :) :o
Last edited by shhnedo on 20 Oct 2015, 17:08, edited 1 time in total.
Reason: Нарушена т.5 от правилата на форума! Обсъжда се даденият урок, а не неговите алтернативи. След като има такива, правиш урок за тях и ги обсъждаш там.
Post Reply

Return to “Уроци”