Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Java EXP
#1
Нужна помощь в 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 по базе (как должно быть).
Просто из-за незнания явы у меня не получается скрипт).

По этому принципу сейчас работает дроплист.
Ответ
#2
Shema Написал:Нужна помощь в Java Scrip.
Я создал правильное получение 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 по базе (как должно быть).
Просто из-за незнания явы у меня не получается скрипт).

По этому принципу сейчас работает дроплист.

Вы наверное имели ввиду java ? java и java script совершенно разные вещи.
Ответ
#3
Возможно)) Я просто не шарю.

Сейчас скрипт такой в сборке юник
C:\ae-go\AE-go_GameServer\src\com\aionemu\gameserver\utils\stats

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.
А если прописать как я показал то получится правилное получение опыта.
Ответ
#4
хм, а зачем так извращаться если в npc_templates.xml каждому мобу давно вбит параметр maxXp ? Просто нужно вытащить его оттуда в формулу расчета получаемой экспы, и все... но я тоже в яве не "бумбум" Sad
Ответ
#5
Можно посмотреть скрип который идет на получение лута. Там есть значение номер квеста. Вроде если написать что то подобное, то получится что нам нужно.
Если кто знает как написан он, скинте пути к ниму, возможно я сам поковыряю его и чет выйдет.))

Добавлено через 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',);

Подскажите как правильно указать путь на это значение. Тогда при разнице лвл будет работать старая формула и за убийство моба будут давать опыт по базе.
Ответ
#6
Зачем тебе через sql это делать, если все уже сделано, но не воткнуто в формулу?...
Ответ
#7
Тогда еще проще)). Нужно внести значение maxXp=" "

Добавлено через 2 часа 4 минуты
Вроде бы нашел это значение.C:\ae-go\AE-go_GameServer\src\com\aionemu\gameserver\model\templates\stats

Файл maxXp() находится здесь, но вот как его привязать к формуле не знаю. Пишет что символ неизвестен.
Ответ
#8
А смысл есть этим заниматься? Возможно юники что то придумают.
Ответ
#9
есть смысл, если кто-то шарит в яве и может в формулу внести максэксп, потом скинуть уникам они проверят и внесут в свн... я пробовал сделать, но знаний в яве нехватает чтобы правильно написать. Формула вполне хорошая и простая есть..

Проблема то из первоочередных, имхо, поважнее всяких шопов, портов и прочих фенек...
Ответ
#10
Нашел значение maxXp. Указал путь к нему. Скомпелировалось нормально, но значение равно 0, что означает при убийстве моба не видет значение maxXp этого нпц. Подскажите какое значение еще нужно добавить которое бы указывало путь к выбраному мобу.

Сдесь мы видем что значение лвл меняется в отношении выбраного объекта int targetLevel = target.getLevel();.

Нужноли создовать еще класс для поеснения какой нп выбран?



import com.aionemu.gameserver.model.templates.stats.NpcStatsTemplate;


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);
}
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  JDK7 и NpcShoutsService.java - unchecked or unsafe operations. TieLay 8 3,955 11-13-2011, 05:46 PM
Последний пост: Azagthtot
  Aion.Java djavol130 19 5,657 01-25-2011, 10:47 AM
Последний пост: TieLay
  Что случилось с Aion-java Infinity 3 3,154 01-16-2011, 09:50 PM
Последний пост: TieLay
  Компелирование Aion Java 2.1 ошибка rom22207 2 2,826 01-14-2011, 01:35 PM
Последний пост: rom22207
  Судьба Java-эмулятора проекта TieLay 5 2,803 08-14-2010, 11:07 PM
Последний пост: TieLay
  Mysql и Java х64 fonzik 1 2,198 04-07-2010, 07:58 PM
Последний пост: Nemesis
  GoTo.java Hylop 2 2,340 03-10-2010, 10:51 PM
Последний пост: Hylop
  ошибка в SVN или JAVA portotiv 3 5,490 02-13-2010, 10:33 AM
Последний пост: MetaWind
  Java и серверная часть. Koenigwer 12 5,943 01-26-2010, 10:02 AM
Последний пост: Koenigwer
  Java сервер Aion от Aion-Unique версии 301 Вопрос по серверу DarkSalivan 6 6,801 10-20-2009, 02:10 AM
Последний пост: nelegal

Перейти к форуму:


Пользователи, просматривающие эту тему: 6 Гость(ей)