DenisPavlovich 29 Опубликовано 28 февраля, 2013 public void up() { Player player = getSelf(); if(!Config.SERVICES_LVL_ENABLED) { show(HtmCache.getInstance().getNotNull("npcdefault.htm", player), player); return; } if ((Functions.getItemCount(player, Config.SERVICES_LVL_UP_ITEM) > Config.SERVICES_LVL_UP_PRICE)) { Functions.removeItem(player, Config.SERVICES_LVL_UP_ITEM, Config.SERVICES_LVL_UP_PRICE); setLevel(player, 85); } else player.sendPacket(SystemMsg.INCORRECT_ITEM_COUNT); } public static int getMaxLevel() { return Config.ALT_MAX_LEVEL; } public final static long LEVEL[] = { -1L, // level 0 (unreachable) /* Lvl:1 */ 0L, /* Lvl:2 */ 68L, /* Lvl:3 */ 363L, /* Lvl:4 */ 1168L, /* Lvl:5 */ 2884L, /* Lvl:6 */ 6038L, /* Lvl:7 */ 11287L, /* Lvl:8 */ 19423L, /* Lvl:9 */ 31378L, /* Lvl:10 */ 48229L, /* Lvl:11 */ 71202L, /* Lvl:12 */ 101677L, /* Lvl:13 */ 141193L, /* Lvl:14 */ 191454L, /* Lvl:15 */ 254330L, /* Lvl:16 */ 331867L, /* Lvl:17 */ 426288L, /* Lvl:18 */ 540000L, /* Lvl:19 */ 675596L, /* Lvl:20 */ 835862L, /* Lvl:21 */ 1023784L, /* Lvl:22 */ 1242546L, /* Lvl:23 */ 1495543L, /* Lvl:24 */ 1786379L, /* Lvl:25 */ 2118876L, /* Lvl:26 */ 2497077L, /* Lvl:27 */ 2925250L, /* Lvl:28 */ 3407897L, /* Lvl:29 */ 3949754L, /* Lvl:30 */ 4555796L, /* Lvl:31 */ 5231246L, /* Lvl:32 */ 5981576L, /* Lvl:33 */ 6812513L, /* Lvl:34 */ 7730044L, /* Lvl:35 */ 8740422L, /* Lvl:36 */ 9850166L, /* Lvl:37 */ 11066072L, /* Lvl:38 */ 12395215L, /* Lvl:39 */ 13844951L, /* Lvl:40 */ 15422929L, /* Lvl:41 */ 17137087L, /* Lvl:42 */ 18995665L, /* Lvl:43 */ 21007203L, /* Lvl:44 */ 23180550L, /* Lvl:45 */ 25524868L, /* Lvl:46 */ 28049635L, /* Lvl:47 */ 30764654L, /* Lvl:48 */ 33680052L, /* Lvl:49 */ 36806289L, /* Lvl:50 */ 40154162L, /* Lvl:51 */ 45525133L, /* Lvl:52 */ 51262490L, /* Lvl:53 */ 57383988L, /* Lvl:54 */ 63907911L, /* Lvl:55 */ 70853089L, /* Lvl:56 */ 80700831L, /* Lvl:57 */ 91162654L, /* Lvl:58 */ 102265881L, /* Lvl:59 */ 114038596L, /* Lvl:60 */ 126509653L, /* Lvl:61 */ 146308200L, /* Lvl:62 */ 167244337L, /* Lvl:63 */ 189364894L, /* Lvl:64 */ 212717908L, /* Lvl:65 */ 237352644L, /* Lvl:66 */ 271975263L, /* Lvl:67 */ 308443198L, /* Lvl:68 */ 346827154L, /* Lvl:69 */ 387199547L, /* Lvl:70 */ 429634523L, /* Lvl:71 */ 474207979L, /* Lvl:72 */ 532694979L, /* Lvl:73 */ 606322775L, /* Lvl:74 */ 696381369L, /* Lvl:75 */ 804225364L, /* Lvl:76 */ 931275828L, /* Lvl:77 */ 1151275834L, /* Lvl:78 */ 1511275834L, /* Lvl:79 */ 2044287599L, /* Lvl:80 */ 3075966164L, /* Lvl:81 */ 4295351949L, /* Lvl:82 */ 5766985062L, /* Lvl:83 */ 7793077345L, /* Lvl:84 */ 10235368963L, /* Lvl:85 */ 13180481103L, /* Lvl:86 */ 25314105600L, /* Lvl:87 */ 32211728640L, /* Lvl:88 */ 40488876288L, /* Lvl:89 */ 50421453466L, /* Lvl:90 */ 63424099953L, /* Lvl:91 */ 79027275737L, /* Lvl:92 */ 97751086678L, /* Lvl:93 */ 121155850355L, /* Lvl:94 */ 149241566767L, /* Lvl:95 */ 182944426462L, /* Lvl:96 */ 225005595360L, /* Lvl:97 */ 275478998038L, /* Lvl:98 */ 336047081252L, /* Lvl:99 */ 408728781109L, /* Lvl:100 */ 495946820937L }; public static int getLevel(long thisExp) { int level = 0; for(int i = 0; i < LEVEL.length; i++) { long exp = LEVEL[i]; if(thisExp >= exp) level = i; } return level; } private void setLevel(Player player, int level) { Long exp_add = Experience.LEVEL[level] - player.getExp(); player.addExpAndSp(exp_add, 0, 0, 0, false, false); } По-идее должно дать игроку сразу 85 лвл. Но прибавляет по 1. В чем у меня ошибка? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
KillerProMW 84 Опубликовано 28 февраля, 2013 (изменено) убери все строчки кроме этой /* Lvl:85 */ 13180481103L, хотя сомневаюсь,второй код из какого файла? Изменено 28 февраля, 2013 пользователем KillerProMW Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DenisPavlovich 29 Опубликовано 28 февраля, 2013 убери все строчки кроме этой [/background][/size]хотя сомневаюсь,второй код из какого файла? Все из одного файла. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
KillerProMW 84 Опубликовано 28 февраля, 2013 Все из одного файла. ну вот эту строчку оставляй остальное нафиг Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DenisPavlovich 29 Опубликовано 28 февраля, 2013 Исходники Lasteam HF Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DenisPavlovich 29 Опубликовано 28 февраля, 2013 не сработал твой вариант. Вот полный код файла: package services; import l2ft.gameserver.Config; import l2ft.gameserver.data.htm.HtmCache; import l2ft.gameserver.data.xml.holder.ItemHolder; import l2ft.gameserver.model.GameObject; import l2ft.gameserver.model.Player; import l2ft.gameserver.network.l2.components.SystemMsg; import l2ft.gameserver.scripts.Functions; import l2ft.gameserver.tables.PetDataTable; import l2ft.gameserver.model.base.Experience; import l2ft.gameserver.model.instances.PetInstance; public class lvl extends Functions { public void list() { Player player = getSelf(); if(!Config.SERVICES_LVL_ENABLED) { show(HtmCache.getInstance().getNotNull("npcdefault.htm", player), player); return; } String html = null; html = HtmCache.getInstance().getNotNull("scripts/services/lvl.htm", player); String add = ""; if(player.getLevel() < Config.SERVICES_LVL_UP_MAX) if(player.isLangRus()) add += "<button value=\"Поднять уровень РЅР° 1 (Цена:" + Config.SERVICES_LVL_UP_PRICE + " " + ItemHolder.getInstance().getTemplate(Config.SERVICES_LVL_UP_ITEM).getName() + ") \" action=\"bypass -h scripts_services.lvl:up" + "\" width=250 height=20 back=\"L2UI_CT1.Button_DF\" fore=\"L2UI_CT1.Button_DF\">" + "</a><br>"; else add += "<button value=\"Raise the level at1 (Price:" + Config.SERVICES_LVL_UP_PRICE + " " + ItemHolder.getInstance().getTemplate(Config.SERVICES_LVL_UP_ITEM).getName() + ") \" action=\"bypass -h scripts_services.lvl:up" + "\" width=250 height=20 back=\"L2UI_CT1.Button_DF\" fore=\"L2UI_CT1.Button_DF\">" + "</a><br>"; if(player.getLevel() > Config.SERVICES_LVL_DOWN_MAX) if(player.isLangRus()) add += "<button value=\"Понизить уровень РЅР° 1 (Цена:" + Config.SERVICES_LVL_DOWN_PRICE + " " + ItemHolder.getInstance().getTemplate(Config.SERVICES_LVL_DOWN_ITEM).getName() + ") \" action=\"bypass -h scripts_services.lvl:down" + "\" width=250 height=20 back=\"L2UI_CT1.Button_DF\" fore=\"L2UI_CT1.Button_DF\">" + "</a><br>"; else add += "<button value=\"Lower level at the 1 (Price:" + Config.SERVICES_LVL_DOWN_PRICE + " " + ItemHolder.getInstance().getTemplate(Config.SERVICES_LVL_DOWN_ITEM).getName() + ") \" action=\"bypass -h scripts_services.lvl:down" + "\" width=250 height=20 back=\"L2UI_CT1.Button_DF\" fore=\"L2UI_CT1.Button_DF\">" + "</a><br>"; html = html.replaceFirst("%toreplace%", add); show(html, player); } public void up() { Player player = getSelf(); if(!Config.SERVICES_LVL_ENABLED) { show(HtmCache.getInstance().getNotNull("npcdefault.htm", player), player); return; } if ((Functions.getItemCount(player, Config.SERVICES_LVL_UP_ITEM) > Config.SERVICES_LVL_UP_PRICE)) { Functions.removeItem(player, Config.SERVICES_LVL_UP_ITEM, Config.SERVICES_LVL_UP_PRICE); setLevel(null, 85); } else player.sendPacket(SystemMsg.INCORRECT_ITEM_COUNT); } public void down() { Player player = getSelf(); if(!Config.SERVICES_LVL_ENABLED) { show(HtmCache.getInstance().getNotNull("npcdefault.htm", player), player); return; } int level = player.getLevel()-1; if ((Functions.getItemCount(player, Config.SERVICES_LVL_DOWN_ITEM) > Config.SERVICES_LVL_DOWN_PRICE)) { Functions.removeItem(player, Config.SERVICES_LVL_DOWN_ITEM, Config.SERVICES_LVL_DOWN_PRICE); setLevel(player, level); } else player.sendPacket(SystemMsg.INCORRECT_ITEM_COUNT); } public static int getMaxLevel() { return Config.ALT_MAX_LEVEL; } public final static long LEVEL[] = { -1L, // level 0 (unreachable) /* Lvl:85 */ 13180481103L,}; public static int getLevel(long thisExp) { int level = 0; for(int i = 0; i < LEVEL.length; i++) { long exp = LEVEL[i]; if(thisExp >= exp) level = i; } return level; } private void setLevel(Player player, int level) { Long exp_add = Experience.LEVEL[level] - player.getExp(); player.addExpAndSp(exp_add, 0, 0, 0, false, false); } } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
KillerProMW 84 Опубликовано 28 февраля, 2013 тогда меняй значение -1L na -85L Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DenisPavlovich 29 Опубликовано 28 февраля, 2013 тогда меняй значение -1L na -85L Тоже не сработало. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
kekess 124 Опубликовано 28 февраля, 2013 ужас... хорошие советы )) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DenisPavlovich 29 Опубликовано 28 февраля, 2013 ужас... хорошие советы )) Посоветуй тоже) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
KillerProMW 84 Опубликовано 28 февраля, 2013 ужас... хорошие советы )) НУ Я КАК-ТО И НЕ РАЗРАБОТЧИК И ТОЛЬКО УЧУСЬ,ЕСЛИ НЕ ЗНАЕШЬ Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
inFA 19 Опубликовано 28 февраля, 2013 копайте сам метод setlevel там гадости Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ArtiSoft 65 Опубликовано 28 февраля, 2013 (изменено) ну вот эту строчку оставляй остальное нафиг Ты чего такой суровый ? Зачем их убирать ? /* Lvl:1 */ 0L, /* Lvl:2 */ 68L, - Означает что до второго уровня не обходимое данное количество опыта. Изменено 28 февраля, 2013 пользователем ArtiSoft Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DenisPavlovich 29 Опубликовано 1 марта, 2013 копайте сам метод setlevel там гадости Я ено и копаю, не получается, поэтому и прошу помощь. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
bodyan2011 49 Опубликовано 1 марта, 2013 не сработал твой вариант. Вот полный код файла: package services; import l2ft.gameserver.Config; import l2ft.gameserver.data.htm.HtmCache; import l2ft.gameserver.data.xml.holder.ItemHolder; import l2ft.gameserver.model.GameObject; import l2ft.gameserver.model.Player; import l2ft.gameserver.network.l2.components.SystemMsg; import l2ft.gameserver.scripts.Functions; import l2ft.gameserver.tables.PetDataTable; import l2ft.gameserver.model.base.Experience; import l2ft.gameserver.model.instances.PetInstance; public class lvl extends Functions { public void list() { Player player = getSelf(); if(!Config.SERVICES_LVL_ENABLED) { show(HtmCache.getInstance().getNotNull("npcdefault.htm", player), player); return; } String html = null; html = HtmCache.getInstance().getNotNull("scripts/services/lvl.htm", player); String add = ""; if(player.getLevel() < Config.SERVICES_LVL_UP_MAX) if(player.isLangRus()) add += "<button value=\"Поднять уровень РЅР° 1 (Цена:" + Config.SERVICES_LVL_UP_PRICE + " " + ItemHolder.getInstance().getTemplate(Config.SERVICES_LVL_UP_ITEM).getName() + ") \" action=\"bypass -h scripts_services.lvl:up" + "\" width=250 height=20 back=\"L2UI_CT1.Button_DF\" fore=\"L2UI_CT1.Button_DF\">" + "</a><br>"; else add += "<button value=\"Raise the level at1 (Price:" + Config.SERVICES_LVL_UP_PRICE + " " + ItemHolder.getInstance().getTemplate(Config.SERVICES_LVL_UP_ITEM).getName() + ") \" action=\"bypass -h scripts_services.lvl:up" + "\" width=250 height=20 back=\"L2UI_CT1.Button_DF\" fore=\"L2UI_CT1.Button_DF\">" + "</a><br>"; if(player.getLevel() > Config.SERVICES_LVL_DOWN_MAX) if(player.isLangRus()) add += "<button value=\"Понизить уровень РЅР° 1 (Цена:" + Config.SERVICES_LVL_DOWN_PRICE + " " + ItemHolder.getInstance().getTemplate(Config.SERVICES_LVL_DOWN_ITEM).getName() + ") \" action=\"bypass -h scripts_services.lvl:down" + "\" width=250 height=20 back=\"L2UI_CT1.Button_DF\" fore=\"L2UI_CT1.Button_DF\">" + "</a><br>"; else add += "<button value=\"Lower level at the 1 (Price:" + Config.SERVICES_LVL_DOWN_PRICE + " " + ItemHolder.getInstance().getTemplate(Config.SERVICES_LVL_DOWN_ITEM).getName() + ") \" action=\"bypass -h scripts_services.lvl:down" + "\" width=250 height=20 back=\"L2UI_CT1.Button_DF\" fore=\"L2UI_CT1.Button_DF\">" + "</a><br>"; html = html.replaceFirst("%toreplace%", add); show(html, player); } public void up() { Player player = getSelf(); if(!Config.SERVICES_LVL_ENABLED) { show(HtmCache.getInstance().getNotNull("npcdefault.htm", player), player); return; } if ((Functions.getItemCount(player, Config.SERVICES_LVL_UP_ITEM) > Config.SERVICES_LVL_UP_PRICE)) { Functions.removeItem(player, Config.SERVICES_LVL_UP_ITEM, Config.SERVICES_LVL_UP_PRICE); setLevel(null, 85); } else player.sendPacket(SystemMsg.INCORRECT_ITEM_COUNT); } public void down() { Player player = getSelf(); if(!Config.SERVICES_LVL_ENABLED) { show(HtmCache.getInstance().getNotNull("npcdefault.htm", player), player); return; } int level = player.getLevel()-1; if ((Functions.getItemCount(player, Config.SERVICES_LVL_DOWN_ITEM) > Config.SERVICES_LVL_DOWN_PRICE)) { Functions.removeItem(player, Config.SERVICES_LVL_DOWN_ITEM, Config.SERVICES_LVL_DOWN_PRICE); setLevel(player, level); } else player.sendPacket(SystemMsg.INCORRECT_ITEM_COUNT); } public static int getMaxLevel() { return Config.ALT_MAX_LEVEL; } public final static long LEVEL[] = { -1L, // level 0 (unreachable) /* Lvl:85 */ 13180481103L,}; public static int getLevel(long thisExp) { int level = 0; for(int i = 0; i < LEVEL.length; i++) { long exp = LEVEL[i]; if(thisExp >= exp) level = i; } return level; } private void setLevel(Player player, int level) { Long exp_add = Experience.LEVEL[level] - player.getExp(); player.addExpAndSp(exp_add, 0, 0, 0, false, false); } } Верни обратно те 100 лвлов. ALT_MAX_LEVEL - это та функция в конфиге, кототрая позволяет выбирать максимальный уровень персонажа. То есть, если у тебя есть только 0 и 85, то кроме этих чисел ты не сможешь ничего больше поставить. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
bodyan2011 49 Опубликовано 1 марта, 2013 Тут скорей дело в setLevel(null, 85); Попробуй поэкспериментировать. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DenisPavlovich 29 Опубликовано 2 марта, 2013 Тут скорей дело в setLevel(null, 85); Попробуй поэкспериментировать. Пробовал и так тоже, может я про какой-то импорт забыл? Хотя ошибок нету. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Saintly 19 Опубликовано 8 марта, 2013 (изменено) а разве это здесь делается? у меня это в CharacterCreate extends... в этом пакете я так понимаю настраиваешь сколько експы дают и как лвл повышается... а в CharacterCreate у меня есть private void initNewChar(L2GameClient client, L2PcInstance newChar) { L2World.getInstance().storeObject(newChar); L2PcTemplate template = newChar.getTemplate(); if (Config.STARTING_ADENA > 0) newChar.addAdena("Init", Config.STARTING_ADENA, null, false); if (Config.STARTING_AA > 0) newChar.addAncientAdena("Init", Config.STARTING_AA, null, false); for (int[] startingItems : Config.CUSTOM_STARTER_ITEMS) { if (newChar == null) { continue; } PcInventory inv = newChar.getInventory(); if (ItemTable.getInstance().createDummyItem(startingItems[0]).isStackable()) { inv.addItem("Starter Items", startingItems[0], startingItems[1], newChar, null); } else { for (int i = 0; i < startingItems[1]; i++) { inv.addItem("Starter Items", startingItems[0], 1, newChar, null); } } } if (Config.ALLOW_NEW_CHAR_CUSTOM_POSITION) newChar.getPosition().setXYZInvisible(Config.NEW_CHAR_POSITION_X, Config.NEW_CHAR_POSITION_Y, Config.NEW_CHAR_POSITION_Z); else newChar.getPosition().setXYZInvisible(template.getSpawnX(), template.getSpawnY(), template.getSpawnZ()); if (Config.ALLOW_NEW_CHARACTER_TITLE) newChar.setTitle(Config.NEW_CHARACTER_TITLE); else newChar.setTitle(""); if(Config.ENABLE_STARTUP_LVL) { long EXp = Experience.LEVEL[Config.ADD_LVL_NEWBIE]; newChar.addExpAndSp(EXp , 0); } if (Config.NEW_CHAR_IS_NOBLE) newChar.setNoble(true); // new char give Lucky Protection newChar.addSkill(SkillTable.getInstance().getInfo(194, 1), true); L2ShortCut shortcut; //add attack shortcut shortcut = new L2ShortCut(0, 0, 3, 2, 0, 1); newChar.registerShortCut(shortcut); //add take shortcut shortcut = new L2ShortCut(3, 0, 3, 5, 0, 1); newChar.registerShortCut(shortcut); //add sit shortcut shortcut = new L2ShortCut(10, 0, 3, 0, 0, 1); newChar.registerShortCut(shortcut); for (PcTemplateItem ia : template.getItems()) { L2ItemInstance item = newChar.getInventory().addItem("Init", ia.getItemId(), ia.getAmount(), newChar, null); // add tutbook shortcut if (item.getItemId() == 5588) { shortcut = new L2ShortCut(11, 0, 1, item.getObjectId(), 0, 1); newChar.registerShortCut(shortcut); } if (item.isEquipable() && ia.isEquipped()) newChar.getInventory().equipItemAndRecord(item); } for (L2SkillLearn skill: SkillTreeTable.getInstance().getAvailableSkills(newChar, newChar.getClassId())) { newChar.addSkill(SkillTable.getInstance().getInfo(skill.getId(), skill.getLevel()), true); if (skill.getId() == 1001 || skill.getId() == 1177) { shortcut = new L2ShortCut(1, 0, 2, skill.getId(), skill.getLevel(), 1); newChar.registerShortCut(shortcut); } if (skill.getId() == 1216) { shortcut = new L2ShortCut(10, 0, 2, skill.getId(), skill.getLevel(), 1); newChar.registerShortCut(shortcut); } } startTutorialQuest(newChar); startNewbieHelperQuest(newChar); //new Disconnection(getClient(), newChar).defaultSequence(true); newChar.store(); newChar.deleteMe(); // send char list CharSelectionInfo cl = new CharSelectionInfo(client.getAccountName(), client.getSessionId().playOkID1); client.sendPacket(cl); client.setCharSelection(cl.getCharInfo()); } это взято с люцеры там в конфигах есть настройка стартап лвл... получается в этом скрипте ты не добавляешь лвл а експы.. только надо знать сколько експы добавить чтоб ровно определенный лвл вышел P.S. я не разбираюсь в языках программирования Изменено 8 марта, 2013 пользователем Saintly Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DenisPavlovich 29 Опубликовано 8 марта, 2013 (изменено) Да я разобрался уже. Вот: private void setLevel(Player player, int level) { Long exp_add = Experience.LEVEL[47] - player.getExp(); player.addExpAndSp(exp_add, 0, 0, 0, false, false); } public void up() { Player player = getSelf(); if(!Config.SERVICES_LVL_ENABLED) { show(HtmCache.getInstance().getNotNull("npcdefault.htm", player), player); return; } if ((Functions.getItemCount(player, Config.SERVICES_LVL_UP_ITEM) > Config.SERVICES_LVL_UP_PRICE)) { Functions.removeItem(player, Config.SERVICES_LVL_UP_ITEM, Config.SERVICES_LVL_UP_PRICE); setLevel(null, 85); } else player.sendPacket(SystemMsg.INCORRECT_ITEM_COUNT); } При выполнении мы дадим персонажу 47 лвл У меня теперь вот какой вопрос, как сделать чтобы после определения уровня, скилы перезагружались у игрока. При чем чтобы точеные не сбрасывались. Не могу придумать проверку... Изменено 8 марта, 2013 пользователем DenisPavlovich Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Saintly 19 Опубликовано 8 марта, 2013 ууу... это сложно но вопрос зачем? Вам нужно просто автоизучение скилов? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DenisPavlovich 29 Опубликовано 8 марта, 2013 ууу... это сложно но вопрос зачем? Вам нужно просто автоизучение скилов? Да я бы не сказал что сложно, просто я не знаю метода нужного. А нужно для того чтобы например когда игрок 85 лвл хочет взять себе 40, чтобы скилы удалились. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
DenisPavlovich 29 Опубликовано 8 марта, 2013 еще подскажите как реализовать, чтобы не приходилось для каждого уровня писать методы. Мыслей на эту тему нету вообще(( Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты