コード例 #1
0
def run_script(pc, event_id, item_event_id=0):
    #general.log("run script id", event_id)
    with pc.lock and pc.user.lock:
        lock_move(pc)
        pc.event_id = event_id
        pc.item_event_id = item_event_id
        pc.map_send("05dc")  #イベント開始の通知
        pc.map_send("05e8", event_id)  #EventID通知 Event送信に対する応答
    if usermaps.map_id_in_range_flygarden(event_id):
        script_id = usermaps.MIN_FLYGARDEN_ID
    else:
        script_id = event_id
    with script_list_lock:
        event = script_list.get(script_id)
    try:
        if event:
            event["main"](pc)
        else:
            say(pc, "Script id %s not exist." % script_id, "")
            #raise ValueError("Script id not exist")
    except:
        general.log_error("run_script", event_id, traceback.format_exc())
    with pc.lock and pc.user.lock:
        pc.event_id = 0
        pc.item_event_id = 0
        if pc.online:
            pc.map_send("05dd")  #イベント終了の通知
            unlock_move(pc)
コード例 #2
0
    def do_11fe(self, data_io):
        #MAPワープ完了通知
        general.log("[ map ]", "map load")
        self.pc.set_visible(True)

        self.send("09e9", self.pc)
        self.send("0226", self.pc, 0)  #スキル一覧 一次職
        self.send("0226", self.pc, 1)  #スキル一覧 エキスパ
        self.send("022d", self.pc)  #HEARTスキル

        self.send("13ec", self.pc)  #れしぴ

        self.send("196e", self.pc)  #クエスト回数・時間
        #self.send("0259", self.pc) #ステータス試算結果
        #self.send("1b67", self.pc) #MAPログイン時に基本情報を全て受信した後に受信される

        self.sync_map()
        self.pc.unset_pet()
        if self.pc.equip.pet:
            time.sleep(0.5)  #must have some delay before send 122f (pet info)
        self.pc.set_pet()

        if self.send_login_event:
            self.send_login_event = False
            script.run(self.pc, env.LOGIN_EVENT_ID)

        if usermaps.map_id_in_range_flygarden(self.pc.map_obj.map_id):
            #bad packet, i dont known the structure of 1be4
            #self.send("1be4", self.pc) #飛空庭ログイン
            #1bf9 only for reply 1bf8, plz remove when 1be4 work

            self.send("13bc", 2)  #飛空庭の天候
            self.send("13bd", 4)  #飛空庭の天体
            self.send("1bee", self.pc)  #飛空庭の天候
            self.send("1bf0", self.pc)  #飛空庭の天候
コード例 #3
0
ファイル: script.py プロジェクト: handiwijoyo/virtualeco
def run_script(pc, event_id, item_event_id=0):
	#general.log("run script id", event_id)
	with pc.lock and pc.user.lock:
		lock_move(pc)
		pc.event_id = event_id
		pc.item_event_id = item_event_id
		pc.map_send("05dc") #イベント開始の通知
		pc.map_send("05e8", event_id) #EventID通知 Event送信に対する応答
	if usermaps.map_id_in_range_flygarden(event_id):
		script_id = usermaps.MIN_FLYGARDEN_ID
	else:
		script_id = event_id
	with script_list_lock:
		event = script_list.get(script_id)
	try:
		if event:
			event["main"](pc)
		else:
			say(pc, "Script id %s not exist."%script_id, "")
			#raise ValueError("Script id not exist")
	except:
		general.log_error("run_script", event_id, traceback.format_exc())
	with pc.lock and pc.user.lock:
		pc.event_id = 0
		pc.item_event_id = 0
		if pc.online:
			pc.map_send("05dd") #イベント終了の通知
			unlock_move(pc)
コード例 #4
0
	def do_11fe(self, data_io):
		#MAPワープ完了通知
		general.log("[ map ]", "map load")
		self.pc.set_visible(True)
		self.send("1239", self.pc) #キャラ速度通知・変更
		self.send("196e", self.pc) #クエスト回数・時間
		#self.send("0259", self.pc) #ステータス試算結果
		#self.send("1b67", self.pc) #MAPログイン時に基本情報を全て受信した後に受信される
		
		self.send("0230", self.pc) #現在CAPA/PAYL
		self.send("0231", self.pc) #最大CAPA/PAYL
		self.send("0221", self.pc) #最大HP/MP/SP
		self.send("021c", self.pc) #現在のHP/MP/SP/EP
		self.send("157c", self.pc) #キャラの状態
		self.send("0212", self.pc) #ステータス・補正・ボーナスポイント
		self.send("0217", self.pc) #詳細ステータス
		self.send("0226", self.pc, 0) #スキル一覧 一次職
		self.send("0226", self.pc, 1) #スキル一覧 エキスパ
		self.send("022d", self.pc) #HEARTスキル
		self.send("0223", self.pc) #属性値
		self.send("0244", self.pc) #ステータスウィンドウの職業
		
		self.sync_map()
		self.pc.unset_pet()
		if self.pc.equip.pet:
			time.sleep(0.5) #must have some delay before send 122f (pet info)
		self.pc.set_pet()
		
		if self.send_login_event:
			self.send_login_event = False
			script.run(self.pc, env.LOGIN_EVENT_ID)
		
		if usermaps.map_id_in_range_flygarden(self.pc.map_obj.map_id):
			#bad packet, i dont known the structure of 1be4
			#self.send("1be4", self.pc) #飛空庭ログイン
			#1bf9 only for reply 1bf8, plz remove when 1be4 work
			for i, attr in enumerate(general.FLYGARDEN_ATTR_LIST):
				#飛空庭に装飾品を装着・解除するの結果
				self.send("1bf9", getattr(self.pc.map_obj.flygarden, attr), i)
			self.send("13bc", 2) #飛空庭の天候
			self.send("13bd", 4) #飛空庭の天体
			self.send("1bee", self.pc) #飛空庭の天候
			self.send("1bf0", self.pc) #飛空庭の天候
コード例 #5
0
    def do_11fe(self, data_io):
        #MAPワープ完了通知
        general.log("[ map ]", "map load")
        self.pc.set_visible(True)
        self.send("1239", self.pc)  #キャラ速度通知・変更
        self.send("196e", self.pc)  #クエスト回数・時間
        #self.send("0259", self.pc) #ステータス試算結果
        #self.send("1b67", self.pc) #MAPログイン時に基本情報を全て受信した後に受信される

        self.send("0230", self.pc)  #現在CAPA/PAYL
        self.send("0231", self.pc)  #最大CAPA/PAYL
        self.send("0221", self.pc)  #最大HP/MP/SP
        self.send("021c", self.pc)  #現在のHP/MP/SP/EP
        self.send("157c", self.pc)  #キャラの状態
        self.send("0212", self.pc)  #ステータス・補正・ボーナスポイント
        self.send("0217", self.pc)  #詳細ステータス
        self.send("0226", self.pc, 0)  #スキル一覧 一次職
        self.send("0226", self.pc, 1)  #スキル一覧 エキスパ
        self.send("022d", self.pc)  #HEARTスキル
        self.send("0223", self.pc)  #属性値
        self.send("0244", self.pc)  #ステータスウィンドウの職業

        self.sync_map()
        self.pc.unset_pet()
        if self.pc.equip.pet:
            time.sleep(0.5)  #must have some delay before send 122f (pet info)
        self.pc.set_pet()

        if self.send_login_event:
            self.send_login_event = False
            script.run(self.pc, env.LOGIN_EVENT_ID)

        if usermaps.map_id_in_range_flygarden(self.pc.map_obj.map_id):
            #bad packet, i dont known the structure of 1be4
            #self.send("1be4", self.pc) #飛空庭ログイン
            #1bf9 only for reply 1bf8, plz remove when 1be4 work
            for i, attr in enumerate(general.FLYGARDEN_ATTR_LIST):
                #飛空庭に装飾品を装着・解除するの結果
                self.send("1bf9", getattr(self.pc.map_obj.flygarden, attr), i)
            self.send("13bc", 2)  #飛空庭の天候
            self.send("13bd", 4)  #飛空庭の天体
            self.send("1bee", self.pc)  #飛空庭の天候
            self.send("1bf0", self.pc)  #飛空庭の天候
コード例 #6
0
 def _set_map(self, map_id=None):
     if not map_id:
         map_id = self.map_id
     if usermaps.map_id_in_range_flygarden(map_id):
         map_obj = usermaps.get_usermap_from_map_id(map_id)
     else:
         map_obj = db.map_obj.get(map_id)
     if not map_obj:
         return False
     #general.log(self, "set_map", map_obj)
     with self.user.lock:
         self.unset_pet()
         if map_id:
             self.map_send_map_without_self("1211", self)  #PC消去
     self.map_id = map_id
     if self.map_obj:
         with self.map_obj.lock:
             self.map_obj.pc_list.remove(self)
     self.map_obj = map_obj
     with self.map_obj.lock:
         if self not in self.map_obj.pc_list:
             with self.map_obj.lock:
                 self.map_obj.pc_list.append(self)
     return True
コード例 #7
0
ファイル: pc.py プロジェクト: handiwijoyo/virtualeco
	def _set_map(self, map_id=None):
		if not map_id:
			map_id = self.map_id
		if usermaps.map_id_in_range_flygarden(map_id):
			map_obj = usermaps.get_usermap_from_map_id(map_id)
		else:
			map_obj = db.map_obj.get(map_id)
		if not map_obj:
			return False
		#general.log(self, "set_map", map_obj)
		with self.user.lock:
			self.unset_pet()
			if map_id:
				self.map_send_map_without_self("1211", self) #PC消去
		self.map_id = map_id
		if self.map_obj:
			with self.map_obj.lock:
				self.map_obj.pc_list.remove(self)
		self.map_obj = map_obj
		with self.map_obj.lock:
			if self not in self.map_obj.pc_list:
				with self.map_obj.lock:
					self.map_obj.pc_list.append(self)
		return True