设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1618|回复: 1
打印 上一主题 下一主题

[已经过期] 求高人帮忙把RTAB的左右移动的脚本替换成这段脚本

[复制链接]

Lv1.梦旅人

剑仙·影羽

梦石
0
星屑
172
在线时间
224 小时
注册时间
2010-3-20
帖子
1580
跳转到指定楼层
1
发表于 2010-6-30 13:08:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
需要替换的代码就是这段
  1. # 仴仯仴 No108. 僶僩儖僶僢僋丒Full-View亄壜摦僇儊儔 仴仯仴
  2. #
  3. # update 2006/ 4/16
  4. #
  5. #==============================================================================
  6. # 仩 僇僗僞儅僀僘億僀儞僩
  7. #==============================================================================
  8. module XRXS_BP8
  9. #
  10. # 僇儊儔堏摦懍搙
  11. # ( SPEED1 : 嫍棧暘妱悢丅彫偝偄傎偳憗偄
  12. # SPEED2 : 嵟掅堏摦懍搙[扨埵:px/F])
  13. #
  14. SPEED1 = 8
  15. SPEED2 = 8
  16. #
  17. # GA偺墶暆僒僀僘傪愝掕 ( 1024:XGA僒僀僘丄640:VGA僒僀僘)
  18. #
  19. GA_W = 1024
  20. end
  21. #------------------------------------------------------------------------------
  22. # 仱 壜摦僇儊儔偺摦偒愝掕
  23. #------------------------------------------------------------------------------
  24. class Scene_Battle
  25. #--------------------------------------------------------------------------
  26. # 仠 僷乕僥傿僐儅儞僪僼僃乕僘奐巒
  27. #--------------------------------------------------------------------------
  28. alias xrxs_bp8_start_phase2 start_phase2
  29. def start_phase2
  30. # 僇儊儔丗僙儞僞儕儞僌
  31. $xcam.centering
  32. # 屇傃栠偡
  33. xrxs_bp8_start_phase2
  34. end
  35. #--------------------------------------------------------------------------
  36. # 仠 僼儗乕儉峏怴 (傾僋僞乕僐儅儞僪僼僃乕僘 : 僄僱儈乕慖戰)
  37. #--------------------------------------------------------------------------
  38. alias xrxs_bp8_update_phase3_enemy_select update_phase3_enemy_select
  39. def update_phase3_enemy_select
  40. # 尰嵼慖戰拞偺僄僱儈乕傪庢摼
  41. enemy = $game_troop.enemies[@enemy_arrow.index]
  42. # 僇儊儔丗拲栚
  43. if @last_enemy_arrow != enemy
  44. $xcam.watch(enemy)
  45. @last_enemy_arrow = enemy
  46. end
  47. # 栠偡
  48. xrxs_bp8_update_phase3_enemy_select
  49. end
  50. #--------------------------------------------------------------------------
  51. # 仠 僄僱儈乕慖戰廔椆
  52. #--------------------------------------------------------------------------
  53. alias xrxs_bp8_end_enemy_select end_enemy_select
  54. def end_enemy_select
  55. # 僇儊儔丗僙儞僞儕儞僌
  56. $xcam.centering
  57. @last_enemy_arrow = nil
  58. # 屇傃栠偡
  59. xrxs_bp8_end_enemy_select
  60. end
  61. #--------------------------------------------------------------------------
  62. # 仠 僼儗乕儉峏怴 (儊僀儞僼僃乕僘 僗僥僢僾 2 : 傾僋僔儑儞奐巒)
  63. #--------------------------------------------------------------------------
  64. alias xrxs_bp8_update_phase4_step2 update_phase4_step2
  65. def update_phase4_step2
  66. # 栠偡
  67. xrxs_bp8_update_phase4_step2
  68. # 僗僥僢僾 3 偵堏峴偡傞梊掕偺応崌
  69. if @phase4_step == 3
  70. # 傾僋僥傿僽側僶僩儔乕偑僶僩儖僼傿乕儖僪偵嫃傞応崌
  71. if @active_battler.in_battlefield?
  72. # 僇儊儔丗拲栚
  73. $xcam.watch(@active_battler)
  74. end
  75. end
  76. end
  77. #--------------------------------------------------------------------------
  78. # 仠 僼儗乕儉峏怴 (儊僀儞僼僃乕僘 僗僥僢僾 3 : 峴摦懁傾僯儊乕僔儑儞)
  79. #--------------------------------------------------------------------------
  80. alias xrxs_bp8_update_phase4_step3 update_phase4_step3
  81. def update_phase4_step3
  82. # 栠偡
  83. xrxs_bp8_update_phase4_step3
  84. # 僇儊儔僞乕僎僢僩偲側傝偆傞僞乕僎僢僩偺 X 暯嬒抣傪寁嶼
  85. x_average = 0
  86. number = 0
  87. cam_target = nil
  88. for target in @target_battlers
  89. if target.in_battlefield?
  90. x_average += target.x
  91. number += 1
  92. cam_target = target
  93. end
  94. end
  95. # 僇儊儔僞乕僎僢僩偑尒偮偐偭偨応崌
  96. if number > 0
  97. # 傕偟懳徾傾僯儊偑乽埵抲丗夋柺乿偺応崌
  98. animation = $data_animations[@animation2_id]
  99. if animation != nil and animation.position == 3
  100. # 僇儊儔丗僙儞僞儕儞僌
  101. $xcam.centering
  102. # 僇儊儔丗僘乕儉傾僂僩
  103. $xcam.zoomout
  104. elsif number == 1
  105. # 僇儊儔丗拲栚
  106. $xcam.watch(cam_target)
  107. else
  108. # 僇儊儔丗巜掕 X 埵抲傪拲栚
  109. $xcam.watch_at(x_average / number)
  110. end
  111. end
  112. end
  113. #--------------------------------------------------------------------------
  114. # 仠 傾僼僞乕僶僩儖僼僃乕僘奐巒
  115. #--------------------------------------------------------------------------
  116. alias xrxs_bp8_start_phase5 start_phase5
  117. def start_phase5
  118. # 僇儊儔丗僙儞僞儕儞僌
  119. $xcam.centering
  120. # 屇傃栠偡
  121. xrxs_bp8_start_phase5
  122. end
  123. end
  124. #------------------------------------------------------------------------------
  125. # 僇僗僞儅僀僘億僀儞僩偙偙傑偱
  126. #==============================================================================

  127. #------------------------------------------------------------------------------
  128. #
  129. # 仱 壜摦僇儊儔 僔僗僥儉 仱
  130. #
  131. #==============================================================================
  132. # 仩 XCam
  133. #------------------------------------------------------------------------------
  134. # 壜摦僇儊儔傪埖偆僋儔僗偱偡丅
  135. #==============================================================================
  136. class XCam
  137. #--------------------------------------------------------------------------
  138. # 仜 岞奐僀儞僗僞儞僗曄悢
  139. #--------------------------------------------------------------------------
  140. attr_reader :x
  141. attr_reader :y
  142. attr_reader :z
  143. attr_accessor :x_destination
  144. attr_accessor :y_destination
  145. attr_accessor :z_destination
  146. attr_accessor :watch_battler
  147. attr_accessor :freeze_count
  148. #--------------------------------------------------------------------------
  149. # 仜 僆僽僕僃僋僩弶婜壔
  150. #--------------------------------------------------------------------------
  151. def initialize
  152. # 僇儊儔弶婜埵抲寛掕
  153. @x = 320
  154. @y = 240
  155. @z = 296
  156. # 嵟戝斖埻偺寁嶼
  157. @x_max = 0
  158. @y_max = 0
  159. @z_max = XRXS_BP8::GA_W * 37 / 128
  160. # Z偺嵟戝惂尷
  161. @z = @z_max if @z > @z_max
  162. # 僇儊儔丗僙儞僞儕儞僌
  163. self.centering
  164. # 弶婜壔
  165. @freeze_count = 0
  166. end
  167. #--------------------------------------------------------------------------
  168. # 仜 僼儗乕儉峏怴
  169. #--------------------------------------------------------------------------
  170. def update
  171. @moved = false
  172. # 僇儊儔埵抲偺峏怴
  173. if @freeze_count > 0
  174. # 僼儕乕僘僇僂儞僩傪尭傜偡
  175. @freeze_count -= 1
  176. return
  177. end
  178. # 嵗昗庢摼
  179. z_dest = @z_destination
  180. x_dest = @watch_battler == nil ? @x_destination : @watch_battler.x
  181. y_dest = @watch_battler == nil ? @y_destination : 88 + @watch_battler.y/2
  182. # 僇儊儔: Z 嵗昗 (桪愭)
  183. if @z != z_dest
  184. @z = slide(@z, z_dest, @z_speed, 37, @z_max)
  185. @x_max = (@z_max - @z) * 64 / 37
  186. @y_max = (@z_max - @z) * 48 / 37
  187. @moved = true
  188. end
  189. # 僇儊儔: X 嵗昗
  190. if @x != x_dest or @moved
  191. @x = slide(@x, x_dest, @x_speed, 320 - @x_max, 320 + @x_max)
  192. @moved = true
  193. end
  194. # 僇儊儔: Y 嵗昗
  195. if @y != y_dest or @moved
  196. @y = slide(@y, y_dest, @y_speed, 240 - @y_max, 240 + @y_max)
  197. @moved = true
  198. end
  199. end
  200. #--------------------------------------------------------------------------
  201. # 仜 僗儔僀僪 (尰嵼抧丒栚揑抧偐傜峴偔傋偒尰嵼抧傪曉偡)
  202. #--------------------------------------------------------------------------
  203. def slide(from, to, move_speed, to_min, to_max)
  204. # 寢壥傪敾暿
  205. if (to - from).abs < move_speed
  206. result = to
  207. else
  208. sign = from > to ? -1 : 1
  209. result = from + sign * move_speed
  210. end
  211. # 斖埻偵傛偭偰曉媝
  212. return [[result, to_min].max, to_max].min
  213. end
  214. #--------------------------------------------------------------------------
  215. # 仜 摦偄偨偐偳偆偐丠
  216. #--------------------------------------------------------------------------
  217. def moved?
  218. return @moved
  219. end
  220. #--------------------------------------------------------------------------
  221. # 仜 僇儊儔懍搙愝掕
  222. #--------------------------------------------------------------------------
  223. def set_speed
  224. x_dest = @watch_battler == nil ? @x_destination : @watch_battler.x
  225. y_dest = @watch_battler == nil ? @y_destination : 88 + @watch_battler.y/2
  226. z_dest = @z_destination
  227. @x_speed = [[(x_dest - @x).abs / XRXS_BP8::SPEED1, 1].max, XRXS_BP8::SPEED2].min
  228. @y_speed = [[(y_dest - @y).abs / XRXS_BP8::SPEED1, 1].max, XRXS_BP8::SPEED2].min
  229. @z_speed = [[(z_dest - @z).abs / XRXS_BP8::SPEED1, 1].max, XRXS_BP8::SPEED2].min
  230. end
  231. #--------------------------------------------------------------------------
  232. # 仜 僙儞僞儕儞僌
  233. #--------------------------------------------------------------------------
  234. def centering
  235. @watch_battler = nil
  236. @x_destination = 320
  237. @y_destination = 240
  238. @z_destination = 185
  239. set_speed
  240. end
  241. #--------------------------------------------------------------------------
  242. # 仜 僘乕儉傾僂僩
  243. #--------------------------------------------------------------------------
  244. def zoomout
  245. @z_destination = 222
  246. set_speed
  247. end
  248. #--------------------------------------------------------------------------
  249. # 仜 僶僩儔乕傪拲栚
  250. #--------------------------------------------------------------------------
  251. def watch(battler)
  252. @watch_battler = battler
  253. @z_destination = 180
  254. set_speed
  255. end
  256. #--------------------------------------------------------------------------
  257. # 仜 巜掕 X 埵抲傪拲栚
  258. #--------------------------------------------------------------------------
  259. def watch_at(x)
  260. @watch_battler = nil
  261. @x_destination = x
  262. @y_destination = 240
  263. @z_destination = 185
  264. set_speed
  265. end
  266. #--------------------------------------------------------------------------
  267. # 仜 僘乕儉攞棪偺庢摼
  268. #--------------------------------------------------------------------------
  269. def zoom
  270. return 185.00 / self.z
  271. end
  272. end
  273. #==============================================================================
  274. # 仭 Game_Battler
  275. #==============================================================================
  276. class Game_Battler
  277. #--------------------------------------------------------------------------
  278. # 仜 岞奐僀儞僗僞儞僗曄悢
  279. #--------------------------------------------------------------------------
  280. attr_reader :x # 僶僩儖僼傿乕儖僪丂墶丂埵抲(+偑塃丂)
  281. attr_reader :y # 僶僩儖僼傿乕儖僪 崅偝 埵抲(+偑壓丂)
  282. attr_reader :z # 僶僩儖僼傿乕儖僪墱峴偒埵抲(+偑庤慜)
  283. #--------------------------------------------------------------------------
  284. # 仜 僶僩儖僼傿乕儖僪忋偵嫃傞偐丠
  285. #--------------------------------------------------------------------------
  286. def in_battlefield?
  287. return false
  288. end
  289. end
  290. #==============================================================================
  291. # 仭 Game_Enemy
  292. #==============================================================================
  293. class Game_Enemy < Game_Battler
  294. #--------------------------------------------------------------------------
  295. # 仜 僶僩儖僼傿乕儖僪忋偵嫃傞偐丠 [僆乕僶乕儔僀僪]
  296. #--------------------------------------------------------------------------
  297. def in_battlefield?
  298. return true
  299. end
  300. #--------------------------------------------------------------------------
  301. # 仠 僆僽僕僃僋僩弶婜壔
  302. #--------------------------------------------------------------------------
  303. alias xrxs_bp8_initialize initialize
  304. def initialize(troop_id, member_index)
  305. @z = 0
  306. xrxs_bp8_initialize(troop_id, member_index)
  307. end
  308. #--------------------------------------------------------------------------
  309. # 仠 僶僩儖夋柺 X 嵗昗偺庢摼
  310. #--------------------------------------------------------------------------
  311. alias x screen_x
  312. def screen_x
  313. return self.x if $xcam == nil
  314. return 320 + (self.x - $xcam.x) * 185 / $xcam.z
  315. end
  316. #--------------------------------------------------------------------------
  317. # 仠 僶僩儖夋柺 Y 嵗昗偺庢摼
  318. #--------------------------------------------------------------------------
  319. alias y screen_y
  320. def screen_y
  321. return self.y if $xcam == nil
  322. return 240 + (self.y - $xcam.y) * 185 / $xcam.z
  323. end
  324. end
  325. #==============================================================================
  326. # 仭 Spriteset_Battle
  327. #==============================================================================
  328. class Spriteset_Battle
  329. #--------------------------------------------------------------------------
  330. # 仜 僼儗乕儉峏怴 (壜摦僇儊儔)
  331. #--------------------------------------------------------------------------
  332. def update_xcam
  333. # 僇儊儔埵抲偑摦偄偨応崌
  334. if $xcam.moved?
  335. # 僇儊儔埵抲偐傜僘乕儉棪傪寁嶼
  336. zoom = 185.00 / $xcam.z
  337. w = XRXS_BP8::GA_W / 2
  338. h = w * 3 / 4
  339. # 攚宨偺愝掕峏怴
  340. @battleback_sprite.zoom_x = zoom
  341. @battleback_sprite.zoom_y = zoom
  342. @battleback_sprite.x = (320 - $xcam.x) * zoom - w * (zoom - 1)
  343. @battleback_sprite.y = (240 - $xcam.y) * zoom - h * (zoom - 1)
  344. end
  345. end
  346. end
  347. #==============================================================================
  348. # --- 僶僩儔乕僗僾儔僀僩丒壜摦僇儊儔揔梡 ---
  349. #==============================================================================
  350. module XRXS_Cam_Deal
  351. def update
  352. # 屇傃栠偡
  353. super
  354. # 僶僩儔乕偑僶僩儖僼傿乕儖僪偵偄側偄応崌偼廔椆
  355. return if @battler == nil or not @battler.in_battlefield?
  356. # 僌儔僼傿僢僋偑枹愝掕側応崌偼廔椆
  357. return if self.bitmap == nil
  358. # 僘乕儉棪偺曄峏 ( 僗僾儔僀僩嵗昗偺嵞愝掕偼尦偺儊僜僢僪偵擟偣傞 )
  359. zoom = 1.00 * 185 / (185 - @battler.z)
  360. self.zoom_x = zoom * $xcam.zoom
  361. self.zoom_y = zoom * $xcam.zoom
  362. end
  363. end
  364. class Sprite_Battler < <SPAN class=t_tag onclick=tagshow(event) href="tag.php?name=RPG">RPG</SPAN>::Sprite
  365. include XRXS_Cam_Deal
  366. end
  367. #==============================================================================
  368. # --- 僟儊乕僕僼僅儘乕 儌僕儏乕儖 ---
  369. #==============================================================================
  370. module XRXS_DamageFollow
  371. def update
  372. # 屇傃栠偡
  373. super
  374. # 僇儊儔偑懚嵼偟側偄応崌
  375. return if $xcam == nil
  376. # 僶僩儔乕偑 nil 傑偨偼僶僩儖僼傿乕儖僪偵偄側偄応崌
  377. return if @battler == nil or not @battler.in_battlefield?
  378. # 捈慜僇儊儔埵抲偐傜丄堏摦検傪嶼弌
  379. x_moved = @last_cam_x == nil ? 0 : $xcam.x - @last_cam_x
  380. y_moved = @last_cam_y == nil ? 0 : $xcam.y - @last_cam_y
  381. # 僟儊乕僕僗僾儔僀僩攝楍偺嶌惉
  382. damage_sprites = [@_damage_sprite]
  383. damage_sprites += @damage_sprites if @damage_sprites != nil
  384. # 僇儊儔傪僼僅儘乕
  385. for sprite in damage_sprites
  386. next if sprite == nil
  387. next if sprite.disposed?
  388. sprite.x -= x_moved
  389. sprite.y -= y_moved
  390. end
  391. # 捈慜僇儊儔埵抲偺曐帩
  392. @last_cam_x = $xcam.x
  393. @last_cam_y = $xcam.y
  394. end
  395. end
  396. class Sprite_Battler < RPG::Sprite
  397. include XRXS_DamageFollow
  398. end
  399. #==============================================================================
  400. # 仭 Scene_Battle
  401. #==============================================================================
  402. class Scene_Battle
  403. #--------------------------------------------------------------------------
  404. # 仠 儊僀儞張棟
  405. #--------------------------------------------------------------------------
  406. alias xrxs_bp8_main main
  407. def main
  408. # 壜摦僇儊儔偺惗惉
  409. $xcam = XCam.new
  410. # 栠偡
  411. xrxs_bp8_main
  412. # 壜摦僇儊儔偺夝曻
  413. $xcam = nil
  414. end
  415. #--------------------------------------------------------------------------
  416. # 仠 僼儗乕儉峏怴
  417. #--------------------------------------------------------------------------
  418. alias xrxs_bp8_update update
  419. def update
  420. # 壜摦僇儊儔偺僼儗乕儉峏怴
  421. $xcam.update
  422. # 屇傃栠偡
  423. xrxs_bp8_update
  424. end
  425. end
  426. #------------------------------------------------------------------------------
  427. #
  428. # 仱 Full-View 僔僗僥儉 仱
  429. #
  430. #==============================================================================
  431. # 仭 Spriteset_Battle
  432. #==============================================================================
  433. class Spriteset_Battle
  434. #--------------------------------------------------------------------------
  435. # 仠 僆僽僕僃僋僩弶婜壔
  436. #--------------------------------------------------------------------------
  437. alias xrxs_bp8_initialize initialize
  438. def initialize
  439. # 屇傃栠偡
  440. xrxs_bp8_initialize
  441. # 僌儔僼傿僢僋僗傾儗僀傪庢摼
  442. # 價儏乕億乕僩 0 傪嶌惉
  443. w = XRXS_BP8::GA_W
  444. h = w * 3 / 4
  445. x = 320 - w / 2
  446. y = 240 - h / 2
  447. @viewport0 = Viewport.new(x, y, w, h)
  448. @viewport0.z = 0
  449. # 價儏乕億乕僩 1 偺愝掕傪曄峏
  450. @viewport1.z += 1
  451. @viewport1.rect.height = 480
  452. # 僶僩儖僶僢僋僗僾儔僀僩傪嵞嶌惉 (價儏乕億乕僩 0 傪巊梡)
  453. @battleback_sprite.dispose
  454. @battleback_sprite = Sprite.new(@viewport0)
  455. @battleback_name = ""
  456. # 僶僩儖僶僢僋偺僼儗乕儉峏怴
  457. update_battleback
  458. end
  459. #--------------------------------------------------------------------------
  460. # 仠 夝曻
  461. #--------------------------------------------------------------------------
  462. alias xrxs_bp8_dispose dispose
  463. def dispose
  464. # 屇傃栠偡
  465. xrxs_bp8_dispose
  466. # 價儏乕億乕僩傪夝曻
  467. @viewport0.dispose
  468. end
  469. #--------------------------------------------------------------------------
  470. # 仠 僼儗乕儉峏怴
  471. #--------------------------------------------------------------------------
  472. alias xrxs_bp8_update update
  473. def update
  474. # 僼儗乕儉峏怴 (僶僩儖僶僢僋)
  475. update_battleback
  476. # 僼儗乕儉峏怴 (壜摦僇儊儔)
  477. update_xcam if defined? update_xcam
  478. # 屇傃栠偡
  479. xrxs_bp8_update
  480. # 夋柺偺僔僃僀僋埵抲傪愝掕
  481. @viewport0.ox = $game_screen.shake if @viewport0 != nil
  482. end
  483. #--------------------------------------------------------------------------
  484. # 仜 僼儗乕儉峏怴 (僶僩儖僶僢僋)
  485. #--------------------------------------------------------------------------
  486. def update_battleback
  487. # 僶僩儖僶僢僋偺僼傽僀儖柤偑尰嵼偺傕偺偲堘偆応崌
  488. if @battleback_name != $game_temp.battleback_name
  489. @battleback_name = $game_temp.battleback_name
  490. if @battleback_sprite.bitmap != nil
  491. @battleback_sprite.bitmap.dispose
  492. end
  493. # 僌儔僼傿僢僋僗傾儗僀傪庢摼
  494. w = XRXS_BP8::GA_W
  495. h = w * 3 / 4
  496. # 僶僩儖僶僢僋偺庢摼偲奼戝
  497. bg = RPG::Cache.battleback(@battleback_name)
  498. xga = Bitmap.new(w, h)
  499. xga.stretch_blt(xga.rect, bg, bg.rect)
  500. # XGA傪僶僩儖僶僢僋偵愝掕
  501. @battleback_sprite.bitmap = xga
  502. end
  503. end
  504. end
  505. #==============================================================================
  506. # ---乽愴摤拞偺"夋柺"傾僯儊偺埵抲廋惓乿儌僕儏乕儖 ---
  507. #==============================================================================
  508. module XRXS_FullScreen_AnimationOffset
  509. def animation_set_sprites(sprites, cell_data, position)
  510. super
  511. for i in 0..15
  512. sprite = sprites[i]
  513. pattern = cell_data[i, 0]
  514. if sprite == nil or pattern == nil or pattern == -1
  515. next
  516. end
  517. if position == 3
  518. if self.viewport != nil
  519. sprite.y = 160 # 偙偺堦峴偩偗曄峏
  520. sprite.y += cell_data[i, 2]
  521. end
  522. end
  523. end
  524. end
  525. end
  526. class Sprite_Battler < RPG::Sprite
  527. include XRXS_FullScreen_AnimationOffset
  528. end
复制代码
需要替换的RTAB的版本下在地址
http://rpg.blue/forum.php?mod=at ... DIzNnw3OTc1NQ%3D%3D
希望能标注好修改的地方

——至今为止,谁也没能分析出他们为什么会因为说了这些话而死。

Lv1.梦旅人

梦石
0
星屑
50
在线时间
77 小时
注册时间
2008-5-16
帖子
194
2
发表于 2010-7-1 08:19:10 | 只看该作者
注释全是乱码。。。。。都不知道这个脚本是干什么的。。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-25 03:14

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表