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

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Lineage II (https://forum.zone-game.info/forumdisplay.php?f=34)
-   -   Класс телепортер (https://forum.zone-game.info/showthread.php?t=23511)

halaymoon 09.10.2012 16:26

Класс телепортер
 
Доброго дня. Хочу сделать "небольшого" доп. ГК на 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());
...
}

Будет ли это правильно работать? И в чем я здесь не прав?(
Как вообще сделать лучше?

Ashe 09.10.2012 16:33

Re: Класс телепортер
 
Неправильно получаете данные из массива.

coldy 09.10.2012 17:45

Re: Класс телепортер
 
Код:


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

это если конкретно со статическими данными. за грамотность кода не отвечаю.

halaymoon 09.10.2012 18:11

Re: Класс телепортер
 
Спс большое, понял)

А если выборка не рандомная, а допустим у меня каждая локация позначена определенными координатами, и мне нужно конкретное значение? Как можно определить эти координаты в ArrayList? Затем вытянуть по определенному Id?

coldy 09.10.2012 20:04

Re: Класс телепортер
 
через Map делайте и выбирайте по ключу.

halaymoon 10.10.2012 09:54

Re: Класс телепортер
 
Ну вот например делаю так:

Код:

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, делаю все вроде бы правильно но не могу понять ЧТО здесь не так... Помогите пожалуйста

coldy 10.10.2012 15:34

Re: Класс телепортер
 
Вам уже советовали - почитайте книги. У вас нету понимания того, как должно быть. Смысл писать методом тыка?
Ну или хотя бы поставьте IDE и вчитывайтесь в ошибки.

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

halaymoon 10.10.2012 18:07

Re: Класс телепортер
 
Цитата:

Вам уже советовали - почитайте книги. У вас нету понимания того, как должно быть. Смысл писать методом тыка?
Ну или хотя бы поставьте IDE и вчитывайтесь в ошибки.

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

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

Спасибо!
Теперь буду знать.
и Спасибо за подсказку насчет компилятора, посмотрю что он пишет. Думал код маленький , напишу в NP++

Zubastic 10.10.2012 18:20

Re: Класс телепортер
 
Писать код в NP++. Да вы батенька шутник.

Visor 10.10.2012 21:13

Re: Класс телепортер
 
Дорогой топик-стартер - посмотрите сами что вы пытаетесь куда передавать.
вот например
final int[][] CoordLoc1 =
{
{59018,-42682,-3005}
};

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

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

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


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

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