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

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Работа со скриптами (https://forum.zone-game.info/forumdisplay.php?f=37)
-   -   Seven Sign Seal Of The Emperor (https://forum.zone-game.info/showthread.php?t=17968)

Puma1414 31.01.2012 20:53

Seven Sign Seal Of The Emperor
 
Не пускает меня Promise of mammon внутря, говорит не подхожу по мин требованиям..
квест:
Свернуть ↑Развернуть ↓


инстанс:
Свернуть ↑Развернуть ↓


инстанс хмл:
Свернуть ↑Развернуть ↓

инстанснейм хмл:
Свернуть ↑Развернуть ↓

что не так ? :cs:

LestatL 31.01.2012 21:02

Re: Seven Sign Seal Of The Emperor
 
на питоне что ли, ну что ж
вот рабочий квест
Цитата:

# by knoxville OpenTeamFree 03.09.2010
# based on Freya PTS

import sys
from l2.universe.gameserver.ai import CtrlIntention
from l2.universe.gameserver.model.quest import State
from l2.universe.gameserver.model.quest import QuestState
from l2.universe.gameserver.model.quest.jython import QuestJython as JQuest
from l2.universe.gameserver.network.serverpackets import NpcSay
from l2.universe.gameserver.network.serverpackets import ExStartScenePlayer

qn = "196_SevenSignSealOfTheEmperor"

# NPCs
HEINE = 30969
MAMMON = 32584
SHUNAIMAN = 32586
SEALDEVICE = 27384
MAGICAN = 32598
WOOD = 32593


# ITEMS
STONE = 13824
WATER = 13808
SWORD = 15310
SEAL = 13846
STAFF = 13809

class PyObject :
pass

class Quest (JQuest) :
def __init__(self,id,name,descr):
JQuest.__init__(self,id,name,descr)
self.mammon = 0
self.questItemIds = [STONE, SWORD, WATER, SEAL, STAFF]

def onAdvEvent(self, event, npc, player) :
htmltext = event
st = player.getQuestState(qn)
if not st : return
if event == "30969-05.htm" :
st.set("cond","1")
st.setState(State.STARTED)
st.playSound("ItemSound.quest_accept")
elif event == "32598-02.htm" :
st.giveItems(STAFF, 1)
st.playSound("ItemSound.quest_middle")
elif event == "30969-11.htm" :
st.set("cond","6")
st.playSound("ItemSound.quest_middle")
elif event == "32584-05.htm" :
st.set("cond","2")
st.giveItems(STONE, 1)
st.playSound("ItemSound.quest_middle")
elif event == "32586-06.htm" :
st.set("cond","4")
st.takeItems(STONE, 1)
st.giveItems(SWORD, 1)
st.giveItems(WATER, 1)
st.playSound("ItemSound.quest_middle")
elif event == "32586-12.htm" :
st.set("cond","5")
st.takeItems(SEAL, 4)
st.takeItems(SWORD, 1)
st.takeItems(WATER, 1)
st.takeItems(STAFF, 1)
st.playSound("ItemSound.quest_middle")
elif event == "32593-02.htm" :
st.addExpAndSp(52518015,5817676)
st.unset("cond")
st.setState(State.COMPLETED)
st.exitQuest(False)
st.playSound("ItemSound.quest_finish")
elif event == "30969-06.htm" :
if not self.mammon :
npc = st.addSpawn(MAMMON,60000)
self.mammon = 1
st.startQuestTimer("Despawn_Mammon",60000)
npc.broadcastPacket(NpcSay(npc.getObjectId(),0,npc .getNpcId(),"Who dares summon the Merchant of Mammon?!"))
elif event == "Despawn_Mammon" :
self.mammon = 0
return
return htmltext

def onTalk (self, npc, player) :
htmltext = "<html><body>You are either not on a quest that involves this NPC, or you don't meet this NPC's minimum quest requirements.</body></html>"
st = player.getQuestState(qn)
if not st : return htmltext
npcId = npc.getNpcId()
cond = st.getInt("cond")
id = st.getState()
if npcId == HEINE :
first = player.getQuestState("_195_SecretRitualOfThePriest s")
if first and first.getState() == State.COMPLETED and id == State.CREATED and player.getLevel() >= 79 :
htmltext = "30969-01.htm"
elif cond == 1 :
htmltext = "30969-05.htm"
elif cond == 2 :
htmltext = "30969-08.htm"
st.set("cond", "3")
elif cond == 0 :
htmltext = "30969-00.htm"
st.exitQuest(True)
elif cond == 5 :
htmltext = "30969-09.htm"
elif cond == 6 :
htmltext = "30969-11.htm"
elif npcId == MAMMON :
if cond == 1 :
htmltext = "32584-01.htm"
elif cond == 2 :
htmltext = "32584-05.htm"
elif npcId == SHUNAIMAN :
if cond == 3 :
htmltext = "32586-01.htm"
elif cond == 4 and st.getQuestItemsCount(SEAL)==0 :
htmltext = "32586-07.htm"
elif cond == 4 and st.getQuestItemsCount(SEAL)==4 :
htmltext = "32586-08.htm"
elif cond == 5 :
htmltext = "32586-12.htm"
elif npcId == MAGICAN :
if cond == 4 and st.getQuestItemsCount(STAFF)==0 :
htmltext = "32598-01.htm"
elif cond == 4 and st.getQuestItemsCount(STAFF)==1 :
htmltext = "32598-03.htm"
elif npcId == WOOD :
if cond == 6 :
htmltext = "32593-01.htm"
return htmltext

def onKill(self, npc, player, isPet) :
st = player.getQuestState(qn)
if not st : return
if npc.getNpcId() == SEALDEVICE :
st.giveItems(SEAL, 1)
if st.getQuestItemsCount(SEAL) < 4:
st.playSound("ItemSound.quest_itemget")
else:
st.playSound("ItemSound.quest_middle")
if st.getQuestItemsCount(SEAL)>=4:
player.showQuestMovie(13)
return

QUEST = Quest(196,qn,"Seven Signs Seal Of The Emperor")

QUEST.addStartNpc(HEINE)
QUEST.addTalkId(HEINE)
QUEST.addTalkId(WOOD)
QUEST.addTalkId(MAMMON)
QUEST.addTalkId(MAGICAN)
QUEST.addTalkId(SHUNAIMAN)
QUEST.addKillId(SEALDEVICE)
Цитата:

Не пускает меня Promise of mammon внутря, говорит не подхожу по мин требованиям..
а мб и не подходите

Puma1414 31.01.2012 21:04

Re: Seven Sign Seal Of The Emperor
 
щас попробую ... я уже около 7-8 квестов перебрал ... и дажва и питон ...

LestatL 31.01.2012 21:08

Re: Seven Sign Seal Of The Emperor
 
Цитата:

Сообщение от Puma1414 (Сообщение 162875)
щас попробую ... я уже около 7-8 квестов перебрал ... и дажва и питон ...

да я просто на ваш квест смотрю, он на питоне написан ... норм исходники, в вашем случае (чтобы вырвать что вам надо) использовать команды "инфинити"

Puma1414 31.01.2012 21:09

Re: Seven Sign Seal Of The Emperor
 
а можно ещё и скрипт инстанса ?

Добавлено через 1 минуту
в принципе не проблема прикрутить и джаву, главное чтобы работало, я не сторонник джавы или питона) я сторонник работоспособности)

