вот решил написать скрипт телепортера, который проверяет на наличие определенных предмтов, что-то пока не выходит(не силен я в этом языке) если кто может помочь, то я буду очень благодарен!!!
вот код:
Смотри за логикой скрипта:
Если НПЦ тот и ты нажимаешь в его штмл на ссылку твоего квеста есть 4 варианта:
1) Есть только 1 итем - мы ТПшимся в 1 место, мы рады
2) Есть только 2 итем - мы ТПшимся во 2 место, мы рады
3) Есть оба итема - Сначала нас начнёт ТПшить в 1 место, а потом сразу во 2, так как выполняются оба условия. Причём заберёт оба итема. Тут могут быть ошибки.
4) Нет ни одного итема - вернёт текст.
Как исправить?
Сделать на каждую точку ТП свой скрипт или реализовать в классе OnEvent..
Как сделать чтобы проверяло на наличие итемов?
if st.getQuestItemsCount(ORC_GATEKEEPER_CHARM) and not st.getQuestItemsCount(BAD_ITEM1) and not st.getQuestItemsCount(BAD_ITEM2).... :
— 30
что мешает сделать банальную проверку 1 итем тп в 1 зону если нет то проверяем итем №2 если есть тп во вторую и тд. иначе
если ты хочешь чтоб в зависимости от количества монет было тп то тут только с меню выбора одной проверкой количества не обойдешься
— Бойтесь
saracin: что мешает сделать банальную проверку 1 итем тп в 1 зону если нет то проверяем итем №2 если есть тп во вторую и тд. иначе
если ты хочешь чтоб в зависимости от количества монет было тп то тут только с меню выбора одной проверкой количества не обойдешься
— 30
вот как раз при if st.getQuestItemsCount(ORC_GATEKEEPER_CHARM) and not st.getQuestItemsCount(BAD_ITEM1) and not st.getQuestItemsCount(BAD_ITEM2).... : выдает следующую ошибку (на проверку в ГС проходит) Script error, если ставлю иначе, то пишет синтаксис еррор((( если кто может написать без ошибок, прям напишите, как это должно выглядеть!
#
# Created by DraX on 2005.07.20
#
import sys
from net.sf.l2j.gameserver.model.actor.instance import L2PcInstance
from net.sf.l2j.gameserver.model.quest import State
from net.sf.l2j.gameserver.model.quest import QuestState
from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
qn = "1100_teleport_with_charm"
#ORC_GATEKEEPER_CHARM = 1658
#DWARF_GATEKEEPER_TOKEN = 1659
#4355 = 4355
#4357 = 4357
ORC_GATEKEEPER_CHARM = 4355
DWARF_GATEKEEPER_TOKEN = 4357
ITEMS_CHECK = [12971,12972]
WHIRPY = 99998
TAMIL = 99998
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onTalk (Self,npc,player):
st = player.getQuestState(qn)
npcId = npc.getNpcId()
if npcId == TAMIL:
if st.getQuestItemsCount(ORC_GATEKEEPER_CHARM) >= 1 and not st.getQuestItemsCount(ITEMS_CHECK):
st.takeItems(ORC_GATEKEEPER_CHARM,1)
st.getPlayer().teleToLocation(139795,-176778,-1541)
return
if st.getQuestItemsCount(DWARF_GATEKEEPER_TOKEN) >= 1 and not st.getQuestItemsCount(ITEMS_CHECK):
st.takeItems(DWARF_GATEKEEPER_TOKEN,1)
st.getPlayer().teleToLocation(152391,-177983,842)
st.exitQuest(1)
return
else:
st.exitQuest(1)
return "30576-01.htm"
QUEST = Quest(1100,qn,"Teleports")
for i in [ WHIRPY, TAMIL ] :
QUEST.addStartNpc(i)
QUEST.addTalkId(i)
вот с этим скриптом он если у тебя нету предмета ORC_GATEKEEPER_CHARM или DWARF_GATEKEEPER_TOKEN он пускает в меню эвентера, а когда ты их уже купил, и опять входишь в меню эвентера, то он выдает Script Error