Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Вытянуть значение из базы
#1
Приветствую всех. Подскажите, как можно реализовать такое :
К примеру в базу accounts я добавил ещё один столбец - SpiritId.

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

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

С уважением, Аарон.
Ответ
#2
Почему в accounts? В characters тогда уж.
В класс L2player добавить переменную:
[src=java]private int SpiritID;[/src]
Добавить get\set функции.
Затем в функции restore добавить загрузку этого параметра:
[src=java]player.setSpirit(pl_rset.getInt("SpiritID"));[/src]
Ответ
#3
Уважаемый Array, подскажите файлы - в которых с этим нужно работать ( у меня L2J IT ) ?
Ответ
#4
sf\l2j\gameserver\model\actor\instance\L2PcInstance.java
Там есть запросы INSERT_CHARACTER, UPDATE_CHARACTER и RESTORE_CHARACTER.
В каждый стоит добавить SpiritID.
Остальное также, только скорее всего не pl_rset, а rset. (посмотреть как названо ResultSet rset = ...)
Ответ
#5
выдаёт ошибку :

Цитата:C:\Server-Amadeus\INTERLUDE\L2J_IT\java\net\sf\l2j\gameserver\model\actor\instance\L2PcInstance.java (5669:23) cannot find symbol
C:\Server-Amadeus\INTERLUDE\L2J_IT\java\net\sf\l2j\gameserver\model\actor\instance\L2PcInstance.java:5669: cannot find symbol
symbol : method setSpiritId(int)
location: class net.sf.l2j.gameserver.model.actor.instance.L2PcInstance

Сделал так :
Добавил в UPDATE_CHARACTER и RESTORE_CHARACTER SpiritId в такой же последовательности, как и в базе стоит.

Потом :

PHP код:
<?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 код:
<?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;

Спасибо за терпение и активную помощь.
Ответ
#6
В ошибке написано: не может найти метод "setSpiritId(int)".
Я писал:
Цитата:Добавить get\set функции.
То есть функции, чтобы взять\присвоить значение.
В общем случае это простейшие функции:
[src=java]public int getSpiritId()
{
return _SpiritId;
}[/src]
[src=java]public int setSpiritId(int SpiritId)
{
_SpiritID = SpiritId;
}[/src]
И объявить переменную private int _SpiritId; (с нижним подчеркиванием, как у всех остальных в классе). Так наверное отмечается, что переменная внутриклассовая.
Ответ
#7
Спасибо, разобрался.

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

PHP код:
<?php 
if (getSpiritId() != target.getSpiritId())
{

}

Сюда :

PHP код:
<?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\gameserver\model\actor\instance\L2PcInstance.java (4434:9) getSpiritId(int) in net.sf.l2j.gameserver.model.actor.instance.L2PcInstance cannot be applied to ()
C:\Server-Amadeus\INTERLUDE\L2J_IT\java\net\sf\l2j\gameserver\model\actor\instance\L2PcInstance.java:4434: getSpiritId(int) in net.sf.l2j.gameserver.model.actor.instance.L2PcInstance cannot be applied to ()

Тобишь я должен что-то указывать в () ? И как возможно использовать getSpiritId в AttackRequest ?

Благодарю.
Ответ
#8
target.getSpiritId()
Если метод getSpiritId() у вас описан в L2PcInstance то правильный вызов targetPlayer.getSpiritId()
Ответ
#9
Уважаемый Azagthtot, сделал как Вы сказали :

PHP код:
<?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\gameserver\model\actor\instance\L2PcInstance.java (4434:9) setSpiritId(int) in net.sf.l2j.gameserver.model.actor.instance.L2PcInstance cannot be applied to ()
C:\Server-Amadeus\INTERLUDE\L2J_IT\java\net\sf\l2j\gameserver\model\actor\instance\L2PcInstance.java:4434: setSpiritId(int) in net.sf.l2j.gameserver.model.actor.instance.L2PcInstance cannot be applied to ()

В чём снова ошибка?
Спасибо за помощь.

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

PHP код:
<?php 
public int getSpiritId(int SpiritId)
{
return
_SpiritId;
}

а надо было :

PHP код:
<?php 
public int getSpiritId()
{
return
_SpiritId;
}

А как теперь возможно в AttackRequest использовать getSpiritId ?
Ответ
#10
через getClient().getActiveChar().getSpiritId() естественно.
P.S. А вы не хотите полностью задачу описать, может есть более простое решение?
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Удаление остатков Dino сета с базы данных Pro_Stalker 2 2,374 04-24-2012, 01:55 PM
Последний пост: Pro_Stalker
  Параметры базы. FilipMorris 0 1,763 10-25-2011, 04:24 PM
Последний пост: FilipMorris

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


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