Доброе время суток.

Статус
В этой теме нельзя размещать новые ответы.

NyZaChem

Путник
Пользователь
Сообщения
10
Розыгрыши
0
Репутация
0
Реакции
0
Баллы
0
Может кто в курсе. Как исправить? Антараса и Валакаса.
Когда портуешся к ним, после прохождения квеста. Они иногда просто стоят. Можно их бить, и они не как не реагируют.
Хроники HF
Сборка FirstTeam
 
Как это поправить? Исходники есть, всё что нужно есть. А вот мозгов, как поправить нету )))

С Админ инвиза вышли ? :laugh:
На данный момент, сервер в работе. На нём играют люди. Вот только когда они пошла на Валика, он просто встал, и всё. Они тупо его убили, без всяких препятствий.
 
Последнее редактирование модератором:
Как это поправить? Исходники есть, всё что нужно есть. А вот мозгов, как поправить нету )))


На данный момент, сервер в работе. На нём играют люди. Вот только когда они пошла на Валика, он просто встал, и всё. Они тупо его убили, без всяких препятствий.
беда....
 
скинь класс аи , лень ноут окрывать
поделишься потом файликом? у меня тоже First-Team и скорее всего этот косяк есть, пока еще не дошел до теста Валакаса и Антараса
 
окей

package ai;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import l2ft.commons.threading.RunnableImpl;
import l2ft.commons.util.Rnd;
import l2ft.gameserver.ThreadPoolManager;
import l2ft.gameserver.ai.CtrlEvent;
import l2ft.gameserver.ai.DefaultAI;
import l2ft.gameserver.data.xml.holder.NpcHolder;
import l2ft.gameserver.model.*;
import l2ft.gameserver.model.instances.NpcInstance;
import l2ft.gameserver.scripts.Functions;
import l2ft.gameserver.tables.SkillTable;
import l2ft.gameserver.utils.Location;
import bosses.AntharasManager;

