Вытянуть значение из базы - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II > Архив

Архив Темы с сомнительной полезностью.

Ответ
Опции темы
Непрочитано 26.06.2011, 00:07   #1
Аватар для Aaron
Пользователь

Автор темы (Топик Стартер) Вытянуть значение из базы

Приветствую всех. Подскажите, как можно реализовать такое :
К примеру в базу accounts я добавил ещё один столбец - SpiritId.

Как сделать, чтоб в файле AttackRequest вытягивать из базы accounts то, что написанно в SpiritId и делать потипу getKarma() ?

Лазил в исходниках и не смог найдти подобное Подскажите пожалуйста.

С уважением, Аарон.
Aaron вне форума Отправить сообщение для Aaron с помощью ICQ Ответить с цитированием
Непрочитано 26.06.2011, 00:22   #2
Аватар для Array
Супергерой

По умолчанию Re: Вытянуть значение из базы

Почему в accounts? В characters тогда уж.
В класс L2player добавить переменную:
private int SpiritID;
Code: Java
Добавить get\set функции.
Затем в функции restore добавить загрузку этого параметра:
player.setSpirit(pl_rset.getInt("SpiritID"));
Code: Java
Array вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 26.06.2011, 00:33   #3
Аватар для Aaron
Пользователь

Автор темы (Топик Стартер) Re: Вытянуть значение из базы

Уважаемый Array, подскажите файлы - в которых с этим нужно работать ( у меня L2J IT ) ?
Aaron вне форума Отправить сообщение для Aaron с помощью ICQ Ответить с цитированием
Непрочитано 26.06.2011, 00:40   #4
Аватар для Array
Супергерой

По умолчанию Re: Вытянуть значение из базы

sf\l2j\gameserver\model\actor\instance\L2PcInstanc e.java
Там есть запросы INSERT_CHARACTER, UPDATE_CHARACTER и RESTORE_CHARACTER.
В каждый стоит добавить SpiritID.
Остальное также, только скорее всего не pl_rset, а rset. (посмотреть как названо ResultSet rset = ...)
Array вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 26.06.2011, 00:56   #5
Аватар для Aaron
Пользователь

Автор темы (Топик Стартер) Re: Вытянуть значение из базы

выдаёт ошибку :

Цитата:
C:\Server-Amadeus\INTERLUDE\L2J_IT\java\net\sf\l2j\gameserve r\model\actor\instance\L2PcInstance.java (5669:23) cannot find symbol
C:\Server-Amadeus\INTERLUDE\L2J_IT\java\net\sf\l2j\gameserve r\model\actor\instance\L2PcInstance.java:5669: cannot find symbol
symbol : method setSpiritId(int)
location: class net.sf.l2j.gameserver.model.actor.instance.L2PcIns tance
Сделал так :
Добавил в UPDATE_CHARACTER и RESTORE_CHARACTER SpiritId в такой же последовательности, как и в базе стоит.

Потом :

PHP код:

player
.getStat().setExp(rset.getLong("exp"));
                
player.setExpBeforeDeath(rset.getLong("expBeforeDeath"));
                
                
// SPIRIT ID
                
player.setSpiritId(rset.getInt("SpiritID"));
                
                
player.getStat().setLevel(rset.getByte("level"));
                
player.getStat().setSp(rset.getInt("sp")); 
Единственное, не особо понял, как это :
Цитата:
В класс L2player добавить переменную:
private int SpiritID;
Вроде добавил, но наверное не туда, поэтому не работает. Добавил в L2PcInstance :

PHP код:
    /** The Experience of the L2PcInstance before the last Death Penalty */
    
private long _expBeforeDeath;

  
// Spirit
  
private int SpiritId;
  
  
    
/** The Karma of the L2PcInstance (if higher than 0, the name of the L2PcInstance appears in red) */
    
private int _karma;

    
/** The number of player killed during a PvP (the player killed was PvP Flagged) */
    
private int _pvpKills;

    
/** The PK counter of the L2PcInstance (= Number of non PvP Flagged player killed) */
    
private int _pkKills
Спасибо за терпение и активную помощь.
Aaron вне форума Отправить сообщение для Aaron с помощью ICQ Ответить с цитированием
Непрочитано 26.06.2011, 12:31   #6
Аватар для Array
Супергерой

По умолчанию Re: Вытянуть значение из базы

В ошибке написано: не может найти метод "setSpiritId(int)".
Я писал:
Цитата:
Добавить get\set функции.
То есть функции, чтобы взять\присвоить значение.
В общем случае это простейшие функции:
public int getSpiritId()
	{
		return _SpiritId;
	}
Code: Java
public int setSpiritId(int SpiritId)
	{
		_SpiritID = SpiritId;
	}
Code: Java
И объявить переменную private int _SpiritId; (с нижним подчеркиванием, как у всех остальных в классе). Так наверное отмечается, что переменная внутриклассовая.
Array вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 26.06.2011, 19:14   #7
Аватар для Aaron
Пользователь

Автор темы (Топик Стартер) Re: Вытянуть значение из базы

Спасибо, разобрался.

Подскажи ещё пожалуйста, к примеру я прописал такой код :

PHP код:

