Bienvenue visiteur !
|
Désactiver la neige
Statistiques
Liste des membres
Contact
Mentions légales
433 connectés actuellement
30765648 visiteurs depuis l'ouverture
2386 visiteurs aujourd'hui
Partenaires
Tous nos partenaires
Devenir partenaire
|
❤ 0 Auteur : Krazplay
Logiciel : RPG Maker XP
Nombre de scripts : 24
Fonctionnalités
- Window_EquipItem : patch de compatibilité avec un script n'affichant qu'une seule colonne
- Window_ShopSell : patch de compatibilité avec le script de forge (une seule colonne)
- Scene_Battle : permet d'utiliser l'élément "dériver" avec un nombre négatif, permettant au personnage de lancer une compétence grâce à cet élément même s'il ne la connait pas.
Installation
A insérer au-dessus de Main. Ces scripts sont à coller de haut en bas dans l'ordre.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
| ##################
# Krazplay Correction #
##################
# Je ne sais pas pourquoi mais la fenêtre Window_EquipItem continuait à afficher les objets
# sur 2 colonnes alors qu'avec le script permettant de voir toutes ses caracs en s'équipant
# il n'y a plus qu'une seule colonne disponible.
# Je corrige donc l'erreur ici.
# Krazplay
class Window_EquipItem < Window_Selectable
def draw_item(index)
item = @data[index]
x = 4 #x et y posait problème.
y = index * 32
case item
when RPG::Weapon
number = $game_party.weapon_number(item.id)
when RPG::Armor
number = $game_party.armor_number(item.id)
end
bitmap = RPG::Cache.icon(item.icon_name)
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
self.contents.font.color = normal_color
self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
end
end
# Dans la liste des objets grindables chez le forgeron, il ne devrait avoir qu'une seule colonne,
# or à la base ça n'a pas l'air d'être le cas...
class Window_ShopSell < Window_Selectable
def draw_item(index)
item = @data[index]
case item
when RPG::Item
number = $game_party.item_number(item.id)
when RPG::Weapon
number = $game_party.weapon_number(item.id)
when RPG::Armor
number = $game_party.armor_number(item.id)
end
if item.price > 0
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
x = 4 + index % 2 * (288 + 32)
x = 4 if self.is_a?(Window_SmithyItems) # correction
y = index / 2 * 32
y = index * 32 if self.is_a?(Window_SmithyItems) # correction
rect = Rect.new(x, y, self.width / @column_max - 32, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(item.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
end
end
# Ceci n'est pas une correction, mais permet d'utiliser l'élément "deriver " avec un nombre
# négatif, permettant au personnage de lancer une compétence grâce à cet élément même
# s'il ne la connait pas.
class Scene_Battle
def make_skill_action_result
@skill = $data_skills[@active_battler.current_action.skill_id]
unless @active_battler.current_action.forcing
unless @active_battler.skill_can_use?(@skill.id) or @active_battler.fderiver != nil
$game_temp.forcing_battler = nil
@phase4_step = 1
return
end
end
@active_battler.fderiver = nil
@active_battler.sp -= @skill.sp_cost
@status_window.refresh
@help_window.set_text(@skill.name, 1)
@animation1_id = @skill.animation1_id
@animation2_id = @skill.animation2_id
@common_event_id = @skill.common_event_id
set_target_battlers(@skill.scope)
for target in @target_battlers
target.skill_effect(@active_battler, @skill)
end
end
end |
XRXS Librairies:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
| # ▽△▽ XRXL 4. 第二カーソル 機構 ▽△▽ built 122410
# by 桜雅 在土
# ▽△▽ XRXL 4. 第二カーソル 機構 ▽△▽ built 122410
# by 桜雅 在土
# XRXS Libraires
# Ce script regroupe toutes les librairies nécessaires en un seul script
# Krazplay
#=====================#
# Librairie 4 #
#==============================================================================
# --- XRXS. 第二カーソル 機構 ---
#------------------------------------------------------------------------------
# ウィンドウに .index2 プロパティを追加します。
#==============================================================================
module XRXS_Cursor2
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(x, y, w, h)
super(x, y, w, h)
# 補助ウィンドウ(透明を作成:カーソル専用
@xrxsc2_window = Window_Selectable.new(self.x, self.y, self.width, self.height)
@xrxsc2_window.opacity = 0
@xrxsc2_window.active = false
@xrxsc2_window.index = -1
end
#--------------------------------------------------------------------------
# ○ 第二カーソルの設置
#--------------------------------------------------------------------------
def index2
return @xrxsc2_window.index
end
def index2=(index)
@xrxsc2_window.index = index
if index == -1
@xrxsc2_window.cursor_rect.empty
else
@xrxsc2_window.x = self.x
@xrxsc2_window.y = self.y
@xrxsc2_window.cursor_rect = self.cursor_rect
end
end
#--------------------------------------------------------------------------
# ○ 先頭の行の設定
#--------------------------------------------------------------------------
def top_row=(row)
super
# 補助ウィンドウの oy を更新
pre_oy = @xrxsc2_window.oy
@xrxsc2_window.oy = self.oy
@xrxsc2_window.cursor_rect.y -= self.oy - pre_oy
end
#--------------------------------------------------------------------------
# ○ 解放
#--------------------------------------------------------------------------
def dispose
@xrxsc2_window.dispose
super
end
#--------------------------------------------------------------------------
# ○ X, Y 座標
#--------------------------------------------------------------------------
def x=(n)
super
@xrxsc2_window.x = self.x unless @xrxsc2_window.nil?
end
def y=(n)
super
@xrxsc2_window.y = self.y unless @xrxsc2_window.nil?
end
#--------------------------------------------------------------------------
# ○ 可視状態
#--------------------------------------------------------------------------
def visible=(b)
@xrxsc2_window.visible = b
super
end
end
# ▽△▽ XRXS.付加属性名称判定 ▽△▽ built 091221
# by 桜雅 在土
#====================#
# Librairie 5 #
#==============================================================================
# --- XRXS. 付加属性名称判定モジュール ---
#==============================================================================
module XRXS
#--------------------------------------------------------------------------
# ○ 配列が指定名の属性を持つか判定
#--------------------------------------------------------------------------
def XRXS.element_check(set, element_name)
returnar = [false, 0, 0, []] # 存在したか?, 固定値の合計、%値の合計
return returnar if !set.is_a?(Array) or set.size == 0 or element_name == ""
for i in set
if $data_system.elements[i] =~ /^#{element_name}([+-]?[0-9]+)?(%)?/
returnar[0] = true
if $2 == nil
returnar[1] += $1.to_i
returnar[3].push($1.to_i)
else
returnar[2] += $1.to_i
end
end
end
return returnar
end
def XRXS.element_include?(set, element_name)
return element_check(set, element_name)[0]
end
def XRXS.element_amount(set, element_name)
return element_check(set, element_name)[1]
end
def XRXS.element_percent(set, element_name)
return element_check(set, element_name)[2]
end
def XRXS.element_numbers(set, element_name)
return element_check(set, element_name)[3]
end
end
# ▽△▽ XRXS. 装備属性取得機構 ▽△▽ built 092308
# by 桜雅 在土
#====================#
# Librairie 6 #
#==============================================================================
# --- XRXS. 装備属性取得機構 ---
#==============================================================================
class Game_Battler
#--------------------------------------------------------------------------
# ○ スキルの属性取得
#--------------------------------------------------------------------------
def skill_element_set(skill)
return skill.nil? ? [] : skill.element_set
end
#--------------------------------------------------------------------------
# ○ 全装備の属性取得
#--------------------------------------------------------------------------
def equip_element_set
return self.element_set + self.guard_element_set
end
#--------------------------------------------------------------------------
# ○ 全防具の属性取得
#--------------------------------------------------------------------------
def guard_element_set
return []
end
end
class Game_Actor < Game_Battler
def guard_element_set
set = []
for id in self.armor_ids
next if id.nil?
armor = $data_armors[id]
set += (armor != nil ? armor.guard_element_set : [])
end
return set
end
#--------------------------------------------------------------------------
# ○ 武器 ID配列
#--------------------------------------------------------------------------
def weapon_ids
unless self.is_a?(Game_Actor)
return []
end
ids = @weapon_ids != nil ? @weapon_ids : []
ids[0] = @weapon_id
return ids
end
#--------------------------------------------------------------------------
# ○ 防具 ID配列
#--------------------------------------------------------------------------
def armor_ids
unless self.is_a?(Game_Actor)
return []
end
ids = @armor_ids != nil ? @armor_ids : []
ids[0] = @armor1_id
ids[1] = @armor2_id
ids[2] = @armor3_id
ids[3] = @armor4_id
return ids
end
#--------------------------------------------------------------------------
# ○ 装備配列の取得
#--------------------------------------------------------------------------
def equipments
equipments = []
self.weapon_ids.each {|id| equipments.push($data_weapons[id])}
self.armor_ids.each {|id| equipments.push($data_armors[id])}
return equipments
end
#--------------------------------------------------------------------------
# ○ 装備中?
#--------------------------------------------------------------------------
def equiping?(item)
case item
when RPG::Weapon
return self.weapon_ids.include?(item.id)
when RPG::Armor
return self.armor_ids.include?(item.id)
else
return false
end
end
end
# ▽△▽ XRXS. コマンドウィンドウ追加機構 ▽△▽
# by 桜雅 在土
#====================#
# Librairie 7 #
#==============================================================================
# --- XRXS.コマンドウィンドウ追加機構 ---
#==============================================================================
module XRXS_Window_Command
#--------------------------------------------------------------------------
# ○ コマンドを追加
#--------------------------------------------------------------------------
def add_command(command)
#
# 初期化されていない場合、無効化判別用の配列 @disabled の初期化
#
@disabled = [] if @disabled.nil?
if @commands.size != @disabled.size
for i in 0...@commands.size
@disabled[i] = false
end
end
#
# 追加
#
@commands.push(command)
@disabled.push(false)
@item_max = @commands.size
self.y -= 32
self.height += 32
self.contents.dispose
self.contents = nil
self.contents = Bitmap.new(self.width - 32, @item_max * 32)
self.contents.font.name = $fontface # Ajouté par Krazplay
self.contents.font.size = $fontsize # Ajouté par Krazplay
refresh
for i in 0...@commands.size
if @disabled[i]
disable_item(i)
end
end
end
#--------------------------------------------------------------------------
# ○ 項目の無効化
# index : 項目番号
#--------------------------------------------------------------------------
def disable_item(index)
@disabled = [] if @disabled.nil?
@disabled[index] = true
draw_item(index, disabled_color)
end
#--------------------------------------------------------------------------
# ○ 項目の有効化
# index : 項目番号
#--------------------------------------------------------------------------
def enable_item(index)
@disabled = [] if @disabled.nil?
@disabled[index] = false
draw_item(index, normal_color)
end
end
class Window_Command < Window_Selectable
#--------------------------------------------------------------------------
# ○ インクルード
#--------------------------------------------------------------------------
include XRXS_Window_Command
#--------------------------------------------------------------------------
# ● 項目の無効化
#--------------------------------------------------------------------------
def disable_item(index)
super
end
end
# ▽△▽ XRXS.ウィンドウ行間可変機構 ▽△▽
# by 桜雅 在土
#====================#
# Librairie 10 #
#==============================================================================
# XRXS.ウィンドウ行間可変機構
#==============================================================================
module Module_SelectableEX
#--------------------------------------------------------------------------
# ○ 行間
#--------------------------------------------------------------------------
def line_height
return 32
end
#--------------------------------------------------------------------------
# ○ 位置揃え
#--------------------------------------------------------------------------
attr_accessor :align
#--------------------------------------------------------------------------
# ○ オブジェクト初期化
#--------------------------------------------------------------------------
def initialize(x, y, width, height)
super(x, y, width, height)
@item_max = 1
@column_max = 1
@index = -1
@align = 0
end
#--------------------------------------------------------------------------
# ○ 項目の描画
#--------------------------------------------------------------------------
def draw_item(index, color)
self.contents.font.color = color
rect = Rect.new(4, self.line_height * index, self.contents.width - 8, self.line_height)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
self.contents.draw_text(rect, @commands[index], self.align)
end
#--------------------------------------------------------------------------
# ○ 先頭の行の取得
#--------------------------------------------------------------------------
def top_row
# ウィンドウ内容の転送元 Y 座標を、1 行の高さ で割る
return self.oy / self.line_height
end
#--------------------------------------------------------------------------
# ○ 先頭の行の設定
#--------------------------------------------------------------------------
def top_row=(row)
super
self.oy = self.oy/32 * self.line_height
end
#--------------------------------------------------------------------------
# ○ 1 ページに表示できる行数の取得
#--------------------------------------------------------------------------
def page_row_max
# ウィンドウの高さから、フレームの高さ 32 を引き、1 行の高さ で割る
return (self.height - 32) / self.line_height
end
#--------------------------------------------------------------------------
# ○ カーソルの矩形更新
#--------------------------------------------------------------------------
def update_cursor_rect
super
unless @index < 0
y = (self.cursor_rect.y + self.oy) * self.line_height/32 - self.oy
self.cursor_rect.set(0, y, self.cursor_rect.width, self.line_height)
end
end
end
class Window_Command < Window_Selectable
#--------------------------------------------------------------------------
# ◇ インクルード
#--------------------------------------------------------------------------
include Module_SelectableEX
#--------------------------------------------------------------------------
# ○ 行間
#--------------------------------------------------------------------------
def line_height
return 32
end
#--------------------------------------------------------------------------
# ● オブジェクト初期化 [再定義]
#--------------------------------------------------------------------------
def initialize(width, commands)
# コマンドの個数からウィンドウの高さを算出
super(0, 0, width, commands.size * self.line_height + 32)
@item_max = commands.size
@commands = commands
self.contents = Bitmap.new(width - 32, @item_max * self.line_height)
self.contents.font.name = $fontface # Ajouté par Krazplay
self.contents.font.size = $fontsize # Ajouté par Krazplay
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# ● 項目の描画 [再定義]
#--------------------------------------------------------------------------
def draw_item(index, color)
super
end
end
# ▽△▽ XRXS. マップ名取得機構 ▽△▽
# by 桜雅 在土
#====================#
# Librairie 13 #
#==============================================================================
# □ XRXS. マップ名取得機構
#==============================================================================
class Game_Map
#--------------------------------------------------------------------------
# ○ マップ名を取得
#--------------------------------------------------------------------------
def name
$data_mapinfos = load_data("Data/MapInfos.rxdata") if $data_mapinfos.nil?
$data_mapinfos[@map_id].name
end
end
# ▽△▽ XRXS. RPGグラフィック機構 ▽△▽ built122012
# by 桜雅 在土
#====================#
# Librairie 14 #
#==============================================================================
# □ Bitmapライブラリ □
#==============================================================================
class Bitmap
#--------------------------------------------------------------------------
# ○ 縁文字の描画
#--------------------------------------------------------------------------
def draw_hemming_text(x, y, w, h, text, align = 0)
original_color = self.font.color.dup
self.font.color = Color.new(0,0,0,255)
self.draw_text(x , y , w, h, text, align)
self.draw_text(x , y+2, w, h, text, align)
self.draw_text(x+2, y+2, w, h, text, align)
self.draw_text(x+2, y , w, h, text, align)
self.font.color = original_color
self.draw_text(x+1, y+1, w, h, text, align)
end
end
#==============================================================================
# □ RPG_FileTest
#------------------------------------------------------------------------------
# RGSS暗号化にも対応したファイルチェックのモジュールです。
#==============================================================================
module RPG_FileTest
#--------------------------------------------------------------------------
# ○ キャラクターファイルの有無
#--------------------------------------------------------------------------
def RPG_FileTest.character_exist?(filename)
return RPG::Cache.character(filename, 0) rescue return false
end
#--------------------------------------------------------------------------
# ○ ピクチャーファイルの有無
#--------------------------------------------------------------------------
def RPG_FileTest.picture_exist?(filename)
return RPG::Cache.picture(filename) rescue return false
end
#--------------------------------------------------------------------------
# ○ バトラーグラフィックの有無
#--------------------------------------------------------------------------
def RPG_FileTest.battler_exist?(filename)
return RPG::Cache.battler(filename, 0) rescue return false
end
end
#==============================================================================
# □ Sprite_Number / Spriteset_Numbers
#==============================================================================
class Sprite_Number < Sprite
attr_reader :w
def initialize(font = Font.new)
super()
self.bitmap = Bitmap.new(1,1)
self.bitmap.font = font
max = s = 0
for i in 0..9
s = self.bitmap.text_size(i.to_s).width
max = s if max < s
end
@w = max + 2
@h = font.size + 2
self.bitmap.dispose
self.bitmap = Bitmap.new(@w, @h * 10)
self.bitmap.font = font
(0..9).each {|n| self.bitmap.draw_hemming_text(0, @h * n, @w, @h, n.to_s) }
self.src_rect.height /= 10
end
def number=(n)
self.src_rect.y = n * @h
end
def n=(n)
self.number = n
end
end
class Spriteset_Numbers
attr_reader :x
attr_reader :y
attr_reader :z
attr_reader :visible
def initialize(font = Font.new)
@font = font
@numbers = []
@x = 0
@y = 0
@z = 0
@visible = true
end
def number=(n)
@numbers.each{|number| number.n = 10 }
d = (n == 0 ? 0 : Math.log10(n).to_i)
for i in 0..d
@numbers[i] = Sprite_Number.new(@font) if @numbers[i] == nil
@numbers[i].n = n % 10
@numbers[i].visible = true
n /= 10
end
self.x = self.x
self.y = self.y
self.z = self.z
end
def n=(n)
self.number=(n)
end
def x=(n)
@x = n
for i in 0...@numbers.size
@numbers[i].x = n
n -= @numbers[i].w
end
end
def y=(n)
@y = n
@numbers.each{|sprite| sprite.y = @y }
end
def z=(n)
@z = n
@numbers.each{|sprite| sprite.z = @z }
end
def visible=(b)
@visible = b
@numbers.each{|sprite| sprite.visible = b }
end
def dispose
@numbers.each{|sprite| sprite.dispose }
end
end
# ▼▲▼ XRXS_MP16. 装備・素手に出来ない ▼▲▼
# by 桜雅 在土
#====================#
# Librairie 16 #
#==============================================================================
# □ カスタマイズポイント
#==============================================================================
class Scene_Equip
#
# 素手に出来ない種別の配列(0:武器、1:盾、2:頭...)
#
UNREMOVABLE_TYPES = []
#
# 例:武器と盾を素手にできなくする → UNREMOVABLE_TYPES = [0,1]
#
end
#==============================================================================
# ■ Window_EquipItem
#==============================================================================
class Window_EquipItem < Window_Selectable
#--------------------------------------------------------------------------
# ○ 公開インスタンス
#--------------------------------------------------------------------------
attr_reader :item_max
#--------------------------------------------------------------------------
# ○ 素手に出来ない
#--------------------------------------------------------------------------
def remove_ban_on
@unremovable = true
refresh
end
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
alias xrxs_mp16_refresh refresh
def refresh
# 呼び戻す
xrxs_mp16_refresh
#
if @unremovable
# ビットマップを作成し、全項目を描画
@item_max = @data.size
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max-1
draw_item(i)
end
@item_max -= 1
end
end
end
#==============================================================================
# ■ Scene_Equip
#==============================================================================
class Scene_Equip
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
alias xrxs_mp16_refresh refresh
def refresh
# 呼び戻す
xrxs_mp16_refresh
#
if @set
return
end
for type in UNREMOVABLE_TYPES
case type
when 0
@item_window1.remove_ban_on
when 1
@item_window2.remove_ban_on
when 2
@item_window3.remove_ban_on
when 3
@item_window4.remove_ban_on
when 4
@item_window5.remove_ban_on
end
end
@set = true
end
#--------------------------------------------------------------------------
# ● フレーム更新 (ライトウィンドウがアクティブの場合
#--------------------------------------------------------------------------
alias xrxs_mp16_update_right update_right
def update_right
# C ボタンが押された場合
if Input.trigger?(Input::C)
if @item_window.item_max == 0
# ブザー SE を演奏
$game_system.se_play($data_system.buzzer_se)
return
end
end
# 呼び戻す
xrxs_mp16_update_right
end
end |
XRXS Armes gérées indépendaments:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
| # ▼▲▼ XRXS24. システム・ウェポンプロパティXC. ver.2 ▼▲▼ built 092407
# by 桜雅 在土
#============================================
# XRXS Armes gérées indépendamment et accumullant de l'exp
#============================================
#
# L'élément "Nbre slots = (nombre entre 0 et 4)" permet de définir un nombre de slots à une
# arme, cad le nombre de place disponible pour sertir un objet.
# Si vous mettez l'élément "Nbre slots = 3" à une arme, celle-ci aura 3 places disponibles pour
# insérer des objets.
# Si une arme ne possède pas cet élément, il lui sera assigné le nombre de slots de base,
# cad celui défini dans GRANT_SLOT_NUMBER plus bas.
#
# command_weapon_gain_exp(id_de_l'acteur, exp_gagné_arme)
# Permet de faire gagner 'exp_gagné_arme' exp à l'arme équipé par l'acteur possédant l'ID
# 'id_de_l'acteur'
# Krazplay
#==============================================================================
# □ カスタマイズポイント
#==============================================================================
module XRXS24
#
# Afficher le level des armes à la place du nombre d'exemplaire possédé de l'arme.
#
SHOW_WEAPON_LEVEL_SYSTEM = true
#
# Le nombre de place de base disponible sur une arme pour sertir quelquechose.
# Maximum : 4
#
GRANT_SLOT_NUMBER = 3
#
# Fixer l'augmentation de l'attaque des armes lorsqu'elles sont upgradées à un % précis de
# leur attaque de base, 10% si mis à nil. Il me semble que j'ai parfois vu des résultats louches
# en le mettant à nil, alors je vous le déconseille.
#
FIX_ATK_INCREASE_PER_LV = 5
end
#==============================================================================
# □ 定数
#==============================================================================
module WPXC
include XRXS24
# 現在のプロパティの総数
PROPERTY_NUMBER = 8
# 以下のナンバーは 同値は指定不可能かつ0から個数-1までの整数
PROPERTY_ROOM_FILLED = 0 # プロパティ:部屋が空いているかどうか
PROPERTY_LEVEL = 1 # プロパティ:武器レベル
PROPERTY_EXP = 2 # プロパティ:エクストラポイント
PROPERTY_EXP_SECOND = 3 # プロパティ:エクストラポイント2ケタ目(32768進法
PROPERTY_ELEMENT_GRANT_1st = 4 # プロパティ:付与属性#1
PROPERTY_ELEMENT_GRANT_2nd = 5 # プロパティ:付与属性#2
PROPERTY_ELEMENT_GRANT_3rd = 6 # プロパティ:付与属性#3
PROPERTY_ELEMENT_GRANT_4th = 7 # プロパティ:付与属性#4
end
#==============================================================================
# ■ Game_Party
#==============================================================================
class Game_Party
#--------------------------------------------------------------------------
# ○ インクルード
#--------------------------------------------------------------------------
include WPXC
#--------------------------------------------------------------------------
# ○ 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :weapons_table # ウェポンテーブル
#--------------------------------------------------------------------------
# ウェポンテーブル解説
#--------------------------------------------------------------------------
#
# @weapons_table[weapon_id, room_no, property]
#
# weapon_id は、武器のIDです。
# room_no は、部屋のNo.です。武器がここに格納されます。
# property は、プロパティです。
#
# property
# 0 部屋の空き情報。0が空き、1が埋まり。
# 1 EXP数値。数値が入ります。
#
# 例えば、@weapons_table[1, 0, 0] が1の場合、
# ID.1の武器がNo.0の部屋に存在する。ということ。
#
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias xrxs24_initialize initialize
def initialize
# 呼び戻す
xrxs24_initialize
# ウェポンテーブルを作成
@weapons_table = Table.new(0,0,PROPERTY_NUMBER)
end
#--------------------------------------------------------------------------
# ● 武器の増加 → 武器の入手 [ 機能変更 ]
# weapon_id : 武器 ID
# n : 初期武器レベル # ←元[個数]
#--------------------------------------------------------------------------
def gain_weapon(weapon_id, n)
if n < 0
lose_weapon(weapon_id, n)
return
end
# weapon_id が 0 の場合
if weapon_id == 0
return 0
end
# ハッシュの個数データを更新
if weapon_id > 0
@weapons[weapon_id] = [[weapon_number(weapon_id) + 1, 0].max, 99].min
end
# ウェポンテーブルに新規アイテムを追加
# xsize(テーブルの武器IDの最大値が足りない場合リサイズ
if @weapons_table.xsize <= weapon_id
@weapons_table.resize(weapon_id+1, @weapons_table.ysize, @weapons_table.zsize)
end
# ysize(テーブルの個数の最大値が足りない場合リサイズ
num = weapon_number(weapon_id)
if @weapons_table.ysize <= num
@weapons_table.resize(@weapons_table.xsize, num+1, @weapons_table.zsize)
end
# ウェポンテーブルから空き部屋No.を検索
for i in 0...@weapons_table.ysize
# 空き部屋である 0 を返した場合
if @weapons_table[weapon_id, i, PROPERTY_ROOM_FILLED] == 0
# 部屋を埋める
@weapons_table[weapon_id, i, PROPERTY_ROOM_FILLED] = 1
# 初期武器レベルを設定
@weapons_table[weapon_id, i, PROPERTY_LEVEL] = n
# EXPをレベルの三乗に設定
expp = n ** 3
# EXPの数値を設定
@weapons_table[weapon_id, i, PROPERTY_EXP] = expp%32768
@weapons_table[weapon_id, i, PROPERTY_EXP_SECOND] = (expp/32768).floor
# 終了、部屋番号を返す
return i
end
end
# 空き部屋が無かった場合
p "空き部屋が無かった場合"
end
#--------------------------------------------------------------------------
# ● 武器を捨てる [ 再定義 ]
#--------------------------------------------------------------------------
def lose_weapon(weapon_id, n)
# アイテムを探す
for j in 0...@weapons_table.ysize
# 指定のアイテムが見つかった場合は、減少させて終了
if @weapons_table[weapon_id, j, PROPERTY_ROOM_FILLED] == 1
lose_weapon_wp(weapon_id, j)
return
end
end
end
#--------------------------------------------------------------------------
# ○ 武器を捨てる(部屋No.指定
# weapon_id : 武器 ID
# room_no : 部屋No.
#--------------------------------------------------------------------------
def lose_weapon_wp(weapon_id, room_no)
# weapon_id が 0 の場合
if weapon_id == 0
return 0
end
# ハッシュの個数データを更新
if weapon_id > 0
@weapons[weapon_id] = weapon_number(weapon_id) - 1
end
# 全プロパティを 0 化
for i in 0...PROPERTY_NUMBER
@weapons_table[weapon_id, room_no, i] = 0
end
end
#--------------------------------------------------------------------------
# ○ プロパティを詰める
#--------------------------------------------------------------------------
def fill_weapon_wp(weapon_id)
# 詰める作業
for j in 0...@weapons_table.ysize-1
# 部屋が空いている場合
room_state = @weapons_table[weapon_id, j, PROPERTY_ROOM_FILLED]
if room_state != 1
# 次の部屋からプロパティを全て移動する
for i in 0...PROPERTY_NUMBER
@weapons_table[weapon_id, j, i] = @weapons_table[weapon_id, j+1, i]
@weapons_table[weapon_id, j+1, i] = 0
end
end
end
end
end
#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ○ インクルード
#--------------------------------------------------------------------------
include WPXC
#--------------------------------------------------------------------------
# ○ 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :weapon_property # 装備中の武器のウェポンプロパティ
#--------------------------------------------------------------------------
# ● セットアップ
#--------------------------------------------------------------------------
alias xrxs24_setup setup
def setup(actor_id)
xrxs24_setup(actor_id)
# 初期化
@weapon_ids = [0] if @weapon_ids.nil?
@weapon_property = Table.new(PROPERTY_NUMBER)
@weapon_property[PROPERTY_LEVEL] = 1 # 初期武器のレベルは1
@weapon_property[PROPERTY_EXP] = 1
end
#--------------------------------------------------------------------------
# ● 通常攻撃の属性取得
#--------------------------------------------------------------------------
alias xrxs24_element_set element_set
def element_set
# 基本属性を取得
attack_element_set = xrxs24_element_set
# 武器に付与されている属性のIDの配列を追加
attack_element_set += self.wpxc_elements_set
# 値を返す
return attack_element_set
end
#--------------------------------------------------------------------------
# ○ 武器に付与されている属性のIDの配列
#--------------------------------------------------------------------------
def wpxc_elements_set
set = []
unless @weapon_property.nil?
for j in [PROPERTY_ELEMENT_GRANT_1st,
PROPERTY_ELEMENT_GRANT_2nd,
PROPERTY_ELEMENT_GRANT_3rd,
PROPERTY_ELEMENT_GRANT_4th]
id = @weapon_property[j]
if id > 0
set.push(id)
end
end
end
return set
end
#--------------------------------------------------------------------------
# ○ 武器の変更 [ WPXC版 ]
# equip_type : 武器のインデックス(通常は0のみ
# id : 武器ID (0 なら装備解除
# room_no : 武器部屋No.
#--------------------------------------------------------------------------
def equip_wp(equip_type, id, room_no)
if id == 0 or $game_party.weapon_number(id) > 0
weapon_id = @weapon_id
# 現在装備武器
if weapon_id != 0
# 現在装備を増やす
equip_used_room_no = $game_party.gain_weapon(weapon_id, 1)
# アクター現在武器のプロパティ
for i in 0...PROPERTY_NUMBER
# プロパティを部屋へコピー
$game_party.weapons_table[weapon_id, equip_used_room_no, i] = @weapon_property[i]
# コピー後に削除
@weapon_property[i] = 0
end
@weapon_property[PROPERTY_ROOM_FILLED] = 0
# 部屋の空き状況は無条件で 1 にする
$game_party.weapons_table[weapon_id, equip_used_room_no, PROPERTY_ROOM_FILLED] = 1
end
# 新規装着
if id != 0
# 装備対象武器のプロパティ
for i in 0...PROPERTY_NUMBER
# プロパティをアクターへコピー
@weapon_property[i] = $game_party.weapons_table[id, room_no, i]
# コピー後に削除
$game_party.weapons_table[id, room_no, i] = 0
end
# 装備対象のアイテムを消す
$game_party.lose_weapon_wp(id, room_no)
# 外す場合
else
# アクタープロパティを初期化
for i in 0...PROPERTY_NUMBER
@weapon_property[i] = 0
end
end
# 装備変更
@weapon_id = id
end
return equip_used_room_no
end
#--------------------------------------------------------------------------
# ● 基本攻撃力の取得
#--------------------------------------------------------------------------
alias xrxs24_base_atk base_atk
def base_atk
# 基本攻撃力の取得
atk = xrxs24_base_atk
# 武器Lv.による強化
weapon = $data_weapons[@weapon_id]
if weapon.is_a?(RPG::Weapon)
increase_percent = XRXS24::FIX_ATK_INCREASE_PER_LV
increase_percent = weapon.atk%10 if increase_percent.nil?
atk += (weapon.atk * (increase_percent * @weapon_property[PROPERTY_LEVEL]) / 100.0).floor
end
# 特殊効果:武器ATK(±数字[%]
returnar = XRXS.element_check(self.equip_element_set, "ATK") # modifié par Krazplay
if returnar[0] and atk > 0
atk = (atk * (100 + returnar[2]) / 100.0).floor
atk+= returnar[1]
end
# ----------------
return atk
end
#--------------------------------------------------------------------------
# ● 基本物理防御の取得
#--------------------------------------------------------------------------
alias xrxs24_base_pdef base_pdef
def base_pdef
# 基本物理防御の取得
pdef = xrxs24_base_pdef
# 武器の物理防御の取得
weapon = $data_weapons[@weapon_id]
weapon_pdef = weapon != nil ? weapon.pdef : 0
# 特殊効果:武器PDEF(±数字[%]
returnar = XRXS.element_check(self.equip_element_set, "PDEF") # modifié par Krazplay
if returnar[0] and pdef > 0
pdef -= weapon_pdef
weapon_pdef =(weapon_pdef * (100 + returnar[2]) / 100.0).floor
weapon_pdef += returnar[1]
pdef += weapon_pdef
end
# ----------------
return pdef
end
#--------------------------------------------------------------------------
# ● 基本魔法防御の取得
#--------------------------------------------------------------------------
alias xrxs24_base_mdef base_mdef
def base_mdef
# 基本物理防御の取得
mdef = xrxs24_base_mdef
# 武器の物理防御の取得
weapon = $data_weapons[@weapon_id]
weapon_mdef = weapon != nil ? weapon.mdef : 0
# 特殊効果:武器MDEF(±数字[%]
returnar = XRXS.element_check(self.equip_element_set, "MDEF") # modifié par Krazplay
if returnar[0] and mdef > 0
mdef -= weapon_mdef
weapon_mdef =(weapon_mdef * (100 + returnar[2]) / 100.0).floor
weapon_mdef += returnar[1]
mdef += weapon_mdef
end
# ----------------
return mdef
end
end
#==============================================================================
# ■ Window_Item
#==============================================================================
class Window_Item < Window_Selectable
#--------------------------------------------------------------------------
# ● リフレッシュ [ 再定義 ]
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
@data_room_no = []
# アイテムを追加
for i in 1...$data_items.size
if $game_party.item_number(i) > 0
@data.push($data_items[i])
end
end
# 戦闘中以外なら武器と防具も追加
unless $game_temp.in_battle
for i in 1...$data_weapons.size
# /--- 武器の個別描写を行う
for j in 0...$game_party.weapons_table.ysize
if $game_party.weapons_table[i, j, WPXC::PROPERTY_ROOM_FILLED] == 1
# 武器をプッシュ
@data.push($data_weapons[i])
# 部屋No.を合わせる
@data_room_no[@data.size-1] = j
end
end
# ---/
end
for i in 1...$data_armors.size
if $game_party.armor_number(i) > 0
@data.push($data_armors[i])
end
end
end
# 項目数が 0 でなければビットマップを作成し、全項目を描画
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
self.contents.font.name = $fontface # Ajouté par Krazplay
self.contents.font.size = $fontsize # Ajouté par Krazplay
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
# ○ アイテムの部屋番号の取得
#--------------------------------------------------------------------------
def item_room_no
return @data_room_no[self.index]
end
#--------------------------------------------------------------------------
# ● 項目の描画
#--------------------------------------------------------------------------
if WPXC::SHOW_WEAPON_LEVEL_SYSTEM # /---
alias xrxs24_draw_item draw_item
def draw_item(index)
item = @data[index]
case item
when RPG::Weapon
self.contents.font.color = disabled_color
room_no = @data_room_no[index].to_i
number = $game_party.weapon_number(item.id)
x = 4 + index % @column_max * (288 + 32)
y = index / @column_max * 32
rect = Rect.new(x, y, self.width / @column_max - 32, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(item.icon_name)
if item.is_a?(RPG::Item) and $game_party.item_can_use?(item.id)
opacity = 255
else
opacity = 128
end
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
# 名前
self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
# 武器レベル部分
self.contents.font.color = disabled_color
self.contents.draw_text(x +224, y, 56, 32, "Lv. ")
level = $game_party.weapons_table[item.id, room_no, WPXC::PROPERTY_LEVEL].to_s
self.contents.draw_text(x + 232, y, 48, 32, level, 2)
else
xrxs24_draw_item(index)
end
end
end # ---/
end
#==============================================================================
# ■ Window_EquipRight
#==============================================================================
class Window_EquipRight < Window_Selectable
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
if WPXC::SHOW_WEAPON_LEVEL_SYSTEM # /---
alias xrxs24_refresh refresh
def refresh
# 呼び戻す
xrxs24_refresh
# 武器レベルの描写を追加
xrxs_additional_refresh
end
end # ---/
#--------------------------------------------------------------------------
# ○ 拡張描写部分
#--------------------------------------------------------------------------
def xrxs_additional_refresh
# 武器レベルの描写を追加
if @data[0] != nil
self.contents.font.color = system_color
self.contents.draw_text(276, 0, 56, 32, "Lv. ")
self.contents.font.color = normal_color
level = @actor.weapon_property[WPXC::PROPERTY_LEVEL].to_s
self.contents.draw_text(284, 0, 48, 32, level, 2)
end
end
end
#==============================================================================
# ■ Window_EquipItem
#==============================================================================
class Window_EquipItem < Window_Selectable
#--------------------------------------------------------------------------
# ● リフレッシュ [ 再定義 ]
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
@data_room_no = []
# 装備可能な武器を追加
if @equip_type == 0
weapon_set = $data_classes[@actor.class_id].weapon_set
for i in 1...$data_weapons.size
# 所有していない or 装備できない 場合は飛ばし{ |
La démo
Mis à jour le 13 juillet 2020.
|
eimerej -
posté le 08/10/2008 à 07:50:58 (1 messages postés)
| | quelqu'un aurait-il un site ou il y a des faceset 42 pix svp car avec le script d'ordre des tours, ya que ma magicienne qui a une icone
|
Vins (visiteur non enregistré) -
posté le 15/10/2008 à 21:16:22
| Cool la démo.
En copiant les scripts ne marchent pas mais suffit d'éditer la démo
|
Nawa Kyo -
posté le 27/04/2009 à 19:26:04 (4 messages postés)
| | C'est que j'appelle du gros travail !
Félicitations,on voit que tu ne te fiches pas des autres makers !
Tu as fait des efforts pour le perfectionner et l'essentiel est là.
Mais tu dois te dire qu'il possède encore,bien sûr,quelques défauts (enfin à mes yeux d'humble observateur fainéant) :
Je ne dirais pas qu'il est trop compliqué à manipuler, où quoi que ce soit d'autre car un script un tant soi peu poussé nécessite un minimum d'efforts de la part de son utilisateur si l'on reste objectif (et généralement pas autant d'efforts que le créateur en à fait ).
Reste à faire des explications claires sur l'utilisation du script pour que le succès soit complet ! (j'avoue,dams999,c'est bien mais fais d'avantages d'efforts la prochaine fois pour le script de Krazplay...)
Maintenant laisse moi te dire ce qui m'a un peu démoralisé lorsque je m'apprêtait à tester ton alléchante création :
Il est totalement,entièrement (je me répète car je suis triste) conçu pour le système de combat original de RPG Maker XP (qui sera utile pour tout les makers l'appréciant plus ou moins) !
Le système de combat de mon projet de création utilise la "Tactical Advanced Battle System" (personnalisée un peu mais ça ne perturbe pas les bases) qui ne peut s'associer avec ton oeuvre ruby !
Et quelle déception lorsque je vit que je ne pouvais même pas profiter du système de forge car les armes n'évoluent pas dans mon système de combat !
En contrepartie,tu m'as donné envie de me mettre dès maintenant plus sérieusement au ruby (il était temps) pour cesser de suivre le troupeau !
Salut l'ami !
Nawa Kyo.
Krazplay + : Créations utiles,doué,sympathique,humour certain.
Krazplay - : Fautes d'orthographes.
|
Glamdrael -
posté le 31/05/2009 à 12:13:22 (22 messages postés)
| Fondateur Lyly's Dreams | Bon, je vais faire mentir Nawa...
Citation: Il est totalement,entièrement (je me répète car je suis triste) conçu pour le système de combat original de RPG Maker XP |
Et je vais rajouter "presque". Après un énorme nettoyage, j'ai réussi à faire tourner le script CBS (combat de profil à la rpg maker 2003) avec les fonctionnalités suivantes du script de Krazplay :
- forge
- stats affichées à l'équipement d'un objet
- fenêtre de level up
- état améliorant les éléments
- contrôle des slips damages
- graphe des éléments
- objets apprenant un skill
- gagner skill avec l'équipement
- correction des dégâts élémentaires
Ce qui n'est déjà pas si mal il me semble. Pour ceux que ça intéresse, les éléments action EX et damage EX ne sont absolument pas compatibles avec le script CBS, il faudrait tout réécrire (pourquoi pas un jour, je verrai).
Si certaines personnes sont intéressées, faites le moi savoir, et je tenterai de rendre le script de forge de karzplay compatible avec le TBS.
|
Il n'y a que deux manières d'écrire de bons algorithmes. Seule la troisième est la bonne... |
Crazy maker -
posté le 26/05/2011 à 09:18:43 (9 messages postés)
| Fou | il n'y a que le fichier actors.rxdata dans le zip de la démo...
|
On raconte qu'un fou hante ta ville... |
Gari -
posté le 11/01/2021 à 15:05:20 (5901 messages postés)
- | | Le dernier script est incomplet à cause de la casse onirique, mais peut être retrouvé ici : https://web.archive.org/web/20191019165806/http://xrxs.at-ninja.jp/No24.txt
|
|
|
|