Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Guard
#1
Помогите пожалуйста.
Сделал я гварда, который должен атаковать вражескую фракцию, но он бьет все фракции, даже своюSad
Вот код:
[SRC="java"]package l2p.gameserver.ai;

import l2p.gameserver.geodata.GeoEngine;
import l2p.gameserver.model.Creature;
import l2p.gameserver.model.instances.NpcInstance;

public class FactionRanger extends Ranger
{
public FactionRanger(NpcInstance actor)
{
super(actor);
}

@Override
protected boolean canAttackCharacter(Creature target)
{
if(getActor().getFactionId() != target.getFactionId())
{
return super.canAttackCharacter(target);
}
return target.isMonster();
}
}[/SRC]
У нпц я указал
<set name="factionId" value="1" />
<set name="ai_type" value="FactionRanger" />
<set name="type" value="Guard" />

Что я неправильно сделал?

Добавлено через 55 секунд
Забыл, в Creature я добавил [SRC="java"] public int factionId = 0;

public int getFactionId()
{
return this.factionId;
}

public void setFactionId(int i)
{
factionId=i;
}[/SRC]
дабы все скомпилилось Big Grin
Сборка овер.
Ответ
#2
Не уверен, но
Ответ
#3
Так и было сначала задумано, это я потом начал уже насиловать кодBig Grin
С этим кодом не работает тоже.
Ответ
#4
А ты уверен, что гвард принадлежит определенной фракции?
Проверь.
Ответ
#5
[SRC="xml"] <npc id="36608" name="Guard Ranger" title="Good">
<set name="factionId" value="1" />
<set name="aggroRange" value="1000" />
<set name="ai_type" value="FactionRanger" />
<set name="baseAtkRange" value="1100" />
<set name="baseCON" value="43" />
<set name="baseCritRate" value="80" />
<set name="baseDEX" value="30" />
<set name="baseHpMax" value="3290.113" />
<set name="baseHpRate" value="1" />
<set name="baseHpReg" value="8.5" />
<set name="baseINT" value="21" />
<set name="baseMAtk" value="1242" />
<set name="baseMAtkSpd" value="500" />
<set name="baseMDef" value="469" />
<set name="baseMEN" value="20" />
<set name="baseMpMax" value="1674.8" />
<set name="baseMpReg" value="3" />
<set name="basePAtk" value="1952" />
<set name="basePAtkSpd" value="253" />
<set name="basePDef" value="577" />
<set name="baseRunSpd" value="160" />
<set name="baseSTR" value="40" />
<set name="baseShldDef" value="0" />
<set name="baseShldRate" value="0" />
<set name="baseWIT" value="20" />
<set name="baseWalkSpd" value="50" />
<set name="castle_id" value="1" />
<set name="collision_height" value="24.0" />
<set name="collision_radius" value="8.0" />
<set name="level" value="80" />
<set name="rewardExp" value="0" />
<set name="rewardRp" value="0" />
<set name="rewardSp" value="0" />
<set name="shots" value="NONE" />
<set name="texture" value="" />
<set name="type" value="Guard" />
<equip>
<rhand item_id="284" /> <!--Long Bow-->
</equip>
<skills>
<skill id="4416" level="14" /> <!--Humans-->
</skills>
<attributes>
<defence attribute="fire" value="150" />
<defence attribute="water" value="150" />
<defence attribute="wind" value="150" />
<defence attribute="earth" value="150" />
<defence attribute="holy" value="150" />
<defence attribute="unholy" value="150" />
</attributes>
</npc>[/SRC]
Ну в xml я указал factionId, а как проверить присвоился ли он гварду?
Возможно необходимо добавить factionId в NpcTemplate ?
Ответ
#6
L2J Написал:Ну в xml я указал factionId, а как проверить присвоился ли он гварду?
Возможно необходимо добавить factionId в NpcTemplate ?

Не возможно необходимо, а необходимо. Smile
Должно быть что-то вроде:
Код:
_factionId = set.getInteger("factionId", 0);
Ответ
#7
Сделал так, не работает.
Но заметил вот что, человека с factionId = 0 он не бьет.
Получается что factionId у гвардов = 0?
Почему?
Ответ
#8
У оверов уже появился ИИ, и он сам парсит параметры с темплейта в модель объекта О_О Мистика...
П.С - подсказка выше, и в моих словах - 1на и та же.
Ответ
#9
Спасибо, все понял, все сделал. :+25 Duals:

Добавлено через 6 минут
не хочется создавать новую тему, но почему то не могу купить итем если его цена 0.
Подскажите как сделать чтобы можно было покупать?

Добавлено через 39 минут
Админ может покупать, а обычные игроки нет.
Ответ
#10
L2J Написал:Спасибо, все понял, все сделал. :+25 Duals:

Добавлено через 6 минут
не хочется создавать новую тему, но почему то не могу купить итем если его цена 0.
Подскажите как сделать чтобы можно было покупать?

Добавлено через 39 минут
Админ может покупать, а обычные игроки нет.

Сделай цену 1, чем плохо то?)
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  GuardInstance & AI Guard Enjoooy 3 2,036 03-22-2017, 12:36 AM
Последний пост: Enjoooy
  Guard BlackJeck 18 5,082 02-14-2013, 07:30 PM
Последний пост: gorodetskiy

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


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