Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Lineage II (https://forum.zone-game.info/forumdisplay.php?f=34)
-   -   Статус (жив или мертв) (https://forum.zone-game.info/showthread.php?t=31521)

mego4el 24.09.2013 19:58

Статус (жив или мертв)
 
Здравствуйте. Подскажите как можно дернуть значение из базы(проверить) жив или мертв РБ?

Сборка: Scoria

Сделал так, но не робит(

Код:

con = L2DatabaseFactory.getInstance().getConnection();
                                PreparedStatement statement;
                                statement = con.prepareStatement("SELECT raidboss_spawnlist.respawn_time, npc.level, npc.name FROM raidboss_spawnlist LEFT JOIN npc ON raidboss_spawnlist.boss_id = npc.id ORDER BY npc.level DESC, npc.name ASC;");
                                ResultSet rset = statement.executeQuery();

                                while(rset.next())
                                {
                                        String name = rset.getString("name");
                                        int level = rset.getInt("level");
                                        String status = "";
                                       
                                        long respawn_time = rset.getLong("respawn_time");
                                       
                                        switch(respawn_time)
                                        {
                                                case 0 : status = "Жив"; break;
                                                        default : status = "Мертв"; break;
                                        }

Аналогично и тут

Код:

con = L2DatabaseFactory.getInstance().getConnection();
                                PreparedStatement statement;
                                statement = con.prepareStatement("SELECT `grandboss_data`.`boss_id`, `grandboss_data`.`respawn_time`, npc.level, npc.name FROM `grandboss_data` LEFT JOIN `npc` ON `grandboss_data`.`boss_id` = `npc`.`id` ORDER BY `grandboss_data`.`status` ASC , `npc`.`level` DESC;");
                                ResultSet rset = statement.executeQuery();

                                while(rset.next())
                                {
                                        String name = rset.getString("name");
                                        String level = rset.getString("level");
                                        String status = "";
                                       
                                        long respawn_time = rset.getLong("respawn_time");
                                       
                                        switch(respawn_time)
                                        {
                                                case 0 : status = "Жив"; break;
                                                        default : status = "Мертв"; break;
                                        }


Gaikotsu 24.09.2013 20:12

Re: Статус (жив или мертв)
 
respawn_time наверное лучше с текущим временем сравнивать, а не проверять на 0.

mego4el 24.09.2013 20:15

Re: Статус (жив или мертв)
 
Подскажите как это примерно выглядеть в коде будет?

Добавлено через 35 секунд
И почему так? Ведь если respawn_time > 0 то значит он мертв, это же очевидно.. Или я чего то не до понимаю..

Wishmаster 24.09.2013 20:47

Re: Статус (жив или мертв)
 
помоему после убиства РБ в respawn_time ставится нефига не ноль. а время в UNIX формате

mego4el 24.09.2013 20:54

Re: Статус (жив или мертв)
 
Цитата:

Сообщение от Wishmаster (Сообщение 324132)
помоему после убиства РБ в respawn_time ставится нефига не ноль. а время в UNIX формате

Так как тогда вообще быть?:(

Dr_Lector 24.09.2013 20:56

Re: Статус (жив или мертв)
 
Цитата:

Сообщение от mego4el (Сообщение 324133)
Так как тогда вообще быть?:(

если не 0 значит мертв, если 0 значит жив, вроде просто:redlol:

Gaikotsu 24.09.2013 21:05

Re: Статус (жив или мертв)
 
не знаю как в скории но по идее там ставится время когда рб отспавнится.
если это время меньше/равно текущему - рб отспавнился, если меньше - нет.
и обновляется это значение скорее всего, по логике, только в момент убийства рб.

проверять банально

 
if (respawn_time > System.currentTimeMillis())
  // мертв
else
  // жив
 
Code: Java
это если время хранится с точностью до мс - если с точностью до секунд - делить System.currentTimeMillis() на 1000.


Текущее время: 14:33. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot