代码: 全选
# 问答竞赛
# Creat by - kennji
import math
import sys
from com.l2jserver.gameserver import Announcements
from java.lang import System
from com.l2jserver.gameserver.model.quest import State
from com.l2jserver.gameserver.model.quest import QuestState
from com.l2jserver.gameserver.model.quest.jython import QuestJython as JQuest
from com.l2jserver.gameserver.model.actor.instance import L2PcInstance
from com.l2jserver.gameserver.model.actor.instance import L2NpcInstance
from com.l2jserver.gameserver.network.serverpackets import PlaySound
from com.l2jserver.gameserver.network.serverpackets import MagicSkillUse
from com.l2jserver.gameserver.network.serverpackets import MagicSkillLaunched
from com.l2jserver.gameserver.network.serverpackets import NpcHtmlMessage
from com.l2jserver.gameserver.network.serverpackets import ActionFailed
from com.l2jserver.gameserver.network.serverpackets import SystemMessage
from com.l2jserver.gameserver.network import SystemMessageId
from com.l2jserver.gameserver.cache import HtmCache
from com.l2jserver.gameserver.model import L2World
from com.l2jserver.util import Rnd
# 答对赠送礼物ID
Reward = 6577
Amount = 2
Reward2 = 6578
Amount2 = 2
Reward3 = 6578
Amount3 = 2
qn = "Trivia"
MANAGER = 90012
QUESTIONS_DELAY = 60000
#=======问题 (一共16个问题)=======
Questions =[
"中国的首都是?",#1
"韩国的首都是?",#2
"美国的首都是?",#3
"英国的首都是?",#4
"日本的首都是?",#5
"问题6?",#6
"问题7?",#7
"问题8?",#8
"问题9?",#9
"问题10?",#10
"问题11?",#11
"问题12?",#12
"问题13?",#13
"问题14?",#14
"问题15?",#15
"问题16?"]#16
#===========================
#======答======
Answers =[
"北京",#1
"首尔",#2
"华盛顿",#3
"伦敦",#4
"东京",#5
"答6",#6
"答7",#7
"答8",#8
"答9",#9
"答10",#10
"答11",#11
"答12",#12
"答13",#13
"答14",#14
"答15",#15
"答16"]#16
#===========================
class Quest (JQuest):
def __init__(self,id,name,descr):
JQuest.__init__(self,id,name,descr)
self.activated = "disattiva"
self.Question = None
self.Answer = None
self.Answered = False
self.Tries = []
self.Counter = []
def onTalk (self,npc,player) :
npcId = npc.getNpcId()
if player.isGM() == 1 :
return "setting.htm"
elif npcId == MANAGER and self.activated == "attiva":
return "answerme.htm"
elif npcId == MANAGER and self.activated == "loading":
return "<html><body>现在正开始游戏<br> 请稍等!!!</body></html>"
else:
return "notstart.htm"
def onAdvEvent (self,event,npc,player):
if event == "StartEvent":
if player.isGM():
self.activated = "loading"
self.startQuestTimer("AnnounceQuestion", QUESTIONS_DELAY,None, None, True) #StartTimer for questions (repeatable)
Announcements.getInstance().announceToAll("知识竞赛比赛开始!")
if event == "StopEvent":
self.cancelQuestTimer("AnnounceQuestion", None, None)
self.activated = "disattiva"
self.Question = None
self.Answer = None
self.Answered = False
self.Tries = []
self.Counter = []
Announcements.getInstance().announceToAll("知识竞赛比赛结束!")
if event == "AnnounceQuestion":
self.activated = "attiva"
if len(self.Counter) >= len(Questions):
self.startQuestTimer("StopEvent", 1000,None, None) #No more questions so event can stop
Announcements.getInstance().announceToAll("问题没有了~结束了!拜拜~~~")
return ""
question = Rnd.get(len(Questions))
while self.Counter.count(question) > 0:
question = Rnd.get(len(Questions))
else:
self.Counter.append(question)
Announcements.getInstance().announceToAll(str(Questions[question]))
self.Question = Questions[question]
self.Answer = Answers[question]
self.Tries = []
self.Answered = False
if event != ("AnnounceQuestion" or "StopEvent" or "StartEvent"):
eventSplit = event.split( " " )
evtType = eventSplit[ 0 ]
if len(eventSplit) == 2:
evtParam = eventSplit[ 1 ]
else:
return ""
if evtType == "answer":
if self.activated == "attiva":
if not self.Answered:
self.Tries.append(player)
if self.Tries.count(player) <= 3:
if str(evtParam) == str(self.Answer):
player.getQuestState(qn).giveItems(Reward,Amount)
player.sendPacket(PlaySound("ItemSound.quest_itemget"))
if Rnd.get(100) <= 30:
player.getQuestState(qn).giveItems(Reward2,Amount2)
if Rnd.get(100) <= 30:
player.getQuestState(qn).giveItems(Reward3,Amount3)
Announcements.getInstance().announceToAll(""+player.getName()+"答对了!!!恭喜")
self.Answered = True
return "answerme.htm"
else:
player.sendPacket(SystemMessage.sendString("哈哈!错了~"))
return "answerme.htm"
else:
player.sendPacket(SystemMessage.sendString("你的机会已用完,抢答下一道题目吧~^^ 加油~加油"))
else:
player.sendPacket(SystemMessage.sendString("完了一点~别人已经答对了!!!"))
return "answerme.htm"
QUEST = Quest(-1, qn, "events")
QUEST.addStartNpc(90012)
QUEST.addTalkId(90012)
-----------------------------------------------------------------------------------------------
l2jcn版本 请把l2jserver换成l2jcn
Trivia文件夹 放到 gameserver\data\scripts\events 内
90012.htm 文件 放到 gameserver\data\html\default 内
sql语句
INSERT INTO custom_npc VALUES ('90012', '14871', '猜猜看', '1', '问答竞赛管理员', '1', 'LineageMonster2.queen_of_cat', '8.00', '16.01', '85', 'female', 'L2Npc', '40', '2444', '1225', '0.00', '0.00', '40', '43', '30', '21', '20', '20', '0', '0', '1086', '471', '749', '313', '230', '0', '333', '0', '0', '0', '68', '109', '0', '0');