Module: R3EXS
- Defined in:
- lib/R3EXS.rb,
lib/R3EXS/ast.rb,
lib/R3EXS/error.rb,
lib/R3EXS/utils.rb,
lib/R3EXS/logger.rb,
lib/R3EXS/version.rb,
lib/R3EXS/RGSS3_R3EXS.rb,
lib/R3EXS/json_rvdata2.rb,
lib/R3EXS/rvdata2_json.rb,
lib/R3EXS/inject_strings.rb,
lib/R3EXS/extract_strings.rb
Overview
R3EXS 主模块
Defined Under Namespace
Modules: Utils Classes: Actor, Animation, Armor, BaseItem, Class, CommonEvent, Enemy, EquipItem, Event, EventCommand, Item, JsonDirError, Logger, ManualTransFilePathError, Map, MapInfo, ModuleNameError, MoveCommand, MoveRoute, R3EXSJsonFileError, RGSS3AFileError, RPGJsonFileError, Rvdata2DirError, Rvdata2PathError, ScriptsInfoPathError, Skill, State, StringsExtractor, StringsInjector, System, Tileset, Troop, UsableItem, Weapon
Constant Summary collapse
- VERSION =
版本号
'2.0.0'- EVENT_COMMANDS =
事件指令的命令名称
{ 0 => 'Empty', # [string(Face Graphic name)]---[int(Face Graphic index)]---[int:{0:Normal Window, 1:Dim Background, 2:Transparent}]---[int:{0:Top, 1:Middle, 2:Bottom}]---END 101 => 'ShowTextAttributes', # [Array<string>(Choices Array)]---[int:{0:Disallow, 1:Choice 1, 2:Choice 2, 3:Choice 3, 4:Choice 4, 5:Branch}(When Cancel)]---END 102 => 'ShowChoices', # [int(Variable for Number)]---[int:{1~8}(Digits)]---END 103 => 'InputNumber', # [int(Variable for Item ID)]---END 104 => 'SelectKeyItem', # [int:{1~8}(Speed)]---[bool(No Fast Forward)]---END 105 => 'ShowScrollingTextAttributes', # [string]---END 108 => 'Comment', # |--[int:0(Switch)]---[int(Switch ID)]---[int{0:ON, 1:OFF}]---END # | # | |--[int:0(Compare to Constant)]---[int(Number)]-------| # |--[int:1(Variable)]---[int(Variable ID)]--| |--[int{0:==, 1:>=, 2:<=, 3:>, 4:<, 5:!=}]---END # | |--[int:1(Compare to Variable)]---[int(Variable ID)]--| # | # |--[int:2(Self Switch)]---[string{'A', 'B', 'C', 'D'}]---[int{0:ON, 1:OFF}]---END # | # |--[int:3(Timer)]---[int:{0~5999}(sec)]---[int{0:>=, 1:<=}]---END # | # | |--[int:0(In the Party)]---END # | | # | |--[int:1(Name)]---[string]---END # | | # | |--[int:2(Class)]---[int(Class ID)]---END # | | # |--[int:4(Actor)]---[int(Actor ID)]--------|--[int:3(Skill)]---[int(Skill ID)]---END # | | # | |--[int:4(Weapon)]---[int(Weapon ID)]---END # | | # | |--[int:5(Armor)]---[int(Armor ID)]---END # | | # | |--[int:6(State)]---[int(State ID)]---END # | # | |--[int:0(Appeared)---END # |--[int:5(Enemy)]---[int(Enemy ID)]--------| # | |--[int:1(State)]---[int(State ID)]---END # | # |--[int:6(Character)]---[int:{-1:Player, 0:This event, 1:EV001, ...}]---[int:{2:Down, 4:Left, 6:Right, 8:Up}]---END # | # |--[int:7(Gold)]---[int(Money)]---[int{0:>=, 1:<=, 2:<}]---END # | # |--[int:8(Item)]---[int(Item ID)]---END # | # |--[int:9(Weapon)]---[int(Weapon ID)]---[bool(Include Equipments)]---END # | # |--[int:10(Armor)]---[int(Armor ID)]---[bool(Include Equipments)]---END # | # |--[int:11(Button)]---[int:{2:Down, 4:Left, 6:Right, 8:Up, 11:A, 12:B, 13:C, 14:X, 15:Y, 16:Z, 17:L, 18:R}]---END # | # |--[int:12(Script)]---[string]---END # | # |--[int:13(Vehicle)]---[int:{0:Boat, 1:Ship, 2:Airship}]---END 111 => 'ConditionalBranch', 112 => 'Loop', 113 => 'BreakLoop', 115 => 'ExitEventProcessing', # [int(Common Event ID)]---END 117 => 'CallCommonEvent', # [string]---END 118 => 'Label', # [string]---END 119 => 'JumpToLabel', # [int(Switch Begin ID)]---[int(Switch End ID)]---[int:{0:ON, 1:OFF}]---END 121 => 'ControlSwitches', # |--[int:0(Constant)]---[int(Number)]---END # | # |--[int:1(Variable)]---[int(Variable ID)]---END # | # |--[int:2(Random)]---[int(Min)]---[int(Max)]---END # | # | |--[int:{0:Item, 1:Weapon, 2:Armor}]---[int(Corresponded Item ID)]---[int:0]---END # | | # [int(Variable Begin ID)]---[int(Variable End ID)]---[int:{0:Set, 1:Add, 2:Sub, 3:Mul, 4:Div, 5:Mod}]--| |--[int:3(Actor)]---[int:(Actor ID)]---[int:{0:Level, 1:EXP, 2:HP, 3:MP, 4:MHP, 5:MMP, 6:ATK, 7:DEF, 8:MAT, 9:MDF, 10:AGI, 11:LUK}]---END # | | # | |--[int:4(Enemy)]---[int:(Enemy ID)]---[int:{0:HP, 1:MP, 2:MHP, 3:MMP, 4:ATK, 5:DEF, 6:MAT, 7:MDF, 8:AGI, 9:LUK}]---END # |--[int:3(Game Data)]--| # | |--[int:5(Character)]---[int:{-1:Player, 0:This Event, 1:EV001, ...}]---[int:{0:Map X, 1:Map Y, 2:Direction, 3:Screen X ,4:Screen Y}]---END # | | # | |--[int:6(Party)]---[int:{0~7}(Member ID)]---[int:0]---END # | | # | |--[int:7(Other)]---[int:{0(Map ID), 1(Party Members), 2(Gold), 3(Steps), 4(Play Time), 5(Timer), 6(Save Count), 7(Battle Count)}]---[int:0]---END # | # |--[int:4(Scripts)]---[string]---END 122 => 'ControlVariables', # [string:{'A', 'B', 'C', 'D'}(Self Switch Name)]---[int:{0:ON, 1:OFF}]---END 123 => 'ControlSelfSwitch', # [int:{0:Start, 1:Stop}]---[int:{0~5999}(sec)]---END 124 => 'ControlTimer', # |--[int:0(Constant)]---[int:{0~9999999}(Number)]---END # [int:{0:Increase, 1:Decrease}]--| # |--[int:1(Variable)]---[int(Variable ID)]---END 125 => 'ChangeGold', # |--[int:0(Constant)]---[int:{0~9999999}(Number)]---END # [int(Item ID)]---[int:{0:Increase, 1:Decrease}]--| # |--[int:1(Variable)]---[int(Variable ID)]---END 126 => 'ChangeItems', # |--[int:0(Constant)]---[int:{0~9999999}(Number)]--| # |--[int:0(Increase)]--| |--[bool:false(Include Equipment)]---END # | |--[int:1(Variable)]---[int(Variable ID)]---------| # [int(Weapon ID)]--| # | |--[int:0(Constant)]---[int:{0~9999999}(Number)]--| # |--[int:1(Decrease)]--| |--[bool(Include Equipment)]---END # |--[int:1(Variable)]---[int(Variable ID)]---------| 127 => 'ChangeWeapons', # |--[int:0(Constant)]---[int:{0~9999999}(Number)]--| # |--[int:0(Increase)]--| |--[bool:false(Include Equipment)]---END # | |--[int:1(Variable)]---[int(Variable ID)]---------| # [int(Armor ID)]--| # | |--[int:0(Constant)]---[int:{0~9999999}(Number)]--| # |--[int:1(Decrease)]--| |--[bool(Include Equipment)]---END # |--[int:1(Variable)]---[int(Variable ID)]---------| 128 => 'ChangeArmor', # [int(Actor ID)]---[int:{0:Add, 1:Remove}]---[int:{0:NO, 1:YES}(Initialize)]---END 129 => 'ChangePartyMember', # [RPG::BGM]---END 132 => 'ChangeBattleBGM', # [RPG::ME]---END 133 => 'ChangeBattleEndME', # [int:{0:Disable, 1:Enable}]---END 134 => 'ChangeSaveAccess', # [int:{0:Disable, 1:Enable}]---END 135 => 'ChangeMenuAccess', # [int:{0:Disable, 1:Enable}]---END 136 => 'ChangeEncounter', # [int:{0:Disable, 1:Enable}]---END 137 => 'ChangeFormationAccess', # [RPG::Tone]---END 138 => 'ChangeWindowColor', # |--[int:0(Direct Designation)]---[int(Map ID)]---[int(Map X)]---[int(Map Y)]-------------------------------------------------------------------------------------| # | |--[int:{0:Retain, 2:Down, 4:Left, 6:Right, 8:Up}(Direction)]---[int:{0:Normal, 1:White, 2:None}(Fade)]---END # |--[int:1(Designation with Variables)]---[int(Map ID Corresponded Variable ID)]---[int(Map X Corresponded Variable ID)]---[int(Map Y Corresponded Variable ID)]--| 201 => 'TransferPlayer', # |--[int:0(Direct Designation)]---[int(Map ID)]---[int(Map X)]---[int(Map Y)]---END # [int:{0:Boat, 1:Ship, 2:Airship}]--| # |--[int:1(Designation with Variables)]---[int(Map ID Corresponded Variable ID)]---[int(Map X Corresponded Variable ID)]---[int(Map Y Corresponded Variable ID)]---END 202 => 'SetVehicleLocation', # |--[int:0(Direct Designation)]---[int(Map X)]---[int(Map Y)]------------------------------------------------------------| # | | # [int:{0:This Event, 1:EV001, ...}]----------|--[int:1(Designation with Variables)]---[int(Map X Corresponded Variable ID)]---[int(Map Y Corresponded Variable ID)]--|--[int:{0:Retain, 2:Down, 4:Left, 6:Right, 8:Up}(Direction)]---END # | | # |--[int:2(Exchange with Another Event)]---[int(Exchanged Event ID)]---[int:0]-------------------------------------------| 203 => 'SetEventLocation', # [int:{2:Down, 4:Left, 6:Right, 8:Up}]---[int:{0~100}(Distance)]---[int:{1:1/8 Speed, 2:1/4 Speed, 3:1/2 Speed, 4:Normal, 5:2 Speed, 6:4 Speed}]---END 204 => 'ScrollMap', # [int:{-1:Player, 0:This Event, 1:EV001, ...}]---[RPG::MoveRoute(45 is Script)]---END 205 => 'SetMoveRoute', # END 206 => 'GetSwitchVehicle', # [int:{0:ON, 1:OFF}]---END 211 => 'ChangeTransparency', # [int:{-1:Player, 0:This Event, 1:EV001, ...}]---[int(Animation ID)]---[bool(Wait for Completion)]---END 212 => 'ShowAnimation', # [int:{-1:Player, 0:This Event, 1:EV001, ...}]---[int(Ballon Icon ID)]---[bool(Wait for Completion)]---END 213 => 'ShowBalloonIcon', 214 => 'EraseEvent', # [int:{0:ON, 1:OFF}]---END 216 => 'ChangePlayerFollowers', 217 => 'GatherFollowers', 221 => 'FadeoutScreen', 222 => 'FadeinScreen', # [RPG::Tone]---[int:{0~600}(Time 1/60 sec)]---[bool(Wait for Completion)]---END 223 => 'TintScreen', # [RPG::Color]---[int:{0~600}(Time 1/60 sec)]---[bool(Wait for Completion)]---END 224 => 'FlashScreen', # [int:{1~9}(Power)]---[int:{1~9}(Speed)]---[int:{0~600}(Time 1/60 sec)]---[bool(Wait for Completion)]---END 225 => 'ShakeScreen', # [int:{0~999}(Time 1/60 sec)]---END 230 => 'Wait', # |--[int:0(Constant)]---[int:{-9999~9999}(Map X)]---[int:{-9999~9999}(Map Y)]--------------------------| # [int:{1~100}(Number)]---[string(Picture Graphic Name)]---[int:{0:Upper Left, 1:Center}(Origin)]--| |--[int:{0~2000}(Width %)]---[int:{0~2000}(Height %)]---[int:{0~255}(Opacity)]---[int:{0:Normal, 1:Add, 2:Sub}]---END # |--[int:1(Variable)]---[int(Map X Corresponded Variable ID)]---[int(Map Y Corresponded Variable ID)]--| 231 => 'ShowPicture', # |--[int:0(Constant)]---[int:{-9999~9999}(Map X)]---[int:{-9999~9999}(Map Y)]--------------------------| # [int:{1~100}(Number)]---[int:{0:Upper Left, 1:Center}(Origin)]--| |--[int:{0~2000}(Width %)]---[int:{0~2000}(Height %)]---[int:{0~255}(Opacity)]---[int:{0:Normal, 1:Add, 2:Sub}]---[int:{0~600}(Time 1/60 sec)]---[bool(Wait for Completion)]---END # |--[int:1(Variable)]---[int(Map X Corresponded Variable ID)]---[int(Map Y Corresponded Variable ID)]--| 232 => 'MovePicture', # [int:{1~100}(Number)]-[int:{-90~90}(Speed)]--END 233 => 'RotatePicture', # [int:{1~100}(Number)]---[RPG::Tone]---[int:{0~600}(Time 1/60 sec)]---[bool(Wait for Completion)]---END 234 => 'TintPicture', # [int:{1~100}(Number)]---END 235 => 'ErasePicture', # [string:{":none", ":rain", ":storm", ":snow"}]---[int:{0~9}(Power)]---[int:{0~600}(Time 1/60 sec)]---[bool(Wait for Completion)]---END 236 => 'SetWeatherEffects', # [RPG::BGM]---END 241 => 'PlayBGM', # [int:{1~60}(Time sec)]---END 242 => 'FadeoutBGM', 243 => 'SaveBGM', 244 => 'ReplayBGM', # [RPG::BGM]---END 245 => 'PlayBGS', # [int:{1~60}(Time sec)]---END 246 => 'FadeoutBGS', # [RPG::ME]---END 249 => 'PlayME', # [RPG::SE]---END 250 => 'PlaySE', 251 => 'StopSE', # [string(Movie Name)]---END 261 => 'PlayMovie', # [int:{0:ON, 1:OFF}]---END 281 => 'ChangeMapNameDisplay', # [int(Tileset ID)]---END 282 => 'ChangeTileset', # [string(Floor Picture)]---[string(Wall Picture)]---END 283 => 'ChangeBattleBack', # [string(Distant view Picture)]---[bool(Loop Horizontal)]---[bool(Loop Vertical)]---[int(-32~32)(Horizontal Scroll)]---[int(-32~32)(Vertical Scroll)]---END 284 => 'ChangeParallaxBack', # |--[int:0(Direct Designation)]---[int(Map X)]---[int(Map Y)]---END # [int(Variable for Info)]---[int:{0:Terrain, 1:Event ID, 2:Tile ID(Layer 1), 3:Tile ID(Layer 2), 4:Tile ID(Layer 3), 5:Region ID}(Info Type)]--| # |--[int:1(Designation with Variables)]---[int(Map X Corresponded Variable ID)]---[int(Map Y Corresponded Variable ID)]---END 285 => 'GetLocationInfo', # |--[int:0(Direct Designation)]---[int(Enemy ID)]-----------------------------------| # | |--[bool(Can Escape)]---[bool(Continue Even When Loser)]---END # |--[int:1(Designation with Variables)]---[int(Enemy ID Corresponded Variable ID)]--| 301 => 'BattleProcessing', # |--[int:0(Price: Standard)]---[int:0]------------------| # [int:{0:Item, 1:Weapon, 2:Armor}]---[int(Corresponded Item ID)]--| |--[bool(Purchase Only)]---END # |--[int:1(Price: Specify)]---[int:{0~9999999}(Price)]--| 302 => 'ShopProcessing', # [int(Actor ID)]---[int:{1~16}(Max Characters)]---END 303 => 'NameInputProcessing', # |--[int:0(Constant)]---[int:{1~9999}(Number)]--| # |--[int:0(Increase)]--| |--[bool:false(Allow Knockout)]---END # | |--[int:1(Variable)]---[int(Variable ID)]------| # |--[int:0(Fixed)]---[int:{0:Entire Party, 1:Actor 001, ...}]--| # | | |--[int:0(Constant)]---[int:{1~9999}(Number)]--| # | |--[int:1(Decrease)]--| |--[bool(Allow Knockout)]---END # | |--[int:1(Variable)]---[int(Variable ID)]------| # | # | |--[int:0(Constant)]---[int:{1~9999}(Number)]--| # | |--[int:0(Increase)]--| |--[bool:false(Allow Knockout)]---END # | | |--[int:1(Variable)]---[int(Variable ID)]------| # |--[int:1(Variable)]---[int(Variable ID)]-----------------------| # | |--[int:0(Constant)]---[int:{1~9999}(Number)]--| # |--[int:1(Decrease)]--| |--[bool(Allow Knockout)]---END # |--[int:1(Variable)]---[int(Variable ID)]------| 311 => 'ChangeHP', # |--[int:0(Fixed)]---[int:{0:Entire Party, 1:Actor 001, ...}]--| |--[int:0(Constant)]---[int:{1~9999}(Number)]---END # | |--[int:{0:Increase, 1:Decrease}]--| # |--[int:1(Variable)]---[int(Variable ID)]---------------------| |--[int:1(Variable)]---[int(Variable ID)]---END 312 => 'ChangeMP', # |--[int:0(Fixed)]---[int:{0:Entire Party, 1:Actor 001, ...}]--| # | |--[int:{0:Add, 1:Remove}]---[int(State ID)]---END # |--[int:1(Variable)]---[int(Variable ID)]---------------------| 313 => 'ChangeState', # |--[int:0(Fixed)]---[int:{0:Entire Party, 1:Actor 001, ...}]---END # | # |--[int:1(Variable)]---[int(Variable ID)]---END 314 => 'RecoverAll', # |--[int:0(:Constant)]---[int:{1~9999999}(Number)]--| # |--[int:0(Increase)]--| |--[bool(Show Level Up Message)]---END # | |--[int:1(Variable)]---[int(Variable ID)]----------| # |--[int:0(Fixed)]---[int:{0:Entire Party, 1:Actor 001, ...}]--| # | | |--[int:0(Constant)]---[int:{1~9999999}(Number)]--| # | |--[int:1(Decrease)]--| |--[bool:false(Show Level Up Message)]---END # | |--[int:1(Variable)]------------------------------| # | # | |--[int:0(Constant)]---[int:{1~9999999}(Number)]--| # | |--[int:0(Increase)]--| |--[bool(Show Level Up Message)]---END # | | |--[int:1(Variable)]---[int(Variable ID)]---------| # |--[int:1(Variable)]---[int(Variable ID)]---------------------| # | |--[int:0(Constant)]---[int:{1~9999999}(Number)]--| # |--[int:1(Decrease)]--| |--[bool:false(Show Level Up Message)]---END # |--[int:1(Variable)]---[int(Variable ID)]---------| 315 => 'ChangeEXP', # |--[int:0(Constant)]---[int:{1~98}(Number)]--| # |--[int:0(Increase)]--| |--[bool(Show Level Up Message)]---END # | |--[int:1(Variable)]---[int(Variable ID)]----| # |--[int:0(Fixed)]---[int:{0:Entire Party, 1:Actor 001, ...}]--| # | | |--[int:0(Constant)]---[int:{1~98}(Number)]--| # | |--[int:1(Decrease)]--| |--[bool:false(Show Level Up Message)]---END # | |--[int:1(Variable)]---[int(Variable ID)]----| # | # | |--[int:0(Constant)]---[int:{1~98}(Number)]--| # | |--[int:0(Increase)]--| |--[bool(Show Level Up Message)]---END # | | |--[int:1(Variable)]---[int(Variable ID)]----| # |--[int:1(Variable)]---[int(Variable ID)]---------------------| # | |--[int:0(Constant)]---[int:{1~98}(Number)]--| # |--[int:1(Decrease)]--| |--[bool:false(Show Level Up Message)]---END # |--[int:1(Variable)]---[int(Variable ID)]------| 316 => 'ChangeLevel', # |--[int:0(Fixed)]---[int:{0:Entire Party, 1:Actor 001, ...}]--| |--[int:0(Constant)]---[int:{0~9999999}(Number)]---END # | |--[int:{0:MHP, 1:MMP, 2:ATK, 3:DEF, 4:MAT, 5:MDF, 6:AGI, 7:LUK}]---[int:{0:Increase, 1:Decrease}]--| # |--[int:1(Variable)]---[int(Variable ID)]---------------------| |--[int:1(Variable)]---[int(Variable ID)]---END 317 => 'ChangeParameters', # |--[int:0(Fixed)]---[int:{0:Entire Party, 1:Actor 001, ...}]--| # | |--[int:{0:Learn, 1:Forget}]---[int(Skill ID)]---END # |--[int:1(Variable)]---[int(Variable ID)]---------------------| 318 => 'ChangeSkills', # [int(Actor ID)]---[int:{0:Weapon, 1:Shield, 2:Head, 3:Boby, 4:Accessory}]---[int:{0:None, 1:Equipment 001, ...}(Equipment ID)]---END 319 => 'ChangeEquipment', # [int(Actor ID)]---[string(New Actor Name)]---END 320 => 'ChangeActorName', # [int(Actor ID)]---[int(New Class ID)]---END 321 => 'ChangeActorClass', # [int(Actor ID)]---[string(New Actor walking Picture Name)]---[int(New Actor Walking Picture Index)]---[string(New Actor Portrait Picture Name)]---[int(New Actor Portrait Picture Index)]---END 322 => 'ChangeActorGraphic', # [int:{0:Boat, 1:Ship, 2:Airship}]---[string(New Vehicle Picture Name)]---[int(New Vehicle Picture Index)]---END 323 => 'ChangeVehicleGraphic', # [int(Actor ID)]---[string(New Actor Nickname)]---END 324 => 'ChangeActorNickname', # |--[int:0(Constant)]---[int:{1~999999}(Number)]--| # |--[int:0(Increase)]--| |--[bool:false(Allow Knockout)]---END # | |--[int:1(Variable)]---[int(Variable ID)]--------| # [int:{-1:Entire Troop, 0:Troop 001, ...}]--| # | |--[int:0(Constant)]---[int:{1~999999}(Number)]--| # |--[int:1(Decrease)]--| |--[bool(Allow Knockout)]---END # |--[int:1(Variable)]---[int(Variable ID)]--------| # 331 => 'ChangeEnemyHP', # |--[int:0(Constant)]---[int:{1~9999}(Number)]---END # [int:{-1:Entire Troop, 0:Troop 001, ...}]---[int:{0:Increase, 1:Decrease}]--| # |--[int:1(Variable)]---[int(Variable ID)]---END 332 => 'ChangeEnemyMP', # [int:{-1:Entire Troop, 0:Troop 001, ...}]---[int:{0:Add, 1:Remove}]---[int(State ID)]---END 333 => 'ChangeEnemyState', # [int:{-1:Entire Troop, 0:Troop 001, ...}]---END 334 => 'EnemyRecoverAll', # [int:{-1:Entire Troop, 0:Troop 001, ...}]---END 335 => 'EnemyAppear', # [int(Troop ID)]---[int(Enemy ID)]---END 336 => 'EnemyTransform', # [int:{-1:Entire Troop, 0:Troop 001, ...}]---[int(Animation ID)]---END 337 => 'ShowBattleAnimation', # |--[int:0(Enemy)]---[int(Troop ID)]--| # | |--[int(Skill ID)]---[int:{-2:Last Target, -1:Random, 0:Index 1,...}]---END # |--[int:1(Actor)]---[int(Actor ID)]--| 339 => 'ForceAction', 340 => 'AbortBattle', 351 => 'OpenMenuScreen', 352 => 'OpenSaveScreen', 353 => 'GameOver', 354 => 'ReturnToTitleScreen', # [string]---END 355 => 'Script', # [string]---END 401 => 'ShowText', # [int(Choice Index)]---[string(Choice Name)]---END 402 => 'When', 403 => 'WhenCancel', 404 => 'ChoicesEnd', # [string]---END 405 => 'ShowScrollingText', # [string]---END 408 => 'CommentMore', 411 => 'Else', 412 => 'BranchEnd', 413 => 'RepeatAbove', # [RPG::MoveCommand(45 is script)]---END 505 => 'MoveRoute', 601 => 'IfWin', 602 => 'IfEscape', 603 => 'IfLose', 604 => 'BattleProcessingEnd', # |--[int:0(Price: Standard)]---[int:0]---END # [int:{0:Item, 1:Weapon, 2:Armor}]---[int(Corresponded Item ID)]--| # |--[int:1(Price: Specify)]---[int:{0~9999999}(Price)]---END 605 => 'ShopItem', # [string]---END 655 => 'ScriptMore' }.freeze
Class Method Summary collapse
-
.commonevents_json(commonevents, output_dir, complete) ⇒ void
将 CommonEvents 对象数组序列化为分开的 JSON 文件.
-
.commonevents_rvdata2(target_dir, output_dir, original_dir, complete) ⇒ void
将 CommonEvent 文件反序列化为 rvdata2 文件.
-
.ex_commonevents(target_dir) ⇒ Array<String>
提取 R3EXS 格式的 CommonEvent 文件中的字符串.
-
.ex_regular(target_dir) ⇒ Array<String>
提取 R3EXS 格式的 常规 JSON 文件中的字符串.
-
.ex_scripts(target_dir, with_symbol) ⇒ Array<String>
提取 Ruby 源码中的字符串.
-
.ex_strings(target_dir, output_dir, with_scripts, with_symbol, with_scripts_separate) ⇒ void
提取指定目录下 R3EXS 格式的 JOSN 文件中的字符串.
-
.in_commonevents(target_dir, output_dir, manual_trans_hash) ⇒ void
注入 R3EXS 格式的 CommonEvent 文件中的字符串.
-
.in_regular(target_dir, output_dir, manual_trans_hash) ⇒ void
注入 R3EXS 格式的 常规 JSON 文件中的字符串.
-
.in_scripts(target_dir, output_dir, manual_trans_hash) ⇒ void
注入 Ruby 源码中的字符串.
-
.in_strings(target_dir, output_dir, manualtransfile_path, with_scripts) ⇒ void
将指定目录下 R3EXS 格式的 JOSN 文件按照 ManualTransFile.json 翻译注入字符串.
-
.json_rvdata2(target_dir, output_dir, original_dir, complete, with_scripts) ⇒ void
将指定目录下的所有JSON文件反序列化为 rvdata2 文件.
-
.regular_json(obj, klass, file_path, complete) ⇒ void
将常规对象数组序列化为 JSON 文件.
-
.regular_rvdata2(target_dir, output_dir, original_dir, complete) ⇒ void
将常规 JSON 文件反序列化为 rvdata2 文件.
-
.rvdata2_json(target_dir, output_dir, complete, with_scripts) ⇒ void
将指定目录下的所有 rvdata2 文件序列化为 JSON 格式.
-
.scripts_rb(scripts, output_dir) ⇒ void
将 Script 对象数组序列化为分开的 Ruby 源码.
-
.scripts_rvdata2(target_dir, output_dir) ⇒ void
将 Ruby 源码反序列化为 rvdata2 文件.
Class Method Details
.commonevents_json(commonevents, output_dir, complete) ⇒ void
This method returns an undefined value.
将 CommonEvents 对象数组序列化为分开的 JSON 文件
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/R3EXS/rvdata2_json.rb', line 15 def self.commonevents_json(commonevents, output_dir, complete) if complete commonevents.each_with_index do |commonevent, index| file_path = output_dir.join("#{format('CommonEvent_%05d', index)}.json") Utils.object_json(commonevent, file_path) Logger.debug("Serialize #{file_path}") end else commonevents = Utils.rpg_r3exs(commonevents, R3EXS::CommonEvent) commonevents.each do |commonevent| file_path = output_dir.join("#{format('CommonEvent_%05d', commonevent.index)}.json") Utils.object_json(commonevent, file_path) Logger.debug("Serialize #{file_path}") end end end |
.commonevents_rvdata2(target_dir, output_dir, original_dir, complete) ⇒ void
This method returns an undefined value.
将 CommonEvent 文件反序列化为 rvdata2 文件
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/R3EXS/json_rvdata2.rb', line 21 def self.commonevents_rvdata2(target_dir, output_dir, original_dir, complete) if complete Utils.all_commonevent_json_files(target_dir, :RPG) do |commonevents, _, rvdata2_file_path| file_path = output_dir.join(rvdata2_file_path.relative_path_from(target_dir)) Utils.object_rvdata2(commonevents, file_path) Logger.debug("Serialize #{file_path}") end else Utils.all_commonevent_json_files(target_dir, :R3EXS) do |commonevents, _, rvdata2_file_path| file_path = output_dir.join(rvdata2_file_path.relative_path_from(target_dir)) original_file_path = original_dir.join(rvdata2_file_path.relative_path_from(target_dir)) # 检查 original_file_path 是否存在 original_file_path.exist? or raise Rvdata2PathError, "Original rvdata2 file not found: #{original_file_path}" original_commonevents = Marshal.load(original_file_path.binread) Logger.debug("Deserialize #{original_file_path}") Utils.r3exs_rpg(commonevents, original_commonevents) Utils.object_rvdata2(original_commonevents, file_path) Logger.debug("Serialize #{file_path}") end end end |
.ex_commonevents(target_dir) ⇒ Array<String>
提取 R3EXS 格式的 CommonEvent 文件中的字符串
17 18 19 20 21 22 23 24 25 26 |
# File 'lib/R3EXS/extract_strings.rb', line 17 def self.ex_commonevents(target_dir) ex_strings = [] Utils.all_commonevent_json_files(target_dir, :R3EXS) do |commonevents, commonevents_paths, _| commonevents.zip(commonevents_paths).each do |commonevent, commonevents_path| ex_strings.concat(commonevent.ex_strings) Logger.debug("Extract #{commonevents_path}") end end ex_strings end |
.ex_regular(target_dir) ⇒ Array<String>
提取 R3EXS 格式的 常规 JSON 文件中的字符串
55 56 57 58 59 60 61 62 |
# File 'lib/R3EXS/extract_strings.rb', line 55 def self.ex_regular(target_dir) ex_strings = [] Utils.all_regular_json_files(target_dir, :R3EXS) do |obj, file_path| ex_strings.concat(Utils.ex_r3exs(obj)) Logger.debug("Extract #{file_path}") end ex_strings end |
.ex_scripts(target_dir, with_symbol) ⇒ Array<String>
提取 Ruby 源码中的字符串
36 37 38 39 40 41 42 43 44 45 |
# File 'lib/R3EXS/extract_strings.rb', line 36 def self.ex_scripts(target_dir, with_symbol) ex_strings = [] Utils.all_rb_files(target_dir) do |scripts, _, scripts_paths, _, _| scripts.zip(scripts_paths).each do |script, scripts_path| ex_strings.concat(StringsExtractor.extract(script, with_symbol)) Logger.debug("Extract #{scripts_path}") end end ex_strings end |
.ex_strings(target_dir, output_dir, with_scripts, with_symbol, with_scripts_separate) ⇒ void
This method returns an undefined value.
提取指定目录下 R3EXS 格式的 JOSN 文件中的字符串
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/R3EXS/extract_strings.rb', line 76 def self.ex_strings(target_dir, output_dir, with_scripts, with_symbol, with_scripts_separate) all_ex_strings = [] # 处理 CommonEvent_\d{5}.json 文件 all_ex_strings.concat(ex_commonevents(target_dir)) # 处理 Script_\d{3}.rb 文件 if with_scripts rb_strings = ex_scripts(target_dir, with_symbol) # 单独输出脚本提取的字符串 if with_scripts_separate Utils.object_json(rb_strings.to_h { |str| [str, str] }, output_dir.join('ManualTransFile_scripts.json')) else all_ex_strings.concat(rb_strings) end end # 处理常规 JSON 文件 all_ex_strings.concat(ex_regular(target_dir)) # 去除 nil 元素 all_ex_strings.compact! Utils.object_json(all_ex_strings.to_h { |str| [str, str] }, output_dir.join('ManualTransFile.json')) end |
.in_commonevents(target_dir, output_dir, manual_trans_hash) ⇒ void
This method returns an undefined value.
注入 R3EXS 格式的 CommonEvent 文件中的字符串
19 20 21 22 23 24 25 26 27 28 |
# File 'lib/R3EXS/inject_strings.rb', line 19 def self.in_commonevents(target_dir, output_dir, manual_trans_hash) Utils.all_commonevent_json_files(target_dir, :R3EXS) do |commonevents, commonevents_paths, _| commonevents.zip(commonevents_paths).each do |commonevent, commonevents_path| file_path = output_dir.join(commonevents_path.relative_path_from(target_dir)) commonevent.in_strings(manual_trans_hash) Utils.object_json(commonevent, file_path) Logger.debug("Inject #{file_path}") end end end |
.in_regular(target_dir, output_dir, manual_trans_hash) ⇒ void
This method returns an undefined value.
注入 R3EXS 格式的 常规 JSON 文件中的字符串
61 62 63 64 65 66 67 68 |
# File 'lib/R3EXS/inject_strings.rb', line 61 def self.in_regular(target_dir, output_dir, manual_trans_hash) Utils.all_regular_json_files(target_dir, :R3EXS) do |obj, json_path| file_path = output_dir.join(json_path.relative_path_from(target_dir)) Utils.in_r3exs(obj, manual_trans_hash) Utils.object_json(obj, file_path) Logger.debug("Inject #{file_path}") end end |
.in_scripts(target_dir, output_dir, manual_trans_hash) ⇒ void
This method returns an undefined value.
注入 Ruby 源码中的字符串
40 41 42 43 44 45 46 47 48 49 |
# File 'lib/R3EXS/inject_strings.rb', line 40 def self.in_scripts(target_dir, output_dir, manual_trans_hash) Utils.all_rb_files(target_dir) do |scripts, script_info, scripts_paths, script_info_path, _| scripts.zip(scripts_paths).each do |script, scripts_path| file_path = output_dir.join(scripts_path.relative_path_from(target_dir)) Utils.script_rb(StringsInjector.inject(script, manual_trans_hash), file_path) Logger.debug("Inject #{file_path}") end Utils.object_json(script_info, output_dir.join(script_info_path.relative_path_from(target_dir))) end end |
.in_strings(target_dir, output_dir, manualtransfile_path, with_scripts) ⇒ void
This method returns an undefined value.
将指定目录下 R3EXS 格式的 JOSN 文件按照 ManualTransFile.json 翻译注入字符串
83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/R3EXS/inject_strings.rb', line 83 def self.in_strings(target_dir, output_dir, manualtransfile_path, with_scripts) manualtransfile_path.exist? or raise ManualTransFilePathError, "ManualTransFile.json not found: #{manualtransfile_path}" manual_trans_hash = Oj.load_file(manualtransfile_path.to_s) # 处理 CommonEvent_\d{5}.json 文件 in_commonevents(target_dir, output_dir, manual_trans_hash) # 处理 Script_\d{3}.rb 文件 in_scripts(target_dir, output_dir, manual_trans_hash) if with_scripts # 处理常规的 JSON 文件 in_regular(target_dir, output_dir, manual_trans_hash) end |
.json_rvdata2(target_dir, output_dir, original_dir, complete, with_scripts) ⇒ void
This method returns an undefined value.
将指定目录下的所有JSON文件反序列化为 rvdata2 文件
119 120 121 122 123 124 125 126 127 128 |
# File 'lib/R3EXS/json_rvdata2.rb', line 119 def self.json_rvdata2(target_dir, output_dir, original_dir, complete, with_scripts) # 处理 CommonEvent_\d{5}.json 文件 commonevents_rvdata2(target_dir, output_dir, original_dir, complete) # 处理 Script_\d{3}.rb 文件 scripts_rvdata2(target_dir, output_dir) if with_scripts # 处理常规 JSON 文件 regular_rvdata2(target_dir, output_dir, original_dir, complete) end |
.regular_json(obj, klass, file_path, complete) ⇒ void
This method returns an undefined value.
将常规对象数组序列化为 JSON 文件
61 62 63 64 65 66 67 68 |
# File 'lib/R3EXS/rvdata2_json.rb', line 61 def self.regular_json(obj, klass, file_path, complete) if complete Utils.object_json(obj, file_path) else Utils.object_json(Utils.rpg_r3exs(obj, klass), file_path) end Logger.debug("Serialize #{file_path}") end |
.regular_rvdata2(target_dir, output_dir, original_dir, complete) ⇒ void
This method returns an undefined value.
将常规 JSON 文件反序列化为 rvdata2 文件
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/R3EXS/json_rvdata2.rb', line 81 def self.regular_rvdata2(target_dir, output_dir, original_dir, complete) if complete Utils.all_regular_json_files(target_dir, :RPG) do |obj, obj_path| file_path = output_dir.join(obj_path.relative_path_from(target_dir)).sub_ext('.rvdata2') Utils.object_rvdata2(obj, file_path) Logger.debug("Serialize #{file_path}") end else Utils.all_regular_json_files(target_dir, :R3EXS) do |obj, obj_path| file_path = output_dir.join(obj_path.relative_path_from(target_dir)).sub_ext('.rvdata2') original_file_path = original_dir.join(obj_path.relative_path_from(target_dir)).sub_ext('.rvdata2') # 检查 original_file_path 是否存在 original_file_path.exist? or raise Rvdata2PathError, "Original rvdata2 file not found: #{original_file_path}" original_object = Marshal.load(original_file_path.binread) Logger.debug("Deserialize #{original_file_path}") Utils.r3exs_rpg(obj, original_object) Utils.object_rvdata2(original_object, file_path) Logger.debug("Serialize #{file_path}") end end end |
.rvdata2_json(target_dir, output_dir, complete, with_scripts) ⇒ void
This method returns an undefined value.
将指定目录下的所有 rvdata2 文件序列化为 JSON 格式
80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/R3EXS/rvdata2_json.rb', line 80 def self.rvdata2_json(target_dir, output_dir, complete, with_scripts) Utils.all_rvdata2_files(target_dir) do |obj, klass, file_basename, rvdata2_path| file_path = output_dir.join(rvdata2_path.relative_path_from(target_dir)).sub_ext('.json') if file_basename.to_s == 'CommonEvents' commonevents_json(obj, file_path.sub_ext(''), complete) elsif file_basename.to_s == 'Scripts' scripts_rb(obj, file_path.sub_ext('')) if with_scripts else regular_json(obj, klass, file_path, complete) end end end |
.scripts_rb(scripts, output_dir) ⇒ void
This method returns an undefined value.
将 Script 对象数组序列化为分开的 Ruby 源码
38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/R3EXS/rvdata2_json.rb', line 38 def self.scripts_rb(scripts, output_dir) scripts_info = [] script_info_file_path = output_dir.join('Scripts_info.json') scripts.each_with_index do |script, index| next if script.nil? scripts_info << { index: index, name: script[1] } file_path = output_dir.join("#{format('Script_%03d', index)}.rb") Utils.script_rb_compressing(script[2], file_path) Logger.debug("Serialize #{file_path}") end Utils.object_json(scripts_info, script_info_file_path) Logger.debug("Serialize #{script_info_file_path}") end |
.scripts_rvdata2(target_dir, output_dir) ⇒ void
This method returns an undefined value.
将 Ruby 源码反序列化为 rvdata2 文件
53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/R3EXS/json_rvdata2.rb', line 53 def self.scripts_rvdata2(target_dir, output_dir) Utils.all_rb_files(target_dir) do |scripts, script_info, _, _, rvdata2_file_path| file_path = output_dir.join(rvdata2_file_path.relative_path_from(target_dir)) output_scripts = [] script_info.each do |info| index = info[:index] script = scripts[index] output_scripts << [114_514, info[:name], Zlib::Deflate.deflate(script)] end Utils.object_rvdata2(output_scripts, file_path) Logger.debug("Serialize #{file_path}") end end |