Перейти к содержанию
Авторизация  
DenisPavlovich

[Help][Core] Setlevel

Рекомендуемые сообщения

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.

В чем у меня ошибка?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

убери все строчки кроме этой

/* Lvl:85 */ 13180481103L,

хотя сомневаюсь,второй код из какого файла? Изменено пользователем KillerProMW

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

убери все строчки кроме этой [/background][/size]хотя сомневаюсь,второй код из какого файла?

 

Все из одного файла.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не сработал твой вариант.

 

Вот полный код файла:

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ужас...

хорошие советы ))

НУ Я КАК-ТО И НЕ РАЗРАБОТЧИК И ТОЛЬКО УЧУСЬ,ЕСЛИ НЕ ЗНАЕШЬ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

копайте сам метод setlevel там гадости

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну вот эту строчку оставляй остальное нафиг

Ты чего такой суровый ? Зачем их убирать ?

 

/* Lvl:1 */ 0L,

/* Lvl:2 */ 68L, - Означает что до второго уровня не обходимое данное количество опыта.

Изменено пользователем ArtiSoft

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

копайте сам метод setlevel там гадости

 

Я ено и копаю, не получается, поэтому и прошу помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не сработал твой вариант.

 

Вот полный код файла:

 

 

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, то кроме этих чисел ты не сможешь ничего больше поставить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тут скорей дело в

setLevel(null, 85);

Попробуй поэкспериментировать.

 

Пробовал и так тоже, может я про какой-то импорт забыл? Хотя ошибок нету.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а разве это здесь делается? у меня это в 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. я не разбираюсь в языках программирования

Изменено пользователем Saintly

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да я разобрался уже. Вот:

 

 

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 лвл

У меня теперь вот какой вопрос, как сделать чтобы после определения уровня, скилы перезагружались у игрока. При чем чтобы точеные не сбрасывались. Не могу придумать проверку...

Изменено пользователем DenisPavlovich

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ууу... это сложно но вопрос зачем? Вам нужно просто автоизучение скилов?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ууу... это сложно но вопрос зачем? Вам нужно просто автоизучение скилов?

 

Да я бы не сказал что сложно, просто я не знаю метода нужного.

 

А нужно для того чтобы например когда игрок 85 лвл хочет взять себе 40, чтобы скилы удалились.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

еще подскажите как реализовать, чтобы не приходилось для каждого уровня писать методы.

Мыслей на эту тему нету вообще((

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...