Перейти к содержанию

Dreanilamaster

Пользователи
  • Публикаций

    15
  • Зарегистрирован

  • Посещение

  • Отзывы

    0%

Сообщения, опубликованные Dreanilamaster


  1. 10 hours ago, ForceUnleashed said:

    Нормальной геодатой, это правильное решение. Так же можете попробовать их по передвигать.

    Одна и та же геодата стоит. На версии 3.0 все хорошо. На версии 3.2 жопа (причём координаты и там и там у нпц одинаковые). Из отличий в сервере - всю бд спаунлиста в 3.2 перенесли в xml по пути вот что-то сломав


  2. самый примитивный вариант:

     

    в нужном конфиге добавляем переменную 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" - координаты просто цифрами через запятую. а последующие точки спауна через точку с запятой?


  3. можно и попроще расписать

    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);
    

    З.Ы. Но вобще это извращение - для каждой точки спавна заводить новые параметры в конфиге. лучше уж хранить это в одном параметре, в виде массива строк координат и разбирать это дело при загрузке на отдельные координаты.

    А подскажите чутку поподробнее, про массив, параметры и тд. Может конкретный пример реализации.


  4. Ищу помощи в создание сложного 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 ;
    

  5. Ищу помощи в создание сложного 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 ;
    


  6. Импорт то для Rnd добавил?

    спасибо, да, дело в импорте и было. Не к тому util путь указал по слепоте.

    Все работает, идеально!

     

    Я правильно понимаю в коде Rnd, что сначала рандомно создается какое-то значение, и дальше если оно меньше значения сгенерированного то используется определенные варианты?:

    int _Rnd = Rnd.get(100);
    				    if (_Rnd < 20)
    


  7.  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.
    

     

    Где смотреть? :help:


  8. Приветствую форумчане.

    Очень хочу сделать рандомный спаун всех новых персонажей по нескольким точкам.

    Признаюсь, в 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

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