srpgstudio吧 关注:1,220贴子:4,672

【效果测试】據點介面功能改造(試作)

只看楼主收藏回复


↑這是原稿,也就是最原始的介面模樣↑

↑這是預想中類似的介面模樣↑
↓這是調整選單位置後的介面,以及規劃後的模樣↓

以上內容曾被度娘給吃掉過,以下是近期改造的進度成果
因為擔心度娘再度抽風發做,所以最底下有付文字圖片解說


IP属地:中国台湾1楼2017-08-13 10:32回复




    --------------------------------------------------------------------------


    IP属地:中国台湾2楼2017-08-13 10:45
    收起回复
      cc?


      IP属地:重庆来自iPhone客户端3楼2017-08-13 21:57
      收起回复

        這是昨天為止改造出來的結果,關於左側等級排序的腳本~
        因為還蠻簡單~似乎也不會有什麼腳本衝突~所以我就直接分享
        請打開『scene-rest(據點相關).js』
        並且搜尋找到『var ListCommandScrollbar = defineObject』
        將下方語法貼至在『drawScrollContent: function』裡面
        /*--------------------------------------------------------------------*/
        var list = root.getMetaSession().getTotalPlayerList(); //目前在隊伍中的成員群組
        var i,c,o,Face,Face1,Face2,unit; //暫時定義
        var count = list.getCount(); //指定成員群組的總人數
        var tag,tag1,tag2; //迴圈取數比對
        var max,second,min; //迴圈定義對像
        max = second = min = 0; //對象數字歸零
        for(i = 0 ; i < count ; i++){
        unit = list.getData(i).getLv(); //得到成員群組的全部Lv數值並且比對
        if(unit > max) { //比對結果如果大於Max = 0 ,該數值就指定為Max
        Face = list.getData(i); //Max的數據ID
        max = Face.getLv(); //重新定義ID讀取成Lv數值
        tag = i; //將Max的ID暫定為 i
        }
        }
        for(c = 0 ; c < count ; c++){
        unit = list.getData(c).getLv(); //得到成員群組的全部Lv數值並且比對
        if( c != tag){ //ID顯示的數值不等於 Max
        if(unit > second){ //比對結果如果大於second = 0 ,該數值就指定為second
        Face1 = list.getData(c); //second的數據ID
        second = Face1.getLv();//重新定義ID讀取成Lv數值
        tag1 = c; //將second的ID暫定為 c
        }
        }
        }
        for(o = 0 ; o < count ; o++){
        unit = list.getData(o).getLv(); //得到成員群組的全部Lv數值並且比對
        //if(o != tag){ //ID的顯示數值不等於 Max
        if( o !=tag1 && o != tag){ //ID的顯示數值不等於 Max 以及 second
        if(unit > min) //比對結果如果大於min = 0 ,該數值就指定為min
        Face2 = list.getData(o); //min的數據ID
        min = Face2.getLv();//重新定義ID讀取成Lv數值
        tag2 = o; //將min的ID暫定為 o
        }
        else //如果不是
        continue; //就繼續搜尋比對
        }
        ContentRenderer.drawUnitFace(x=75, y=92, Face, false, 255); //顯示Max的臉圖
        TextRenderer.drawText(x = 345, y = 245, max ,500, color, font); //顯示Max的Lv
        TextRenderer.drawText(x = 120, y = 286, Face.getName() ,500, color, font); //顯示Max的名子
        ContentRenderer.drawUnitFace(x=58, y=331, Face1, false, 255); //顯示second的臉圖
        TextRenderer.drawText(x = 285, y = 372, second ,500, color, font); //顯示second的Lv
        TextRenderer.drawText(x = 195, y = 414, Face1.getName() ,500, color, font); //顯示second的名子
        ContentRenderer.drawUnitFace(x=40, y=466, Face2, false, 255); //顯示min的臉圖
        TextRenderer.drawText(x = 260, y = 492, min ,500, color, font); //顯示min的Lv
        TextRenderer.drawText(x = 160, y = 533, Face2.getName() ,500, color, font); //顯示min的名子
        /*--------------------------------------------------------------------*/
        如此一來,應該就能顯示出如下圖一樣的效果


        IP属地:中国台湾4楼2017-08-14 16:44
        收起回复

          雖然有點跟這沒有關係,但還是稍微分享一下好了
          另外如果有使用『MP(EP)&必殺ゲージ追加』腳本的話
          嫌據點每次都要自己再設置背景圖、每次都要限定一張很麻煩
          還有一個可以仿造『機器人大戰阿法系列』背景圖隨機挑選的做法
          只是要注意,電腦配備有些差強人意的人,會造成些微的開場LAG
          腳本如下使用方法為:請打開『scene-rest(據點相關).js』
          並且搜尋找到『_setBackgroundData: function()』
          將下方語法貼至在『drawScrollContent: function』裡頭
          /*--------------------------------------------------------------------*
          var z = 5 ; //預設給予幾張背景圖隨機數
          z = this.getRandomNumber() % 5 ; //設定亂數 除於 張數
          //由於亂數取出的數值並非整數,會有那種0.00XXXXXXX的小數點
          //因此要用下方這種指定整數範圍來判斷第幾張
          //另外root.getMaterialManager().createImage(No14.Material, No14.GaugeImg)
          //請在AddStatusWindow.js增加數據才能夠讀取
          //圖片也請放在Material\OT_AddStatus\裡面
          if (z >= 0 && z <= 1 ) {
          // 0.000 ~ 0.999 =1
          this._scrollBackground.startScrollBackground(root.getMaterialManager().createImage(No14.Material, No14.GaugeImg));
          }
          if (z >= 1 && z <= 2 ) {
          // 1.000 ~ 1.999 = 2
          this._scrollBackground.startScrollBackground(root.getMaterialManager().createImage(No15.Material, No15.GaugeImg));
          }
          if (z >= 2 && z <= 3 ) {
          // 2.000 ~ 2.999 = 3
          this._scrollBackground.startScrollBackground(root.getMaterialManager().createImage(No16.Material, No16.GaugeImg));
          }
          if (z >= 3 && z <= 4 ) {
          // 3.000 ~ 3.999 = 4
          this._scrollBackground.startScrollBackground(root.getMaterialManager().createImage(No17.Material, No17.GaugeImg));
          }
          if (z >= 4 && z <=5 ) {
          // 4.000 ~ 4.999 = 5
          this._scrollBackground.startScrollBackground(root.getMaterialManager().createImage(No18.Material, No18.GaugeImg));
          }
          //下頭這段是超出背景張數用的,想使用請將斜線消除即可
          //但前提是...非常容易跑出超過值,10次會有出現6~8次超過
          //else {
          //this._scrollBackground.startScrollBackground(root.getMaterialManager().createImage(No7.Material, No7.GaugeImg));
          //}
          //this._scrollBackground.startScrollBackground(this.getRestArea().getBackgroundImage());
          //上頭這段是原數據,不想用隨機背景圖就還原。
          },
          getRandomNumber: function() {
          return root.getRandomNumber();
          },
          /*--------------------------------------------------------------------*/


          IP属地:中国台湾6楼2017-08-15 08:08
          回复
            这改造有点厉害,虽然没有这个需求,但是还是膜拜一下


            7楼2017-08-15 17:23
            收起回复
              之前的SDG世代界面改造沒有教學麽?


              IP属地:中国香港8楼2017-08-16 19:15
              收起回复

                目前完成到如圖,按鈕新增以後~滑鼠游標也能點擊有作用
                下方雖然很空~說不定以後我也會新增熟練度(SR)之類的自訂數值上去
                那麼~據點介面到此先告一段落了,狀態整備那些點擊進入後的介面~
                日後再特別的個別改造,畢竟點進去後使用的腳本是據點以外的獨立腳本啊
                接下來沒意外,應該會想針對戰鬥時的介面做修改吧?
                當然,這方面一定不怎麼輕鬆改造~但我還是會想嘗試看看的


                IP属地:中国台湾9楼2017-08-20 04:29
                回复
                  玄月大神 能告诉我修改世界观这个位置的排列 在那个脚本修改吗?


                  IP属地:重庆10楼2017-09-05 20:29
                  收起回复
                    好像SS更新后..
                    scene-rest.js的脚本里面
                    无法调用
                    getTotalPlayerList()
                    方法了..所以没多少人成功..


                    IP属地:中国香港11楼2017-12-05 17:58
                    回复
                      请问下改地图上状态图片位置的脚本是哪个?我看大神你以前做过,巴哈登不上去


                      IP属地:广东来自Android客户端12楼2018-01-31 04:25
                      收起回复
                        如留言所說的....最近成為社會最低階社畜=w=....都沒時間寫程式弄這些
                        在說~也不知道這更新到什麼程度了?
                        近期有空我會稍微碰看看~嘗試是否還記得怎麼修改=w="


                        IP属地:中国台湾13楼2018-03-31 20:15
                        回复
                          _getPositionY: function(unit, isReverse, alpha) {
                          var length = this._getTextLength();
                          var unit = this.getMapPartsTarget();
                          var x = this._getWindowXPadding();
                          var y = LayoutControl.getPixelY(unit.getMapY());
                          var yy = this._getWindowYPadding();
                          var d = root.getGameAreaHeight() / 2;
                          var d1 = root.getGameAreaHeight() / 2;
                          var yBase = LayoutControl.getRelativeY(10) - 28;
                          var yMin = yBase;
                          var yMax = root.getGameAreaHeight() - this._getWindowHeight() - yBase;
                          var textui = this._getWindowTextUI();
                          var color = textui.getColor();
                          var font = textui.getFont();
                          var pic = textui.getUIImage();
                          var pic2 = root.queryUI('unit_gauge');
                          var width = this._getWindowWidth();
                          var height = this._getWindowHeight();
                          var handle1 = unit.getFaceResourceHandle();
                          var list = unit.getTurnStateList();// 取得該游標指定腳色的異常狀態列表
                          var max = list.getCount();//異常狀態數量(類別)顯示
                          var clm_siz = 26;//異常狀態圖Size
                          var yhos = (-14+clm_siz);// 顯示異常圖樣基準Y座標基準補正値(以第1個附加狀態為主)
                          var pic1 = GraphicsRenderer.getGraphics(handle1, GraphicsType.FACE);//自訂義圖片1
                          var pic3 = root.getMaterialManager().createImage(OT_SimpleFrameSetting.Material, OT_SimpleFrameSetting.GaugeImg);//自訂義圖片3
                          var unitRenderParam = StructureBuilder.buildUnitRenderParam();
                          var destWidth = GraphicsFormat.FACE_WIDTH;//參考值
                          var destHeight = GraphicsFormat.FACE_HEIGHT;//參考值
                          var xSrc, ySrc;//參考值
                          var srcWidth = destWidth;//參考值
                          var srcHeight = destHeight;//參考值
                          if (pic1 === null) {
                          return;
                          }
                          if (unit === null || unit.getDirection() !== DirectionType.NULL) {
                          return;
                          }
                          if (y > d) {
                          WindowRenderer.drawStretchWindow(x=-1800, y+100, width+1800, height+400, pic);
                          }
                          else if (y <= d) {
                          WindowRenderer.drawStretchWindow(x=-1800, y+202, width+1800, height+400, pic);
                          }
                          else if (y = d) {
                          WindowRenderer.drawStretchWindow(x=-1800, y, width+1800, height+400, pic);
                          }
                          else if (y >= d) {
                          WindowRenderer.drawStretchWindow(x=-1800, y, width+1800, height+400, pic);
                          }
                          else {
                          WindowRenderer.drawStretchWindow(x=-1800, y, width+1800, height+400, pic);
                          }
                          if (y > d1) { //游標移動到腳色時,有遮擋在左下的狀態列時自動移動上方顯示
                          /*----------------------//背景圖(臉部)------------*/
                          WindowRenderer.drawStretchWindow(x=-1400, yy=-156-14, width+1800, height+400, pic);
                          /*--------------------------//背景圖(橫向臉部)--------*/
                          WindowRenderer.drawStretchWindow(x=-1840, yy=-80, width+2800, height+700, pic);
                          /*--------------------------------//角色ID位置------------------*/
                          TextRenderer.drawText(x=110, yy=88, unit.getName(), length, color, font);
                          /*---------------------//角色職業名稱------------*/
                          TextRenderer.drawText(x=100, yy=69, unit.getClass().getName(), length, color, font);
                          /*-------------------------//移動力------------------*/
                          TextRenderer.drawText(x=37, yy=11, RealBonus.getMov(unit), length, color, font);
                          /*------------------------------------------------//HP血條------------------*/
                          ContentRenderer.drawUnitHpZone(x=240, yy=-3, unit, pic2);
                          ;/*------------------------------------------//EP條--------------------*/
                          ContentRenderer.drawUnitEpZoneSimple(x=215, yy=33, unit, pic3)
                          /*------------------------------------------//FP條--------------------*/
                          ContentRenderer.drawUnitFpZoneSimple(x=194, yy=60, unit, pic3);
                          ;/*------------------------------------------------------//等級--------------------*/
                          ContentRenderer.drawLevelInfo1(x=230, yy=85, unit);
                          /*-----------------------------------//主要武器位置----------------*/
                          WeaponTypeRenderer.drawClassWeaponList(x=107, yy=45, unit.getClass());
                          /*--------------------------------------//新增角色行走圖位置------------------*/
                          UnitRenderer.drawDefaultUnit(unit, x=928, yy=511, unitRenderParam);
                          /*--------//地形文字狀態位置--------------------*/
                          TextRenderer.drawText(x=74, yy=7, unit.getClass().getClassType().getName(), length, color, font);
                          for (i = 0; i < max ; i++) {
                          var turnState = list.getData(i);
                          var state = turnState.getState();

                          // 異常狀態所用的圖片大小設定
                          var handle = state.getIconResourceHandle();
                          //GraphicsRenderer.drawImage(x=122, yy+(i*clm_siz)+yhos, handle, GraphicsType.ICON); //原檔語法
                          /*-----------//附加狀態----------------*/
                          GraphicsRenderer.drawImage(x=800-(i*clm_siz)-yhos, yy=511, handle, GraphicsType.ICON);
                          }

                          if (root.isLargeFaceUse() && pic.isLargeImage()) {
                          srcWidth = root.getLargeFaceWidth();
                          srcHeight = root.getLargeFaceHeight();
                          }
                          xSrc = handle1.getSrcX() * srcWidth;
                          ySrc = handle1.getSrcY() * srcHeight;
                          /*-//橫向臉圖大小位置--------*/
                          pic1.drawStretchParts(x=575, yy=448, destWidth=384, destHeight, xSrc, ySrc+97, srcWidth=384, srcHeight);
                          }
                          else if (y <= d1) { //游標移動到腳色時,沒遮擋在左下狀態列時的顯示
                          WindowRenderer.drawStretchWindow(x=-1400, yy=394+13, width+1800, height+400, pic);//以下參考上方
                          WindowRenderer.drawStretchWindow(x=-1840, yy=-584, width+2800, height+600, pic);
                          TextRenderer.drawText(x=110, yy=439, unit.getName(), length, color, font);
                          TextRenderer.drawText(x=100, yy=458, unit.getClass().getName(), length, color, font);
                          ContentRenderer.drawUnitHpZone(x=240, yy=508, unit, pic2);
                          ContentRenderer.drawUnitEpZoneSimple(x=215, yy=487, unit, pic3);
                          ContentRenderer.drawUnitFpZoneSimple(x=194, yy=460, unit, pic3);
                          ContentRenderer.drawLevelInfo1(x=230, yy=436, unit);
                          WeaponTypeRenderer.drawClassWeaponList(x=110, yy=493, unit.getClass());
                          TextRenderer.drawText(x=37, yy=517, RealBonus.getMov(unit), length, color, font);
                          for (i = 0; i < max ; i++) {
                          var turnState = list.getData(i);
                          var state = turnState.getState();

                          // 異常狀態所用的圖片大小設定
                          var handle = state.getIconResourceHandle();
                          //GraphicsRenderer.drawImage(x=122, yy+(i*clm_siz)+yhos, handle, GraphicsType.ICON); //原檔語法
                          /*-----------//附加狀態----------------*/
                          GraphicsRenderer.drawImage(x=800-(i*clm_siz)-yhos, yy=7, handle, GraphicsType.ICON);
                          }

                          TextRenderer.drawText(x=74, yy=520, unit.getClass().getClassType().getName(), length, color, font);
                          UnitRenderer.drawDefaultUnit(unit, x=928, yy=7, unitRenderParam);
                          if (root.isLargeFaceUse() && pic.isLargeImage()) {
                          srcWidth = root.getLargeFaceWidth();
                          srcHeight = root.getLargeFaceHeight();
                          }
                          xSrc = handle1.getSrcX() * srcWidth;
                          ySrc = handle1.getSrcY() * srcHeight;
                          pic1.drawStretchParts(x=575, yy=-56, destWidth=384, destHeight, xSrc, ySrc+97, srcWidth=384, srcHeight);
                          }
                          else if (y = d1) {
                          WindowRenderer.drawStretchWindow(x=0, y, width+1800, height+400, pic);
                          }
                          else if (y >= d1) {
                          WindowRenderer.drawStretchWindow(x=0, y, width+1800, height+400, pic);
                          }
                          else {
                          WindowRenderer.drawStretchWindow(x-1400-96, y, width+1800, height+400, pic);
                          }
                          return y > d ? yMin: yMax;
                          },
                          _getTextLength: function() {
                          return ItemRenderer.getItemWindowWidth() - (GraphicsFormat.FACE_WIDTH + this._getInterval());
                          },
                          _getInterval: function() {
                          return 10;
                          },
                          _getWindowWidth: function() {
                          return ItemRenderer.getItemWindowWidth();
                          },
                          _getWindowHeight: function() {
                          return DefineControl.getFaceWindowHeight();
                          },
                          _getWindowXPadding: function() {
                          return DefineControl.getFaceXPadding();
                          },
                          _getWindowYPadding: function() {
                          return DefineControl.getFaceYPadding();
                          },
                          _drawShrinkFace1: function(xDest, yDest, handle1, pic1) {
                          var xSrc, ySrc;
                          var destWidth = GraphicsFormat.FACE_WIDTH;
                          var destHeight = GraphicsFormat.FACE_HEIGHT;
                          var srcWidth = destWidth;
                          var srcHeight = destHeight;
                          if (root.isLargeFaceUse() && pic.isLargeImage()) {
                          srcWidth = root.getLargeFaceWidth();
                          srcHeight = root.getLargeFaceHeight();
                          }
                          xSrc = handle1.getSrcX() * srcWidth;
                          ySrc = handle1.getSrcY() * srcHeight;
                          pic1.drawStretchParts(xDest, yDest, destWidth, destHeight, xSrc, ySrc+96, srcWidth, srcHeight);//臉塗大小位置
                          },
                          _drawSubInfo: function(x, y, unit, textui) {
                          var pic2 = root.queryUI('unit_gauge');
                          x += GraphicsFormat.FACE_WIDTH + this._getInterval();
                          y += 60;
                          },
                          _drawUnitLevel: function(xBase, yBase) {
                          var x = xBase + 303;
                          var y = yBase + 10;
                          ContentRenderer.drawLevelInfo1(x, y, unit);
                          },
                          _drawWeaponTypeArea: function(xBase, yBase) {
                          var dy = this._itemInteraction.getInteractionScrollbar().getScrollbarHeight() - 200;
                          WeaponTypeRenderer.drawClassWeaponList(xBase, yBase + dy, unit.getClass());
                          },


                          IP属地:中国台湾15楼2018-04-01 22:35
                          回复
                            //移植日本腳本異常狀態語法(測試中)
                            drawWindowContent: function(x, y) {
                            var i;
                            var textui = this.getWindowTextUI();
                            var color = textui.getColor();
                            var font = textui.getFont();
                            var st_title = '付与ステート一覧';// ステートのタイトル(付与ステート一覧)
                            var clm_siz = 22;// 1行の高さ
                            var icon_siz = 24;// アイコン表示幅
                            var turn_siz = 16;// 持続ターン数表示幅
                            var snam_siz = 100;// ステート名の表示幅
                            var stxt_siz = 348;// ステートテキストの表示幅
                            var yhos0 = -14;// 描画基準y座標の補正値0(指定したy座標だと少し隙間が空くので上に補正している)
                            var yhos = (-14+clm_siz);// 描画基準y座標の補正値(1行目に'付与ステート一覧'の文字を出したので、1行分下にずらした)
                            var tyhos = 6;// 文字表示y座標の補正値(文字はアイコンより小さいので少し下にずらして中心を合わせる感じにしている)
                            // 当該ユニットから、ステートリストを取得
                            var now_unit = this._unit;
                            var list = now_unit.getTurnStateList();// 当該ユニットにかかっているすべてのステートを取得
                            var max = list.getCount();// ステート数を取得
                            TextRenderer.drawText(x, y+yhos0+tyhos, st_title, -1, ColorValue.KEYWORD, font);// ステートのタイトル描画
                            for (i = 0; i < max ; i++) {
                            var turnState = list.getData(i);
                            var state = turnState.getState();
                            // ステートアイコン描画
                            var handle = state.getIconResourceHandle();
                            GraphicsRenderer.drawImage(x, y+(i*clm_siz)+yhos, handle, GraphicsType.ICON);// アイコン描画数が増やせるようy座標を少し上に補正
                            // 持続ターン数描画
                            if (turnState.getTurn() !== 0) {
                            // 持続ターン数がある場合、数字を描画
                            NumberRenderer.drawNumber(x + icon_siz + 8 , y+(i*clm_siz)+yhos+tyhos, turnState.getTurn());
                            }
                            else {
                            // 持続ターン数がない場合、'--'を描画
                            TextRenderer.drawSignText(x + icon_siz , y+(i*clm_siz)+yhos+tyhos, StringTable.SignWord_Limitless);
                            }
                            // ステート名とステートのテキスト表示
                            var stnam = state.getName();// ステート名取得
                            var descr = state.getDescription();// ステートのテキスト取得
                            TextRenderer.drawText(x+icon_siz+turn_siz+4, y+(i*clm_siz)+yhos+tyhos, stnam, snam_siz, color, font);// ステート名
                            TextRenderer.drawText(x+icon_siz+turn_siz+snam_siz-10, y+(i*clm_siz)+yhos+tyhos, descr, stxt_siz, color, font);// ステートのテキスト
                            }
                            },
                            //測試中
                            drawHp: function(x, y, hp, maxHp) {
                            var textHp = this._getHpText();
                            var textSlash = '/';
                            var dx = [0, 44, 60, 98];
                            TextRenderer.drawSignText(x + dx[0], y, textHp);
                            NumberRenderer.drawNumber(x + dx[1], y, hp);
                            TextRenderer.drawSignText(x + dx[2], y, textSlash);
                            NumberRenderer.drawNumber(x + dx[3], y, maxHp);
                            },
                            drawUnitHpZone: function(x, y, unit, pic2) {
                            var hp = unit.getHp();
                            var mhp = ParamBonus.getMhp(unit);
                            this.drawHp(x, y, hp, mhp);
                            y += 20;
                            this.drawGauge(x, y, hp, mhp, 1, 110, pic2);
                            },
                            drawGauge: function(x, y, curValue, maxValue, colorIndex, totalWidth, pic2) {
                            var i, n, per, full;
                            var width = UIFormat.GAUGE_WIDTH / 3;
                            var height = UIFormat.GAUGE_HEIGHT / 4;
                            var max = totalWidth / 10;
                            if (pic1 === null) {
                            return;
                            }
                            per = ((curValue / maxValue) * max);
                            if (per > 0 && per < 1) {
                            per = 0;
                            }
                            else {
                            // perは1より大きい。
                            // ゼロベースにするため、1減算する。
                            per -= 1;
                            }
                            for (i = 0; i < max; i++) {
                            if (i === 0) {
                            n = 0;
                            }
                            else if (i === max - 1) {
                            n = 2;
                            }
                            else {
                            n = 1;
                            }
                            if (per >= i) {
                            full = colorIndex;
                            }
                            else {
                            full = 0;
                            }
                            pic2.drawParts(x + (i * width), y, n * width, full * height, width, height);//寫條位置
                            }
                            },
                            _getWindowTextUI: function() {
                            return root.queryTextUI('face_window');
                            }
                            }
                            );
                            ////////////////////////////以上結束,你要參考的是~~~~中間的語法


                            IP属地:中国台湾16楼2018-04-01 22:36
                            回复
                              壕哒得哒褪,窝腰掰摸lz


                              IP属地:浙江来自Android客户端17楼2018-04-02 14:40
                              回复