Если игрок соответствует устовиям - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Сообщество Календарь
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II > Работа со скриптами

Работа со скриптами Помощь в редактировании и написании квестов к Java серверам, а так же эвентов.

Ответ
Опции темы
Непрочитано 11.05.2014, 11:37   #1
Аватар для L2J
Пользователь

Автор темы (Топик Стартер) Если игрок соответствует устовиям

Вот код:
if(command.equalsIgnoreCase("nuboloka8083"))
            {
                player.sendMessage("nuboloka8083");
                ItemInstance item = player.getInventory().getItemByItemId(_objectId);
                int crys = item.getTemplate().getCrystalType().externalOrdinal;
                        if(crys == 5 && item.getEnchantLevel() >= 6)
                        {
                            sendMessage("Это локация только для Б грейда. Уровень заточки не больше 6.");
                        }
                        if(crys == 4 && item.getEnchantLevel() >= 6)
                        {
                            sendMessage("Это локация только для Б грейда. Уровень заточки не больше 6.");
                        }
                        else if(crys <= 3 && item.getEnchantLevel() <= 6 || item == null)
                        {
                            player.sendMessage("Вы подходите условиям и телепортированы.");
                            player.teleToClosestTown();
                        }
                player.sendMessage("nuboloka8083konec");
             }
Code: Java
Подскажите пожалуйста, почему когда я нажимаю на кнопку nuboloka8083, то в чат выходит только сообщение nuboloka8083?
Задумка была такова: Если у чара Б шмот и оружие, в инвентаре или на себе одето, то можно тп, а если А и S, то нельзя тп.
В чем ошибка?
L2J вне форума Ответить с цитированием
Непрочитано 11.05.2014, 12:32   #2
Аватар для xolseg
Хрен с горы

По умолчанию Re: Если игрок соответствует устовиям

Я не программист, но... разве так может быть?
сначала if, потом опять if, потом else if?
А не так, if; else if; else?


Погуглил инфу, мой бессмысленный пост.(
xolseg вне форума Отправить сообщение для xolseg с помощью ICQ Отправить сообщение для xolseg с помощью Skype™ Ответить с цитированием
Непрочитано 11.05.2014, 12:43   #3
Аватар для Kenrix
Пользователь

По умолчанию Re: Если игрок соответствует устовиям

if (crys == 5 && item.getEnchantLevel() >= 6 && !грейд_недопустимых_к_тп)
{
teleportЁпте());
}
else
{
sendMessage("Это локация только для Б грейда. Уровень заточки не больше 6.");
}
Kenrix вне форума Ответить с цитированием
Непрочитано 11.05.2014, 13:05   #4
Пользователь

По умолчанию Re: Если игрок соответствует устовиям

Код:
               
if(crys <= 3 && item.getEnchantLevel() <= 6 || item == null)
     {
          player.sendMessage("Вы подходите условиям и телепортированы.");
          player.teleToClosestTown();
     }
else
     sendMessage("Это локация только для Б грейда. Уровень заточки не больше 6.");
Упс, не заметил, пост выше правильно написан.
Main вне форума Ответить с цитированием
Непрочитано 11.05.2014, 13:34   #5
Аватар для ExLite
.

По умолчанию Re: Если игрок соответствует устовиям

в двух if нет ничего страшного, другое дело это то, что они проверяют.
Вы проверяете все что нельзя ( хорошо что только A и S не подходят, а если бы их было больше ?), можно ведь сделать 1 проверку на то что разрешено, а все остальное пустить по else ( как выше в постах ).

по теме: почему не доходит до "nuboloka8083konec" - скорее всего где то ошибка.
Попробуйте так и посмотрите какие значения принимают переменные:
Код:
ItemInstance item = player.getInventory().getItemByItemId(_objectId);
player.sendMessage("Item: " +item.getEnchantLevel());
int crys = item.getTemplate().getCrystalType().externalOrdinal;
player.sendMessage("CrysID: " +crys);
ExLite вне форума Отправить сообщение для ExLite с помощью ICQ Отправить сообщение для ExLite с помощью Skype™ Ответить с цитированием
Непрочитано 11.05.2014, 14:24   #6
Аватар для L2J
Пользователь