LestatL 31.01.2012 21:24

Re: Seven Sign Seal Of The Emperor
 
Цитата:

Сообщение от Puma1414 (Сообщение 162877)
а можно ещё и скрипт инстанса ?

Добавлено через 1 минуту
в принципе не проблема прикрутить и джаву, главное чтобы работало, я не сторонник джавы или питона) я сторонник работоспособности)

/*
By knoxville OpenTeamFree 14.09.2010, Based on PTS Freya.
TODO: Lilith and Anakim Attack.
 */
package l2.universe.scripts.instances;
 
import l2.universe.gameserver.ai.CtrlIntention;
import l2.universe.gameserver.instancemanager.InstanceManager;
import l2.universe.gameserver.instancemanager.InstanceManager.InstanceWorld;
import l2.universe.gameserver.model.L2World;
import l2.universe.gameserver.model.actor.L2Npc;
import l2.universe.gameserver.model.actor.instance.L2DoorInstance;
import l2.universe.gameserver.model.actor.instance.L2PcInstance;
import l2.universe.gameserver.model.quest.Quest;
import l2.universe.gameserver.model.quest.QuestState;
import l2.universe.gameserver.network.SystemMessageId;
import l2.universe.gameserver.network.serverpackets.ExStartScenePlayer;
import l2.universe.gameserver.network.serverpackets.SystemMessage;
 
public class Disciple extends Quest
{
	private class DiSWorld extends InstanceWorld
	{
		public           long[] storeTime                                = {0,0}; 
		public DiSWorld()
		{
		}
	}
 
	private static final String qn = "Disciple";
	private static final int INSTANCEID = 112; 
 
	private static final int PROMISE = 32585;
	private static final int LEON = 32587;  
	private static final int DOOR = 17240111;
	private static final int GATEKEEPER = 32657; 
 
	private class teleCoord {int instanceId; int x; int y; int z;}
 
	private void teleportplayer(L2PcInstance player, teleCoord teleto)
	{
		player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
		player.setInstanceId(teleto.instanceId);
		player.teleToLocation(teleto.x, teleto.y, teleto.z);
	}
 
	protected void exitInstance(L2PcInstance player, teleCoord tele)
	{
		player.setInstanceId(0);
		player.teleToLocation(tele.x, tele.y, tele.z);
	}
 
