Сообщений: 300
Тем: 92
Зарегистрирован: Oct 2010
Репутация:
-132
1) на l2jc4 не работают кланхоллы, как оптимальнее всего будет реализовать их?, откуда лучше будет взять код?
2) при релогине персонажа снимает по 5 реков, а должно снимать просто по 3 в день, где искать ошибку?
3) не хотят работать множество квестов, и у нпц просто пишет "I have nothing to say you", я проверял много раз код\id npc\html-ки, пробовал менять по-разному, но никаких результатов это не дало, я не могу понять в чем здесь дело?, вот например этот квест:
Открыть спойлер
СпойлерКод: import sys
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
#NPC
JEREMY = 8521
PULIN = 8543
NAFF = 8544
CROCUS = 8545
KUBER = 8546
BEORIN = 8547
#QUEST ITEMS
SPECIAL_DRINK = 7197
FEE_OF_DRINK = 7198
#REWARDS
ADENA = 57
HASTE_POTION = 734
#Chance to get an S-grade random recipe instead of just adena and haste potion
RPCHANCE=10
#Change this value to 1 if you wish 100% recipes, default 70%
ALT_RP100=0
#MESSAGES
default="<html><head><body>I have nothing to say you</body></html>"
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
def onEvent (self,event,st) :
htmltext = event
cond=st.getInt("cond")
if event == "8521-1.htm" :
if cond==0:
st.set("cond","1")
st.setState(STARTED)
st.giveItems(SPECIAL_DRINK,5)
st.playSound("ItemSound.quest_accept")
else:
htmltext=default
if event == "8547-1.htm" :
if st.getQuestItemsCount(SPECIAL_DRINK):
if cond==1:
st.takeItems(SPECIAL_DRINK,1)
st.giveItems(FEE_OF_DRINK,1)
st.set("cond","2")
else:
htmltext=default
else:
htmltext="LMFAO!"
st.extiQuest(1)
if event == "8546-1.htm" :
if st.getQuestItemsCount(SPECIAL_DRINK):
if cond==2:
st.takeItems(SPECIAL_DRINK,1)
st.giveItems(FEE_OF_DRINK,1)
st.set("cond","3")
else:
htmltext=default
else:
htmltext="LMFAO!"
st.extiQuest(1)
if event == "8545-1.htm" :
if st.getQuestItemsCount(SPECIAL_DRINK):
if cond==3:
st.takeItems(SPECIAL_DRINK,1)
st.giveItems(FEE_OF_DRINK,1)
st.set("cond","4")
else:
htmltext=default
else:
htmltext="LMFAO!"
st.extiQuest(1)
if event == "8544-1.htm" :
if st.getQuestItemsCount(SPECIAL_DRINK):
if cond==4:
st.takeItems(SPECIAL_DRINK,1)
st.giveItems(FEE_OF_DRINK,1)
st.set("cond","5")
else:
htmltext=default
else:
htmltext="LMFAO!"
st.extiQuest(1)
if event == "8543-1.htm" :
if st.getQuestItemsCount(SPECIAL_DRINK):
if cond==5:
st.takeItems(SPECIAL_DRINK,1)
st.giveItems(FEE_OF_DRINK,1)
st.set("cond","6")
else:
htmltext=default
else:
htmltext="LMFAO!"
st.extiQuest(1)
if event == "8521-3.htm" :
if st.getQuestItemsCount(FEE_OF_DRINK) == 5:
st.takeItems(FEE_OF_DRINK,5)
if st.getRandom(100) < RPCHANCE :
st.giveItems(range(6847+ALT_RP100,6853,2)[st.getRandom(3)],1)
else:
st.giveItems(ADENA,18800)
st.giveItems(HASTE_POTION,1)
st.playSound("ItemSound.quest_finish")
st.exitQuest(1)
else:
htmltext=default
return htmltext
def onTalk (Self,npc,st):
htmltext = default
npcId = npc.getNpcId()
id = st.getState()
if id == CREATED :
st.set("cond","0")
cond = int(st.get("cond"))
if npcId == 8521 and cond == 0 :
if st.getPlayer().getLevel() >= 68 :
htmltext = "8521-0.htm"
else:
st.exitQuest(1)
elif npcId == 8547 and cond == 1 and st.getQuestItemsCount(SPECIAL_DRINK) :
htmltext = "8547-0.htm"
elif npcId == 8546 and cond == 2 and st.getQuestItemsCount(SPECIAL_DRINK) :
htmltext = "8546-0.htm"
elif npcId == 8545 and cond == 3 and st.getQuestItemsCount(SPECIAL_DRINK) :
htmltext = "8545-0.htm"
elif npcId == 8544 and cond == 4 and st.getQuestItemsCount(SPECIAL_DRINK) :
htmltext = "8544-0.htm"
elif npcId == 8543 and cond == 5 and st.getQuestItemsCount(SPECIAL_DRINK) :
htmltext = "8543-0.htm"
elif npcId == 8521 and cond == 6 and st.getQuestItemsCount(FEE_OF_DRINK) == 5 :
htmltext = "8521-2.htm"
return htmltext
QUEST = Quest(622,"622_DeliveryOfSpecialLiquor","Delivery of special liquor")
CREATED = State('Start', QUEST)
STARTED = State('Started', QUEST)
QUEST.setInitialState(CREATED)
QUEST.addStartNpc(8521)
CREATED.addTalkId(8521)
STARTED.addTalkId(8521)
for i in range(8543,8548):
STARTED.addTalkId(i)
STARTED.addQuestDrop(8521,SPECIAL_DRINK,1)
STARTED.addQuestDrop(8521,FEE_OF_DRINK,1)
print "importing quests: 622: Delivery of special liquor"
4) у гладиаторов на всех скиллах не показывает отката, в чем может быть дело???
5) не дает почему-то более одного саба, хотя квест пройден. пробовал разобраться, накопал следующее:
Открыть спойлер
СпойлерКод: if (!Config.ALT_GAME_SUBCLASS_WITHOUT_QUESTS)
{
L2ItemInstance elixirItem = player.getInventory().getItemByItemId(ELIXIR_ITEM_ID);
L2ItemInstance destinyItem = player.getInventory().getItemByItemId(
DESTINY_ITEM_ID);
if (elixirItem == null)
{
player.sendMessage("You must have completed the Mimir's Elixir quest to continue adding your sub class.");
return;
}
if (destinyItem == null)
{
player.sendMessage("You must have completed the Fate's Whisper quest to continue adding your sub class.");
return;
}
if (allowAddition)
{
player.destroyItemByItemId("Quest", ELIXIR_ITEM_ID, 1, this, true);
player.destroyItemByItemId("Quest", DESTINY_ITEM_ID, 1, this, true);
}
проверка чисто на наличие предметов, но это не совсем правильно, как я понимаю. затем я попробовал вырезал этот кусочек из С6:
Открыть спойлер
СпойлерКод: if (!Config.ALT_GAME_SUBCLASS_WITHOUT_QUESTS)
{
QuestState qs = player.getQuestState("235_MimirsElixir");
if (qs == null || !qs.isCompleted())
{
player.sendMessage("You must have completed the Mimir's Elixir quest to continue adding your sub class.");
return;
}
if(!Config.ALT_SUB_WITHOUT_FATES)
{
qs = player.getQuestState("234_FatesWhisper");
if (qs == null || !qs.isCompleted())
{
player.sendMessage("You must have completed the Fate's Whisper quest to continue adding your sub class.");
return;
}
}
}
но в игре все та же штука, пишет что саб не пройден, хотя он пройден! импорт queststate в этот класс сделал, разумеется.(
как сделать что бы нормально работало, подскажите плз?
6) максимальное кол-во адены обнуляется, то есть число MAX_INT, когда в игре подбираешь или покупаешь\продаешь, то сумма выходит за предел и просто становится ноль, и так далее по кругу. я пытался найти подходящую строчку в коде, но нашел только MAX INT karma (PCInstance). что делать?((
7) когда игрок подбирает предмет, то пишет только название предмета, а его количество нет, как исправить?
8) где и как можно поправить точки респауна в городах?, просто существуют точки, которые вообще в текстурах, и приходится еще раз юзать сое.
спасибо заранее, буду очень благодарен!!!!
Сообщений: 1,326
Тем: 10
Зарегистрирован: Apr 2010
Репутация:
2,078
08-16-2011, 06:24 PM
(Сообщение последний раз редактировалось: 08-16-2011, 06:51 PM Azagthtot.)
На эти и другие вопросы, вам ответят ваши друзья Н. Вирт и Г. Шилд, со своим курсом "Программирование в картинках".
Поясню, что бы не было "обид". Ваши вопросы все из одной серии. Надо брать вашу сборку, отлаживать и править. Сказать "почему такое происходит и как исправить" не видя самого кода, и без отладки нельзя.
Сообщений: 300
Тем: 92
Зарегистрирован: Oct 2010
Репутация:
-132
здесь не все зависит от кода, если вы этого не заметили, со своим, как я понял, высоким интеллектом.
многие сталкивались с подобными проблемами, и находили решение, не хочу изобретать велосипед, я надеюсь на добрых людей, спасибо.
Сообщений: 3,968
Тем: 90
Зарегистрирован: Nov 2010
Репутация:
15,337
mego4el Написал:здесь не все зависит от кода, если вы этого не заметили, со своим, как я понял, высоким интеллектом.
многие сталкивались с подобными проблемами, и находили решение, не хочу изобретать велосипед, я надеюсь на добрых людей, спасибо.
Вопросы слишком элементарны, отвечать на них - безтолку, попробуйте взять в руки то, что посоветовал вам Azagthtot и разобраться самому. И вам полезно и лишние строки в базе своим постом не забиваете .
|