public class Antharas extends DefaultAI
{
// debuffs
final Skill s_fear = getSkill(4108, 1), s_fear2 = getSkill(5092, 1), s_curse = getSkill(4109, 1), s_paralyze = getSkill(4111, 1);
// damage skills
final Skill s_shock = getSkill(4106, 1), s_shock2 = getSkill(4107, 1), s_antharas_ordinary_attack = getSkill(4112, 1), s_antharas_ordinary_attack2 = getSkill(4113, 1), s_meteor = getSkill(5093, 1), s_breath = getSkill(4110, 1);
// regen skills
final Skill s_regen1 = getSkill(4239, 1), s_regen2 = getSkill(4240, 1), s_regen3 = getSkill(4241, 1);

// Vars
private int _hpStage = 0;
private static long _minionsSpawnDelay = 0;
private List<NpcInstance> minions = new ArrayList<NpcInstance>();

//Вестника Невитта и длительность его спавна
private static int INVOKER_NEVIT_HERALD = 4326;
private static final int DESPAWN_TIME = 180 * 60 * 1000; // 3 часа = 180 минут


public Antharas(NpcInstance actor)
{
super(actor);
}

@Override
protected void onEvtAttacked(Creature attacker, int damage)
{
AntharasManager.setLastAttackTime();
for(Playable p : AntharasManager.getZone().getInsidePlayables())
notifyEvent(CtrlEvent.EVT_AGGRESSION, p, 1);
super.onEvtAttacked(attacker, damage);
}

@Override
protected void onEvtSpawn()
{
super.onEvtSpawn();
_minionsSpawnDelay = System.currentTimeMillis() + 120000L;
}

@Override
protected boolean createNewTask()
{
clearTasks();
Creature target;
if((target = prepareTarget()) == null)
return false;

NpcInstance actor = getActor();
if(actor.isDead())
return false;

double distance = actor.getDistance(target);

// Buffs and stats
double chp = actor.getCurrentHpPercents();
if(_hpStage == 0)
{
actor.altOnMagicUseTimer(actor, s_regen1);
_hpStage = 1;
}
else if(chp < 75 && _hpStage == 1)
{
actor.altOnMagicUseTimer(actor, s_regen2);
_hpStage = 2;
}
else if(chp < 50 && _hpStage == 2)
{
actor.altOnMagicUseTimer(actor, s_regen3);
_hpStage = 3;
}
else if(chp < 30 && _hpStage == 3)
{
actor.altOnMagicUseTimer(actor, s_regen3);
_hpStage = 4;
}

// Minions spawn
if(_minionsSpawnDelay < System.currentTimeMillis() && getAliveMinionsCount() < 30 && Rnd.chance(5))
{
NpcInstance minion = Functions.spawn(Location.findPointToStay(actor.getLoc(), 400, 700, actor.getGeoIndex()), Rnd.chance(50) ? 29190 : 29069); // Antharas Minions
minions.add(minion);
AntharasManager.addSpawnedMinion(minion);
}

// Basic Attack
if(Rnd.chance(50))
return chooseTaskAndTargets(Rnd.chance(50) ? s_antharas_ordinary_attack : s_antharas_ordinary_attack2, target, distance);

// Stage based skill attacks
Map<Skill, Integer> d_skill = new HashMap<Skill, Integer>();
switch(_hpStage)
{
case 1:
addDesiredSkill(d_skill, target, distance, s_curse);
addDesiredSkill(d_skill, target, distance, s_paralyze);
addDesiredSkill(d_skill, target, distance, s_meteor);
break;
case 2:
addDesiredSkill(d_skill, target, distance, s_curse);
addDesiredSkill(d_skill, target, distance, s_paralyze);
addDesiredSkill(d_skill, target, distance, s_meteor);
addDesiredSkill(d_skill, target, distance, s_fear2);
break;
case 3:
addDesiredSkill(d_skill, target, distance, s_curse);
addDesiredSkill(d_skill, target, distance, s_paralyze);
addDesiredSkill(d_skill, target, distance, s_meteor);
addDesiredSkill(d_skill, target, distance, s_fear2);
addDesiredSkill(d_skill, target, distance, s_shock2);
addDesiredSkill(d_skill, target, distance, s_breath);
break;
case 4:
addDesiredSkill(d_skill, target, distance, s_curse);
addDesiredSkill(d_skill, target, distance, s_paralyze);
addDesiredSkill(d_skill, target, distance, s_meteor);
addDesiredSkill(d_skill, target, distance, s_fear2);
addDesiredSkill(d_skill, target, distance, s_shock2);
addDesiredSkill(d_skill, target, distance, s_fear);
addDesiredSkill(d_skill, target, distance, s_shock);
addDesiredSkill(d_skill, target, distance, s_breath);
break;
default:
break;
}

Skill r_skill = selectTopSkill(d_skill);
if(r_skill != null && !r_skill.isOffensive())
target = actor;

return chooseTaskAndTargets(r_skill, target, distance);
}

private int getAliveMinionsCount()
{
int i = 0;
for(NpcInstance n : minions)
if(n != null && !n.isDead())
i++;
return i;
}

private Skill getSkill(int id, int level)
{
return SkillTable.getInstance().getInfo(id, level);
}

@Override
protected void onEvtDead(Creature killer)
{
if(minions != null && !minions.isEmpty())
for(NpcInstance n : minions)
n.deleteMe();
//Спавним Вестника Невитта
try
{
NpcInstance HeralGiran = NpcHolder.getInstance().getTemplate(INVOKER_NEVIT_HERALD).getNewInstance();
HeralGiran.spawnMe(new Location(82152, 148488, -3492, 60699));

NpcInstance HeralAden = NpcHolder.getInstance().getTemplate(INVOKER_NEVIT_HERALD).getNewInstance();
HeralGiran.spawnMe(new Location(147048, 25608, -2038, 16383));

NpcInstance HeralGoddart = NpcHolder.getInstance().getTemplate(INVOKER_NEVIT_HERALD).getNewInstance();
HeralGiran.spawnMe(new Location(147384, -55400, -2759, 57343));

NpcInstance HeralRune = NpcHolder.getInstance().getTemplate(INVOKER_NEVIT_HERALD).getNewInstance();
HeralGiran.spawnMe(new Location(42904, -47912, -822, 49151));

NpcInstance HeralDion = NpcHolder.getInstance().getTemplate(INVOKER_NEVIT_HERALD).getNewInstance();
HeralGiran.spawnMe(new Location(15736, 142744, -2731, 16383));

NpcInstance HeralOren = NpcHolder.getInstance().getTemplate(INVOKER_NEVIT_HERALD).getNewInstance();
HeralGiran.spawnMe(new Location(82120, 53224, -1521, 16383));

NpcInstance HeralGludio = NpcHolder.getInstance().getTemplate(INVOKER_NEVIT_HERALD).getNewInstance();
HeralGiran.spawnMe(new Location(-14168, 121192, -3014, 16383));

NpcInstance HeralGludin = NpcHolder.getInstance().getTemplate(INVOKER_NEVIT_HERALD).getNewInstance();
HeralGiran.spawnMe(new Location(80920, 149464, -3069, 16383));

NpcInstance HeralSchuttgart = NpcHolder.getInstance().getTemplate(INVOKER_NEVIT_HERALD).getNewInstance();
HeralGiran.spawnMe(new Location(87608, -141320, -1364, 49151));

NpcInstance HeralHein = NpcHolder.getInstance().getTemplate(INVOKER_NEVIT_HERALD).getNewInstance();
HeralGiran.spawnMe(new Location(110552, 219848, -3696, 57343));

NpcInstance HeralHunter = NpcHolder.getInstance().getTemplate(INVOKER_NEVIT_HERALD).getNewInstance();
HeralGiran.spawnMe(new Location(116824, 77400, -2722, 40959));


ThreadPoolManager.getInstance().schedule(
new DeSpawnScheduleTimerTask(HeralGiran, HeralAden, HeralGoddart, HeralRune, HeralDion, HeralOren,
HeralGludio, HeralGludin, HeralSchuttgart, HeralHein, HeralHunter), DESPAWN_TIME);
}
catch(Exception e)
{
e.printStackTrace();
}



super.onEvtDead(killer);
}

// По истечению времени удаляем Вестника Невитта
class DeSpawnScheduleTimerTask extends RunnableImpl
{
final NpcInstance HeralGiran;
final NpcInstance HeralAden;
final NpcInstance HeralGoddart;
final NpcInstance HeralRune;
final NpcInstance HeralDion;
final NpcInstance HeralOren;
final NpcInstance HeralGludio;
final NpcInstance HeralGludin;
final NpcInstance HeralSchuttgart;
final NpcInstance HeralHein;
final NpcInstance HeralHunter;

public DeSpawnScheduleTimerTask(NpcInstance HeralGiran, NpcInstance HeralAden, NpcInstance HeralGoddart, NpcInstance HeralRune,
NpcInstance HeralDion, NpcInstance HeralOren, NpcInstance HeralGludio, NpcInstance HeralGludin,
NpcInstance HeralSchuttgart, NpcInstance HeralHein, NpcInstance HeralHunter)
{
this.HeralGiran = HeralGiran;
this.HeralAden = HeralAden;
this.HeralGoddart = HeralGoddart;
this.HeralRune = HeralRune;
this.HeralDion = HeralDion;
this.HeralOren = HeralOren;
this.HeralGludio = HeralGludio;
this.HeralGludin = HeralGludin;
this.HeralSchuttgart = HeralSchuttgart;
this.HeralHein = HeralHein;
this.HeralHunter = HeralHunter;
}

@Override
public void runImpl()
{
HeralGiran.deleteMe();
HeralAden.deleteMe();
HeralGoddart.deleteMe();
HeralRune.deleteMe();
HeralDion.deleteMe();
HeralOren.deleteMe();
HeralGludio.deleteMe();
HeralGludin.deleteMe();
HeralSchuttgart.deleteMe();
HeralHein.deleteMe();
HeralHunter.deleteMe();
}
}


}

