[share] Crazy Guards - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II

Lineage II
Дискуссии на тему создания, настройки и обслуживания серверов Lineage 2. При поддержке: Премиум услуги по рекламе

Описание темы:просто маленькое прикольное AI :)

Ответ
Опции темы
Непрочитано 23.03.2012, 05:55   #1
Аватар для Gaikotsu
Герой

Автор темы (Топик Стартер) [share] Crazy Guards

Откопал у себя маленькое AI для гвардов на воротах населенных пунктов, которое писал давно чисто приколу ради и использовал некоторое время.

Гварды с этим аи с определенной вероятностью и периодом начинают отпускать разные фразы в адрес проходящих мимо игроков, а так же в адрес пк, которых увидели и хотят атаковать.

PHP код:
package ai;

import l2p.extensions.scripts.Functions;
import l2p.gameserver.ai.CtrlIntention;
import l2p.gameserver.ai.Guard;
import l2p.gameserver.model.L2Character;
import l2p.gameserver.model.L2Playable;
import l2p.gameserver.model.L2Player;
import l2p.gameserver.model.instances.L2NpcInstance;
import l2p.gameserver.geodata.GeoEngine;
import l2p.util.Rnd;

public class 
CrazyGuard extends Guard implements Runnable
{
    private 
boolean _crazyState;
    private 
long _lastAggroSay;
    private 
long _lastNormalSay;
    private static final 
int _crazyChance 50// Шанс того, что гвард после его респавна будет чуток "двинутым" (произносить разные фразы)
    
private static final int _sayNormalChance 5// Шанс произнесения фразы адресуемой проходящим мимо игрокам
    
private static final long _sayNormalPeriod 120000// Минимальный период (в мс), с которым гвард произносит фразы, адресуемые проходящим мимо игрокам
    
private static final long _sayAggroPeriod 10000// Минимальный период (в мс), с которым гвард произносит фразы, при начале атаки пк

    // Фразы, которые может произнести гвард, когда начинает атаковать пк
    
private static final String[] _sayAggroText = {
        
"{name}, никуда не уходи, сейчас я тебя чуть-чуть убью!",
        
"{name}, я тебя зарэжу, мамой клянусь!",
        
"Ля-ля-ля, я сошел с ума. Сейчас всех буду убивать!",
        
"Сколько я зарезал, сколько перерезал, сколько я народу загубил! Будешь ты, {name}, еще одним в этом списке!",
        
"Я ужас, летящий на крыльях ночи! Я жвачка, прилипшая к вашей подошве! Я... Короче, {name}, сейчас я тебя буду убивать!",
        
"Я страх, трепещущий в ночи! Я хитроумный замок от подвала правосудия! Я любимец удачи! Я Чёрный Гвард!",
        
"Ух ты, моя будущая жертва. Это я к тебе обращаюсь, {name}! Не делай вид что ты не при делах!",
        
"Ура! За родину, за всех моих собратьев! Готовься к смерти, {name}!",
        
"{name}, кошелек или жизнь?",
        
"{name}, просто умри, не осложняй мне жизнь!",
        
"{name}, как ты предпочитаешь умереть? Быстро и легко или же медленно и мучительно?",
        
"{name}, пвп или засцал?",
        
"{name}, я убью тебя нежно.",
        
"{name}, я тебя порву как Тузик грелку!",
        
"Готовься к смерти, {name}!",
        
"{name}, ты дерешся как девчонка!",
        
"{name}, помолись перед смертью! Хотя... уже не успеешь!" };
    
// Фразы, которые может произнести гвард, адресуя их проходящим мимо игрокам мужского пола
    
private static final String[] _sayNormalTextM = {
        
"{name}, есть чо?",
        
"{name}, превед!",
        
"{name}, привет!",
        
"{name}, привет пративный.",
        
"{name}, дай оружие на минутку, хочу скрин сделать.",
        
"{name}, удачной охоты.",
        
"{name}, в чем сила, брат?",
        
"{name}, больше фрагов тебе.",
        
"{name}, ты мне в кошмарах снился.",
        
"{name}, я тебя знаю - тебя давно разыскивают за убийства невинных монстров.",
        
"{name}, пвп или засцал?",
        
"{name}, у тебя кошелек выпал.",
        
"{name}, не пойду я с тобой на свидание, даже не проси.",
        
"Всем чмоке в этом чате." };
    
// Фразы, которые может произнести гвард, адресуя их проходящим мимо игрокам женского пола
    
private static final String[] _sayNormalTextF = {
        
"{name}, привет красавица.",
        
"{name}, ух ты, какие у тебя... э... глаза.",
        
"{name}, не хочешь погулять с настоящим мачо?",
        
"{name}, привет!",
        
"{name}, дай потрогать... э... ну вобщем дай чего нибудь потрогать.",
        
"{name}, не женское это дело - врагов убивать.",
        
"{name}, у тебя верх порвался, не свети... глазками.",
        
"{name}, ах какие булочки...",
        
"{name}, ах какие ножки...",
        
"{name}, да ты красотка однако.",
        
"{name}, вах, какая женщина, мне бы такую.",
        
"{name}, а что вы делаете сегодня вечером?",
        
"{name}, вы согласны что с точки зрения банальной эрудиции, не всякий локально селектированный индивидуум способен игнорировать тенденции потенциальных эмоций и паритетно аллоцировать амбивалентные кванты логистики, экстрагируемой с учетом антропоморфности эвристического генезиса?",
        
"{name}, предлагаю руку и сердце. И кошелек после свадьбы." };

    public 
CrazyGuard(L2Character actor)
    {
        
super(actor);
        
MAX_Z_AGGRO_RANGE 500;
        
_crazyState false;
        
_lastAggroSay 0;
        
_lastNormalSay 0;
    }

    @
Override
    
protected void onEvtSpawn()
    {
        
_lastAggroSay 0;
        
_lastNormalSay 0;
        
_crazyState Rnd.chance(_crazyChance) ? true false;
        
super.onEvtSpawn();
    }

    @
Override
    
public void checkAggression(L2Character target)
    {
        if (
_crazyState)
        {
            
L2NpcInstance actor getActor();

            if (
actor == null || actor.isDead())
                return;

            if (
target.getPlayer().isGM())
                return;

            if (
Rnd.chance(_sayNormalChance))
            {
                if (
target.isPlayer() && target.getKarma() <= && (_lastNormalSay _sayNormalPeriod System.currentTimeMillis()) && actor.isInRange(target250L))
                {
                    
Functions.npcSay(actortarget.getPlayer().getSex() == _sayNormalTextM[Rnd.get(_sayNormalTextM.length)].replace("{name}"target.getName()) : _sayNormalTextF[Rnd.get(_sayNormalTextF.length)].replace("{name}"target.getName()));
                    
_lastNormalSay System.currentTimeMillis();
                }
            }

            if (
target.getKarma() <= 0)
                return;

            if (
getIntention() != CtrlIntention.AI_INTENTION_ACTIVE)
                return;

            if (
_globalAggro 0L)
                return;

            if (
target.getHateList().get(actor) == null && !actor.isInRange(target600L))
                return;

            if (
Math.abs(target.getZ() - actor.getZ()) > MAX_Z_AGGRO_RANGE)
                return;

            if (
target.isPlayable() && !canSeeInSilentMove((L2Playabletarget))
                return;

            if (!
GeoEngine.canSeeTarget(actortargetfalse))
                return;

            if (
target.isPlayer() && ((L2Playertarget).isInvisible())
                return;

            if ((
target.isSummon() || target.isPet()) && target.getPlayer() != null)
                
target.getPlayer().addDamageHate(actor01);

            
target.addDamageHate(actor02);
            
startRunningTask(2000);

            if (
_lastAggroSay _sayAggroPeriod System.currentTimeMillis())
            {
                
Functions.npcSay(actor_sayAggroText[Rnd.get(_sayAggroText.length)].replace("{name}"target.getPlayer().getName()));
                
_lastAggroSay System.currentTimeMillis();
            }

            
setIntention(CtrlIntention.AI_INTENTION_ATTACKtarget);
        }
        else
        {
            
super.checkAggression(target);
        }
    }


Gaikotsu вне форума Ответить с цитированием
Непрочитано 23.03.2012, 10:50   #2
Аватар для pchayka
Какие бекапы? О_о

По умолчанию Re: [share] Crazy Guards

Фразы ржачные
pchayka вне форума Ответить с цитированием
Непрочитано 23.03.2012, 10:53   #3
Аватар для Ro_0TT
Супергерой

По умолчанию Re: [share] Crazy Guards

Цитата:
"{name}, я убью тебя нежно.",
__________________
Ищу работу: Java-разработчик Skype: ro_0tt
Ro_0TT вне форума Отправить сообщение для Ro_0TT с помощью ICQ Отправить сообщение для Ro_0TT с помощью Skype™ Ответить с цитированием
Непрочитано 23.03.2012, 11:26   #4
Изгнанные

По умолчанию Re: [share] Crazy Guards

Цитата:
"{name}, дай оружие на минутку, хочу скрин сделать.",
xDDDDDDDDDDD
Marshall23 вне форума Ответить с цитированием
Непрочитано 23.03.2012, 13:20   #5
Аватар для Ozzy
Администратор

По умолчанию Re: [share] Crazy Guards

Еще стоит добавить "Есть +16 пушка позвонить?"
Ozzy вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 24.03.2012, 20:37   #6

По умолчанию Re: [share] Crazy Guards

Добавь Мама Люба шатай,шатай))))
__________________
Mangol вне форума Отправить сообщение для Mangol с помощью ICQ Ответить с цитированием
Сказали спасибо:
Непрочитано 26.03.2012, 23:53   #7
Аватар для shaurgon
Пользователь

По умолчанию Re: [share] Crazy Guards

мне не дал, а в шару выложил... бяка ))
shaurgon вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[share]Mass PvP event web-one Работа со скриптами 8 01.08.2012 19:29
[Share] Кач до 255 lvl MegaDrive Серверная часть 10 20.05.2012 05:47
Share L2Regeneration rev 410 Freya deadlocky Lineage II 3 10.06.2011 21:11
[Share] 9 ранг с PWI BioSchok Серверная часть 0 06.05.2011 16:40
[Share] Raxus Interlude Feuer Frei Курилка / Yak floor 85 11.10.2010 17:41


© 2007–2020 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 14:17. Часовой пояс GMT +3.

Вверх