Сообщений: 300
Тем: 92
Зарегистрирован: Oct 2010
Репутация:
-132
Цитата:Дык нпс тоже ведь орут, почему бы не сделать какого-то нпс и от его имени орать?
а можете привести кусок кода с примером? я не нашел ничего путного, собственно выше написанный квест кажеться довольно простым, без всяких лишних вмешательств.
помогите допилить его плз.
Сообщений: 5,863
Тем: 105
Зарегистрирован: Sep 2010
Репутация:
13,014
Вообще нужно висталла тыкать, он это делал и может помочь. А так:
Цитата:public void broadcastPacket(L2GameServerPacket... packets)
{
sendPacket(packets);
broadcastPacketToOthers(packets);
}
Возможно это, ковырял сборку ов и фениксов, а так хз...
Сообщений: 300
Тем: 92
Зарегистрирован: Oct 2010
Репутация:
-132
нет это совершенно другое.. у меня есть квест
Код: package com.l2jfrozen.gameserver.managers;
import java.util.List;
import java.util.Random;
import java.util.concurrent.Future;
import java.util.logging.Logger;
import javolution.util.FastList;
import com.l2jfrozen.util.random.Rnd;
import com.l2jfrozen.gameserver.datatables.sql.NpcTable;
import com.l2jfrozen.gameserver.idfactory.IdFactory;
import com.l2jfrozen.gameserver.model.L2Attackable;
import com.l2jfrozen.gameserver.model.L2Object;
import com.l2jfrozen.gameserver.model.L2World;
import com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.model.entity.Announcements;
import com.l2jfrozen.gameserver.network.SystemMessageId;
import com.l2jfrozen.gameserver.network.serverpackets.CreatureSay;
import com.l2jfrozen.gameserver.network.serverpackets.SystemMessage;
import com.l2jfrozen.gameserver.thread.ThreadPoolManager;
public class TradeChat
{
private static final String[] TR_TEXT =
{
"Testchat1",
"Testchat2",
"TestChat3",
"TestChat4",
"TestChat5"
};
private static final String[] TR_PC =
{
"MrOne",
"MrTwo",
"MrThree",
"MrFour",
"MrFive"
};
public void init(L2PcInstance activeChar)
{
activeChar.sendMessage("trMSG Started!");
startTradeMessagesAtFixedRate();
}
private void stopTradeMessagesAtFixedRate()
{
if(_TradeMessageTask != null)
{
_TradeMessageTask.cancel(true);
_TradeMessageTask = null;
}
}
private void startTradeMessagesAtFixedRate()
{
SendTradeMessage TradeMessage = new SendTradeMessage();
_TradeMessageTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(TradeMessage, 0, 60000);
TradeMessage = null;
}
class SendTradeMessage implements Runnable
{
public void run()
{
try
{
for(L2PcInstance pc : L2World.getInstance().getAllPlayers())
{
if(pc == null)
{
continue;
}
else if(pc.isOnline() == 0)
{
continue;
}
pc.sendPacket(getTradeMessage());
}
}
catch(Throwable t)
{
if(Config.ENABLE_ALL_EXCEPTIONS)
t.printStackTrace();
}
}
}
private CreatureSay getTradeMessage()
{
CreatureSay cs = new CreatureSay(0, 17, getRandomSender(), getRandomText());
return cs;
}
private String getRandomSender()
{
return TR_TEXT[Rnd.get(TR_PC.length)];
}
private String getRandomText()
{
return TR_TEXT[Rnd.get(TR_TEXT.length)];
}
}
который я не до конца понимаю, как можно запустить правильно.. помогите разобраться с этим пожалуйста.
Сообщений: 177
Тем: 2
Зарегистрирован: Feb 2012
Репутация:
2,588
Это не квест, это просто какой то класс.
Как его "запустить" на твоей сборке никто не скажет.
Сообщений: 5,863
Тем: 105
Зарегистрирован: Sep 2010
Репутация:
13,014
Код: case SHOUT:
if(activeChar.isCursedWeaponEquipped())
{
activeChar.sendPacket(Msg.SHOUT_AND_TRADE_CHATING_CANNOT_BE_USED_SHILE_POSSESSING_A_CURSED_WEAPON);
return;
}
if(activeChar.isInObserverMode())
{
activeChar.sendPacket(Msg.YOU_CANNOT_CHAT_LOCALLY_WHILE_OBSERVING);
return;
}
if(!activeChar.isGM() && !activeChar.antiFlood.canShout(_text))
{
activeChar.sendMessage("Shout chat is allowed once per 5 seconds.");
return;
}
if(Config.GLOBAL_SHOUT)
announce(activeChar, cs);
else
shout(activeChar, cs);
activeChar.sendPacket(cs);
break;
case TRADE:
if(activeChar.isCursedWeaponEquipped())
{
activeChar.sendPacket(Msg.SHOUT_AND_TRADE_CHATING_CANNOT_BE_USED_SHILE_POSSESSING_A_CURSED_WEAPON);
return;
}
if(activeChar.isInObserverMode())
{
activeChar.sendPacket(Msg.YOU_CANNOT_CHAT_LOCALLY_WHILE_OBSERVING);
return;
}
if(!activeChar.isGM() && !activeChar.antiFlood.canTrade(_text))
{
activeChar.sendMessage("Trade chat is allowed once per 5 seconds.");
return;
}
if(Config.GLOBAL_TRADE_CHAT)
announce(activeChar, cs);
else
shout(activeChar, cs);
activeChar.sendPacket(cs);
break;
Вот оно, интересно даже самому стало, правда как юзать - хз.
Сообщений: 300
Тем: 92
Зарегистрирован: Oct 2010
Репутация:
-132
Цитата:Вот оно, интересно даже самому стало, правда как юзать - хз.
спс. да вот я и хочу разобраться в том как его запустить, не то что бы уж то юзать)
я просто промышлял только с квестами, именно с квестами из AI, загружая их из AILoader.
Цитата:Это не квест, это просто какой то класс.
Как его "запустить" на твоей сборке никто не скажет.
видно, что сборка l2jfrozen)
Сообщений: 300
Тем: 92
Зарегистрирован: Oct 2010
Репутация:
-132
ребят, тема все еще актуальна. помогите плз разобраться до конца..
Цитата:спс. да вот я и хочу разобраться в том как его запустить, не то что бы уж то юзать)
я просто промышлял только с квестами, именно с квестами из AI, загружая их из AILoader.
Сообщений: 90
Тем: 0
Зарегистрирован: Jul 2011
Репутация:
-37
ThreadPoolManager.getInstance().scheduleGeneral(Runnable r, long delay) - как вариант, либо заставляйте кричать при каком-то событии, вариантов уйма
Сообщений: 300
Тем: 92
Зарегистрирован: Oct 2010
Репутация:
-132
07-11-2012, 03:57 AM
(Сообщение последний раз редактировалось: 07-11-2012, 07:38 AM mego4el.)
Код: package com.l2jfrozen.gameserver.managers;
import java.util.List;
import java.util.Random;
import java.util.concurrent.Future;
import java.util.logging.Logger;
import javolution.util.FastList;
import com.l2jfrozen.util.random.Rnd;
import com.l2jfrozen.Config;
import com.l2jfrozen.gameserver.datatables.sql.NpcTable;
import com.l2jfrozen.gameserver.idfactory.IdFactory;
import com.l2jfrozen.gameserver.model.L2Attackable;
import com.l2jfrozen.gameserver.model.L2Object;
import com.l2jfrozen.gameserver.model.L2World;
import com.l2jfrozen.gameserver.model.actor.instance.L2NpcInstance;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.model.entity.Announcements;
import com.l2jfrozen.gameserver.network.SystemMessageId;
import com.l2jfrozen.gameserver.network.serverpackets.CreatureSay;
import com.l2jfrozen.gameserver.network.serverpackets.SystemMessage;
import com.l2jfrozen.gameserver.thread.ThreadPoolManager;
public class TradeChat
{
protected Future<?> _TradeMessageTask = null;
private static final String[] TR_TEXT =
{
"Testchat1",
"Testchat2",
"TestChat3",
"TestChat4",
"TestChat5"
};
private static final String[] TR_PC =
{
"MrOne",
"MrTwo",
"MrThree",
"MrFour",
"MrFive"
};
public void init(L2PcInstance activeChar)
{
activeChar.sendMessage("trMSG Started!");
startTradeMessagesAtFixedRate();
}
private void stopTradeMessagesAtFixedRate()
{
if(_TradeMessageTask != null)
{
_TradeMessageTask.cancel(true);
_TradeMessageTask = null;
}
}
private void startTradeMessagesAtFixedRate()
{
SendTradeMessage TradeMessage = new SendTradeMessage();
_TradeMessageTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(TradeMessage, 0, 60000);
TradeMessage = null;
}
class SendTradeMessage implements Runnable
{
public void run()
{
try
{
for(L2PcInstance pc : L2World.getInstance().getAllPlayers())
{
if(pc == null)
{
continue;
}
else if(pc.isOnline() == 0)
{
continue;
}
pc.sendPacket(getTradeMessage());
}
}
catch(Throwable t)
{
if(Config.ENABLE_ALL_EXCEPTIONS)
t.printStackTrace();
}
}
}
private CreatureSay getTradeMessage()
{
CreatureSay cs = new CreatureSay(0, 17, getRandomSender(), getRandomText());
return cs;
}
private String getRandomSender()
{
return TR_TEXT[Rnd.get(TR_PC.length)];
}
private String getRandomText()
{
return TR_TEXT[Rnd.get(TR_TEXT.length)];
}
}
подскажите, что я делаю не так?
ведь здесь внутри идет вызов:
ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(TradeMessage, 0, 60000);
а в GS - просто добавлен сам импорт этого класса. (по подобию ChristmasEventManager.java)
Добавлено через 3 часа 41 минуту
все, уже разобрался) спасибо большое всем)
|