package ai;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import l2ft.commons.threading.RunnableImpl;
import l2ft.commons.util.Rnd;
import l2ft.gameserver.ThreadPoolManager;
import l2ft.gameserver.ai.CtrlEvent;
import l2ft.gameserver.ai.DefaultAI;
import l2ft.gameserver.data.xml.holder.NpcHolder;
import l2ft.gameserver.model.Creature;
import l2ft.gameserver.model.Playable;
import l2ft.gameserver.model.Skill;
import l2ft.gameserver.model.Zone;
import l2ft.gameserver.model.instances.NpcInstance;
import l2ft.gameserver.network.l2.components.NpcString;
import l2ft.gameserver.scripts.Functions;
import l2ft.gameserver.tables.SkillTable;
import l2ft.gameserver.utils.Location;
import bosses.ValakasManager;

/**
* @author pchayka
*/

public class Valakas extends DefaultAI
{
// Self skills
final Skill s_lava_skin = getSkill(4680, 1), s_fear = getSkill(4689, 1), s_defence_down = getSkill(5864, 1), s_berserk = getSkill(5865, 1), s_regen = getSkill(4691, 1);

// Offensive damage skills
final Skill s_tremple_left = getSkill(4681, 1), s_tremple_right = getSkill(4682, 1), s_tail_stomp_a = getSkill(4685, 1), s_tail_lash = getSkill(4688, 1), s_meteor = getSkill(4690, 1), s_breath_low = getSkill(4683, 1), s_breath_high = getSkill(4684, 1);

// Offensive percentage skills
final Skill s_destroy_body = getSkill(5860, 1), s_destroy_soul = getSkill(5861, 1), s_destroy_body2 = getSkill(5862, 1), s_destroy_soul2 = getSkill(5863, 1);

// Timers
private long defenceDownTimer = Long.MAX_VALUE;

// Timer reuses
private final long defenceDownReuse = 120000L;

// Vars
private double _rangedAttacksIndex, _counterAttackIndex, _attacksIndex;
private int _hpStage = 0;
private List<NpcInstance> minions = new ArrayList<NpcInstance>();




public Valakas(NpcInstance actor)
{
super(actor);
}

@Override
protected void onEvtAttacked(Creature attacker, int damage)
{
NpcInstance actor = getActor();
ValakasManager.setLastAttackTime();
for(Playable p : ValakasManager.getZone().getInsidePlayables())
notifyEvent(CtrlEvent.EVT_AGGRESSION, p, 1);
if(damage > 100)
{
if(attacker.getDistance(actor) > 400)
_rangedAttacksIndex += damage / 1000D;
else
_counterAttackIndex += damage / 1000D;
}
_attacksIndex += damage / 1000D;
super.onEvtAttacked(attacker, damage);
}

@Override
protected boolean createNewTask()
{
clearTasks();
Creature target;
if((target = prepareTarget()) == null)
return false;

NpcInstance actor = getActor();
if(actor.isDead())
return false;

double distance = actor.getDistance(target);

// Buffs and stats
double chp = actor.getCurrentHpPercents();
if(_hpStage == 0)
{
actor.altOnMagicUseTimer(actor, getSkill(4691, 1));
_hpStage = 1;
}
else if(chp < 80 && _hpStage == 1)
{
actor.altOnMagicUseTimer(actor, getSkill(4691, 2));
defenceDownTimer = System.currentTimeMillis();
_hpStage = 2;
}
else if(chp < 50 && _hpStage == 2)
{
actor.altOnMagicUseTimer(actor, getSkill(4691, 3));
_hpStage = 3;
}
else if(chp < 30 && _hpStage == 3)
{
actor.altOnMagicUseTimer(actor, getSkill(4691, 4));
_hpStage = 4;
}
else if(chp < 10 && _hpStage == 4)
{
actor.altOnMagicUseTimer(actor, getSkill(4691, 5));
_hpStage = 5;
}

// Minions spawn
if(getAliveMinionsCount() < 100 && Rnd.chance(5))
{
NpcInstance minion = Functions.spawn(Location.findPointToStay(actor.getLoc(), 400, 700, actor.getGeoIndex()), 29029); // Valakas Minions
minions.add(minion);
ValakasManager.addValakasMinion(minion);
}

// Tactical Movements
if(_counterAttackIndex > 2000)
{
ValakasManager.broadcastScreenMessage(NpcString.VALAKAS_HEIGHTENED_BY_COUNTERATTACKS);
_counterAttackIndex = 0;
return chooseTaskAndTargets(s_berserk, actor, 0);
}
else if(_rangedAttacksIndex > 2000)
{
if(Rnd.chance(60))
{
Creature randomHated = actor.getAggroList().getRandomHated();
if(randomHated != null)
{
setAttackTarget(randomHated);
actor.startConfused();
ThreadPoolManager.getInstance().schedule(new RunnableImpl()
{
@Override
public void runImpl() throws Exception
{
NpcInstance actor = getActor();
if(actor != null)
actor.stopConfused();
_madnessTask = null;
}
}, 20000L);
}
ValakasManager.broadcastScreenMessage(NpcString.VALAKAS_RANGED_ATTACKS_ENRAGED_TARGET_FREE);
_rangedAttacksIndex = 0;
}
else
{
ValakasManager.broadcastScreenMessage(NpcString.VALAKAS_RANGED_ATTACKS_PROVOKED);
_rangedAttacksIndex = 0;
return chooseTaskAndTargets(s_berserk, actor, 0);
}
}
else if(_attacksIndex > 3000)
{
ValakasManager.broadcastScreenMessage(NpcString.VALAKAS_PDEF_ISM_DECREACED_SLICED_DASH);
_attacksIndex = 0;
return chooseTaskAndTargets(s_defence_down, actor, 0);
}
else if(defenceDownTimer < System.currentTimeMillis())
{
ValakasManager.broadcastScreenMessage(NpcString.VALAKAS_FINDS_YOU_ATTACKS_ANNOYING_SILENCE);
defenceDownTimer = System.currentTimeMillis() + defenceDownReuse + Rnd.get(60) * 1000L;
return chooseTaskAndTargets(s_fear, target, distance);
}

// Basic Attack
if(Rnd.chance(50))
return chooseTaskAndTargets(Rnd.chance(50) ? s_tremple_left : s_tremple_right, target, distance);

// Stage based skill attacks
Map<Skill, Integer> d_skill = new HashMap<Skill, Integer>();
switch(_hpStage)
{
case 1:
addDesiredSkill(d_skill, target, distance, s_breath_low);
addDesiredSkill(d_skill, target, distance, s_tail_stomp_a);
addDesiredSkill(d_skill, target, distance, s_meteor);
addDesiredSkill(d_skill, target, distance, s_fear);
break;
case 2:
case 3:
addDesiredSkill(d_skill, target, distance, s_breath_low);
addDesiredSkill(d_skill, target, distance, s_tail_stomp_a);
addDesiredSkill(d_skill, target, distance, s_breath_high);
addDesiredSkill(d_skill, target, distance, s_tail_lash);
addDesiredSkill(d_skill, target, distance, s_destroy_body);
addDesiredSkill(d_skill, target, distance, s_destroy_soul);
addDesiredSkill(d_skill, target, distance, s_meteor);
addDesiredSkill(d_skill, target, distance, s_fear);
break;
case 4:
case 5:
addDesiredSkill(d_skill, target, distance, s_breath_low);
addDesiredSkill(d_skill, target, distance, s_tail_stomp_a);
addDesiredSkill(d_skill, target, distance, s_breath_high);
addDesiredSkill(d_skill, target, distance, s_tail_lash);
addDesiredSkill(d_skill, target, distance, s_destroy_body);
addDesiredSkill(d_skill, target, distance, s_destroy_soul);
addDesiredSkill(d_skill, target, distance, s_meteor);
addDesiredSkill(d_skill, target, distance, s_fear);
addDesiredSkill(d_skill, target, distance, Rnd.chance(60) ? s_destroy_soul2 : s_destroy_body2);
break;
}

Skill r_skill = selectTopSkill(d_skill);
if(r_skill != null && !r_skill.isOffensive())
target = actor;

return chooseTaskAndTargets(r_skill, target, distance);
}

@Override
protected void thinkAttack()
{
NpcInstance actor = getActor();
// Lava buff
if(actor.isInZone(Zone.ZoneType.poison))
if(actor.getEffectList() != null && actor.getEffectList().getEffectsBySkill(s_lava_skin) == null)
actor.altOnMagicUseTimer(actor, s_lava_skin);
super.thinkAttack();
}

private Skill getSkill(int id, int level)
{
return SkillTable.getInstance().getInfo(id, level);
}

private int getAliveMinionsCount()
{
int i = 0;
for(NpcInstance n : minions)
if(n != null && !n.isDead())
i++;
return i;
}

@Override
protected void onEvtDead(Creature killer)
{
if(minions != null && !minions.isEmpty())
for(NpcInstance n : minions)
n.deleteMe();

super.onEvtDead(killer);
}
}
 
Запрещено публиковать исходный код без BB-кода — CODE
 
Раз с этим помочь не получается. Можете подсказать ? Как сделать, что бы был аннонс о появлении райдов. А лучше ГБ... Антараса, валакаса и т.д

И ещё, хочу внести в хроники HF новшество. Добавить скилы, определённым классам, как это сделать ? Как сделать скил, я в курсе, и как добавить его всем. А вот как добавить его определённым классам я не знаю, может кто подскажет?
 
Последнее редактирование модератором:
И ещё, хочу внести в хроники HF новшество. Добавить скилы, определённым классам, как это сделать ? Как сделать скил, я в курсе, и как добавить его всем. А вот как добавить его определённым классам я не знаю, может кто подскажет?
в древо скиллов, normal_skill_tree вроде, чето такое. Добавить анонсы в менеджере, а что касается фикса с залипанием - хоть убей не могу вспомнить, там чето связанное с ренжой вроде
 
Может кто в курсе. Как исправить? Антараса и Валакаса.
Когда портуешся к ним, после прохождения квеста. Они иногда просто стоят. Можно их бить, и они не как не реагируют.
Хроники HF
Сборка FirstTeam
включить им globalAI
 
Оффтоп:
Та то просто не в подходящий момент ты их навещал, у них то тоже график работы есть. А ты попал прям в перерыв. А кто в перерыв то работает?
 
И ещё, хочу внести в хроники HF новшество. Добавить скилы, определённым классам, как это сделать ? Как сделать скил, я в курсе, и как добавить его всем. А вот как добавить его определённым классам я не знаю, может кто подскажет?
Ну пункт с тем где и как делаются скилы мы пропускаем.
Таблица: skill_trees
для ИТ ид классов:
0=>"Fighter",
1=>"Warrior",
2=>"Gladiator",
3=>"Warlord",
4=>"Knight",
5=>"Paladin",
6=>"Dark_avenger",
7=>"Rogue",
8=>"Treasure_hunter",
9=>"Hawkeye",
10=>"Mage",
11=>" Wizard",
12=>"Sorcerer",
13=>"Necromancer",
14=>"Warlock",
15= >"Cleric",
16=>"Bishop",
17=>"Prophet",
18=>"Elven_fighter",
19= >"Elven_knight",
20=>"Temple_knight",
21=>"Swordsinger",
22=>"Elven_scout",
23=>"Plains_walker",
24=>"Silver_ranger",
25=>"Elven_mage",
26=>" Elven_wizard",
27=>" Spellsinger",
28=>"Elemental_summoner ",
29=>"Oracle",
30=>"Elder",
31=>"Dark_fighter",
32=>"Palus_knight",
33=>"Shillien_knight",
34=>"Blad edancer",
35=>"Assasin",
36=>" Abyss_walker",
37=>"Phantom_ranger",
38=>"Dark_mage" ,
39=>"Dark_wizard",
40=>"Spellhowler",
41=>"Phantom_summoner",
42=>"Shil lien_oracle",
43=>"Shilien_elder",
44=>"Orc_fighter",
45=>"Orc_raider",
46=>"Destroyer" ,
47=>"Orc_monk",
48=>"Tyrant",
49=>"Orc_mage",
50=>"Orc_shaman",
51=>" Overlord",
52=>"Warcryer",
53=>"Dwarven_fighter",
54=>"Scavenger",
55=>"Bounty_hunter",
56=>"Artisan",
57=> "Warsmith"
88=> "Duelist"
89=> "Dreadnought"
90=> "PhoenixKnight"
91=> "HellKnight"
92=> "Sagittarius"
93=> "Adventurer"
94=> "Archmage"
95=> "Soultaker"
96=> "ArcanaLord"
97=> "Cardinal"
98=> "Hierophant"
99=> "EvaTemplar"
100=> "SwordMuse"
101=> "WindRider"
102=> "MoonlightSentinel"
103=> "MysticMuse"
104=> "ElementalMaster"
105=> "EvaSaint"
106=> "ShillienTemplar"
107=> "SpectralDancer"
108=> "GhostHunter"
109=> "GhostSentinel"
110=> "StormScreamer"
111=> "SpectralMasterr"
112=> "ShillienSaint"
113=> "Titan"
114=> "GrandKhauatari"
115=> "Dominator"
116=> "Doomcryer"
117=> "FortuneSeeker"
118=> "Maestro"
 
Ну пункт с тем где и как делаются скилы мы пропускаем.
Таблица: skill_trees
для ИТ ид классов:
0=>"Fighter",
1=>"Warrior",
2=>"Gladiator",
3=>"Warlord",
4=>"Knight",
5=>"Paladin",
6=>"Dark_avenger",
7=>"Rogue",
8=>"Treasure_hunter",
9=>"Hawkeye",
10=>"Mage",
11=>" Wizard",
12=>"Sorcerer",
13=>"Necromancer",
14=>"Warlock",
15= >"Cleric",
16=>"Bishop",
17=>"Prophet",
18=>"Elven_fighter",
19= >"Elven_knight",
20=>"Temple_knight",
21=>"Swordsinger",
22=>"Elven_scout",
23=>"Plains_walker",
24=>"Silver_ranger",
25=>"Elven_mage",
26=>" Elven_wizard",
27=>" Spellsinger",
28=>"Elemental_summoner ",
29=>"Oracle",
30=>"Elder",
31=>"Dark_fighter",
32=>"Palus_knight",
33=>"Shillien_knight",
34=>"Blad edancer",
35=>"Assasin",
36=>" Abyss_walker",
37=>"Phantom_ranger",
38=>"Dark_mage" ,
39=>"Dark_wizard",
40=>"Spellhowler",
41=>"Phantom_summoner",
42=>"Shil lien_oracle",
43=>"Shilien_elder",
44=>"Orc_fighter",
45=>"Orc_raider",
46=>"Destroyer" ,
47=>"Orc_monk",
48=>"Tyrant",
49=>"Orc_mage",
50=>"Orc_shaman",
51=>" Overlord",
52=>"Warcryer",
53=>"Dwarven_fighter",
54=>"Scavenger",
55=>"Bounty_hunter",
56=>"Artisan",
57=> "Warsmith"
88=> "Duelist"
89=> "Dreadnought"
90=> "PhoenixKnight"
91=> "HellKnight"
92=> "Sagittarius"
93=> "Adventurer"
94=> "Archmage"
95=> "Soultaker"
96=> "ArcanaLord"
97=> "Cardinal"
98=> "Hierophant"
99=> "EvaTemplar"
100=> "SwordMuse"
101=> "WindRider"
102=> "MoonlightSentinel"
103=> "MysticMuse"
104=> "ElementalMaster"
105=> "EvaSaint"
106=> "ShillienTemplar"
107=> "SpectralDancer"
108=> "GhostHunter"
109=> "GhostSentinel"
110=> "StormScreamer"
111=> "SpectralMasterr"
112=> "ShillienSaint"
113=> "Titan"
114=> "GrandKhauatari"
115=> "Dominator"
116=> "Doomcryer"
117=> "FortuneSeeker"
118=> "Maestro"
В фт это лежит в датапаке. Хз зачем здесь твои вырезки из тырлюда
 
Тема закрыта, читаем правила
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху Снизу