За последние 24 часа нас посетили 30886 программистов и 1440 роботов. Сейчас ищут 887 программистов ...

Что лучще сделать квест?

Тема в разделе "PHP для новичков", создана пользователем NoMonster, 20 май 2016.

  1. NoMonster

    NoMonster Новичок

    С нами с:
    7 май 2016
    Сообщения:
    38
    Симпатии:
    1
    Я хотел узнать мнении структур кода при написании квеста. Я его начал делать... но хотел узнать все таки.

    Что лучше сделать квест через файлы каждый индификатор номера файла с виду "/quests/1.json" где 1 - номер инедификатор.

    А внутри бует разные диалог и поведения. Или лучше все делать в базу данных... Спасибо заранее..
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    В JSON нагляднее
     
  3. NoMonster

    NoMonster Новичок

    С нами с:
    7 май 2016
    Сообщения:
    38
    Симпатии:
    1
    Почему?
     
  4. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    array.php
    Код (Text):
    1. <?php return array(
    2.       .....
    3. );.
    index.php:
    Код (Text):
    1. <?php print_r(require_once'array.php');
     
  5. NoMonster

    NoMonster Новичок

    С нами с:
    7 май 2016
    Сообщения:
    38
    Симпатии:
    1
    К примеру l2 квесты сделано на java с html диалог... Вот и такую хотел сделать но думаю что лучше файл или базу если их будет не мало квестов а 1000 штук ручками капнуть =)
    --- Добавлено ---
    @rodent90 я такой знаю или ты думал что я не знаю? Я php хорошо просто хочу писать квест для игры. Вот и писал уже половина но мне нужен только мнения людей, а не помошь...
     
  6. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    Знаю.
    У меня довольно новые планы на игру, для себя конечно же с друзьями баловаться, я с нуля написал уже пол сервера и сделал динамику пакетов, а не статичные пакеты, как сейчас которые проще простого отлавить и поновой отправлять сколько душе угодно.
    CatsGuard, LameGuard и другие это все обходится в 2 клика, только побороться с шифрацией трафика и все получится.

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

    l2j - написали основу тест сервера, и все начали брать за основу и плодить команды в типе мы крутые, навели марафет, крутую админку, а над сетью так никто и не работал, а там тьма...
     
  7. NoMonster

    NoMonster Новичок

    С нами с:
    7 май 2016
    Сообщения:
    38
    Симпатии:
    1
    @rodent90 Вот и хотел делать php квесты по схожему этпов диалог и выполнение задач который нужно сдать много писать придеться =)
     
  8. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    Писать много, есть 2 решения, поднять VPN'ку, чтобы сайт видел область сервера и уже от него ваять.
    А можно с сервера формировать на стороне сайта.
     
  9. NoMonster

    NoMonster Новичок

    С нами с:
    7 май 2016
    Сообщения:
    38
    Симпатии:
    1
    @rodent90 не я уже написвл php квесты


    PHP:
    1. <?php
    2.  
    3. namespace quests\tutorial;
    4.  
    5. use classes\Npc;
    6.  
    7. class Quest extends \Quest
    8. {
    9.     protected function onInit() {
    10.  
    11.     }
    12.  
    13.     protected function onEvent(Npc $npc)
    14.     {
    15.  
    16.     }
    17.  
    18.     protected function onTalk(Npc $npc, \User $user)
    19.     {
    20.        
    21.     }
    22. }
     
  10. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Потому что квест, скорее всего, описывается списками, а не таблицами.
     
  11. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    Смысл?
    Максимально допустимо делать все в игровом процессе, а сайт держать информационно, а также максимально защитив от сторонних запросов ;)
    Если это тебе нужно без сервера, то тогда если у тебя все написано и работает в чем вопрос?

    Ты пойми, чтобы там написать квест и он работал без багов и дюпов - не реально. Там в каждой затычки баг с пакеткой.
    --- Добавлено ---
    Если тебе не понятна концепция квеста, то ты так и говори, а то темы плодить начинаешь: https://php.ru/forum/threads/narabotka-kvesta.58485/
    Говорю сразу, не все так просто как кажется, на самом деле тут используется гораздо больше какашек чем надо:

    Простой пример на lucera к примеру Tele:

    Код (PHP):
    1. package ru.lucera2.teleports;
    2.  
    3. import ru.catssoftware.gameserver.model.actor.instance.L2NpcInstance;
    4. import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance;
    5. import ru.catssoftware.gameserver.model.quest.QuestState;
    6. import ru.catssoftware.gameserver.model.quest.Quest;
    7. import ru.catssoftware.gameserver.script.IExtensionScript;
    8.  
    9. public class Tele extends Quest implements IExtensionScript {
    10.  
    11.     private static final String QN = "77777_tele";
    12.     private static final int NPCID = 77777,
    13.             QUESTID = 77777;
    14.  
    15.     public Tele() {
    16.         super(Tele.QUESTID, Tele.QN, "Tele");
    17.         super.addStartNpc(Tele.NPCID);
    18.         super.addTalkId(Tele.NPCID);
    19.     }
    20.  
    21.     public String onTalk(L2NpcInstance npc, L2PcInstance player) {
    22.         String htmltext = "";
    23.         QuestState st = player.getQuestState(Tele.QN);
    24.         if (player.getLevel() < 76) {
    25.             htmltext = "Не пущю!";
    26.         } else {
    27.             player.teleToLocation(17724, 114004, -11672);
    28.         }
    29.         st.exitQuest(true);
    30.         return htmltext;
    31.     }
    32.  
    33.     @Override
    34.     public void extensionLoad() {
    35.  
    36.     }
    37. }
    При попытке разговора с NPC переместит или покажет диалог о несоответствующем уровне персонажа.
    Если нужны разговоры и диалоги, поможет метод onEvent который будет смотреть байпасы, передаваемые с диалога по событию клика на ссылку или кнопку - если нужно чтобы появился моб после клика рядом с вами и начал вас бить, нужно заюзать метод onSpawn на самом деле тут писанины очень много если захочется квест более качественный, да и контроллер дохловат, дырявый пакетник и вообще логики нет, вообщем побаловаться бесплатно подходит - методы on* переопределяй и смотри что они делают - изменяй или добавляй свои.
     
    #11 rodent90, 21 май 2016
    Последнее редактирование: 21 май 2016