Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
рандом сообщения в шаут\трейд
#21
Цитата:Дык нпс тоже ведь орут, почему бы не сделать какого-то нпс и от его имени орать?
а можете привести кусок кода с примером? я не нашел ничего путного, собственно выше написанный квест кажеться довольно простым, без всяких лишних вмешательств.

помогите допилить его плз.
[Изображение: ck.gif]
Ответ
#22
Вообще нужно висталла тыкать, он это делал и может помочь. А так:
Цитата:public void broadcastPacket(L2GameServerPacket... packets)
{
sendPacket(packets);
broadcastPacketToOthers(packets);
}
Возможно это, ковырял сборку ов и фениксов, а так хз...
Ответ
#23
нет это совершенно другое.. у меня есть квест

Код:
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)];
    }
}

который я не до конца понимаю, как можно запустить правильно.. помогите разобраться с этим пожалуйста.
[Изображение: ck.gif]
Ответ
#24
Это не квест, это просто какой то класс.
Как его "запустить" на твоей сборке никто не скажет.
Ответ
#25
Код:
            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;
Вот оно, интересно даже самому стало, правда как юзать - хз.
Ответ
#26
Цитата:Вот оно, интересно даже самому стало, правда как юзать - хз.
спс. да вот я и хочу разобраться в том как его запустить, не то что бы уж то юзать)
я просто промышлял только с квестами, именно с квестами из AI, загружая их из AILoader.

Цитата:Это не квест, это просто какой то класс.
Как его "запустить" на твоей сборке никто не скажет.
видно, что сборка l2jfrozen)Smile
[Изображение: ck.gif]
Ответ
#27
ребят, тема все еще актуальна. помогите плз разобраться до конца..
Цитата:спс. да вот я и хочу разобраться в том как его запустить, не то что бы уж то юзать)
я просто промышлял только с квестами, именно с квестами из AI, загружая их из AILoader.
[Изображение: ck.gif]
Ответ
#28
ThreadPoolManager.getInstance().scheduleGeneral(Runnable r, long delay) - как вариант, либо заставляйте кричать при каком-то событии, вариантов уйма
Ответ
#29
Код:
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 минуту
все, уже разобрался) спасибо большое всем)
[Изображение: ck.gif]
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Системные сообщения volumeOne 34 5,112 01-03-2013, 02:04 AM
Последний пост: orionpvp
  Системные сообщения volumeOne 2 1,475 10-25-2012, 08:39 PM
Последний пост: volumeOne
  пустой трейд Bagoc 3 1,869 01-31-2012, 04:31 PM
Последний пост: Bagoc
  Трейд jaccass 2 1,693 07-15-2011, 11:46 AM
Последний пост: MROBAR
  Налоги на трейд HastemaNS 2 1,827 12-10-2010, 04:29 PM
Последний пост: HastemaNS

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


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