	protected int enterInstance(L2PcInstance player, String template, teleCoord teleto)
	{
		int instanceId = 0;
		InstanceWorld world = InstanceManager.getInstance().getPlayerWorld(player);
		if (world != null)
		{
			if (!(world instanceof DiSWorld))
			{
				player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.ALREADY_ENTERED_ANOTHER_INSTANCE_CANT_ENTER));
				return 0;
			}
			teleto.instanceId = world.instanceId;
			teleportplayer(player,teleto);
			return instanceId;
		}
		else
		{
			instanceId = InstanceManager.getInstance().createDynamicInstance(template);
			world = new DiSWorld();
			world.instanceId = instanceId;
			world.templateId = INSTANCEID;
			world.status = 0;
			((DiSWorld)world).storeTime[0] = System.currentTimeMillis();
			InstanceManager.getInstance().addWorld(world);
			_log.info("Disciple started " + template + " Instance: " + instanceId + " created by player: " + player.getName());
			teleto.instanceId = instanceId;
			teleportplayer(player,teleto);
			world.allowed.add(player.getObjectId());
			return instanceId;
		}
	}
	protected void openDoor(int doorId,int instanceId)
	{
		for (L2DoorInstance door : InstanceManager.getInstance().getInstance(instanceId).getDoors())
		{
			if (door.getDoorId() == doorId)
				door.openMe();
		}
	} 
 
	@Override
	public String onTalk ( L2Npc npc, L2PcInstance player)
	{	
		QuestState st = player.getQuestState(qn);
		if (st == null)
			st = newQuestState(player);
 
		switch (npc.getNpcId())
		{
			case PROMISE:
				teleCoord tele = new teleCoord();
				tele.x = -89559;      
				tele.y = 216030;
				tele.z = -7488;
				enterInstance(player, "Disciple.xml", tele);
				break;
			case LEON:
				InstanceWorld world = InstanceManager.getInstance().getPlayerWorld(player);
				world.allowed.remove(world.allowed.indexOf(player.getObjectId()));
				tele = new teleCoord();
				tele.instanceId = 0;
				tele.x = 171782;    
				tele.y = -17612;
				tele.z = -4901;
				exitInstance(player,tele);
				break;
			case GATEKEEPER:
				final InstanceWorld tmpworld = InstanceManager.getInstance().getWorld(npc.getInstanceId());
				if (tmpworld instanceof DiSWorld)
				{
					world = (DiSWorld) tmpworld;  	
					openDoor(DOOR,world.instanceId);
					for (int objId : world.allowed)
					{
						final L2PcInstance pl = L2World.getInstance().getPlayer(objId);
						if (pl != null)
							pl.showQuestMovie(ExStartScenePlayer.SSQ_SEALING_EMPEROR_1ST);					          
					}		
				}
				break;
		}
 
		return "";
	}
 
	public Disciple(int questId, String name, String descr)
	{
		super(questId, name, descr);
 
		addStartNpc(PROMISE);
		addTalkId(PROMISE);
		addTalkId(LEON);
		addTalkId(GATEKEEPER);
	}
 
	public static void main(String[] args)
	{
		new Disciple(-1, qn, "instances");
	}
}
Code: Java
и вообще я спать потопал, качайте исходники инфинити, так проще:)

pchayka 31.01.2012 21:27

Re: Seven Sign Seal Of The Emperor
 
Какой жуткий у вас код у всех. Просто отвратительный.

И проверять нужно не квест, а данж.

Puma1414 31.01.2012 21:51

Re: Seven Sign Seal Of The Emperor
 
эээ:
Свернуть ↑Развернуть ↓



это типа должно работать ? у меня не запускается дисцайпл ... куча ошибок....после удаления пробелов осталось 13 ошибок ...пошёл дальше капаться ....

Добавлено через 4 минуты
import ru.l2open.gameserver.instancemanager.InstanceMange r.InstanceWorld;
на эту строчку ругаеццо , чо делать ?

Ro_0TT 31.01.2012 22:02

Re: Seven Sign Seal Of The Emperor
 
Выкладывайте код под:
PHP код:

[src=java] ...... [/src

иначе - не читаемо.

Добавлено через 1 минуту
Цитата:

Сообщение от Puma1414 (Сообщение 162887)
import ru.l2open.gameserver.instancemanager.InstanceMange r.InstanceWorld;
на эту строчку ругаеццо , чо делать ?

Отсутствует класс по импорту.. )

Puma1414 31.01.2012 23:36

Re: Seven Sign Seal Of The Emperor
 
ну правильно, вот в цитате я и заметил что там пробел , не получилось у меня это скомпилировать ...мызгаю другие скрипты ... охххх ....

Добавлено через 1 минуту
блин, что я делаю не так ? до этого , у меня небыло в сборке этого квеста, я добавляю его руками, что я не сделал ?

Добавлено через 18 минут
нашёл в какой то сборке файлик сlass на сколько я понял нужно его запихнуть в папочку бин ? или как ?

Код:

The packge instance.disciple collides with a type
:cs:

Добавлено через 21 час 6 минут
чо делать с этим то ?:( обьясните как добавлять импорты пожалуйсто, и как впихивать невпихуемое ) тоесть есть такая тема как
Код:

SystemMessageId.ALREADY_ENTERED_ANOTHER_INSTANCE_CANT_ENTER
а так же
Код:

pl.showQuestMovie(ExStartScenePlayer.SSQ_SEALING_EMPEROR_1ST);
у меня их нет, как их впихануть ?


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

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