01-16-2013, 08:26 PM
gorodetskiy Написал:
Админы балуются. :confused:
Silentium - Разработка Interlude с открытыми исходниками.
|
01-16-2013, 08:26 PM
gorodetskiy Написал: Админы балуются. :confused:
01-16-2013, 09:25 PM
Java-man Написал:О, нет, придется самим допиливать эти 25 сраных квестов. Я под люцерку уже больше сотни переписал :redlol:. Еще раз в 6 больше осталось, будем мерятся?) Больше всего бесит, что это фактически бессмысленная трата времени), поэтому переписываю когда совсем делать нечего (.
Ищу работу: Java-разработчик Skype: ro_0tt
01-16-2013, 11:32 PM
Ro_0TT Написал:Я под люцерку уже больше сотни переписал :redlol:. Еще раз в 6 больше осталось, будем мерятся?) Больше всего бесит, что это фактически бессмысленная трата времени), поэтому переписываю когда совсем делать нечего (. Зато куда уж удобнее работать со скриптами, когда всё на явке. Хотя, может я такой привередливый, что не люблю всяких удавов... :redlol:
01-17-2013, 01:10 PM
Ro_0TT Написал:Я под люцерку уже больше сотни переписал :redlol:. Еще раз в 6 больше осталось, будем мерятся?) Больше всего бесит, что это фактически бессмысленная трата времени), поэтому переписываю когда совсем делать нечего (. Я переписал вообще почти все квесты с нуля в сборке, это был адов ад
01-17-2013, 01:45 PM
Переписал все квесты сборке с "удава" на Java'у - получил +100500 к ЧСВ :bx:
Fortuna - non penis, in manus non recipe.
01-17-2013, 03:33 PM
Ro_0TT Написал:Я под люцерку уже больше сотни переписал :redlol:. Еще раз в 6 больше осталось, будем мерятся?) Больше всего бесит, что это фактически бессмысленная трата времени), поэтому переписываю когда совсем делать нечего (. А че бы не померятся ? В ацисе 280 квестов. Ну, если тупо переписывать с питона, то да, пустая трата времени.
01-17-2013, 05:32 PM
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]
01-17-2013, 05:40 PM
ANZO Написал:Ну мы например сделали двиг скриптов, аналогичный офу.А что особенного (отличного) в оф-скриптах? Ибо не смотрел, не знаю. По коду, аналогично и у меня (+-).
Ищу работу: Java-разработчик Skype: ro_0tt
01-17-2013, 05:48 PM
Ro_0TT Написал:А что особенного (отличного) в оф-скриптах? Ибо не смотрел, не знаю. По коду, аналогично и у меня (+-). В оф скриптах все действия построены на конструкции ask=x&reply=y и специальных байпасах типа create_pledge, teleport_request и прочей туфты. У нас таким образом сохраняется полностью нетронутым оф-пак хтмлок и существенно облегчает обновление скриптов, т.к. изменения например квестов можно полностью выследить по изменению байпасов в хтмлках\самих хтмлок. Так же вытекло из этого существенное приближение к офу вида хранения данных в датапаке - например двери, телепорты, которые завязаны на определенных нпц. Движки функций фортов\замков\кх и т.п. Вот даже если сесть и начать писать, что пришлось переписывать с нуля - придется до ночи провозиться :redlol:
01-17-2013, 11:24 PM
Пол года назад хотел по подобной схеме перепиливать квестовый двиг. Были уже наброски, даже натягивали на чистую лыжу. В итоге до сих пор хочу такой двиг. :redlol:
|
« Предыдущая | Следующая »
|