-
Публикаций
15 -
Зарегистрирован
-
Посещение
-
Отзывы
0%
Сообщения, опубликованные Dreanilamaster
-
-
10 hours ago, ForceUnleashed said:Нормальной геодатой, это правильное решение. Так же можете попробовать их по передвигать.
Одна и та же геодата стоит. На версии 3.0 все хорошо. На версии 3.2 жопа (причём координаты и там и там у нпц одинаковые). Из отличий в сервере - всю бд спаунлиста в 3.2 перенесли в xml по пути вот что-то сломав
-
Как пофиксить спауны трейдеров в начальных городах? Они спаунятся на крышах!
На прошлой версии такого нет.
-
самый примитивный вариант:
в нужном конфиге добавляем переменную SpawnCoords с содержимым вида
SpawnCoords = x1,y1,z1;x2,y2,z2; ... ;xN,yN,zN
далее в Config.java:
public static ArrayList<Location> SPAWN_COORDS = new ArrayList<Location>(); ... String str = settings.getProperty("SpawnCoords", ""); if (!str.isEmpty()) { String[] spawnCoordsList = str.split(";"); for (String spawnCoords : spawnCoordsList) { try { Location loc = Location.parseLoc(spawnCoords); SPAWN_COORDS.add(loc); } catch (Exception e) {} } }
ну и в итоге сам выбор координат превращается в чето-то типа такого
if (!Config.SPAWN_COORDS.isEmpty()) { Location loc = Config.SPAWN_COORDS.get(Rnd.get(Config.SPAWN_COORDS.size())); newChar.setXYZInvisible(loc.getX(), loc.getY(), loc.getZ()); } else newChar.setXYZInvisible(template.spawnX, template.spawnY, template.spawnZ);
Выглядит реально удобнее, спасибо большое!
А в самом конфиге "SpawnCoords = x1,y1,z1;x2,y2,z2; ... ;xN,yN,zN" - координаты просто цифрами через запятую. а последующие точки спауна через точку с запятой?
-
можно и попроще расписать
if (Config.SPAWN_CHAR) { switch (Rnd.get(5)) { case 0: newChar.setXYZInvisible(Config.SPAWN_X, Config.SPAWN_Y, Config.SPAWN_Z); break; case 1: newChar.setXYZInvisible(Config.SPAWN2_X, Config.SPAWN2_Y, Config.SPAWN2_Z); break; case 2: newChar.setXYZInvisible(Config.SPAWN3_X, Config.SPAWN3_Y, Config.SPAWN3_Z); break; case 3: newChar.setXYZInvisible(Config.SPAWN4_X, Config.SPAWN4_Y, Config.SPAWN4_Z); break; case 4: newChar.setXYZInvisible(Config.SPAWN5_X, Config.SPAWN5_Y, Config.SPAWN5_Z); break; } } else newChar.setXYZInvisible(template.spawnX, template.spawnY, template.spawnZ);
З.Ы. Но вобще это извращение - для каждой точки спавна заводить новые параметры в конфиге. лучше уж хранить это в одном параметре, в виде массива строк координат и разбирать это дело при загрузке на отдельные координаты.
А подскажите чутку поподробнее, про массив, параметры и тд. Может конкретный пример реализации.
-
- UPDATE npc SET idTemplate= 5000 WHERE npc.level<40;
- UPDATE Spawnlist SET npc_templateid= 5000;
- DELETE FROM npc WHERE npc.level>40;
Спасибо!!!) Тему можно закрывать)
- UPDATE npc SET idTemplate= 5000 WHERE npc.level<40;
-
Напишите результат.
Работает, Здорово! Ух спасибо!)
Тему можно закрывать
-
update spawnlist set npc_templateid='50000' where npc_templateid in(select id from npc where level<40);
delete from npc where level<40;
Как-то так.
благодарю, попробую так.
-
Ищу помощи в создание сложного sql запроса (возможно нескольких).
Необходимо у стопки определенных NPC в spawnlist заменить их ID на всего одного NPC.
Детальнее по порядку:
1) Находим стопку NPC с например значением их LVL меньше 40
2) В Spawnlist этих найденных NPC параметр npc_templateid у всех заменяем на всего одного NPC допустим id 50000
3) Оригинальные NPC из первого пункта удаляем (у которых LVL < 40).
Буду признателен за любую помощь и подсказки!
Структура таблицы Npc:
CREATE TABLE IF NOT EXISTS `npc` ( `id` decimal(11,0) NOT NULL DEFAULT '0', `idTemplate` int(11) NOT NULL DEFAULT '0', `name` varchar(200) DEFAULT NULL, `serverSideName` int(1) DEFAULT '0', `title` varchar(45) DEFAULT '', `serverSideTitle` int(1) DEFAULT '0', `class` varchar(200) DEFAULT NULL, `collision_radius` decimal(5,2) DEFAULT NULL, `collision_height` decimal(5,2) DEFAULT NULL, `level` decimal(2,0) DEFAULT NULL, `sex` varchar(6) DEFAULT NULL, `type` varchar(20) DEFAULT NULL, `attackrange` int(11) DEFAULT NULL, `hp` decimal(8,0) DEFAULT NULL, `mp` decimal(5,0) DEFAULT NULL, `hpreg` decimal(8,2) DEFAULT NULL, `mpreg` decimal(5,2) DEFAULT NULL, `str` decimal(7,0) DEFAULT NULL, `con` decimal(7,0) DEFAULT NULL, `dex` decimal(7,0) DEFAULT NULL, `int` decimal(7,0) DEFAULT NULL, `wit` decimal(7,0) DEFAULT NULL, `men` decimal(7,0) DEFAULT NULL, `exp` decimal(9,0) DEFAULT NULL, `sp` decimal(8,0) DEFAULT NULL, `patk` decimal(5,0) DEFAULT NULL, `pdef` decimal(5,0) DEFAULT NULL, `matk` decimal(5,0) DEFAULT NULL, `mdef` decimal(5,0) DEFAULT NULL, `atkspd` decimal(3,0) DEFAULT NULL, `aggro` decimal(6,0) DEFAULT NULL, `matkspd` decimal(4,0) DEFAULT NULL, `rhand` decimal(4,0) DEFAULT NULL, `lhand` decimal(4,0) DEFAULT NULL, `armor` decimal(1,0) DEFAULT NULL, `walkspd` decimal(3,0) DEFAULT NULL, `runspd` decimal(3,0) DEFAULT NULL, `faction_id` varchar(40) DEFAULT NULL, `faction_range` decimal(4,0) DEFAULT NULL, `isUndead` int(11) DEFAULT '0', `absorb_level` decimal(2,0) DEFAULT '0', `absorb_type` enum('FULL_PARTY','LAST_HIT','PARTY_ONE_RANDOM') NOT NULL DEFAULT 'LAST_HIT', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Структура таблицы Spawnlist:
CREATE TABLE IF NOT EXISTS `spawnlist` ( `id` int(11) NOT NULL AUTO_INCREMENT, `location` varchar(40) NOT NULL DEFAULT '', `count` int(9) NOT NULL DEFAULT '0', `npc_templateid` int(9) NOT NULL DEFAULT '0', `locx` int(9) NOT NULL DEFAULT '0', `locy` int(9) NOT NULL DEFAULT '0', `locz` int(9) NOT NULL DEFAULT '0', `randomx` int(9) NOT NULL DEFAULT '0', `randomy` int(9) NOT NULL DEFAULT '0', `heading` int(9) NOT NULL DEFAULT '0', `respawn_delay` int(9) NOT NULL DEFAULT '0', `loc_id` int(9) NOT NULL DEFAULT '0', `periodOfDay` decimal(2,0) DEFAULT '0', PRIMARY KEY (`id`), KEY `key_npc_templateid` (`npc_templateid`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=191271 ;
-
ап, перезалейте!
-
Ищу помощи в создание сложного sql запроса (возможно нескольких).
Необходимо у стопки определенных NPC в spawnlist заменить их ID на всего одного NPC.
Детальнее по порядку:
1) Находим стопку NPC с например значением их LVL меньше 40
2) В Spawnlist этих найденных NPC параметр npc_templateid у всех заменяем на всего одного NPC допустим id 50000
3) Оригинальные NPC из первого пункта удаляем (у которых LVL < 40).
Буду признателен за любую помощь и подсказки!
Структура таблицы Npc:
CREATE TABLE IF NOT EXISTS `npc` ( `id` decimal(11,0) NOT NULL DEFAULT '0', `idTemplate` int(11) NOT NULL DEFAULT '0', `name` varchar(200) DEFAULT NULL, `serverSideName` int(1) DEFAULT '0', `title` varchar(45) DEFAULT '', `serverSideTitle` int(1) DEFAULT '0', `class` varchar(200) DEFAULT NULL, `collision_radius` decimal(5,2) DEFAULT NULL, `collision_height` decimal(5,2) DEFAULT NULL, `level` decimal(2,0) DEFAULT NULL, `sex` varchar(6) DEFAULT NULL, `type` varchar(20) DEFAULT NULL, `attackrange` int(11) DEFAULT NULL, `hp` decimal(8,0) DEFAULT NULL, `mp` decimal(5,0) DEFAULT NULL, `hpreg` decimal(8,2) DEFAULT NULL, `mpreg` decimal(5,2) DEFAULT NULL, `str` decimal(7,0) DEFAULT NULL, `con` decimal(7,0) DEFAULT NULL, `dex` decimal(7,0) DEFAULT NULL, `int` decimal(7,0) DEFAULT NULL, `wit` decimal(7,0) DEFAULT NULL, `men` decimal(7,0) DEFAULT NULL, `exp` decimal(9,0) DEFAULT NULL, `sp` decimal(8,0) DEFAULT NULL, `patk` decimal(5,0) DEFAULT NULL, `pdef` decimal(5,0) DEFAULT NULL, `matk` decimal(5,0) DEFAULT NULL, `mdef` decimal(5,0) DEFAULT NULL, `atkspd` decimal(3,0) DEFAULT NULL, `aggro` decimal(6,0) DEFAULT NULL, `matkspd` decimal(4,0) DEFAULT NULL, `rhand` decimal(4,0) DEFAULT NULL, `lhand` decimal(4,0) DEFAULT NULL, `armor` decimal(1,0) DEFAULT NULL, `walkspd` decimal(3,0) DEFAULT NULL, `runspd` decimal(3,0) DEFAULT NULL, `faction_id` varchar(40) DEFAULT NULL, `faction_range` decimal(4,0) DEFAULT NULL, `isUndead` int(11) DEFAULT '0', `absorb_level` decimal(2,0) DEFAULT '0', `absorb_type` enum('FULL_PARTY','LAST_HIT','PARTY_ONE_RANDOM') NOT NULL DEFAULT 'LAST_HIT', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Структура таблицы Spawnlist:
CREATE TABLE IF NOT EXISTS `spawnlist` ( `id` int(11) NOT NULL AUTO_INCREMENT, `location` varchar(40) NOT NULL DEFAULT '', `count` int(9) NOT NULL DEFAULT '0', `npc_templateid` int(9) NOT NULL DEFAULT '0', `locx` int(9) NOT NULL DEFAULT '0', `locy` int(9) NOT NULL DEFAULT '0', `locz` int(9) NOT NULL DEFAULT '0', `randomx` int(9) NOT NULL DEFAULT '0', `randomy` int(9) NOT NULL DEFAULT '0', `heading` int(9) NOT NULL DEFAULT '0', `respawn_delay` int(9) NOT NULL DEFAULT '0', `loc_id` int(9) NOT NULL DEFAULT '0', `periodOfDay` decimal(2,0) DEFAULT '0', PRIMARY KEY (`id`), KEY `key_npc_templateid` (`npc_templateid`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=191271 ;
-
Импорт то для Rnd добавил?
спасибо, да, дело в импорте и было. Не к тому util путь указал по слепоте.
Все работает, идеально!
Я правильно понимаю в коде Rnd, что сначала рандомно создается какое-то значение, и дальше если оно меньше значения сгенерированного то используется определенные варианты?:
int _Rnd = Rnd.get(100); if (_Rnd < 20)
-
if (Config.SPAWN_CHAR) { int _Rnd = Rnd.get(100); if (_Rnd < 20) { newChar.setXYZInvisible(Config.SPAWN_X, Config.SPAWN_Y, Config.SPAWN_Z); } else if (_Rnd < 30) { newChar.setXYZInvisible(Config.SPAWN2_X, Config.SPAWN2_Y, Config.SPAWN2_Z); } else if (_Rnd < 40) { newChar.setXYZInvisible(Config.SPAWN3_X, Config.SPAWN3_Y, Config.SPAWN3_Z); } else if (_Rnd < 60) { newChar.setXYZInvisible(Config.SPAWN4_X, Config.SPAWN4_Y, Config.SPAWN4_Z); } else if (_Rnd < 80) { newChar.setXYZInvisible(Config.SPAWN5_X, Config.SPAWN5_Y, Config.SPAWN5_Z); } } else newChar.setXYZInvisible(template.spawnX, template.spawnY, template.spawnZ);
При попытке компиляции, выдает вот что:
compile: [javac] Compiling 719 source files to C:\l2jfrozen\gameserver\build\classes [javac] warning: [options] bootstrap class path not set in conjunction with -source 1.6 [javac] C:\l2jfrozen\gameserver\head-src\com\l2jfrozen\gameserver\network\cl ientpackets\CharacterCreate.java:216: error: cannot find symbol [javac] int _Rnd = Rnd.get(100); [javac] ^ [javac] symbol: variable Rnd [javac] location: class CharacterCreate [javac] 1 error [javac] 1 warning BUILD FAILED C:\l2jfrozen\gameserver\build.xml:65: Compile failed; see the compiler error out put for details.
Где смотреть?
-
то что вы написали бред)
без использования Rnd тупо и не будет так работать
Большое спасибо!!!
-
Приветствую форумчане.
Очень хочу сделать рандомный спаун всех новых персонажей по нескольким точкам.
Признаюсь, в Java я совсем не силен, моими усилиями я получаю только кучу ошибок при компиляции.
В конфигах включен custom spawn, и там же добавлены 5 точек координат.
Очень прошу, помогите как грамотно в CharacterCreate.java сделать рандомный выбор между 5 точкам из конфига:
if (Config.SPAWN_CHAR) newChar.setXYZInvisible(Config.SPAWN_X, Config.SPAWN_Y, Config.SPAWN_Z); newChar.setXYZInvisible(Config.SPAWN2_X, Config.SPAWN2_Y, Config.SPAWN2_Z); newChar.setXYZInvisible(Config.SPAWN3_X, Config.SPAWN3_Y, Config.SPAWN3_Z); newChar.setXYZInvisible(Config.SPAWN4_X, Config.SPAWN4_Y, Config.SPAWN4_Z); newChar.setXYZInvisible(Config.SPAWN5_X, Config.SPAWN5_Y, Config.SPAWN5_Z); else newChar.setXYZInvisible(template.spawnX, template.spawnY, template.spawnZ);
p.s сборка l2jfrozen
RUSaCis
в Сборки серверов
Опубликовано
Спасибо) Буду искать гео