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

В този раздел можете да намерите полезни кодове и уроци свързани с PAWN скриптинга.
Аватар
3agopka
Извън линия
Потребител
Потребител
Мнения: 68
Регистриран на: 20 Окт 2016, 21:36
Получена благодарност: 1 път

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

Мнение от 3agopka » 23 Окт 2016, 17:53

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

Препоръчвам ви да работите с текстов едитор 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 );
           }
В 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;
           }
Това е за XP.Нужния XP за следващото ниво, не си спомням много добре но ако нивата ти са 16 тези стойности трябва да са 17.Като винаги първата стойност трябва да е 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}
Давам кода за 16 лвл:

Код за потвърждение: Избери целия код

// 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;
              }
В 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};
За да промените нивата за уменията трябва да направите следните неща
в 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 нива(препоръчително е да са максимално толкова).
Ако случайно искате повече нива трябва да качите и още спрайта.Това може да го направите като влезнете в такъв сървър като ви се свялят файловете ще ви се намират на вашия клиент.От там може да копирате и да си ги добавите.
level.rar
Изтегли 16 sprites
Източник
Последно промяна от 3agopka на 29 Окт 2016, 17:25, променено общо 2 пъти.

Аватар
JustInCase
Извън линия
Потребител
Потребител
Мнения: 582
Регистриран на: 14 Окт 2016, 23:31
Се отблагодари: 4 пъти
Получена благодарност: 15 пъти

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

Мнение от JustInCase » 25 Окт 2016, 22:54

Не мога да отворя .rar файла..
MANSION - HNS : 45.144.155.99:27026
ONLINE

Аватар
Petrowch0
Извън линия
Потребител
Потребител
Мнения: 220
Регистриран на: 14 Окт 2016, 19:23
Местоположение: de_dust2
Получена благодарност: 3 пъти
Обратна връзка:

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

Мнение от Petrowch0 » 25 Окт 2016, 22:58

Оправи архива с файловете, защото дава грешка при отваряне или опит за разархивиране.
Изображение
Изображение

BABAZORO
Извън линия
Потребител
Потребител
Мнения: 59
Регистриран на: 06 Окт 2016, 11:23
Се отблагодари: 1 път
Получена благодарност: 2 пъти
Обратна връзка:

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

Мнение от BABAZORO » 26 Окт 2016, 07:49

не е само неговият архив на много от темите с прикачени файлове е така... вие го оправете
извинявам се че пиша в тази тема но тук видях че стана въпрос :)
Ако на теб ти е ГОТ,и на мен ми е ГОТ

Аватар
3agopka
Извън линия
Потребител
Потребител
Мнения: 68
Регистриран на: 20 Окт 2016, 21:36
Получена благодарност: 1 път

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

Мнение от 3agopka » 26 Окт 2016, 11:02

Това беше станало и с други форуми.Съвета ми е просто да не се прикачат файлове в самия форум а да се оставят линкове към тях.
Вариант 1 - Нова система в сайта за файлове достъпни за качване - на .rar и други видове архиви.
Вариант 2 - Всеки потребител ще си прави регистрация в google или abv.bg за да качва файловете по собствен път.

Аватар
JustInCase
Извън линия
Потребител
Потребител
Мнения: 582
Регистриран на: 14 Окт 2016, 23:31
Се отблагодари: 4 пъти
Получена благодарност: 15 пъти

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

Мнение от JustInCase » 26 Окт 2016, 17:50

Сървъра крашва

Код за потвърждение: Избери целия код

crash_20161026174658_1.dmp[4020]: Uploading dump (out-of-process)
/tmp/dumps/crash_20161026174658_1.dmp
crash_20161026174658_1.dmp[4020]: Finished uploading minidump (out-of-process):
success = no
crash_20161026174658_1.dmp[4020]: error: libcurl.so: cannot open shared object f
ile: No such file or directory
crash_20161026174658_1.dmp[4020]: file ''/tmp/dumps/crash_20161026174658_1.dmp''
, upload no: ''libcurl.so: cannot open shared object file: No such file or direc
tory''
Segmentation fault
MANSION - HNS : 45.144.155.99:27026
ONLINE

Аватар
3agopka
Извън линия
Потребител
Потребител
Мнения: 68
Регистриран на: 20 Окт 2016, 21:36
Получена благодарност: 1 път

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

Мнение от 3agopka » 26 Окт 2016, 18:59

Урока не е виновен за това виж си кода трябва да си инсталираш пакет "libcurl.so"
Не съм много на ясно с Linux , малко съм работил с него ако искаш кажи коя версия си и ще погледна в google вместо теб ;)

Аватар
Petrowch0
Извън линия
Потребител
Потребител
Мнения: 220
Регистриран на: 14 Окт 2016, 19:23
Местоположение: de_dust2
Получена благодарност: 3 пъти
Обратна връзка:

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

Мнение от Petrowch0 » 26 Окт 2016, 21:06

JustInCase написа:Сървъра крашва

Код за потвърждение: Избери целия код

crash_20161026174658_1.dmp[4020]: Uploading dump (out-of-process)
/tmp/dumps/crash_20161026174658_1.dmp
crash_20161026174658_1.dmp[4020]: Finished uploading minidump (out-of-process):
success = no
crash_20161026174658_1.dmp[4020]: error: libcurl.so: cannot open shared object f
ile: No such file or directory
crash_20161026174658_1.dmp[4020]: file ''/tmp/dumps/crash_20161026174658_1.dmp''
, upload no: ''libcurl.so: cannot open shared object file: No such file or direc
tory''
Segmentation fault
Коя версия на dproto ползваш ?
Изображение

Аватар
JustInCase
Извън линия
Потребител
Потребител
Мнения: 582
Регистриран на: 14 Окт 2016, 23:31
Се отблагодари: 4 пъти
Получена благодарност: 15 пъти

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

Мнение от JustInCase » 26 Окт 2016, 23:31

Petrowch0 написа: Коя версия на dproto ползваш ?

Има ли значение при положение, че ми тръгва когато не е 10 лвл-а ? :blush:
MANSION - HNS : 45.144.155.99:27026
ONLINE

Аватар
3agopka
Извън линия
Потребител
Потребител
Мнения: 68
Регистриран на: 20 Окт 2016, 21:36
Получена благодарност: 1 път

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

Мнение от 3agopka » 27 Окт 2016, 11:09

значи си объркал нещо опитай на ново

Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Полезни кодове/уроци”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта