Как дополнить меню выбора рассы?
|
|
kica | Дата: Среда, 08.08.2012, 04:11 | Сообщение # 1 |
- Сообщения: 216
- Награды: 3
- Замечания:
|
Как добавить уровень в скобках?
Сообщение отредактировал kica - Среда, 08.08.2012, 04:12 |
|
| |
SMaster | Дата: Воскресенье, 12.08.2012, 16:24 | Сообщение # 2 |
- Сообщения: 2189
- Награды: 46
- Замечания:
|
Шаг 1. Открываешь файл war3ft.inl Находишь WC3_ChangeRaceShowMenu( idUser, iRaceXP[MAX_RACES] = {0} ) Заменяешь полностью эту функцию на приведенную ниже: Code // Function will show the "select a race" menu to the user WC3_ChangeRaceShowMenu( idUser, iRaceXP[MAX_RACES] = {0},iRaceLVL[MAX_RACES] = {0} ) { // We don't want to replace the player's current XP with whats in the database now do we ? if ( p_data[idUser][P_RACE] ) { iRaceXP[p_data[idUser][P_RACE]-1] = p_data[idUser][P_XP]; iRaceLVL[p_data[idUser][P_RACE]-1] = p_data[idUser][P_LEVEL]; }
// Need to call this here MENU_ChangeRace( idUser, iRaceXP,iRaceLVL); }
Скрин как должно быть:
Шаг 2. Открываешь файл XP.inl и добавляешь новую функцию в самый низ Код: Code XP_GetLevelByXP( iXP ) { if ( iXP < 0 || iXP == 0 ) return 0;
new Float:fXPMult = get_pcvar_float( CVAR_wc3_xp_multiplier );
new iResultLevel = 0; for (new iLevel = 0; iLevel <= MAX_LEVELS; iLevel++ ) { if ( get_pcvar_num( CVAR_wc3_save_xp ) == 1 ) { if(iXP >= floatround(iXPLevelSaved[iLevel] * fXPMult )) iResultLevel = iLevel; }
if ( get_pcvar_num( CVAR_wc3_save_xp ) == 0 ) { if(iXP >= floatround(iXPLevelShortTerm[iLevel] * fXPMult )) iResultLevel = iLevel; }
}
return iResultLevel; }
Шаг 3. Открываешь файл db_common.h и добавляешь новую переменную Code new arrPlayerLevelsInfo[33][MAX_RACES];
Шаг 4. Открываешь db_sqlite.inl Находишь SQLITE_GetAllXP( idUser )
Добавляешь строчку: Code arrPlayerLevelsInfo[idUser][iRace-1] = XP_GetLevelByXP( iXP );
Заменяешь всю строку WC3_ChangeRaceShowMenu( idUser, g_iDBPlayerXPInfoStore[idUser]); На эту: Code WC3_ChangeRaceShowMenu( idUser, g_iDBPlayerXPInfoStore[idUser],arrPlayerLevelsInfo[idUser]);
Скрин как должно быть:
Шаг 5. Открываешь db_mysqlx.inl Находишь MYSQLX_GetAllXP( idUser )
Добавляешь строчку: Code arrPlayerLevelsInfo[idUser][iRace-1] = XP_GetLevelByXP( iXP );
Заменяешь всю строку WC3_ChangeRaceShowMenu( idUser, g_iDBPlayerXPInfoStore[idUser]); На эту: Code WC3_ChangeRaceShowMenu( idUser, g_iDBPlayerXPInfoStore[idUser],arrPlayerLevelsInfo[idUser]);
Скрин как должно быть:
Шаг 6. Открываешь menus.inl Находишь public MENU_ChangeRace( idUser, iRaceXP[MAX_RACES]) и полностью меняешь всю функцию на код ниже: Code public MENU_ChangeRace( idUser, iRaceXP[MAX_RACES],iRaceLVL[MAX_RACES]) { new szRaceName[MAX_RACES+1][64],i, pos, iKeys = 0, szMenu[512], szXP[16],szLVL[64];
// Get our race names for ( i = 0; i < get_pcvar_num( CVAR_wc3_races ); i++ ) lang_GetRaceName( i + 1, idUser, szRaceName[i], 63 );
pos += formatex( szMenu[pos], charsmax(szMenu)-pos, "%L", LANG_PLAYER, "MENU_SELECT_RACE" );
// Then add the experience column if ( get_pcvar_num( CVAR_wc3_save_xp ) ) pos += formatex( szMenu[pos], charsmax(szMenu)-pos, "\R%L^n^n", LANG_PLAYER, "MENU_WORD_EXPERIENCE" ); else pos += formatex( szMenu[pos], charsmax(szMenu)-pos, "^n" );
// Build the changerace menu (for every race) for ( i = 0; i < get_pcvar_num( CVAR_wc3_races ); i++ ) { num_to_str( iRaceXP[i], szXP, 15 ); if ((i+1) == RACE_CHAMELEON) formatex(szLVL, charsmax(szLVL), "(%L %d)", LANG_PLAYER, "MENU_WORD_LEVEL",iRaceLVL[i]);
// Add the "Select a Hero" message if necessary if ( i == 4 ) pos += format( szMenu[pos], charsmax(szMenu)-pos, "%L", LANG_PLAYER, "SELECT_HERO" ); // User's current race if ( i == p_data[idUser][P_RACE] - 1 ) { pos += formatex( szMenu[pos], charsmax(szMenu)-pos, "\d%d. %s %s\d\R%s^n", i + 1, szRaceName[i],szLVL, ( (get_pcvar_num( CVAR_wc3_save_xp )) ? szXP : " " ) );
iKeys |= (1<<i); }
// Race the user wants to change to else if ( i == p_data[idUser][P_CHANGERACE] - 1 ) { pos += formatex( szMenu[pos], charsmax(szMenu)-pos, "\r%d. %s %s\r\R%s^n", i + 1, szRaceName[i],szLVL, ( (get_pcvar_num( CVAR_wc3_save_xp )) ? szXP : " " ) );
iKeys |= (1<<i); }
// All other cases else { new bool:bAllowRace = true;
// Check to see if the user can choose this race (are there too many of this race?) if ( bAllowRace ) { pos += formatex( szMenu[pos], charsmax(szMenu)-pos, "\w%d. %s %s\y\R%s^n", i + 1, szRaceName[i],szLVL, ( (get_pcvar_num( CVAR_wc3_save_xp )) ? szXP : " " ) );
iKeys |= (1<<i); }
// If not, display the race, but don't give them a key to press else { pos += formatex( szMenu[pos], charsmax(szMenu)-pos, "\d%d. %s %s\y\R%s^n", i + 1, szRaceName[i],szLVL, ( (get_pcvar_num( CVAR_wc3_save_xp )) ? szXP : " " ) ); } }
}
iKeys |= (1<<i); // This is needed so we can make the Auto-Select option "0" if the number of races is 9 if ( get_pcvar_num( CVAR_wc3_races ) == 9 ) { i = -1; }
pos += format( szMenu[pos], charsmax(szMenu)-pos, "%L", idUser, "SELECT_RACE_FOOTER", i + 1 ); // Add a cancel button to the bottom if ( get_pcvar_num( CVAR_wc3_races ) != 9 ) { iKeys |= (1<<9);
pos += format( szMenu[pos], charsmax(szMenu)-pos, "^n\d0. %L", idUser, "WORD_CANCEL" ); } // Show the menu to the user! show_menu( idUser, iKeys, szMenu, -1 );
return; } Результат, который должен получиться:
Шаг 7. В словарик cssbWar3ftMod.txt нужно добавить новый ключ. MENU_WORD_LEVEL = Уровень
P.S.: Если убрать условие Code if ((i+1) == RACE_CHAMELEON) отображаться будет на всех расах уровень, но может не весь текст влазить.Поэтому надо слово Уровень сократить
Наша группа вконтакте http://vk.com/nano_world_cs
Контакты: ICQ 607786179 Skype xonahead
|
|
| |
MaJIou | Дата: Среда, 16.04.2014, 15:02 | Сообщение # 3 |
- Сообщения: 43
- Награды: 0
- Замечания:
|
SMaster, А почему у меня ошибка вот такая undefined symbol 'iRace'
Skype - dimasomon
|
|
| |
SMaster | Дата: Среда, 16.04.2014, 16:04 | Сообщение # 4 |
- Сообщения: 2189
- Награды: 46
- Замечания:
|
MaJIou, потому что переменная iRace не объявлена. Проверяй.
Наша группа вконтакте http://vk.com/nano_world_cs
Контакты: ICQ 607786179 Skype xonahead
|
|
| |
MaJIou | Дата: Среда, 16.04.2014, 17:36 | Сообщение # 5 |
- Сообщения: 43
- Награды: 0
- Замечания:
|
SMaster, А где её надо писать
Skype - dimasomon
|
|
| |
SMaster | Дата: Среда, 16.04.2014, 17:37 | Сообщение # 6 |
- Сообщения: 2189
- Награды: 46
- Замечания:
|
MaJIou, Вообще в моде она была, на сколько помню!
Наша группа вконтакте http://vk.com/nano_world_cs
Контакты: ICQ 607786179 Skype xonahead
|
|
| |
MaJIou | Дата: Среда, 16.04.2014, 17:45 | Сообщение # 7 |
- Сообщения: 43
- Награды: 0
- Замечания:
|
SMaster, А в каком имеено файле оно
Skype - dimasomon
|
|
| |
SMaster | Дата: Среда, 16.04.2014, 17:49 | Сообщение # 8 |
- Сообщения: 2189
- Награды: 46
- Замечания:
|
MaJIou, в том же
Наша группа вконтакте http://vk.com/nano_world_cs
Контакты: ICQ 607786179 Skype xonahead
|
|
| |
MaJIou | Дата: Четверг, 17.04.2014, 16:01 | Сообщение # 9 |
- Сообщения: 43
- Награды: 0
- Замечания:
|
SMaster,Можешь описать как сделать Пример 1.Нежить сколько опыта ( а можно место опыта что-бы уровень писала)
Skype - dimasomon
|
|
| |
SMaster | Дата: Четверг, 17.04.2014, 17:03 | Сообщение # 10 |
- Сообщения: 2189
- Награды: 46
- Замечания:
|
MaJIou, Расписано все уже. Нормальный мод скачай для начала.
Наша группа вконтакте http://vk.com/nano_world_cs
Контакты: ICQ 607786179 Skype xonahead
|
|
| |
MaJIou | Дата: Четверг, 17.04.2014, 18:59 | Сообщение # 11 |
- Сообщения: 43
- Награды: 0
- Замечания:
|
SMaster, у меня твой есть с исходниками так а где я весь сайт облазил нету помоги найти
Skype - dimasomon
|
|
| |
SMaster | Дата: Пятница, 18.04.2014, 15:03 | Сообщение # 12 |
- Сообщения: 2189
- Награды: 46
- Замечания:
|
MaJIou, CSSB War3FT MOD + Shopmenu3 (Версия 2.2.3)
Наша группа вконтакте http://vk.com/nano_world_cs
Контакты: ICQ 607786179 Skype xonahead
|
|
| |
MaJIou | Дата: Пятница, 18.04.2014, 15:16 | Сообщение # 13 |
- Сообщения: 43
- Награды: 0
- Замечания:
|
SMaster, есть уже мод SMaster,Можешь описать как сделать Пример 1.Нежить сколько опыта ( а можно место опыта что-бы уровень писала)
Skype - dimasomon
|
|
| |
SMaster | Дата: Пятница, 18.04.2014, 16:49 | Сообщение # 14 |
- Сообщения: 2189
- Награды: 46
- Замечания:
|
MaJIou, Уже все расписано в теме. А если такое желание пофлудить,то для этого есть раздел!
Наша группа вконтакте http://vk.com/nano_world_cs
Контакты: ICQ 607786179 Skype xonahead
|
|
| |
MaJIou | Дата: Вторник, 22.04.2014, 17:29 | Сообщение # 15 |
- Сообщения: 43
- Награды: 0
- Замечания:
|
SMaster, Помоги найти уже 6 раз смотрел все темы не нашёл Пример 1.Нежить сколько опыта ( а можно место опыта что-бы уровень писала)
Skype - dimasomon
|
|
| |
SMaster | Дата: Четверг, 24.04.2014, 16:24 | Сообщение # 16 |
- Сообщения: 2189
- Награды: 46
- Замечания:
|
MaJIou, Код if ((i+1) == RACE_CHAMELEON)
Ключ на Нежить замени.
Наша группа вконтакте http://vk.com/nano_world_cs
Контакты: ICQ 607786179 Skype xonahead
|
|
| |
B@RB@DO$ | Дата: Пятница, 02.05.2014, 21:14 | Сообщение # 17 |
- Сообщения: 72
- Награды: 0
- Замечания:
|
Всё работает скомпилировался без ошибок
Вот как получилось изменил название рас чтобы все влезло ...
Сообщение отредактировал B@RB@DO$ - Суббота, 03.05.2014, 00:24 |
|
| |
NaSok | Дата: Суббота, 28.06.2014, 13:14 | Сообщение # 18 |
- Сообщения: 80
- Награды: 1
- Замечания:
|
У меня лутше вышло))))
|
|
| |
B@RB@DO$ | Дата: Воскресенье, 29.06.2014, 14:36 | Сообщение # 19 |
- Сообщения: 72
- Награды: 0
- Замечания:
|
NaSok,
|
|
| |
NaSok | Дата: Воскресенье, 29.06.2014, 15:39 | Сообщение # 20 |
- Сообщения: 80
- Награды: 1
- Замечания:
|
B@RB@DO$, Норм))
|
|
| |