Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Silentium - Разработка Interlude с открытыми исходниками.
#81
gorodetskiy Написал:
оффтоп

Админы балуются. :confused:
Ответ
#82
Java-man Написал:О, нет, придется самим допиливать эти 25 сраных квестов. Sad

Я под люцерку уже больше сотни переписал :redlol:. Еще раз в 6 больше осталось, будем мерятся?) Больше всего бесит, что это фактически бессмысленная трата времени), поэтому переписываю когда совсем делать нечего (.
Ответ
#83
Ro_0TT Написал:Я под люцерку уже больше сотни переписал :redlol:. Еще раз в 6 больше осталось, будем мерятся?) Больше всего бесит, что это фактически бессмысленная трата времени), поэтому переписываю когда совсем делать нечего (.

Зато куда уж удобнее работать со скриптами, когда всё на явке. Хотя, может я такой привередливый, что не люблю всяких удавов... :redlol:
Ответ
#84
Ro_0TT Написал:Я под люцерку уже больше сотни переписал :redlol:. Еще раз в 6 больше осталось, будем мерятся?) Больше всего бесит, что это фактически бессмысленная трата времени), поэтому переписываю когда совсем делать нечего (.

Я переписал вообще почти все квесты с нуля в сборке, это был адов ад Sad
Ответ
#85
Переписал все квесты сборке с "удава" на Java'у - получил +100500 к ЧСВ :bx:
Fortuna - non penis, in manus non recipe.
Ответ
#86
Ro_0TT Написал:Я под люцерку уже больше сотни переписал :redlol:. Еще раз в 6 больше осталось, будем мерятся?) Больше всего бесит, что это фактически бессмысленная трата времени), поэтому переписываю когда совсем делать нечего (.

А че бы не померятся ? В ацисе 280 квестов.
Ну, если тупо переписывать с питона, то да, пустая трата времени.
Ответ
#87
Java-man Написал:А че бы не померятся ? В ацисе 280 квестов.
Ну, если тупо переписывать с питона, то да, пустая трата времени.

Ну мы например сделали двиг скриптов, аналогичный офу. И уже опираясь на него, запиливали квесты. Жаль только, что уже на тот момент все квесты были перепилены с питона на жабу.

Например:

[SRC="java"]
package l2god.scripts.quests;

import l2god.gameserver.instancemanager.InstanceManager;
import l2god.gameserver.model.actor.L2Npc;
import l2god.gameserver.model.actor.instance.L2PcInstance;
import l2god.gameserver.model.quest.Quest;
import l2god.gameserver.model.quest.QuestSound;
import l2god.gameserver.model.quest.QuestState;
import l2god.gameserver.model.quest.QuestType;
import l2god.gameserver.network.game.clientpackets.Say2c;
import l2god.gameserver.network.game.serverpackets.NS;
import l2god.gameserver.network.NpcStringId;
import l2god.scripts.instances.FQ_IceQueenCastle;
import l2god.scripts.instances.FQ_SirraMeeting_Q10285;

/**
* L2GOD Team
* User: ANZO
* Date: 07.11.12
* Time: 23:37
*/

public class _10285_MeetingSirra extends Quest
{
// Квестовые персонажи
private static final int RAFFORTY = 32020;
private static final int JINIA = 32760;
private static final int JINIA2 = 32781;
private static final int KEGOR = 32761;
private static final int SIRRA = 32762;

public _10285_MeetingSirra()
{
super();
addStartNpc(RAFFORTY);
addTalkId(RAFFORTY, JINIA, KEGOR, SIRRA, JINIA2);
}

@Override
public int getQuestId()
{
return 10285;
}

@Override
public String onEvent(String event, QuestState qs)
{
if (event.equals("quest_accept") && !qs.isCompleted())
{
qs.startQuest();
qs.setMemoState(1);
qs.setMemoStateEx(1, 0);
return "repre_q10285_05.htm";
}
return null;
}

@Override
public String onAsk(L2PcInstance player, L2Npc npc, QuestState st, int reply)
{
if (npc.getNpcId() == RAFFORTY)
{
if (reply == 1)
{
FQ_SirraMeeting_Q10285.getInstance().enterInstance(player);
return null;
}
else if (reply == 2)
{
return "repre_q10285_04.htm";
}
}
else if (npc.getNpcId() == JINIA)
{
switch (reply)
{
case 1:
if ( st.getMemoState() == 1 && st.getMemoStateEx(1) == 0)
{
st.setMemoStateEx(1, 1);
st.setCond(3);
st.playSound(QuestSound.ITEMSOUND_QUEST_MIDDLE);
return "jinia_npc_q10285_02.htm";
}
break;
case 11:
if ( st.getMemoState() == 1 && st.getMemoStateEx(1) == 2)
{
return "jinia_npc_q10285_05.htm";
}
break;
case 12:
if ( st.getMemoState() == 1 && st.getMemoStateEx(1) == 2)
{
L2Npc sirra = addSpawn(SIRRA, -23905, -8790, -5384, 56238, false, 60000, false, player.getInstanceId());
sirra.broadcastPacket(new NS(npc.getObjectId(), Say2c.ALL, npc.getNpcId(), NpcStringId.THERES_NOTHING_YOU_CANT_SAY_I_CANT_LISTEN_TO_YOU_ANYMORE ));
st.setMemoStateEx(1, 3);
st.setCond(5);
st.playSound(QuestSound.ITEMSOUND_QUEST_MIDDLE);
return "jinia_npc_q10285_06.htm";
}
break;
case 21:
if ( st.getMemoState() == 1 && st.getMemoStateEx(1) == 4)
{
return "jinia_npc_q10285_09.htm";
}
break;
case 22:
if ( st.getMemoState() == 1 && st.getMemoStateEx(1) == 4)
{
return "jinia_npc_q10285_10.htm";
}
break;
case 23:
if ( st.getMemoState() == 1 && st.getMemoStateEx(1) == 4)
{
return "jinia_npc_q10285_11.htm";
}
break;
case 24:
if ( st.getMemoState() == 1 && st.getMemoStateEx(1) == 4)
{
st.setMemoStateEx(1, 5);
st.setCond(7);
st.playSound(QuestSound.ITEMSOUND_QUEST_MIDDLE);
return "jinia_npc_q10285_12.htm";
}
break;
case 25:
if ( st.getMemoState() == 1 && st.getMemoStateEx(1) == 5)
{
st.setMemoStateEx(1, 0);
st.setMemoState(2);
st.setCond(7);
st.playSound(QuestSound.ITEMSOUND_QUEST_MIDDLE);
InstanceManager.getInstance().getInstance(player.getInstanceId()).setDuration(60);
return "jinia_npc_q10285_14.htm";
}
break;
case 26:
if ( st.getMemoState() == 2)
{
InstanceManager.getInstance().destroyInstance(player.getInstanceId());
return "jinia_npc_q10285_15.htm";
}
break;
}
}
else if (npc.getNpcId() == KEGOR)
{
if (st.getMemoState() == 1 && st.getMemoStateEx(1) == 1)
{
st.setMemoStateEx(1, 2);
st.setCond(4);
st.playSound(QuestSound.ITEMSOUND_QUEST_MIDDLE);
return "kegor_npc_q10285_02.htm";
}
}
else if (npc.getNpcId() == SIRRA)
{
switch (reply)
{
case 1:
if (st.getMemoState() == 1 && st.getMemoStateEx(1) == 3)
{
return "sirr_npc_q10285_02.htm";
}
break;
case 2:
if (st.getMemoState() == 1 && st.getMemoStateEx(1) == 3)
{
return "sirr_npc_q10285_03.htm";
}
break;
case 3:
if (st.getMemoState() == 1 && st.getMemoStateEx(1) == 3)
{
return "sirr_npc_q10285_04.htm";
}
break;
case 4:
if (st.getMemoState() == 1 && st.getMemoStateEx(1) == 3)
{
return "sirr_npc_q10285_05.htm";
}
break;
case 5:
if (st.getMemoState() == 1 && st.getMemoStateEx(1) == 3)
{
return "sirr_npc_q10285_06.htm";
}
break;
case 6:
if (st.getMemoState() == 1 && st.getMemoStateEx(1) == 3)
{
return "sirr_npc_q10285_07.htm";
}
break;
case 7:
if (st.getMemoState() == 1 && st.getMemoStateEx(1) == 3)
{
st.setMemoStateEx(1, 4);
st.setCond(6);
st.playSound(QuestSound.ITEMSOUND_QUEST_MIDDLE);
return "sirr_npc_q10285_08.htm";
}
break;
}
}
else if (npc.getNpcId() == JINIA2)
{
if (st.getCond() == 8 || st.getCond() == 9)
{
if (reply == 1)
{
return "jinia_npc2_q10285_02.htm";
}
else if (reply == 2)
{
FQ_IceQueenCastle.getInstance().enterInstance(player);
return null;
}
else if (reply == 3)
{
return "jinia_npc2_q10285_03.htm";
}
}
else
{
return "jinia_npc2_q10285_08.htm";
}
}
return null;
}

@Override
public String onTalk(L2Npc npc, QuestState st)
{
int npcId = npc.getNpcId();
final L2PcInstance player = st.getPlayer();

if(npcId == RAFFORTY)
{
switch (st.getState())
{
case COMPLETED:
return "repre_q10285_02.htm";
case CREATED:
QuestState pst = player.getQuestState(_10284_AcquisitionOfDivineSword.class);
if (player.getLevel() >= 82 && pst != null && pst.isCompleted())
{
return "repre_q10285_01.htm";
}
else
{
return "repre_q10285_03.htm";
}
case STARTED:
switch (st.getMemoState())
{
case 1:
return "repre_q10285_06.htm";
case 2:
return "repre_q10285_09.htm";
case 3:
st.giveAdena(283425, true);
st.addExpAndSp(939075, 83855);
st.playSound(QuestSound.ITEMSOUND_QUEST_FINISH);
st.exitQuest(QuestType.ONE_TIME);
return "repre_q10285_10.htm";
}
}
}
else if (npcId == KEGOR)
{
if (st.isStarted())
{
if (st.getMemoState() == 1)
{
switch (st.getMemoStateEx(1))
{
case 1:
return "kegor_npc_q10285_01.htm";
case 2:
return "kegor_npc_q10285_03.htm";
case 3:
return "kegor_npc_q10285_04.htm";
}
}
}
}
else if (npcId == SIRRA)
{
if (st.isStarted())
{
if (st.getMemoState() == 1)
{
switch (st.getMemoStateEx(1))
{
case 3:
return "sirr_npc_q10285_01.htm";
case 4:
return "sirr_npc_q10285_09.htm";
}
}
}
}

return getNoQuestMsg(player);
}

@Override
public boolean canBeStarted(L2PcInstance player)
{
QuestState pst = player.getQuestState(_10284_AcquisitionOfDivineSword.class);
if (player.getLevel() < 82 || pst == null || !pst.isCompleted())
{
return false;
}
return true;
}

public static void main(String[] args)
{
new _10285_MeetingSirra();
}
}
[/SRC]
Ответ
#88
ANZO Написал:Ну мы например сделали двиг скриптов, аналогичный офу.
А что особенного (отличного) в оф-скриптах? Ибо не смотрел, не знаю. По коду, аналогично и у меня (+-).
Ответ
#89
Ro_0TT Написал:А что особенного (отличного) в оф-скриптах? Ибо не смотрел, не знаю. По коду, аналогично и у меня (+-).

В оф скриптах все действия построены на конструкции ask=x&reply=y и специальных байпасах типа create_pledge, teleport_request и прочей туфты. У нас таким образом сохраняется полностью нетронутым оф-пак хтмлок и существенно облегчает обновление скриптов, т.к. изменения например квестов можно полностью выследить по изменению байпасов в хтмлках\самих хтмлок.
Так же вытекло из этого существенное приближение к офу вида хранения данных в датапаке - например двери, телепорты, которые завязаны на определенных нпц. Движки функций фортов\замков\кх и т.п. Вот даже если сесть и начать писать, что пришлось переписывать с нуля - придется до ночи провозиться :redlol:
Ответ
#90
Пол года назад хотел по подобной схеме перепиливать квестовый двиг. Были уже наброски, даже натягивали на чистую лыжу. В итоге до сих пор хочу такой двиг. :redlol:
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Разработка дополнений для Lineage 2 L2jm 24 15,740 08-23-2022, 01:43 AM
Последний пост: L2jm
  Продаётся mitrael.ru - Interlude x10 Rust 2 1,135 01-29-2022, 12:01 PM
Последний пост: Rust
  Новые анимации персонажей для Interlude, Gracia, High Five L2jm 2 2,574 01-18-2022, 09:49 AM
Последний пост: L2jm
  Interlude Baium лобби скрин ( animated, effects, sounds, server copyrights ) L2jm 0 877 10-23-2021, 11:08 PM
Последний пост: L2jm
  Требуется разработка Updater arsik6982 2 860 06-03-2021, 09:55 PM
Последний пост: arsik6982
  Lineage Classic помощники новичков для C4, Interlude, H5, Gracia Final, etc L2jm 0 1,023 11-07-2020, 11:36 AM
Последний пост: L2jm
  Качественная разработка сайтов под ключ DPMode 16 5,707 05-19-2020, 10:02 AM
Последний пост: ayaz
  Агатионов для Interlude и Других хроник iPerfect 0 3,316 05-13-2020, 10:30 AM
Последний пост: iPerfect
  Костюмы для Interlude и других хроник iPerfect 2 2,851 05-13-2020, 10:30 AM
Последний пост: iPerfect
  Разработка крутых landing page от $90 DailyFrost 0 910 10-22-2019, 02:39 AM
Последний пост: DailyFrost

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


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