Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Класс телепортер
#1
Доброго дня. Хочу сделать "небольшого" доп. ГК на java.

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

Вот пример:
Код:
public class Teleport24
{

final int[][] CoordLoc1 =
{
    {59018,-42682,-3005}
};
final int[][] CoordLoc2 =
{
    {76618,-42682,-3005}
};
final int[][] CoordLoc3 =
{
    {11318,-42682,-3005}
};

...
public getCoordLoc1()
{
   return CoordLoc1;
}
...
}

Вот такой вот класс примерно должен быть, после чего, в самом инстансе у нового гк будет:

Код:
switch(locations)
{
...
player.teleToLocation(Teleport24.getCoordLoc1());
...
}

Будет ли это правильно работать? И в чем я здесь не прав?(
Как вообще сделать лучше?
Ответ
#2
Неправильно получаете данные из массива.
Fortuna - non penis, in manus non recipe.
Ответ
#3
Код:
package teleports;

import net.l2emuproject.gameserver.model.actor.instance.L2PcInstance;
import net.l2emuproject.geoserver.model.Location;
import net.l2emuproject.tools.random.Rnd;

import java.util.ArrayList;
import java.util.List;

import static teleports.TeleportExample.*;

public class TeleportExample {

    public static final List<Location> TELEPORT = new ArrayList<Location>();

    static {
        TELEPORT.add(new Location(69,96,69));
        TELEPORT.add(new Location(77,66,33));
    }
}

class GateKeeper
{
    private void doTeleport(L2PcInstance player)
    {

        int rnd = Rnd.get(TELEPORT.size());
        player.teleToLocation(TeleportExample.TELEPORT.get(rnd),false);
    }
}

это если конкретно со статическими данными. за грамотность кода не отвечаю.
Ответ
#4
Спс большое, понял)

А если выборка не рандомная, а допустим у меня каждая локация позначена определенными координатами, и мне нужно конкретное значение? Как можно определить эти координаты в ArrayList? Затем вытянуть по определенному Id?
Ответ
#5
через Map делайте и выбирайте по ключу.
Ответ
#6
Ну вот например делаю так:

Код:
public class TeleportPoint
{    
    private Map<String, Location> teleports = new HashMap<String, Location>();
    
    teleports.put("thiskey1", new Location(50,50,50));
        //teleports.get("thiskey1");
}

Выдает кучу ошибок при компиляции, "<indentefier> expected" , "illegal start of types", на строчке teleports.put

Бьюсь головой, перечитываю сотни хелпов по HashMap, делаю все вроде бы правильно но не могу понять ЧТО здесь не так... Помогите пожалуйста
Ответ
#7
Вам уже советовали - почитайте книги. У вас нету понимания того, как должно быть. Смысл писать методом тыка?
Ну или хотя бы поставьте IDE и вчитывайтесь в ошибки.

Если вам надо заполнить коллекцию данными, то делайте это в конструкторе, либо в static {} блоке, если коллекция объявлена как static.
Ответ
#8
Цитата:Вам уже советовали - почитайте книги. У вас нету понимания того, как должно быть. Смысл писать методом тыка?
Ну или хотя бы поставьте IDE и вчитывайтесь в ошибки.

Если вам надо заполнить коллекцию данными, то делайте это в конструкторе, либо в static {} блоке, если коллекция объявлена как static.
Я вас уверяю, что книги я читал и продолжаю обучаться. Не все сразу.
Про коллекции я тоже читал не мало, перед тем как написать это так же перекопал гугл.

Пересмотрев любые примеры в гугле - все они показывают тольк отак. Откуда я могу знать про конструктор для этого???? В книге, которая у мну есть по яве - тоже самое, ничего подробного как вы описали НЕТ.

Спасибо!
Теперь буду знать.
и Спасибо за подсказку насчет компилятора, посмотрю что он пишет. Думал код маленький , напишу в NP++
Ответ
#9
Писать код в NP++. Да вы батенька шутник.
Ответ
#10
Дорогой топик-стартер - посмотрите сами что вы пытаетесь куда передавать.
вот например
final int[][] CoordLoc1 =
{
{59018,-42682,-3005}
};

зачем вам объявлять массив int[][] для того чтобы положить в него всего 3 координаты?
final int[] CoordLoc1 = {59018,-42682,-3005};

Далее
player.teleToLocation(Teleport24.getCoordLoc1());
что вы думаете должно попадать в функцию teleToLocation? есть ли вход с int[] значением в процедуре?

Если вы не понимаете то о чем я написал - то попытайтесь это понять - потому что людям не нравится помогать другим людям, которые не пытаются понять вообще о чем спрашивают - это раздражает.
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  По умолчанию Нужна помощь с класс мастером! Mor9k400 3 1,630 09-04-2018, 08:14 PM
Последний пост: Mor9k400
  Класс персонажа Lindvior kloni1 4 1,884 07-18-2013, 06:09 PM
Последний пост: kloni1
  Саб класс скилы glory days promailer 6 1,997 06-28-2013, 07:38 AM
Последний пост: Gaikotsu
  какой класс отвечает? La2lucky 5 1,743 06-12-2013, 10:20 PM
Последний пост: Gaikotsu
  Саб-класс Литион 1 1,094 01-03-2013, 04:25 PM
Последний пост: ..Kirito..
  Не компилируется только что декомпилированный класс Jao 29 5,357 01-06-2012, 11:24 PM
Последний пост: DevOne
  твт и саб класс DarkFall 0 1,590 03-11-2011, 01:17 PM
Последний пост: DarkFall
  Саб класс (core) lilbeam 9 2,684 11-13-2010, 02:14 PM
Последний пост: lilbeam
  Срочно! Класс мастер UFODriverr 3 2,218 10-24-2010, 05:41 PM
Последний пост: UFODriverr
  Саб класс скил ошибка [Red Dragon] 12 4,171 09-05-2010, 03:13 PM
Последний пост: [Red Dragon]

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)