Java EXP
Нужна помощь в Java .
Я создал правильное получение exp с моба. Но нужно помощь в скрипте. Принцип прост. Создается дополнительная таблица : Database (C: \ gameserver \ data \ static_data \) файл EXP.sql В нем : EXP TABLE IF EXISTS `explist`; CREATE TABLE `explist` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `mobId` int(11) NOT NULL DEFAULT 0, `expId` int(11) NOT NULL DEFAULT 0, `lvlPlayer` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`Id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; INSERT INTO droplist (mobId, expId, lvlPlayer,) VALUES -- START Ishalgen -- Highland Sparkle (210645,100,1,), (210645,100,2,), (210645,100,3,), (210645,90,4,), (210645,60,5,), (210645,50,6,), (210645,40,7,), (210645,30,8,), (210645,20,9,), (210645,10,10,), -- Wanderer Sprigg (210729,100,1,), (210729,100,2,), (210729,100,3,), (210729,90,4,), (210729,60,5,), (210729,50,6,), (210729,40,7,), (210729,30,8,), (210729,20,9,), (210729,10,10,), И нужно написать скирипт который ссылался б на нее при убийстве моба. if targetLevel = playerLevel goto (mobId, expId, lvlPlayer,) Тогда просто правильно заполнив таблицы, игрок сможет получать exp по базе (как должно быть). Просто из-за незнания явы у меня не получается скрипт). По этому принципу сейчас работает дроплист. |
Re: Java Scrip
Цитата:
|
Re: Java Scrip
Возможно)) Я просто не шарю.
Сейчас скрипт такой в сборке юник C:\ae-go\AE-go_GameServer\src\com\aionemu\gameserver\utils\sta ts public static long calculateSoloExperienceReward(Player player, Creature target) { int playerLevel = player.getCommonData().getLevel(); int targetLevel = target.getLevel(); //TODO take baseXP from target object (additional attribute in stats template is needed) int baseXP = targetLevel * 80; int xpPercentage = XPRewardEnum.xpRewardFrom(targetLevel - playerLevel); return (int) Math.floor(baseXP * xpPercentage * player.getRates().getXpRate() / 100); } Он просто всем мобам присваивает * 80. И выходит что все мобы например 10 лвл дают одинаково exp. А если прописать как я показал то получится правилное получение опыта. |
Re: Java EXP
хм, а зачем так извращаться если в npc_templates.xml каждому мобу давно вбит параметр maxXp ? Просто нужно вытащить его оттуда в формулу расчета получаемой экспы, и все... но я тоже в яве не "бумбум" :(
|
Re: Java EXP
Можно посмотреть скрип который идет на получение лута. Там есть значение номер квеста. Вроде если написать что то подобное, то получится что нам нужно.
Если кто знает как написан он, скинте пути к ниму, возможно я сам поковыряю его и чет выйдет.)) Добавлено через 1 час 17 минут Можно сделать проще : C:\ae-go\AE-go_GameServer\src\com\aionemu\gameserver\utils\sta ts public static long calculateSoloExperienceReward(Player player, Creature target) { int playerLevel = player.getCommonData().getLevel(); int targetLevel = target.getLevel(); //TODO take baseXP from target object (additional attribute in stats template is needed) int baseXP = targetLevel * 80; int xpPercentage = XPRewardEnum.xpRewardFrom(targetLevel - playerLevel); return (int) Math.floor(baseXP * xpPercentage * player.getRates().getXpRate() / 100); } В строке int baseXP = targetLevel * 80; значение "targetLevel * 80" нужно заменить на `exp` параметр который можно будет добавить в дроплист. DROP TABLE IF EXISTS `droplist`; CREATE TABLE `droplist` ( `Id` int(11) NOT NULL auto_increment, `mobId` int(11) NOT NULL default '0', `itemId` int(11) NOT NULL default '0', `min` int(11) NOT NULL default '0', `max` int(11) NOT NULL default '0', `chance` float NOT NULL default '0', `quest` int(11) NOT NULL default '0', `exp` int(11) NOT NULL default '0', PRIMARY KEY (`Id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of droplist -- ---------------------------- INSERT INTO `droplist` VALUES ('260175', '210372', '167000230', '1', '1', '0.63', '0', '111',); Подскажите как правильно указать путь на это значение. Тогда при разнице лвл будет работать старая формула и за убийство моба будут давать опыт по базе. |
Re: Java EXP
Зачем тебе через sql это делать, если все уже сделано, но не воткнуто в формулу?...
|
Re: Java EXP
Тогда еще проще)). Нужно внести значение maxXp=" "
Добавлено через 2 часа 4 минуты Вроде бы нашел это значение.C:\ae-go\AE-go_GameServer\src\com\aionemu\gameserver\model\tem plates\stats Файл maxXp() находится здесь, но вот как его привязать к формуле не знаю. Пишет что символ неизвестен. |
Re: Java EXP
А смысл есть этим заниматься? Возможно юники что то придумают.
|
Re: Java EXP
есть смысл, если кто-то шарит в яве и может в формулу внести максэксп, потом скинуть уникам они проверят и внесут в свн... я пробовал сделать, но знаний в яве нехватает чтобы правильно написать. Формула вполне хорошая и простая есть..
Проблема то из первоочередных, имхо, поважнее всяких шопов, портов и прочих фенек... |
Re: Java EXP
Нашел значение maxXp. Указал путь к нему. Скомпелировалось нормально, но значение равно 0, что означает при убийстве моба не видет значение maxXp этого нпц. Подскажите какое значение еще нужно добавить которое бы указывало путь к выбраному мобу.
Сдесь мы видем что значение лвл меняется в отношении выбраного объекта int targetLevel = target.getLevel();. Нужноли создовать еще класс для поеснения какой нп выбран? import com.aionemu.gameserver.model.templates.stats.NpcSt atsTemplate; public class StatFunctions { private static Logger log = Logger.getLogger(StatFunctions.class); /** * * @param player * @param target * @return XP reward from target */ public static long calculateSoloExperienceReward(Player player, Creature target) { NpcStatsTemplate E = new NpcStatsTemplate (); int playerLevel = player.getCommonData().getLevel(); int targetLevel = target.getLevel(); //TODO take baseXP from target object (additional attribute in stats template is needed) int baseXP = E.getMaxXp(); int xpPercentage = XPRewardEnum.xpRewardFrom(targetLevel - playerLevel); return (int) Math.floor(baseXP * xpPercentage * player.getRates().getXpRate() / 100); } |
Текущее время: 15:52. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot