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

PHP код:
<?php 
package events
.SquashEvent;

import ru.l2open.gameserver.instancemanager.QuestManager;
import ru.l2open.gameserver.model.L2Object;
import ru.l2open.gameserver.model.L2Skill;
import ru.l2open.gameserver.model.actor.L2Npc;
import ru.l2open.gameserver.model.actor.instance.L2MonsterInstance;
import ru.l2open.gameserver.model.actor.instance.L2PcInstance;
import ru.l2open.gameserver.model.quest.Quest;
import ru.l2open.gameserver.model.quest.QuestState;
import ru.l2open.gameserver.network.clientpackets.Say2;
import ru.l2open.gameserver.network.serverpackets.CreatureSay;
import ru.l2open.util.Rnd;

/**
* @author Gnacik
*/
public class SquashEvent extends Quest
{
private static final
int MANAGER = 31860;

private static final
int NECTAR_SKILL = 2005;

private static final
int[] CHRONO_LIST =
{
4202,5133,5817,7058,8350
};

private static final
int[] SQUASH_LIST =
{
12774,12775,12776,
12777,12778,12779,
13016,13017
};

private static final
String[] _NOCHRONO_TEXT =
{
"You cannot kill me without Chrono",
"Hehe...keep trying...",
"Nice try...",
"Tired ?",
"Go go ! haha..."
};

private static final
String[] _CHRONO_TEXT =
{
"Arghh... Chrono weapon...",
"My end is coming...",
"Please leave me !",
"Heeellpppp...",
"Somebody help me please..."
};
private static final
String[] _NECTAR_TEXT =
{
"Yummy... Nectar...",
"Plase give me more...",
"Hmmm.. More.. I need more...",
"I will like you more if you give me more...",
"Hmmmmmmm...",
"My favourite..."
};

private static final
int[][] DROPLIST =
{
{
12774, 1060, 100 }, { 12774, 1062, 50 }, { 12775, 1539, 100 }, { 12775, 1375, 70 },
{
12775, 1459, 50 }, { 12776, 1061, 100 }, { 12776, 1062, 70 }, { 12776, 1458, 50 },
{
12777, 1061, 100 }, { 12777, 1374, 50 }, { 12778, 1539, 100 }, { 12778, 6036, 70 },
{
12778, 1459, 40 }, { 12779, 6035, 70 }, { 12779, 1458, 50 }, { 13016, 1540, 100 },
{
13016, 1460, 40 }, { 13016, 5234, 20 }, { 13017, 1540, 100 }, { 13017, 20004, 40 },
{
13017, 1461, 20 }, { 13017, 5234, 10 }
};

public
String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isPet)
{
if (
contains(SQUASH_LIST,npc.getNpcId()))
{
if(
isPet)
{
noChronoText(npc);
npc.setIsInvul(true);
return
null;
}
if(
attacker.getActiveWeaponItem() != null && contains(CHRONO_LIST,attacker.getActiveWeaponItem().getItemId()))
{
ChronoText(npc);
npc.setIsInvul(false);
npc.getStatus().reduceHp(10, attacker);
return
null;
}
else
{
noChronoText(npc);
npc.setIsInvul(true);
return
null;
}
}
return
super.onAttack(npc, attacker, damage, isPet);
}

public
String onSkillSee(L2Npc npc, L2PcInstance caster, L2Skill skill, L2Object[] targets, boolean isPet)
{
if (
contains(targets,npc) && contains(SQUASH_LIST,npc.getNpcId()) && (skill.getId() == NECTAR_SKILL))
{
switch(
npc.getNpcId())
{
case
12774:
randomSpawn(12775, 12776, npc, true);
break;
case
12777:
randomSpawn(12778, 12779, npc, true);
break;
case
12775:
randomSpawn(13016, npc, true);
break;
case
12778:
randomSpawn(13017, npc, true);
break;
}
}
return
super.onSkillSee(npc,caster,skill,targets,isPet);
}

public
String onKill (L2Npc npc, L2PcInstance killer, boolean isPet)
{
dropItem(npc, killer);

return
super.onKill(npc, killer, isPet);
}

public
String onSpawn(L2Npc npc)
{
npc.setIsImmobilized(true);
npc.disableCoreAI(true);
return
null;
}

private static final
void dropItem(L2Npc mob, L2PcInstance player)
{
final
int npcId = mob.getNpcId();
final
int chance = Rnd.get(100);
for (
int i = 0; i < DROPLIST.length; i++)
{
int[] drop = DROPLIST[i];
if (
npcId == drop[0])
{
if (
chance < drop[2])
{
if(
drop[1] > 20000)
((
L2MonsterInstance)mob).dropItem(player, drop[1], 2);
else
((
L2MonsterInstance)mob).dropItem(player, drop[1], Rnd.get(2, 6));
continue;
}
}
if (
npcId < drop[0])
return;
}
}

private
void randomSpawn(int lower, int higher, L2Npc npc, boolean delete)
{
int _random = Rnd.get(100);
if (
_random < 10)
spawnNext(lower, npc);
else if(
_random < 30)
spawnNext(higher, npc);
else
nectarText(npc);
}

private
void randomSpawn(int npcId, L2Npc npc, boolean delete)
{
if(
Rnd.get(100) < 10)
spawnNext(npcId, npc);
else
nectarText(npc);
}

private
void ChronoText(L2Npc npc)
{
if(
Rnd.get(100) < 20)
npc.broadcastPacket(new CreatureSay(npc.getObjectId(), Say2.ALL, npc.getName(), _CHRONO_TEXT[Rnd.get(_CHRONO_TEXT.length)]));
}
private
void noChronoText(L2Npc npc)
{
if(
Rnd.get(100) < 20)
npc.broadcastPacket(new CreatureSay(npc.getObjectId(), Say2.ALL, npc.getName(), _NOCHRONO_TEXT[Rnd.get(_NOCHRONO_TEXT.length)]));
}
private
void nectarText(L2Npc npc)
{
if(
Rnd.get(100) < 30)
npc.broadcastPacket(new CreatureSay(npc.getObjectId(), Say2.ALL, npc.getName(), _NECTAR_TEXT[Rnd.get(_NECTAR_TEXT.length)]));
}

private
void spawnNext(int npcId, L2Npc npc)
{
addSpawn(npcId, npc.getX(), npc.getY(), npc.getZ(), npc.getHeading(), false, 60000);
npc.deleteMe();
}

public static <
T> boolean contains(T[] array, T obj)
{
for (
int i = 0; i < array.length; i++)
{
if (array[
i] == obj)
{
return
true;
}
}
return
false;
}

public static
boolean contains(int[] array, int obj)
{
for (
int i = 0; i < array.length; i++)
{
if (array[
i] == obj)
{
return
true;
}
}
return
false;
}

public
SquashEvent(int questId, String name, String descr)
{
super(questId, name, descr);

for (
int mob : SQUASH_LIST)
{
addAttackId(mob);
addKillId(mob);
addSpawnId(mob);
addSkillSeeId(mob);
}

addStartNpc(MANAGER);
addFirstTalkId(MANAGER);
addTalkId(MANAGER);

addSpawn(MANAGER, 83077, 147910, -3471, 29412, false, 0);
}

@
Override
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
String htmltext = "";
QuestState st = player.getQuestState(getName());
if (
st == null)
{
Quest q = QuestManager.getInstance().getQuest(getName());
st = q.newQuestState(player);
}
htmltext = npc.getNpcId() + ".htm";
return
htmltext;
}

public static
void main(String[] args)
{
new
SquashEvent(-1,"SquashEvent","events");
Ответ
#2
Код:
private static final String[] _NOCHRONO_TEXT =
{
"[color=Red]You cannot kill me without Chrono[/color]",
"[color=#ff0000]Hehe...keep trying...[/color]",
"[color=#ff0000]Nice try...[/color]",
"[color=#ff0000]Tired[/color] ?",
"[color=#ff0000]Go go ! haha...[/color]"
};

private static final String[] _CHRONO_TEXT =
{
"[color=#ff0000]Arghh... Chrono weapon...[/color]",
"[color=#ff0000]My end is coming...[/color]",
"[color=#ff0000]Please leave me ![/color]",
"[color=#ff0000]Heeellpppp...[/color]",
"[color=#ff0000]Somebody help me please..[/color]."
};
private static final String[] _NECTAR_TEXT =
{
"[color=#ff0000]Yummy... Nectar...[/color]",
"[color=#ff0000]Plase give me more..[/color].",
"[color=#ff0000]Hmmm.. More.. I need more..[/color].",
"[color=#ff0000]I will like you more if you give me more...[/color]",
"[color=#ff0000]Hmmmmmmm[/color]...",
"[color=#ff0000]My favourite...[/color]"
};

Переписываем на руский и сохраняем файл в utf-8 with Bom.
Web программист\разработчик

— Есть только один способ проделать большую работу — полюбить ее. Если вы к этому не пришли, подождите. Не беритесь за дело.
Ответ
#3
Пробовал!..ошибка, моб просто нечего не говорит и дроп проподает..
Ответ
#4
Я уже забыл как делал.
Но скажу одно, стандартным выводом в чат игры не добьётесь, там нет поддержки Unicode
Ответ
#5
KaraMara Написал:Я уже забыл как делал.
Но скажу одно, стандартным выводом в чат игры не добьётесь, там нет поддержки Unicode

Это однозначно..я видел гдето мануал для EMU и Опенов как это сотворить, а вспомнить никак..Sad
Ответ
#6
aks19;123067 Написал:Кто знает, прошу у вас помощи, как сделать что бы мобы говорили в чате по русски. Пример с ивента тыквы...
Я знаю. Во - первых: скрой под спойлером свой скрипт. Во-вторых (пока я добрый): переведи его и скинь мне в лс. Я сделаю.
Ответ
#7
Credo Написал:Я знаю. Во - первых: скрой под спойлером свой скрипт. Во-вторых (пока я добрый): переведи его и скинь мне в лс. Я сделаю.
Буду очень благодарен..
Вроде бы так..
Ответ
#8
aks19;123379 Написал:Буду очень благодарен..
Пробуй...
как то так....
Ответ
#9
Да говорит на русском..только сам ивент не запускаетца. Я думю что смогу доделать.. Огромное спасибо!!! Вопрос один.. чем кодировал? просто есть цель перевести весь сервак...
Ответ
#10
aks19;123391 Написал:опрос один.. чем кодировал? просто есть цель перевести весь сервак...
Не нашел ссылку на тему. В общем, вот программка. Спасибо говорим PROGRAMMATOR.
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Подскажите хорошую сборку с исходниками без пасхалок. =) noname28346 5 3,957 04-20-2020, 11:41 AM
Последний пост: FaintSmile
  Подскажите по effect_point CKREPKA 16 4,630 09-03-2016, 12:36 AM
Последний пост: Stenly76
  подскажите пожалуйста kasper 12 3,366 01-27-2016, 06:22 AM
Последний пост: finfan
  Какой пакет подскажите vanyahunter123 2 1,615 12-19-2015, 08:36 PM
Последний пост: Gaikotsu
  Подскажите спан на сборке овер Литион 9 2,666 08-29-2014, 07:25 PM
Последний пост: Donatte
  подскажите как исправить ;( dimko777 12 3,413 03-11-2013, 08:56 PM
Последний пост: elastic
  Респаун РБ(Подскажите) Final 10 4,309 09-18-2012, 08:01 AM
Последний пост: Final
  Подскажите теги блока equip L2sidia 0 983 09-15-2012, 10:47 PM
Последний пост: L2sidia
  Подскажите что не так? finfan 4 2,124 03-21-2012, 04:40 PM
Последний пост: finfan
  Подскажите пожалуйста Diglaif 4 2,081 01-15-2012, 03:43 PM
Последний пост: gorodetskiy

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


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