Автор темы (Топик Стартер) Re: Если игрок соответствует устовиям

if(command.equalsIgnoreCase("nuboloka8083"))
            {
                player.sendMessage("nuboloka8083");
                ItemInstance item = player.getInventory().getItemByItemId(_objectId);
                player.sendMessage("Item: " + item.getEnchantLevel());
                int crys = item.getTemplate().getCrystalType().externalOrdinal;
                player.sendMessage("CrysID: " + crys);
                if(crys <= 3 && item.getEnchantLevel() <= 6 || item == null)
                {
                    player.sendMessage("Вы походите условиям и телепортированы.");
                    player.teleToClosestTown();
                }
                else
                {
                    player.sendMessage("Эта локация только для персонажей в Б экипировке и уровень заточки не должен быть больше 6.");
                }
                player.sendMessage("nuboloka8083konec");
             }
Code: Java
Сделал так, в чат все равно выводит nuboloka8083 и не телепортирует.
Скорее все ошибка в этом:
 ItemInstance item = player.getInventory().getItemByItemId(_objectId);
int crys = item.getTemplate().getCrystalType().externalOrdinal;
Code: Java
Но как это исправить я не знаю, помогите пожалуйста.
L2J вне форума Ответить с цитированием
Непрочитано 11.05.2014, 14:33   #7
Аватар для ExLite
.

По умолчанию Re: Если игрок соответствует устовиям

ошибка тут:
Код:
ItemInstance item = player.getInventory().getItemByItemId(_objectId);
раз не доходит до player.sendMessage("Item: " + item.getEnchantLevel());

_objectId откуда берется ? может он = null ?
ExLite вне форума Отправить сообщение для ExLite с помощью ICQ Отправить сообщение для ExLite с помощью Skype™ Ответить с цитированием
Непрочитано 11.05.2014, 14:35   #8
Аватар для L2J
Пользователь

Автор темы (Топик Стартер) Re: Если игрок соответствует устовиям

А как по другому брать предмет из инвентаря?
L2J вне форума Ответить с цитированием
Непрочитано 11.05.2014, 14:37   #9
Аватар для SouthBridge
Постоялец

По умолчанию Re: Если игрок соответствует устовиям

PHP код:
getItemByItemId(_objectId
Вы уж определитесь. Либо по ID выборку делаете, либо по OID
PHP код:
item.getEnchantLevel() <= || item == null
Так же следует правильно проверять на null и не глушить исключения и все будет тип-топ.
Использование отладчика тоже не помешает.
Цитата:
А как по другому брать предмет из инвентаря?
Загляните в исходник Inventory, ответ не заставит себя долго ждать.
SouthBridge вне форума Ответить с цитированием
Непрочитано 11.05.2014, 14:44   #10
Аватар для L2J
Пользователь

Автор темы (Топик Стартер) Re: Если игрок соответствует устовиям

  if(command.equals("nuboloka8083"))
            {
                for(ItemInstance item : player.getInventory().getItems())
                {
                    if(item == null)
                        continue;
                    if(item.getCrystalType() != null)
                    {
                    if(item.getCrystalType().externalOrdinal <= 3)
                    {
                        player.teleToClosestTown();
                    }
                        else
                    {
                        player.sendMessage("Вы не подходите условиям.");
                        player.sendActionFailed();
                        return;
                    }
                    }
                }
             }
Code: Java
Сделал так, все проверяет, но теперь телепортирует и пишет вы не подходите..
Естественно у меня в инвентаре дб, если нет ничего или Б грейд шмот, то просто телпортирует. как и должно быть, но почему то еще телепортирует если не подходу условиям.
Где теперь ошибка?
L2J вне форума Ответить с цитированием
Ответ


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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
мануал. Создание квестов Letov Тех-документация 18 10.02.2013 20:03
Геодата, с чего начать Dr_Lector Работа с геодатой 62 30.10.2012 13:12
ГМ команды PROGRAMMATOR Документация 44 19.12.2009 21:39
CT1 Kamael Tonchi Lineage II 4 30.01.2008 23:54


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

Вверх