if (getSpiritId() != target.getSpiritId())
    {
    
    } 
Сюда :

PHP код:
public void onKillUpdatePvPKarma(L2Character target)
    {
        
  
L2PcInstance targetPlayer null;

        if (
target instanceof L2PcInstance)
            
targetPlayer = (L2PcInstance)target;
        else if (
target instanceof L2Summon)
            
targetPlayer = ((L2Summon)target).getOwner();


        if (
targetPlayer == null) return;                                          // Target player is null
        
if (targetPlayer == this) return;                                          // Target player is self

        
if (target == null) return;
        if (!(
target instanceof L2PlayableInstance)) return;

    if (
getSpiritId() != target.getSpiritId())
    {
    
    }

        if (
isCursedWeaponEquiped())
        {
            
CursedWeaponsManager.getInstance().increaseKills(_cursedWeaponEquipedId);
            return;
        } 
Но мне выводит

Цитата:
C:\Server-Amadeus\INTERLUDE\L2J_IT\java\net\sf\l2j\gameserve r\model\actor\instance\L2PcInstance.java (4434:9) getSpiritId(int) in net.sf.l2j.gameserver.model.actor.instance.L2PcIns tance cannot be applied to ()
C:\Server-Amadeus\INTERLUDE\L2J_IT\java\net\sf\l2j\gameserve r\model\actor\instance\L2PcInstance.java:4434: getSpiritId(int) in net.sf.l2j.gameserver.model.actor.instance.L2PcIns tance cannot be applied to ()
Тобишь я должен что-то указывать в () ? И как возможно использовать getSpiritId в AttackRequest ?

Благодарю.
Aaron вне форума Отправить сообщение для Aaron с помощью ICQ Ответить с цитированием
Непрочитано 26.06.2011, 19:18   #8
Аватар для Azagthtot
Эксперт

По умолчанию Re: Вытянуть значение из базы

target.getSpiritId()
Если метод getSpiritId() у вас описан в L2PcInstance то правильный вызов targetPlayer.getSpiritId()
Azagthtot вне форума Отправить сообщение для Azagthtot с помощью ICQ Отправить сообщение для Azagthtot с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 26.06.2011, 19:30   #9
Аватар для Aaron
Пользователь

Автор темы (Топик Стартер) Re: Вытянуть значение из базы

Уважаемый Azagthtot, сделал как Вы сказали :

PHP код:

    
public void onKillUpdatePvPKarma(L2Character target)
    {
        
  
L2PcInstance targetPlayer null;

        if (
target instanceof L2PcInstance)
            
targetPlayer = (L2PcInstance)target;
        else if (
target instanceof L2Summon)
            
targetPlayer = ((L2Summon)target).getOwner();


        if (
targetPlayer == null) return;                                          // Target player is null
        
if (targetPlayer == this) return;                                          // Target player is self

        
if (target == null) return;
        if (!(
target instanceof L2PlayableInstance)) return;

    if (
getSpiritId() != targetPlayer.getSpiritId())
    {
    
    } 
Но всё равно выдаёт ошибку :

Цитата:
C:\Server-Amadeus\INTERLUDE\L2J_IT\java\net\sf\l2j\gameserve r\model\actor\instance\L2PcInstance.java (4434:9) setSpiritId(int) in net.sf.l2j.gameserver.model.actor.instance.L2PcIns tance cannot be applied to ()
C:\Server-Amadeus\INTERLUDE\L2J_IT\java\net\sf\l2j\gameserve r\model\actor\instance\L2PcInstance.java:4434: setSpiritId(int) in net.sf.l2j.gameserver.model.actor.instance.L2PcIns tance cannot be applied to ()
В чём снова ошибка?
Спасибо за помощь.

Добавлено через 7 минут
Нашёл ошибку. Спасибо. Я по глупости прописал :

PHP код:
  public int getSpiritId(int SpiritId)
    {
        return 
_SpiritId;
    } 
а надо было :

PHP код:

  
public int getSpiritId()
    {
        return 
_SpiritId;
    } 
А как теперь возможно в AttackRequest использовать getSpiritId ?

Последний раз редактировалось Aaron; 26.06.2011 в 19:37. Причина: Добавлено сообщение
Aaron вне форума Отправить сообщение для Aaron с помощью ICQ Ответить с цитированием
Непрочитано 26.06.2011, 19:57   #10
Аватар для Azagthtot
Эксперт

По умолчанию Re: Вытянуть значение из базы

через getClient().getActiveChar().getSpiritId() естественно.
P.S. А вы не хотите полностью задачу описать, может есть более простое решение?
Azagthtot вне форума Отправить сообщение для Azagthtot с помощью ICQ Отправить сообщение для Azagthtot с помощью Skype™ Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Значение desc eleminator Серверная часть 7 31.05.2011 06:05
Базы и брут Nox2236778 Lineage II 17 24.02.2011 21:18
Потерялись базы Wolfas Серверная часть 11 08.09.2010 19:00
Вернуть стандартные значение HP NPC langes Lineage II 0 15.02.2010 00:36
Ошибка базы maxo Lineage II 1 13.12.2008 11:14


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 08:26. Часовой пояс GMT +3.

Вверх