Перейти к содержимому
La2Base
Главная
ЗагрузкиВикиФорумFAQ
Поиск
ruen
Регистрация Войти
ГлавнаяФайлыВикиВойти
  • Главная
  • Загрузки
  • Вики
  • FAQ
  • Обратная связь
  • О проекте
  • Правила
  • Конфиденциальность
  • Условия использования

© 2026 la2base.com · Все права защищены

ruen
Форум/Помощь/[help]скрипты
Поиск

[help]скрипты

7 ответов90 просмотровСейчас просматривают: 1
xxblxx
xxblxx

Пользователь

Бывалый

Постов: 306

На форуме с: 17.12.2009

Репутация: +55

Рейтинг: 0

· 28.01.2009, 03:37

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

вот код:

Код
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 = [7860,7861,7862,7863,7864,7865,7866,7867,7868,7869]
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(ITEMS_CHECK) >= 1:
#       st.getPlayer().teleToLocation(1,1,1)
#    else:
       st.exitQuest(1)
     if st.getQuestItemsCount(ORC_GATEKEEPER_CHARM) >= 1:
       st.takeItems(ORC_GATEKEEPER_CHARM,1)
       st.getPlayer().teleToLocation(139795,-176778,-1541)
     if st.getQuestItemsCount(DWARF_GATEKEEPER_TOKEN) >= 1:
       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)


кто знает, что тут не так, отпишитесь в коментах

0
xxblxx
xxblxx

Пользователь

Бывалый

Постов: 306

На форуме с: 17.12.2009

Репутация: +55

Рейтинг: 0

· 28.01.2009, 04:26

Код
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
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:
       st.takeItems(ORC_GATEKEEPER_CHARM,1)
       st.getPlayer().teleToLocation(139795,-176778,-1541)
     if st.getQuestItemsCount(DWARF_GATEKEEPER_TOKEN) >= 1:
       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)


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

0
D
Deferato

Пользователь

Участник

Постов: 71

На форуме с: 25.09.2008

Репутация: +26

Рейтинг: 0

· 28.01.2009, 13:06

Смотри за логикой скрипта:
Если НПЦ тот и ты нажимаешь в его штмл на ссылку твоего квеста есть 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

0
saracin
saracin

Пользователь

Ветеран

Постов: 575

На форуме с: 22.04.2008

Репутация: +503

Рейтинг: 0

· 28.01.2009, 14:46

что мешает сделать банальную проверку 1 итем тп в 1 зону если нет то проверяем итем №2 если есть тп во вторую и тд. иначе
если ты хочешь чтоб в зависимости от количества монет было тп то тут только с меню выбора одной проверкой количества не обойдешься

— Бойтесь

0
D
Deferato

Пользователь

Участник

Постов: 71

На форуме с: 25.09.2008

Репутация: +26

Рейтинг: 0

· 28.01.2009, 15:13

saracin: что мешает сделать банальную проверку 1 итем тп в 1 зону если нет то проверяем итем №2 если есть тп во вторую и тд. иначе
если ты хочешь чтоб в зависимости от количества монет было тп то тут только с меню выбора одной проверкой количества не обойдешься


А если оба?

— 30

0
xxblxx
xxblxx

Пользователь

Бывалый

Постов: 306

На форуме с: 17.12.2009

Репутация: +55

Рейтинг: 0

· 28.01.2009, 23:21

вот как раз при if st.getQuestItemsCount(ORC_GATEKEEPER_CHARM) and not st.getQuestItemsCount(BAD_ITEM1) and not st.getQuestItemsCount(BAD_ITEM2).... : выдает следующую ошибку (на проверку в ГС проходит) Script error, если ставлю иначе, то пишет синтаксис еррор((( если кто может написать без ошибок, прям напишите, как это должно выглядеть!

Код
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
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(ITEMS_CHECK) >= 1:
st.exitQuest(1)
else:
if st.getQuestItemsCount(ORC_GATEKEEPER_CHARM) >= 1:
       st.takeItems(ORC_GATEKEEPER_CHARM,1)
       st.getPlayer().teleToLocation(139795,-176778,-1541)
     if st.getQuestItemsCount(DWARF_GATEKEEPER_TOKEN) >= 1:
       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)


А вот такой вариант как оформить (я написал чисто логически) сорри я этого языка не знаю....помогите грамотно это офрмить, а насчет 2-х итемов, для меня это не столь важно!!!!!!потому как эти итемы служат только лишь идентификаторами команд, 1 монетка = 1 команда, 2 монетка = 2 команда, и еще как присвоить тем, кто телепортируется в 1 зону //setteam 1 а в другую, соответственно, //setteam 2 и чтобы потом (через определенное время) телепортировало назад, а проще говоря мне нужены исходники ТВТ, если знаете где их взять, или как это выглядит, выложите пожалуйста сюда!!
заранее большое спасибо!!!

0
xxblxx
xxblxx

Пользователь

Бывалый

Постов: 306

На форуме с: 17.12.2009

Репутация: +55

Рейтинг: 0

· 30.01.2009, 04:07

#
# 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

0
Войдите или зарегистрируйтесь чтобы ответить