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

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Документация (https://forum.zone-game.info/forumdisplay.php?f=149)
-   -   Барьеры (https://forum.zone-game.info/showthread.php?t=12968)

Horizon 07.03.2011 20:59

Барьеры
 
Народ, кто нибудь знает как сделать ограждения от противоположных рас? Я имею введу такие барьеры как на крепостях стоят.

buldozer 10.03.2011 22:03

Re: Барьеры
 
кучу кода писать

flashman 12.03.2011 22:06

Re: Барьеры
 
В арешурате главные базы рас защищены щитом, при заходе в город он убивает.
Да и кода многа не нужно, проверяешь зону игрока, при залёте в запрещённую зону просто тпешишь его в указанное место или запрещаешь движение, вобщем тут можно что угодно сделать.

ruper 13.03.2011 03:54

Re: Барьеры
 
мне нужно короче в пвп локации (своей) на 2 сторонах барьеры стояли. реально?

3EBC 13.03.2011 05:45

Re: Барьеры
 
А поточнее..
Если ты имеешь ввиду в абисе на цитаделях барьеры, то они давно реализованы.

Horizon 14.03.2011 02:08

Re: Барьеры
 
нет, я имею введу для пвп сервера в пвп зоне оградить точку респа вот таким вот барьером. сложно? я думаю да

3EBC 14.03.2011 02:31

Re: Барьеры
 
Ну поидее нужно прописать координаты растояния этого шара, на примере цитаделей в абисе. А вообще были такие мысли сдлеать попробывать, но чет недошли руки узнать будет работать или нет.

flashman 14.03.2011 11:45

Re: Барьеры
 
Horizon, вся идея так называемого барьера заключается в просчёте зоны в которой находится персонаж (в ядре смотреть класс ZoneName) - это поможет если базы находятся в разных зонах.
Или можно сделать как предложил Gildiz, установить две точки (так называемые центры баз) и обрабатывать расстояние игрока до этих точек (и соответственно их расы).
Все необходимые инструменты в ядре есть (пакете utils).

Event 14.03.2011 22:24

Re: Барьеры
 
А не лучше ли сделать проще- понаставить 2 ряда стреляющих башен с бешеным дамагом по каждую сторону. Можно использовать осадные башни.

ALeKsIuS 14.03.2011 22:35

Re: Барьеры
 
А не лучше более сносными методами сделать, к примеру полу сферой.

Horizon 14.03.2011 22:44

Re: Барьеры
 
полу сферой, Это как?

Event 14.03.2011 22:45

Re: Барьеры
 
Цитата:

Сообщение от ALeKsIuS (Сообщение 113109)
А не лучше более сносными методами сделать, к примеру полу сферой.


Или так. По крайней мере меньше мороки с ядром и датапаком

ALeKsIuS 14.03.2011 23:00

Re: Барьеры
 
\gameserver\model\utils3d дерзайте.

xobotyi 16.03.2011 13:17

Re: Барьеры
 
Цитата:

Сообщение от ruper (Сообщение 112762)
мне нужно короче в пвп локации (своей) на 2 сторонах барьеры стояли. реально?

Да, делается очень просто правда щит не будет виден

Horizon 16.03.2011 20:23

Re: Барьеры
 
Можешь объяснить мне, нубу, как это делается=)?

xobotyi 17.03.2011 00:31

Re: Барьеры
 
какая сборка?

HeY 17.03.2011 07:13

Re: Барьеры
 
сори, что малость оффтоп, но думаю этот вопрос интересует не только меня: кто-нибудь смог реализовать туман войны? просто пока что ни на одной фришке не видел этого...

Horizon 17.03.2011 14:25

Re: Барьеры
 
Цитата:

Сообщение от xobotyi (Сообщение 113362)
какая сборка?

AionXemu + свои доработки

akioharu 18.03.2011 18:40

Re: Барьеры
 
очень интересная тема
кстати в клиенте есть точное место расположения щитов для замков и даже значение staticid для них.

ALeKsIuS 18.03.2011 19:29

Re: Барьеры
 
Скажи где они лежать, и я попробую сделать их.

akioharu 18.03.2011 22:58

Re: Барьеры
 
Цитата:

Сообщение от ALeKsIuS (Сообщение 113583)
Скажи где они лежать, и я попробую сделать их.

в ПМ.
если получится будет здорово :)

TAG 21.03.2011 04:12

Re: Барьеры
 
akioharu, Лучше бы в паблик кинул.
Так только больше вопросов и недопонимания будет

akioharu 21.03.2011 10:07

Re: Барьеры
 
это то что мне удалось найти по щитах в Бездне

Цитата:

Name="AbyssShield50" Pos="721.44769 2959.4202 2821.2832" staticid="112"
Name="AbyssShield_1011" Pos="2137.8767 1930.694 2320.9912" staticid="108"
Name="AbyssShield69" Pos="721.44769 2959.4202 2821.2832" staticid="64"
Name="AbyssShield_1131_3" Pos="3194.3784 2680.4648 1464.6316" staticid="62"
Name="AbyssShield_1221" Pos="2057.252 1274.3221 2962.1426" staticid="124"
Name="AbyssShield70" Pos="2137.877 1930.6941 2320.9912" staticid="61"
Name="AbyssShield_1131_2" Pos="2986.9631 2588.6985 1473.5813" staticid="60"
Name="Ab_fx_FloatIsland_30" Pos="2662.9165 788.01215 2825.7717" staticid="1085"
Name="AbyssShield_1141" Pos="1378.2087 1186.6694 1513.2682" staticid="56"
Name="AbyssShield_1132_2" Pos="2653.6978 3065.5557 1466.7205" staticid="47"
Name="AbyssShield_1131" Pos="2789.4099 2609.1375 1502.6682" staticid="1287"
Name="AbyssShield_1132_4" Pos="2624.9453 2957.0745 1488.9301" staticid="46"
Name="AbyssShield_1132_3" Pos="2801.7937 3216.1006 1455.9631" staticid="45"
Name="AbyssShield_1132" Pos="2606.967 2851.6667 1505.1196" staticid="44"
Name="AbyssShield_1231" Pos="2506.1191 2108.22 3048.5718" staticid="122"
Name="AbyssShield2" Pos="2593.626 758.56476 2886.7622" staticid="52"
Name="AbyssShield1" Pos="2734.6084 800.68066 2870.9817" staticid="48"

Horizon 21.03.2011 15:14

Re: Барьеры
 
вот с форума AXE. мб поможет

Код:

Index: src/gameserver/controllers/PlayerController.java
===================================================================
--- src/gameserver/controllers/PlayerController.java        (revision 149)
+++ /src/gameserver/controllers/PlayerController.java        (working copy)
@@ -25,6 +25,7 @@
 import gameserver.controllers.attack.AttackUtil;
 import gameserver.dataholders.DataManager;
 import gameserver.model.EmotionType;
+import gameserver.model.Race;
 import gameserver.model.TaskId;
 import gameserver.model.alliance.PlayerAllianceEvent;
 import gameserver.model.gameobjects.Creature;
@@ -85,6 +86,7 @@
 import gameserver.utils.ThreadPoolManager;
 import gameserver.world.World;
 import gameserver.world.zone.ZoneInstance;
+import gameserver.world.zone.ZoneName;
 
 /**
  * This class is for controlling players.
@@ -212,6 +214,7 @@
        public void onEnterZone(ZoneInstance zoneInstance)
        {
                QuestEngine.getInstance().onEnterZone(new QuestEnv(null, this.getOwner(), 0, 0), zoneInstance.getTemplate().getName());
+                checkAbyssMainFortress(zoneInstance);
        }
 
        /**
@@ -223,7 +226,41 @@
        {
 
        }
-
+        private void checkAbyssMainFortress(ZoneInstance zoneInstance)
+        {
+                Player player = getOwner();
+               
+                if(player.getLifeStats().isAlreadyDead() || player.isGM())
+                        return;
+               
+                // Prevent enemy players from entering the main Abyss fortress Zone.
+                // TODO: Instead of using zone, need to build a precise shield globe.
+                Race race = player.getCommonData().getRace();
+                ZoneName zone = zoneInstance.getTemplate().getName();
+               
+                boolean isAsmoBase = (zone == ZoneName.PRIMUM_TRAINING_CAMP_400010000 ||
+                        zone == ZoneName.PRIMUM_WHARF_400010000 ||
+                        zone == ZoneName.RUSSET_PLAZA_400010000 ||
+                        zone == ZoneName.PRIMUM_PLAZA_400010000 ||
+                        zone == ZoneName.NOBELIUM_FRAGMENT_400010000 ||
+                        zone == ZoneName.BROKEN_NOBELIUM_400010000 ||
+                        zone == ZoneName.PRIMUM_FORTRESS_400010000);
+                       
+                boolean isElyosBase = (zone == ZoneName.WAREHOUSE_CONSTRUCTION_SITE_400010000 ||
+                        zone == ZoneName.WEATHERED_CRAG_400010000 ||
+                        zone == ZoneName.TEMINON_WHARF_400010000 ||
+                        zone == ZoneName.LATIS_PLAZA_400010000 ||
+                        zone == ZoneName.TEMINON_FORTRESS_400010000 ||
+                        zone == ZoneName.TEMINONS_LEAP_400010000 ||
+                        zone == ZoneName.TEMINON_TRAINING_CAMP_400010000);
+                       
+                if ((race == Race.ELYOS && isAsmoBase) || (race == Race.ASMODIANS && isElyosBase))
+                {
+                        die();
+                }
+               
+        }
+
        /**
          * Set zone instance as null (Where no zones defined)
          */


xobotyi 22.03.2011 11:01

Re: Барьеры
 
Цитата:

Сообщение от Horizon (Сообщение 113948)
вот с форума AXE. мб поможет

Код:

Index: src/gameserver/controllers/PlayerController.java
===================================================================
--- src/gameserver/controllers/PlayerController.java        (revision 149)
+++ /src/gameserver/controllers/PlayerController.java        (working copy)
@@ -25,6 +25,7 @@
 import gameserver.controllers.attack.AttackUtil;
 import gameserver.dataholders.DataManager;
 import gameserver.model.EmotionType;
+import gameserver.model.Race;
 import gameserver.model.TaskId;
 import gameserver.model.alliance.PlayerAllianceEvent;
 import gameserver.model.gameobjects.Creature;
@@ -85,6 +86,7 @@
 import gameserver.utils.ThreadPoolManager;
 import gameserver.world.World;
 import gameserver.world.zone.ZoneInstance;
+import gameserver.world.zone.ZoneName;
 
 /**
  * This class is for controlling players.
@@ -212,6 +214,7 @@
        public void onEnterZone(ZoneInstance zoneInstance)
        {
                QuestEngine.getInstance().onEnterZone(new QuestEnv(null, this.getOwner(), 0, 0), zoneInstance.getTemplate().getName());
+                checkAbyssMainFortress(zoneInstance);
        }
 
        /**
@@ -223,7 +226,41 @@
        {
 
        }
-
+        private void checkAbyssMainFortress(ZoneInstance zoneInstance)
+        {
+                Player player = getOwner();
+               
+                if(player.getLifeStats().isAlreadyDead() || player.isGM())
+                        return;
+               
+                // Prevent enemy players from entering the main Abyss fortress Zone.
+                // TODO: Instead of using zone, need to build a precise shield globe.
+                Race race = player.getCommonData().getRace();
+                ZoneName zone = zoneInstance.getTemplate().getName();
+               
+                boolean isAsmoBase = (zone == ZoneName.PRIMUM_TRAINING_CAMP_400010000 ||
+                        zone == ZoneName.PRIMUM_WHARF_400010000 ||
+                        zone == ZoneName.RUSSET_PLAZA_400010000 ||
+                        zone == ZoneName.PRIMUM_PLAZA_400010000 ||
+                        zone == ZoneName.NOBELIUM_FRAGMENT_400010000 ||
+                        zone == ZoneName.BROKEN_NOBELIUM_400010000 ||
+                        zone == ZoneName.PRIMUM_FORTRESS_400010000);
+                       
+                boolean isElyosBase = (zone == ZoneName.WAREHOUSE_CONSTRUCTION_SITE_400010000 ||
+                        zone == ZoneName.WEATHERED_CRAG_400010000 ||
+                        zone == ZoneName.TEMINON_WHARF_400010000 ||
+                        zone == ZoneName.LATIS_PLAZA_400010000 ||
+                        zone == ZoneName.TEMINON_FORTRESS_400010000 ||
+                        zone == ZoneName.TEMINONS_LEAP_400010000 ||
+                        zone == ZoneName.TEMINON_TRAINING_CAMP_400010000);
+                       
+                if ((race == Race.ELYOS && isAsmoBase) || (race == Race.ASMODIANS && isElyosBase))
+                {
+                        die();
+                }
+               
+        }
+
        /**
          * Set zone instance as null (Where no zones defined)
          */


код построен неверно, точнее не так, код то верный но щиты будут убивать и тех кто пехом будет заходить в крепы..


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

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