Project1

标题: 中文名字输入插件 [打印本页]

作者: 水迭澜    时间: 2017-3-14 13:58
标题: 中文名字输入插件
本帖最后由 水迭澜 于 2017-3-14 14:05 编辑

不太完善,不过我也懒的修改了……

参考了前人的一些脚本

使用方式:就跟一般的插件一样用- -……想要修改文字的自行在脚本改吧。

截图


JAVASCRIPT 代码复制
  1. /*:
  2.  * @plugindesc 支持中文输入法的名字窗口。
  3.  * @author Nighto
  4.  * @param window_x
  5.  * @desc 输入窗口的X值
  6.  * @default 310
  7.  *
  8.  * @param window_y
  9.  * @desc 输入窗口的Y值
  10.  * @default 330
  11.  *
  12.  * @param window_width
  13.  * @desc 输入窗口的宽度
  14.  * @default 233
  15.  *
  16.  * @param background
  17.  * @desc 背景文件名,留空就是什么都没有
  18.  * @default img/system/Name.png
  19.  *
  20.  * @help 我已经没有什么可帮你的了- -
  21.  *
  22.  */
  23.  
  24. Input.keyMapper[8] = "backspace";
  25. var INX = Number(PluginManager.parameters('nameinput')['window_x']);
  26. var INY = Number(PluginManager.parameters('nameinput')['window_y']);
  27. var INWidth = Number(PluginManager.parameters('nameinput')['window_width']);
  28. var INbackground = String(PluginManager.parameters('nameinput')['background']);
  29.  
  30.  
  31. //================
  32. function Window_NameExplanation() {
  33.         this.initialize.apply(this, arguments);
  34. }
  35.  
  36. Window_NameExplanation.prototype = Object.create(Window_Base.prototype);
  37. Window_NameExplanation.prototype.constructor = Window_NameExplanation;
  38.  
  39. Window_NameExplanation.prototype.initialize = function(actor, x, y) {
  40.         var width = Graphics.boxWidth - x * 2;
  41.         var height = 128;
  42.         Window_Base.prototype.initialize.call(this, x, y, width, height);
  43.         this._actor = actor;
  44.         this.refresh();
  45. };
  46.  
  47. Window_NameExplanation.prototype.refresh = function() {
  48.         this.contents.clear();
  49.         this.drawText("请输入主角姓名。", 0, 0, this.width-32, 'right');
  50.         this.drawText("按Enter/Space确定,退格键删除输入,ESC使用默认姓名。", 0, this.lineHeight(), this.width-32, 'right');
  51.         //this.drawActorFace(this._actor, 0, this.height-144);
  52. };
  53.  
  54.  
  55. //================
  56. function Window_NameInput() {
  57.     this.initialize.apply(this, arguments);
  58. }
  59.  
  60. Window_NameInput.prototype = Object.create(Window_Selectable.prototype);
  61. Window_NameInput.prototype.constructor = Window_NameInput;
  62.  
  63. Window_NameInput.prototype.initialize = function(){
  64.     var x = Graphics.boxWidth - INX * 2 - INWidth;
  65.     var y = INY+128;
  66.     var width = INWidth;
  67.     var height = 72;
  68.     Window_Selectable.prototype.initialize.call(this, x, y, width, height);
  69.         this._actorName = '',
  70.         this._index = 0;
  71.     this.refresh();
  72.     this.updateCursor();
  73.     this.activate();
  74. };
  75.  
  76. Window_NameInput.prototype.maxCols = function() {
  77.     return 1;
  78. };
  79.  
  80. Window_NameInput.prototype.maxItems = function() {
  81.     return 1;
  82. };
  83.  
  84. Window_NameInput.prototype.setInput = function(name) {
  85.     this._actorName = name;
  86. };
  87.  
  88. Window_NameInput.prototype.refresh = function() {
  89.     //var table = this.table();
  90.     this.contents.clear();
  91.     this.resetTextColor();
  92.     this.drawText(this._actorName, 0, 0, INWidth-32, 'center');
  93. };
  94.  
  95. Window_NameInput.prototype.isCursorMovable = function() {
  96.     return this.active;
  97. };
  98.  
  99. function Scene_Name() {
  100.     this.initialize.apply(this, arguments);
  101. }
  102.  
  103. Scene_Name.prototype = Object.create(Scene_MenuBase.prototype);
  104. Scene_Name.prototype.constructor = Scene_Name;
  105.  
  106. Scene_Name.prototype.initialize = function() {
  107.     Scene_MenuBase.prototype.initialize.call(this);
  108. };
  109.  
  110. Scene_Name.prototype.prepare = function(actorId, maxLength) {
  111.     this._actorId = actorId;
  112.     this._maxLength = maxLength;
  113. };
  114.  
  115. Scene_Name.prototype.create = function() {
  116.     Scene_MenuBase.prototype.create.call(this);
  117.     this._actor = $gameActors.actor(this._actorId);
  118.         this._name = '';
  119.         this._expWindow = new Window_NameExplanation(this._actor, INX, INY);
  120.         this.addWindow(this._expWindow);
  121.     this.createInputWindow();
  122.         this.createInputName();
  123. };
  124.  
  125. Scene_Name.prototype.start = function() {
  126.     Scene_MenuBase.prototype.start.call(this);
  127. };
  128.  
  129. Scene_Name.prototype.createInputWindow = function() {
  130.     this._inputWindow = new Window_NameInput();
  131.     this._inputWindow.setHandler('ok', this.onInputOk.bind(this));
  132.         this._inputWindow.setHandler('cancel', this.onInputCancel.bind(this));
  133.     this.addWindow(this._inputWindow);
  134. };
  135.  
  136. Scene_Name.prototype.onInputOk = function() {
  137.     this._actor.setName(this._name);
  138.     this.popScene();
  139. };
  140. Scene_Name.prototype.onInputCancel = function() {
  141.     this.popScene();
  142. };
  143.  
  144.  
  145. Scene_Name.prototype.createInputName = function() {
  146.         this._nameinput = document.createElement('input');
  147.         this._nameinput.name = 'someinput';
  148.         this._nameinput.value = this._actor.name();
  149.         this._nameinput.style.top = Graphics.boxHeight / 2;
  150.         document.body.appendChild(this._nameinput);
  151.         //alert(this._nameinput);
  152. };
  153. Scene_Name.prototype.update = function() {
  154.         this._nameinput.focus();
  155.         if(Input.isTriggered('backspace')) {
  156.                 this._nameinput.value = this._name.slice(0, this._name.length-1);
  157.                 //alert(345);
  158.         }
  159.         this.updateValue();
  160.         Scene_Base.prototype.update.call(this);
  161. };
  162.  
  163. Scene_Name.prototype.updateValue = function() {
  164.         var refresh = false;
  165.         if(this._nameinput.value != this._name){
  166.                 this._name = this._nameinput.value;
  167.                 this._inputWindow.setInput(this._name);
  168.                 refresh = true;
  169.         }
  170.         if(refresh){
  171.                 this._inputWindow.refresh();
  172.                 }
  173. };
  174. Scene_Name.prototype.createBackground = function() {
  175.     this._backgroundSprite = new Sprite();
  176.     this._backgroundSprite.bitmap = SceneManager.backgroundBitmap();
  177.     this.addChild(this._backgroundSprite);
  178.         if (INbackground != ''){
  179.                 this._backgroundSprite1 = new Sprite();
  180.                 this._backgroundSprite1.bitmap = Bitmap.load(INbackground);
  181.                 this.addChild(this._backgroundSprite1);
  182.         }
  183. };

作者: liz_fly    时间: 2017-3-14 14:17
支持一波
作者: 西姐    时间: 2017-3-14 15:41
什么也不显示?
作者: 死伤殆尽    时间: 2017-3-14 21:46
楼主的ID好眼熟啊!
作者: 黑猫萌酱    时间: 2017-3-16 08:42
好东西_(:з」∠)_
作者: R丶ain    时间: 2017-8-2 15:23
请问大佬这能用在手机上吗?
作者: HUISIHEXING    时间: 2017-8-8 15:20
同问,非常棒的插件!
作者: 芯☆淡茹水    时间: 2017-10-16 20:14
PS:我是来搞笑的!

这儿好像有个更简单的,比如 角色1 。
事件 -> 脚本:
  1. var sRst=prompt("请输入角色名字:", "");
  2. if(!!sRst) $gameActors.actor(1).setName(sRst);
复制代码

作者: Sutellerl    时间: 2017-10-30 23:39
芯☆淡茹水 发表于 2017-10-16 20:14
PS:我是来搞笑的!

这儿好像有个更简单的,比如 角色1 。

确实更简单明了。
作者: 九尾猫妖Radiant    时间: 2017-10-31 07:49
请问怎么启动这个脚本呢
作者: hiten227    时间: 2018-11-30 05:05
感谢楼主分享
作者: startpantu9    时间: 2020-7-5 12:41
芯☆淡茹水 发表于 2017-10-16 20:14
PS:我是来搞笑的!

这儿好像有个更简单的,比如 角色1 。

大佬您好,我是一个小萌新,虽然是萌新,但是想要去做自己的游戏,前段时间,看到一个黄油上边的战斗系统很有意思,不知道大佬能不能帮我写一个类似的插件,然后收费是多少,如果您最近不是很忙的,可以留个联系方式……我加您……拜托拜托……




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1