Exemple #1
0
def run(pc, event_id, item_event_id=0):
    #vulnerability:
    #* send a lot of event or skill request can make thread number
    #* reached the system limits
    #if pc.event_id is not None or pc.item_event_id is not None:
    #	general.log_error("script.run error: event duplicate", pc, pc.event_id)
    #	return
    if not event_id:
        general.log_error("[event] event_id null", pc, event_id)
        return
    general.start_thread(run_script, (pc, event_id, item_event_id))
Exemple #2
0
def run(pc, event_id, item_event_id=0):
	#vulnerability:
	#* send a lot of event or skill request can make thread number
	#* reached the system limits
	#if pc.event_id is not None or pc.item_event_id is not None:
	#	general.log_error("script.run error: event duplicate", pc, pc.event_id)
	#	return
	if not event_id:
		general.log_error("[event] event_id null", pc, event_id)
		return
	general.start_thread(run_script, (pc, event_id, item_event_id))
Exemple #3
0
	def damage(self, i):
		with self.lock:
			if self.status.hp <= 0:
				general.log_error("[monster] monster.hp <= 0", self)
				return 0
			state_list = dict((j, 0) for j in xrange(10))
			self.status.hp -= i
			if self.status.hp <= 0:
				self.status.hp = 0
				state_list[0] |= 0x200 #行動不能
				general.start_thread(monsters.delete_monster_thread, (self,))
		script.send_map_obj(self.map_obj, (), "021c", self) #現在のHP/MP/SP/EP
		script.send_map_obj(self.map_obj, (), "157c", self, state_list) #キャラの状態
		return self.status.hp
Exemple #4
0
 def damage(self, i):
     with self.lock:
         if self.status.hp <= 0:
             general.log_error("[monster] monster.hp <= 0", self)
             return 0
         state_list = dict((j, 0) for j in xrange(10))
         self.status.hp -= i
         if self.status.hp <= 0:
             self.status.hp = 0
             state_list[0] |= 0x200  #行動不能
             general.start_thread(monsters.delete_monster_thread, (self, ))
     script.send_map_obj(self.map_obj, (), "021c", self)  #現在のHP/MP/SP/EP
     script.send_map_obj(self.map_obj, (), "157c", self,
                         state_list)  #キャラの状態
     return self.status.hp
Exemple #5
0
def use(pc, target_id, x, y, skill_id, skill_lv):
	general.log("[skill] use skill (%s, %s) -> (%s, %s, %s)"%(
		skill_id, skill_lv, target_id, x, y,
	))
	mod = name_map.get(str(skill_id))
	if mod is None:
		skill_obj = db.skill.get(skill_id)
		skill_name = skill_obj.name if skill_obj else "unknow"
		script.msg(pc, "skill %s %s not define"%(skill_id, skill_name))
		#スキル使用 #スキルを使用できません
		pc.map_send("1389", pc, -1, x, y, skill_id, skill_lv, 13, -1)
		#スキル使用通知 #スキルを使用できません
		pc.map_send("138a", pc, 13)
		return
	general.start_thread(use_thread, (mod, pc, target_id, x, y, skill_id, skill_lv))
	return True
Exemple #6
0
def use(pc, target_id, x, y, skill_id, skill_lv):
    general.log("[skill] use skill (%s, %s) -> (%s, %s, %s)" % (
        skill_id,
        skill_lv,
        target_id,
        x,
        y,
    ))
    mod = name_map.get(str(skill_id))
    if mod is None:
        skill_obj = db.skill.get(skill_id)
        skill_name = skill_obj.name if skill_obj else "unknow"
        script.msg(pc, "skill %s %s not define" % (skill_id, skill_name))
        #スキル使用 #スキルを使用できません
        pc.map_send("1389", pc, -1, x, y, skill_id, skill_lv, 13, -1)
        #スキル使用通知 #スキルを使用できません
        pc.map_send("138a", pc, 13)
        return
    general.start_thread(use_thread,
                         (mod, pc, target_id, x, y, skill_id, skill_lv))
    return True
Exemple #7
0
def shutdown_server(pc, confirm_word=""):
    if confirm_word != env.SHUTDOWN_CONFIRM_WORD:
        warning(pc, "use /shutdown_server %s" % env.SHUTDOWN_CONFIRM_WORD)
        return
    general.start_thread(sys.modules["__main__"].atexit, ())
Exemple #8
0
def shutdown_server(pc, confirm_word=""):
	if confirm_word != env.SHUTDOWN_CONFIRM_WORD:
		warning(pc, "use /shutdown_server %s"%env.SHUTDOWN_CONFIRM_WORD)
		return
	general.start_thread(sys.modules["__main__"].atexit, ())