Посмотрите видео ниже, чтобы узнать, как установить наш сайт в виде веб-приложения на главном экране.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Меня бы заинтересовал 502 протокол для теста на лаколке=)у кого есть подписка приватной ветки мобиуса куплю, пишите лс
На локалке есть же, правда файл удален, попроси обновитьМеня бы заинтересовал 502 протокол для теста на лаколке=)
мобиус 502прот
ищу Ру систем)
Для просмотра скрытого содержимого вы должны войти или зарегистрироваться.
На локалке есть же, правда файл удален, попроси обновить
А да, увидел рабочую ссылку в другой теме, спасибо Bankirsenpo добавил(а) новый ресурс:
Мобиус 502р - Мобиус 502р
мобиус 502прот
ищу Ру систем)
Для просмотра скрытого содержимого вы должны войти или зарегистрироваться.
Узнать больше об этом ресурсе...
- senpo
- Ответы: 30
- Форум: Java сервер
да я походу не то написал или то, там Вульф какой то, актуальный самыеОффтоп:Там есть другая тема 502 с живой ссылкой
не знаю, запуская мобиусов максимум качался до 60 лвла, дальше не хватало сил искать что не так в сборке*у них есть чтото рабочее?
*пробовал 362,388,110(746)
Sarcasm: |
PPS: Большая часть публичных хейтеров мобиуса, чаще всего просто бездумно повторяет чужие мнения, апеллируя к каким-то постам, темам или слухам. Более того, подавляющие большинство этих хейтеров банально не обладает минимумом технических знаний и компетенций, чтобы провести вдумчивый аудит его кода и найти какие-то ошибки самостоятельно. |
/*
* Copyright (c) 2013 L2jMobius
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
* IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package ai.areas.OrcBarracks.Kerr;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player;
import ai.AbstractNpcAI;
/**
* @author Mobius
*/
public class Kerr extends AbstractNpcAI
{
// NPC
private static final int KERR = 22140;
// Locations
private static final Location[] SPAWNS =
{
new Location(-89895, 108555, -3530),
new Location(-88925, 112500, -3414),
new Location(-92690, 112605, -3728),
new Location(-95168, 110316, -3823),
new Location(-95823, 114893, -3528),
new Location(-93044, 117007, -3315),
new Location(-96494, 119720, -3196),
new Location(-96553, 106922, -3729),
new Location(-93522, 105608, -3491),
new Location(-96148, 102058, -3496),
new Location(-93228, 100642, -3551),
new Location(-91038, 102344, -3418),
new Location(-89841, 100158, -3612),
new Location(-88155, 103068, -3385),
};
// Misc
private static final int SPAWN_COUNT = 3;
private static final int RESPAWN_DELAY = 60000; // 1 minute.
private static final Map<Npc, Location> KERR_SPAWN_LOCATIONS = new ConcurrentHashMap<>(SPAWN_COUNT);
private Kerr()
{
addKillId(KERR);
for (int i = 0; i < SPAWN_COUNT; i++)
{
spawnKerr();
}
}
@Override
public String onKill(Npc npc, Player killer, boolean isSummon)
{
ThreadPool.schedule(() ->
{
KERR_SPAWN_LOCATIONS.remove(npc);
spawnKerr();
}, RESPAWN_DELAY);
return super.onKill(npc, killer, isSummon);
}
private void spawnKerr()
{
while (true)
{
final Location location = getRandomEntry(SPAWNS);
if (KERR_SPAWN_LOCATIONS.containsValue(location))
{
continue;
}
KERR_SPAWN_LOCATIONS.put(addSpawn(KERR, location), location);
break;
}
}
public static void main(String[] args)
{
new Kerr();
}
}
I'm using mobius h5 and I have nothing to complain aboutУровень сурсов мобиуса неплох для бесплатного проекта. Я уже много раз говорил, что мобиус-сурсы позволяют быстро развернуть сервер линеечки и зайти в игру практически для любого представленного протокола. Также, он довольно неплох с точки зрения общей архитектуры и внутренней структуры и позволяет многим новичкам под капот геймдева и ознакомиться с тем, как строится работа сервер-сайда многопользовательской игры сразу и без ограничений. Странно требовать от бесплатного опенсорсного проекта полную реализацию всего и сразу, а также пенять на ошибки и проблемы. Видишь проблему - фикси и делай PR или хотя бы открывай ишью. Не хочешь делиться результатом - нанимай персонального разработчика или допиливай самостоятельно. Вы не забывайте, что л2 ядро - так то дохуя большой проект даже по меркам игровой студии среднего размера, где на шестизначной ЗП сидят 5-10 профессиональных программистов с опытом разработки высоко нагруженных сервисов.
Я пока не вижу на горизонте опенсорсных проектов линеечки, такого или даже близкого уровня.
PS: Если кто-то думает, что в приватных сурсах(любых) частных разрабов за сотни нефти, нет говнокода и костылей - это заблуждение. Чаще всего, проприетарные сурсы имеют тенденцию «стрелять» по своим клиентам в рандомные моменты, когда внезапно начинает задействоваться какой-то участок кода, который до этого не участвовал или работал в менее нагруженном режиме.
PPS: Большая часть публичных хейтеров мобиуса, чаще всего просто бездумно повторяет чужие мнения, апеллируя к каким-то постам, темам или слухам. Более того, подавляющие большинство этих хейтеров банально не обладает минимумом технических знаний и компетенций, чтобы провести вдумчивый аудит его кода и найти какие-то ошибки самостоятельно.
PPPS: Я не использую мобиус и считаю, что уровень его работы из коробки - не подходит для запуска коммерческого проекта любого уровня, но как основа для изучения или простой сервер для игры с друзьями - это неплохой вариант, особенно ввиду отсутствия равнозначных альтернатив.
Это что за п..ц? (я про пример кода)
Sarcasm: PPS: Большая часть публичных хейтеров мобиуса, чаще всего просто бездумно повторяет чужие мнения, апеллируя к каким-то постам, темам или слухам. Более того, подавляющие большинство этих хейтеров банально не обладает минимумом технических знаний и компетенций, чтобы провести вдумчивый аудит его кода и найти какие-то ошибки самостоятельно.
Надеюсь будет понятно..., а скорее нужно сервер стартануть что бы увидеть...
П.с. С 2021 же птска в шаре (даже ради интереса).Java:/* * Copyright (c) 2013 L2jMobius * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ package ai.areas.OrcBarracks.Kerr; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.Location; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import ai.AbstractNpcAI; /** * @author Mobius */ public class Kerr extends AbstractNpcAI { // NPC private static final int KERR = 22140; // Locations private static final Location[] SPAWNS = { new Location(-89895, 108555, -3530), new Location(-88925, 112500, -3414), new Location(-92690, 112605, -3728), new Location(-95168, 110316, -3823), new Location(-95823, 114893, -3528), new Location(-93044, 117007, -3315), new Location(-96494, 119720, -3196), new Location(-96553, 106922, -3729), new Location(-93522, 105608, -3491), new Location(-96148, 102058, -3496), new Location(-93228, 100642, -3551), new Location(-91038, 102344, -3418), new Location(-89841, 100158, -3612), new Location(-88155, 103068, -3385), }; // Misc private static final int SPAWN_COUNT = 3; private static final int RESPAWN_DELAY = 60000; // 1 minute. private static final Map<Npc, Location> KERR_SPAWN_LOCATIONS = new ConcurrentHashMap<>(SPAWN_COUNT); private Kerr() { addKillId(KERR); for (int i = 0; i < SPAWN_COUNT; i++) { spawnKerr(); } } @Override public String onKill(Npc npc, Player killer, boolean isSummon) { ThreadPool.schedule(() -> { KERR_SPAWN_LOCATIONS.remove(npc); spawnKerr(); }, RESPAWN_DELAY); return super.onKill(npc, killer, isSummon); } private void spawnKerr() { while (true) { final Location location = getRandomEntry(SPAWNS); if (KERR_SPAWN_LOCATIONS.containsValue(location)) { continue; } KERR_SPAWN_LOCATIONS.put(addSpawn(KERR, location), location); break; } } public static void main(String[] args) { new Kerr(); } }
<spawn group="time_zone_oman_a" random_loc="true">
<npc id="24555" count="1" respawn="28800" chase_range="1000" /> <!-- Смотритель Забытых [Элитный Монстр] / Watchman of the Forgotten [Elite Monster] / [tz_oman_1f_elite] -->
<territory name="[tz_oman_1718_1f_b01]" />
<territory name="[tz_oman_1718_1f_b02]" />
<territory name="[tz_oman_1718_1f_b03]" />
<territory name="[tz_oman_1718_1f_b04]" />
<territory name="[tz_oman_1718_1f_b05]" />
<territory name="[tz_oman_1718_1f_b06]" />
<territory name="[tz_oman_1718_1f_b07]" />
<territory name="[tz_oman_1718_1f_b08]" />
<territory name="[tz_oman_1718_1f_b09]" />
<territory name="[tz_oman_1718_1f_b10]" />
<territory name="[tz_oman_1718_1f_b11]" />
<territory name="[tz_oman_1718_1f_b12]" />
<territory name="[tz_oman_1718_1f_b13]" />
<territory name="[tz_oman_1718_1f_b14]" />
<territory name="[tz_oman_1718_1f_b15]" />
<territory name="[tz_oman_1718_1f_b16]" />
<territory name="[tz_oman_1718_1f_b17]" />
<territory name="[tz_oman_1718_1f_b18]" />
<territory name="[tz_oman_1718_1f_b19]" />
<territory name="[tz_oman_1718_1f_b20]" />
<territory name="[tz_oman_1718_1f_b21]" />
<territory name="[tz_oman_1718_1f_b22]" />
<territory name="[tz_oman_1718_1f_b23]" />
<territory name="[tz_oman_1718_1f_b24]" />
<territory name="[tz_oman_1718_1f_b25]" />
<territory name="[tz_oman_1718_1f_b26]" />
<territory name="[tz_oman_1718_1f_b27]" />
<territory name="[tz_oman_1718_1f_b28]" />
<territory name="[tz_oman_1718_1f_b29]" />
<territory name="[tz_oman_1718_1f_b30]" />
<territory name="[tz_oman_1718_1f_b31]" />
<territory name="[tz_oman_1718_1f_b32]" />
<territory name="[tz_oman_1718_1f_b33]" />
<territory name="[tz_oman_1718_1f_b34]" />
<territory name="[tz_oman_1718_1f_b35]" />
<territory name="[tz_oman_1718_1f_b36]" />
<territory name="[tz_oman_1718_1f_b37]" />
<territory name="[tz_oman_1718_1f_b38]" />
<territory name="[tz_oman_1718_1f_b39]" />
<territory name="[tz_oman_1718_1f_b40]" />
</spawn>
Нету.Это что за п..ц? (я про пример кода)
У него там что нет чтоль в самих хмлках спавнов функционала по выбору рандомной точки/территории спавна из заданных?
моб при каждом своем спавне будет выбирать случайную территорию спавна из перечисленных
XML:<spawn group="time_zone_oman_a" random_loc="true"> <npc id="24555" count="1" respawn="28800" chase_range="1000" /> <!-- Смотритель Забытых [Элитный Монстр] / Watchman of the Forgotten [Elite Monster] / [tz_oman_1f_elite] --> <territory name="[tz_oman_1718_1f_b01]" /> <territory name="[tz_oman_1718_1f_b02]" /> <territory name="[tz_oman_1718_1f_b03]" /> <territory name="[tz_oman_1718_1f_b04]" /> <territory name="[tz_oman_1718_1f_b05]" /> <territory name="[tz_oman_1718_1f_b06]" /> <territory name="[tz_oman_1718_1f_b07]" /> <territory name="[tz_oman_1718_1f_b08]" /> <territory name="[tz_oman_1718_1f_b09]" /> <territory name="[tz_oman_1718_1f_b10]" /> <territory name="[tz_oman_1718_1f_b11]" /> <territory name="[tz_oman_1718_1f_b12]" /> <territory name="[tz_oman_1718_1f_b13]" /> <territory name="[tz_oman_1718_1f_b14]" /> <territory name="[tz_oman_1718_1f_b15]" /> <territory name="[tz_oman_1718_1f_b16]" /> <territory name="[tz_oman_1718_1f_b17]" /> <territory name="[tz_oman_1718_1f_b18]" /> <territory name="[tz_oman_1718_1f_b19]" /> <territory name="[tz_oman_1718_1f_b20]" /> <territory name="[tz_oman_1718_1f_b21]" /> <territory name="[tz_oman_1718_1f_b22]" /> <territory name="[tz_oman_1718_1f_b23]" /> <territory name="[tz_oman_1718_1f_b24]" /> <territory name="[tz_oman_1718_1f_b25]" /> <territory name="[tz_oman_1718_1f_b26]" /> <territory name="[tz_oman_1718_1f_b27]" /> <territory name="[tz_oman_1718_1f_b28]" /> <territory name="[tz_oman_1718_1f_b29]" /> <territory name="[tz_oman_1718_1f_b30]" /> <territory name="[tz_oman_1718_1f_b31]" /> <territory name="[tz_oman_1718_1f_b32]" /> <territory name="[tz_oman_1718_1f_b33]" /> <territory name="[tz_oman_1718_1f_b34]" /> <territory name="[tz_oman_1718_1f_b35]" /> <territory name="[tz_oman_1718_1f_b36]" /> <territory name="[tz_oman_1718_1f_b37]" /> <territory name="[tz_oman_1718_1f_b38]" /> <territory name="[tz_oman_1718_1f_b39]" /> <territory name="[tz_oman_1718_1f_b40]" /> </spawn>
так это я просто в обычный базовый HardSpawner добавил обработку подобного и все - если есть такой параметр в данных спавна, то в initNpc рандомно выбирает случайную точку или территорию из всех что имеются в данных спавна.Нету.
А скинь скрипт на обработку этого спавна)
@Override
protected NpcInstance initNpc(NpcInstance mob, boolean spawn, SpawnNpcInfo npcInfo)
{
_respawned.remove(mob);
int pointIndex = getNextRangeId();
if (_template.isRandomLoc() && _template.getSpawnRangeSize() > 1)
{
pointIndex = Rnd.get(_template.getSpawnRangeSize());
_pointIndex = pointIndex;
}
SpawnRange range = _template.getSpawnRange(pointIndex);
mob.setSpawnRange(range);
return initNpc0(mob, range.getRandomLoc(getReflection().getGeoIndex()), spawn, npcInfo);
}
<spawn group="time_zone_oman_a">
<npc id="24550" count="2" respawn="15" chase_range="1500" /> <!-- Забытый Лучник Эльморадена / Forgotten Elmoreden Archer / [tz_oman_1f_bow_a] -->
<npc id="24551" count="3" respawn="15" chase_range="1500" /> <!-- Забытая Леди Эльморадена / Forgotten Elmoreden Lady / [tz_oman_1f_mag_a] -->
<npc id="24552" count="1" respawn="15" chase_range="1500" /> <!-- Забытый Сторож Эльморадена / Forgotten Elmoreden Sentinel / [tz_oman_1f_war_a] -->
<npc id="24553" count="1" respawn="15" chase_range="1500" /> <!-- Забытый Рыцарь Эльморадена / Forgotten Elmoreden Knight / [tz_oman_1f_war_b] -->
<npc id="24554" count="1" respawn="15" chase_range="1500" /> <!-- Забытый Офицер Эльморадена / Forgotten Elmoreden Officer / [tz_oman_1f_war_c] -->
<territory name="[tz_oman_1718_1f_b01]" />
<territory name="[tz_oman_1718_1f_b02]" />
<territory name="[tz_oman_1718_1f_b03]" />
<territory name="[tz_oman_1718_1f_b04]" />
<territory name="[tz_oman_1718_1f_b05]" />
<territory name="[tz_oman_1718_1f_b06]" />
<territory name="[tz_oman_1718_1f_b07]" />
<territory name="[tz_oman_1718_1f_b08]" />
<territory name="[tz_oman_1718_1f_b09]" />
<territory name="[tz_oman_1718_1f_b10]" />
<territory name="[tz_oman_1718_1f_b11]" />
<territory name="[tz_oman_1718_1f_b12]" />
<territory name="[tz_oman_1718_1f_b13]" />
<territory name="[tz_oman_1718_1f_b14]" />
<territory name="[tz_oman_1718_1f_b15]" />
<territory name="[tz_oman_1718_1f_b16]" />
<territory name="[tz_oman_1718_1f_b17]" />
<territory name="[tz_oman_1718_1f_b18]" />
<territory name="[tz_oman_1718_1f_b19]" />
<territory name="[tz_oman_1718_1f_b20]" />
<territory name="[tz_oman_1718_1f_b21]" />
<territory name="[tz_oman_1718_1f_b22]" />
<territory name="[tz_oman_1718_1f_b23]" />
<territory name="[tz_oman_1718_1f_b24]" />
<territory name="[tz_oman_1718_1f_b25]" />
<territory name="[tz_oman_1718_1f_b26]" />
<territory name="[tz_oman_1718_1f_b27]" />
<territory name="[tz_oman_1718_1f_b28]" />
<territory name="[tz_oman_1718_1f_b29]" />
<territory name="[tz_oman_1718_1f_b30]" />
<territory name="[tz_oman_1718_1f_b31]" />
<territory name="[tz_oman_1718_1f_b32]" />
<territory name="[tz_oman_1718_1f_b33]" />
<territory name="[tz_oman_1718_1f_b34]" />
<territory name="[tz_oman_1718_1f_b35]" />
<territory name="[tz_oman_1718_1f_b36]" />
<territory name="[tz_oman_1718_1f_b37]" />
<territory name="[tz_oman_1718_1f_b38]" />
<territory name="[tz_oman_1718_1f_b39]" />
<territory name="[tz_oman_1718_1f_b40]" />
</spawn>