Noticias:

No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.

Menú Principal

NPC Chatty Guard (Freya to High Five)

Iniciado por Swarlog, Jul 24, 2025, 11:28 PM

Tema anterior - Siguiente tema

Swarlog

Lineage2 L2JServer hf

scripts.cfg
startGameServer.bat / -Dfile.encoding=UTF8 (soporte para el idioma Ruso)
-- data/scripts/ai/group_template/ChattyGuard.java
===================================================|

/*
 * Copyright (C) 2004-2018 L2J DataPack
 * 
 * This file is part of L2J DataPack.
 * 
 * L2J DataPack is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * L2J DataPack is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */
 
/** Autor Tomalko
 */

package ai.group_template;

import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import ai.npc.AbstractNpcAI;

import com.l2jserver.gameserver.ThreadPoolManager;
import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.network.clientpackets.Say2;
import com.l2jserver.util.Rnd;

public final class ChattyGuard extends AbstractNpcAI
{
	private static final Logger LOG	= LoggerFactory.getLogger(ChattyGuard.class);
	private static final int CHANCE		 = 10;
	private static final long INT_SEARCH = 15000L;
	private static final int RADIOS		 = 1000;
	private static final int[] NPCS		 = {
		30216, 30217, 30218, 30219, 30220, 30221, 30346, 30347,
		30348, 30349, 32175, 32176, 32177, 32178, 32179, 32180, 
		30541, 30542, 30543, 30544, 30545, 30546, 30547, 30548,
		30577, 30578, 30579, 30580, 30581, 30582, 30039, 30040,
		30041, 30042, 30043, 30044, 30045, 30046, 30379, 30380,
		30381, 30382, 30383, 30384, 30385, 30386, 30331, 32479,
		30333, 30334, 30335, 30336, 30337, 30338, 30072, 30073,
		30074, 30075, 30076, 30465, 30466, 32480, 30200, 30201,
		30198, 30199, 30197, 32482, 30121, 30122, 30123, 30124,
		30125, 30126, 30128, 30452, 30478, 30709, 30710, 30711,
		30712, 30713, 30714, 30870, 30871, 30872, 30873, 30874,
		30875, 30876, 30877, 31294, 31295, 31296, 31297, 31298,
		31299, 31983, 31984, 31985, 31986, 31987, 31988, 31343,
		31342, 31344, 31345, 31346, 31347, 30918, 30919, 30922,
		30923, 
	};
	private static final String[] TMMSG		= {
		"{name}, есть чо?",
		"{name}, привет!",
		"{name}, привет пративный.",
		"{name}, дай оружие на минутку, хочу скрин сделать.",
		"{name}, удачной охоты.",
		"{name}, в чем сила, брат?",
		"{name}, больше фрагов тебе.",
		"{name}, ты мне в кошмарах снился.",
		"{name}, я тебя знаю - тебя давно разыскивают за убийства невинных монстров.",
		"{name}, пвп или засцал?",
		"{name}, у тебя кошелек выпал.",
		"{name}, не пойду я с тобой на свидание, даже не проси.",
		"Всем чмоке в этом чате."
	};
	private static final String[] TFMSG		= {
		"{name}, привет красавица.",
		"{name}, ух ты, какие у тебя... э... глаза.",
		"{name}, не хочешь погулять с настоящим мачо?",
		"{name}, привет!",
		"{name}, дай потрогать... э... ну вобщем дай чего нибудь потрогать.",
		"{name}, не женское это дело - врагов убивать.",
		"{name}, у тебя верх порвался, не свети... глазками.",
		"{name}, ах какие булочки...",
		"{name}, ах какие ножки...",
		"{name}, да ты красотка однако.",
		"{name}, вах, какая женщина, мне бы такую.",
		"{name}, а что вы делаете сегодня вечером?",
		"{name}, вы согласны что с точки зрения банальной эрудиции, не всякий локально селектированный индивидуум способен игнорировать тенденции потенциальных эмоций и паритетно аллоцировать амбивалентные кванты логистики, экстрагируемой с учетом антропоморфности эвристического генезиса?",
		"{name}, предлагаю руку и сердце. И кошелек после свадьбы."
	};
	//private static final String[] TMMSG_K	= {};
	//private static final String[] TFMSG_K	= {};

	public ChattyGuard()
	{
		super(ChattyGuard.class.getSimpleName(), "ai/group_template");
		addSpawnId(NPCS);
	}
	
	@Override
	public String onSpawn(L2Npc npc)
    {
		ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Runnable()
		{
			@Override
			public void run()
			{
				try
				{
					if (Rnd.get(100) < CHANCE)
					{
						List<L2Character> players = npc.getKnownList().getKnownCharactersInRadius(RADIOS);
						if (players != null && players.size() > 0)
						{
							L2Character player = players.get(Rnd.get(0, players.size() - 1));
							if (player instanceof L2PcInstance)
							{
								L2PcInstance pl = (L2PcInstance) player;
								if (pl.getKarma() == 0)
								{
									if (pl.getAppearance().getSex())
									{
										broadcastNpcSay(npc, Say2.NPC_ALL, String.valueOf(TFMSG[Rnd.get(0, TFMSG.length - 1)].replace("{name}", pl.getName())));
									}
									else
									{
										broadcastNpcSay(npc, Say2.NPC_ALL, String.valueOf(TMMSG[Rnd.get(0, TMMSG.length - 1)].replace("{name}", pl.getName())));
									}
									
								}
								/*else if (pl.getKarma() >= 1)
								{
									if (pl.getAppearance().getSex())
									{
										broadcastNpcSay(npc, Say2.NPC_ALL, String.valueOf(TFMSG_K[Rnd.get(0, TFMSG_K.length - 1)].replace("{name}", pl.getName())));
									}
									else
									{
										broadcastNpcSay(npc, Say2.NPC_ALL, String.valueOf(TMMSG_K[Rnd.get(0, TMMSG_K.length - 1)].replace("{name}", pl.getName())));
									}
								}*/
							}
						}
						return;
					}
				}
				catch (Throwable t)
				{
					LOG.info("Error while ChattyGuard(): {}", t.getMessage());
				}
			}
		}, INT_SEARCH, INT_SEARCH);
		return super.onSpawn(npc);
	}

	public static void main(String[] args)
	{
		new ChattyGuard();
	}
}