Перейти к содержанию
Авторизация  
Axis

изменение перемещения НПЦ бег\ходьба

Рекомендуемые сообщения

имею исходники феникса. задался вопросом как изменить AI npc Kreed? данный нпц перемещается по локации в стиле ходьбы, а должен бегать. вот скрипт:

 

package core.sunshine.game.ai;

import core.sunshine.utilities.ext.scripts.Functions;
import core.sunshine.game.model.L2Character;
import core.sunshine.game.model.instances.L2NpcInstance;
import core.sunshine.utilities.util.Location;
import core.sunshine.utilities.util.Rnd;

public class Kreed extends DefaultAI {

    static final Location[] points = {
        new Location(23436, 11164, -3728),
        new Location(20256, 11104, -3728),
        new Location(17330, 13579, -3720),
        new Location(17415, 13044, -3736),
        new Location(20153, 12880, -3728),
        new Location(21621, 13349, -3648),
        new Location(20686, 10432, -3720),
        new Location(22426, 10260, -3648),
        new Location(23436, 11164, -3728)
    };

    private int current_point = -1;
    private long wait_timeout = 0;
    private boolean wait = false;

    public Kreed(L2Character actor) {
        super(actor);
    }

    @Override
    public boolean isGlobalAI() {
        return true;
    }

    @Override
    protected boolean thinkActive() {
        L2NpcInstance actor = getActor();
        if (actor == null || actor.isDead()) {
            return true;
        }

        if (_def_think) {
            doTask();
            return true;
        }

        if (System.currentTimeMillis() > wait_timeout && (current_point > -1 || Rnd.chance(5))) {
            if (!wait) {
                switch (current_point) {
                    case 2:
                        wait_timeout = System.currentTimeMillis() + 15000;
                        wait = true;
                        return true;
                    case 3:
                        wait_timeout = System.currentTimeMillis() + 60000;
                        Functions.npcShout(actor, "The Mass of Darkness will start in a couple of days. Pay more attention to the guard!");
                        wait = true;
                        return true;
                }
            }

            wait_timeout = 0;
            wait = false;
            current_point++;

            if (current_point >= points.length) {
                current_point = 0;
            }

            addTaskMove(points[current_point]);
            return true;
        }

        if (randomAnimation()) {
            return true;
        }

        return false;
    }

    @Override
    protected void onEvtAttacked(L2Character attacker, int damage) {
    }

    @Override
    protected void onEvtAggression(L2Character target, int aggro) {
    }
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не за что, обращайся

А может ты добавиш колонку в бд де там задается 2 и 1 правила когда ему бежать иль  прост идти и все

Вот те на мысль есль что сами думайте делается оч легко

Изменено пользователем 2terege

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

к сожалению я не кодер и хз как это сделать, по этому и спрашиваю

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...