分享自己改的一些遊戲介面排版截圖
srpgstudio吧
全部回复
仅看楼主
level 1
冰鏡弦月 楼主
有人有留訊息問我...但小弟要先說...目前還沒有做遊戲的打算耶
只是以修改介面排版為優先喔..改完全部再來考慮做遊戲吧0.0"
(如果各位想等的話啦...因為我連系統、事件、開關等等都還沒弄清楚呢)
我所使用的版本是最新版 1.083版
改的腳本都是放Plugin資料夾
話說回來,畢竟修改那...有些已經被定死的JS語法,我的能力也有限呀=口="
就拿起初一開始修改『出擊選單』來說好了....
最初結果如下.........
代價是...........
這之中又反覆測試到...直接系統WIN8換成WIN10....
接下來都是改造差不多的畫面囉
------------------------------------------------------------------
目前有改好(或是還在新增部分功能)的有如下
↑遊戲初始選單中的遊戲設定介面
(接下來預定改造『存讀紀錄』、『遊戲回想講解』的介面)
-----------------------------------------------------------------------
接下來是SRPG戰鬥部分介面
↑出擊選單介面
↑SRPG模式時,查看角色的介面
↑SRPG模式時,進入遊戲設定的介面
(放這張是說...很多內定的腳本都是通用的,所以在改之前要三思或自己新增父子類語法)
↑SRPG模式角色簡易介面在上方,下方則是如此↓
那個看似艦これ的長條介面,目前雖然只有辨識敵我方的功用,往後在思考要附加什麼上去吧?
(例如:移動力格數、地形補正<海S地B..>,角色說明(顯示全名)..等等之類)
預定修改項目其實還蠻多的,像是戰鬥畫面等等也是另一種問題所在0.0...
-----------------------------------------------------------------------------------------------------------
以下幾個是我改介面跟改圖時....生產出來的小雜物~看看後笑笑就行了=w=
<無人兵器>
<加賀(無艤裝)>
<加賀(艤裝版)>
<天津風(連裝砲君版)>
如果以後有更新再往樓下貼上吧XD!!
2016年06月25日 21点06分 1
level 1
dd
 ✎﹏﹏
不用数了这条回复是标准的17字。
2016年06月25日 23点06分 2
level 9
楼主好样的,期待完成品,反正不急,慢慢来吧。
2016年06月27日 00点06分 3
level 1
冰鏡弦月 楼主
最近官方更新了,版本升為1.084版!
但是好像更新的檔案中有跟我原本的腳本衝突
只好...直接開新檔案後~把問題之外的腳本移植後來大幅度的修正
這次小弟更新的部分是....
各位不覺得出擊選單...上頭只有名子很單調嗎?
所以為了感覺很像是讓玩家...加深角色印象吧?
因此小弟改了一下~出擊名單的成員不僅僅只有名子!
還有自己定義的臉圖!
效果如下~↓
2016年06月28日 22点06分 4
level 1
冰鏡弦月 楼主
居然傳錯圖檔....
下頭這個才是真正完成的
上面圖片新增的功能有
1、選單新增自定義臉圖顯示
2、狀態中顯示『種族』,例:『加賀』= 『艦娘』
2016年06月29日 00点06分 5
卤煮给力,干巴爹!
2016年06月29日 05点06分
level 1
冰鏡弦月 楼主
昨日所改的地方~就是如圖中的『登場人物詳解』
但並不沒完全改好,目前只有改排版介面而已喲!
(因為裡頭很多東西都要動到,所以打算...後天在動手改造並且自己新增資料庫...)
這次排版改造效果如下↓
(人物較少的顯示)
你可能會覺得說...這樣改好像沒什麼變化或感覺呀?
但是角色資料多的話~那種感覺又是另一種不同的感受了吧?
(人物較多的顯示)
還是那句老話...我實在很不喜歡那種....
『只用名子跟小道具來辨識角色』的顯示方式呀Orz
像這樣用臉圖來認人不是很好嗎?
還有...有人私訊問我『官方更新都不會改變回顯示日文嗎?』
我...還是那句老話耶=w="
官方更新通常只會把更新檔套用在...
『X:/自己創出遊戲作品的資料夾/Script/』根目錄全部
所以要改腳本,盡量別動到『Script』裡面的資料...否則更新又會變回原樣
我的話是更新也不會變動啦...
(除非是官方更新有衝突到我的腳本)
畢竟小弟是放在官方認同的『Plugin』資料夾內0.0..
「網路上所抓的JS語法腳本也是放此處」
-----------------------------------------------------------------------------------------------------------------
接下來~問題2
上次我改的『種族顯示』的語法...不是用『.getRace()』去抓資料...
這樣一定會顯示錯誤的呀...= ="
『種族』他是歸類在『Class類別』裡面
所以要顯示的話~就要加入兩項資料~
舉例來說~像我顯示在角色狀態內,就必須要找
『Script/screen/screen-unitmenu』這個來做修改
顯示臉圖、名子、行走圖、等級經驗、血條的位置是在 274 行位子
並且加入【this._drawUnitRace(x, y);】這段。
往下拉會找到
_drawUnitClass: function(xBase, yBase) {
var textui = this.getWindowTextUI();
var color = textui.getColor();
var font = textui.getFont();
var length = this._getClassTextLength();
var x = xBase;
var y = yBase;
var cls = this._unit.getClass();
UnitRenderer.drawDefaultUnit(this._unit, x, y, null);
TextRenderer.drawText(x, y, cls.getName(), length, color, font);
},
這段文字,別懷疑~全部都複製下來、並且貼在最後【},】後頭
但並不是這樣就結束了~還要改個地方才算大功告成!
_drawUnitRace: function(xBase, yBase) {
//把Class改成種族的Race
var textui = this.getWindowTextUI();
var color = textui.getColor();
var font = textui.getFont();
var length = this._getClassTextLength();
var x = xBase;
var y = yBase;
var Race = this._unit.getClass().getRace();
//將前面的cls改成Race後,this._unit.getClass()的後頭添加【.getRace();】
//讓他去抓Class類別中的Race資料
//UnitRenderer.drawDefaultUnit(this._unit, x, y, null);
//這段也要神隱或刪除掉,否則...行走圖會多出一個來
TextRenderer.drawText(x, y, Race.getName(), length, color, font);
//最後把『cls.getName()』改成自定義的『Race.getName()』即可
//要是不想這麼麻煩或還真不成功....那就把『var cls』改成『var cls』
//最後直接把『1』放在『cls』中。例如下面
//TextRenderer.drawText(x, y, cls1.getName(), length, color, font);
},
以上這算是比較簡單的語法,所以我能回答就回答囉0.0...
其餘比較難、要修改很多數值參數的...就請另尋神觸手吧=口="
2016年06月29日 22点06分 6
nice[真棒]
2016年06月30日 03点06分
level 12
支持大佬,期待更好的作品,加油
2016年07月01日 15点07分 7
謝謝囉~不過目前還只是想把全部介面改造~做遊戲的話~就等這些完成吧=w=+
2016年07月01日 16点07分
@冰鏡弦月 嘛,其实这软件更新太频繁而且很多功能都不完善。我已经放弃了制作游戏了。。。。。还是等过几年再说好了。。。
2016年07月01日 16点07分
原來是這樣啊=w="~其實也不是功能不完善...因為最早這軟體就是以火焰紋章當基礎的呀~所以跟現在的SPRG相比~功能就顯得弱化很多0.0...更新也不怎影響~只要把腳本修改的放置在Plugin就行囉=w=
2016年07月02日 10点07分
@冰鏡弦月 我就是说哪怕与火纹的系统相比还是有很多不足。。。。毕竟我就是当初看中就是和火纹差不多的这个软件。。。
2016年07月02日 12点07分
level 1
顶顶
 ✎﹏﹏
我掐指一算,楼主的贴子发表于7天12小时22分钟前,应该是2016-06-26 05:08发的。
2016年07月03日 09点07分 9
呃....不用看的這麼仔細吧XD
2016年07月05日 18点07分
level 12
求问大佬,能不能帮手做个被攻击只得1经验(自己不反击或者反击miss的情况下)的代码?因为原版是被攻击无论如何都能得到很多经验的。。。。
还有一个是能不能做个武器熟练度系统?目前原版是共同熟练度,熟练度够了就能使用所有满足熟练度的武器,但是我是希望和火纹那个武器熟练度一样的分类熟练度而不是共用熟练度的。
先谢过大佬[勉强]
2016年07月09日 17点07分 17
這個我記得日本網友有發佈相關腳本喔~下一樓貼給你順便部分重要處註解幫你翻譯
2016年07月09日 22点07分
level 1
冰鏡弦月 楼主
腳本1-武器レベル、武器熟練度実装
武器タイプ毎の武器熟練度、武器経験値、武器レベルを実装するスクリプト。
(要はFE封印とかの武器レベル)
【每個武器類型的武器熟練度、武器經驗值、武器等級的安裝腳本(簡稱為FE的武器等級封印)】
ついでにステータス画面にクラス説明文を表示するスクリプトも入ってます。
【並且附帶了在狀態介面時能夠寫顯示身體<角色>的腳本在裡頭】
公式配布スクリプトの熟練度とは別物です。
【這與官方的熟練度腳本不同】
体格などパラメータを追加するスクリプトと併用する場合は、色々弄らないといけないと思います。
【體格的參數附加的腳本併用情況下,我想*(^@!@$!】<<其實...我想後面這邊看不太懂
命中などの計算式を弄るスクリプトについては、他の計算式系スクリプトとの兼ね合いに注意して下さい。
【簡單說就是這腳本與其他有關計算命中、迴避...等腳本一起使用時必須要注意才行,否則很有可能會得不到武器經驗值的】
腳本2-經驗值補正
(經驗值補正..我不確定是不是你要的,但用前請三思..因為原作者也說會動到很多原本獲得的經驗設定)
接著後面請複製後另存JS檔腳本、並且放入(斜線請自行顛倒)
『X:/自己創出遊戲作品的資料夾/Plugin』中
以下開始~1樓 = 1個腳本 = 共6個腳本
2016年07月09日 22点07分 18
level 1
冰鏡弦月 楼主
/*--------------------------------------------------------------------------
腳本1-custom-item-weapnlevel(請自行改這檔名)
ユニットのアイテム情報に「武器レベル」「武器経験値」という項目を追加します。
【角色的道具情報中『武器等級』、『武器經驗值』等項目添加】
使用方法:
custom-unit-jyukurendo, edit_weapontype-caseと併用して下さい。
【使用方法:請與上面兩個腳本一起使用,單獨使用是不可以的】
武器のカスタムパラメータに{wlv: 6, wexp: 1, wtype: 0}のように設定します。
【舉例:在武器設定的自定義參數中填入{wlv: 6, wexp: 1, wtype: 0}的話】
[wlv: 6] 武器レベルが6の意味。ユニットの武器熟練度がこの武器レベルを上回る場合に、武器が装備できます。
※デフォルトでは[wlv: 1]で設定してあります。
【武器等級設定為6,假如角色的武器熟練度『超過』武器等級的情況下,這武器才能夠給此角色裝備】
【如沒設定...默認值為=wlv: 1,相等於武器等級1誰都能拿】
[wexp: 1] 武器経験値が1の意味。戦闘後に武器経験値*攻撃回数の武器経験値をユニットが取得します。
【武器經驗值設定為1,角色戰鬥後會以攻擊回數*1來計算武器經驗值】
[wtype: 0] 武器タイプが0の意味。剣なら0、斧なら1という風に武器タイプ毎に違う値を定義してください。
【武器類型設定為0=劍,如果定義劍=0、斧=1的話,請在每種武器類型中自訂定義不同的值。】
※現状では0(剣),1(槍),2(斧),3(弓),4(魔法)のみ定義しています。
※wtypeを設定しない場合、ユニットの武器熟練度を1として判定を行います。
(デフォルトでは武器レベルが1に設定されるので、カスタムパラメータwlvを渡していない武器は装備可能な状態)
作成者: CB
更新履歴:
2015/07/04 新規作成
2015/07/06 杖の熟練度実装に対応
2015/08/09 熟練度のクラス上限値に対応
--------------------------------------------------------------------------*/
(function() {
var alias2 = ItemControl.isWeaponAvailable;
ItemControl.isWeaponAvailable = function(unit, item) {
var i, count, n, id, unitWlv, weaponWlv, classBns, itemBns, unitBns, max, totalWlv, weaponType;
var d = 0;
var arr = [];
var weapon = item;
var weaponType = weapon.custom.wtype;
var result = alias2.call(this, unit, weapon);
if (!result) {
// 装備できないため続行しない
return false;
}
//武器タイプによって、参照する熟練度を変更する
classBns = ItemControl.getClassBonus(weaponType, unit);
itemBns = ItemControl.getItemBonus(weaponType, item);
unitBns = ItemControl.getUnitBonus(weaponType, unit);
max = AbilityCalculator.getJyukurendoMax(weaponType, unit);
if (typeof classBns === 'number') {
// クラスの熟練度ボーナスを加算
d = classBns;
}
count = UnitItemControl.getPossessionItemCount(unit);
for (i = 0; i < count; i++) {
item = UnitItemControl.getItem(unit, i);
if (item !== null && !item.isWeapon()) {
id = item.getId();
if (arr.indexOf(id) !== -1) {
continue;
}
arr.push(id);
if (typeof itemBns === 'number') {
n = itemBns;
}
else {
n = 0;
}
// ItemControl.isItemUsableを呼び出すことで、
// 使用が許可されていないユニットに対しての補正は無効にしている。
if (n !== 0 && ItemControl.isItemUsable(unit, item)) {
// アイテムの熟練度ボーナスを加算
d += n;
}
}
}
if (typeof unitBns === 'number') {
unitWlv = unitBns;
}
else {
unitWlv = 1;
}
if (typeof weapon.custom.wlv === 'number') {
weaponWlv = weapon.custom.wlv;
}
else {
weaponWlv = 1;
}
totalWlv = unitWlv + d;
//熟練度の合計がクラスの上限値を上回っている場合、熟練度にクラスの上限値を代入
if (totalWlv > max) {
totalWlv = max;
}
// 武器を装備できるのは、ユニットの熟練度が武器レベルを上回っていることが条件とする
return totalWlv >= weaponWlv;
};
var WeaponTypeName = defineObject(BaseObject,
{
getWeapnTypeName: function(item) {
var name = item.getWeaponType().getName();
return name;
}
}
);
var alias3 = ItemInfoWindow._configureWeapon;
ItemInfoWindow._configureWeapon = function(groupArray) {
alias3.call(this, groupArray);
groupArray.insertObject(ItemSentence.WeaponLevel, 2);
};
ItemSentence.WeaponLevel = defineObject(BaseItemSentence,
{
//武器(杖)のヘルプウインドウに武器LVを表示
drawItemSentence: function(x, y, item) {
var wlv = 1;
var textui = root.queryTextUI('default_window');
var color = textui.getColor();
var font = textui.getFont();
var length = 100;
if (typeof item.custom.wlv === 'number') {
wlv = item.custom.wlv;
}
if(item.isWand()) {
// 杖の場合、パラメータ名を'杖'に(杖の熟練度を実装していない場合、意味を成さない)
text = '杖';
} else {
text = item.getWeaponType().getName();
}
ItemInfoRenderer.drawKeyword(x, y, text);
x += ItemInfoRenderer.getSpaceX();
TextRenderer.drawText(x, y + 5, this.replaceWeaponLevel(wlv), length, color, font);
},
getItemSentenceCount: function(item) {
return 1;
}
}
);
// ↓武器経験値可視化用
//var alias4 = ItemInfoWindow._configureWeapon;
//ItemInfoWindow._configureWeapon = function(groupArray) {
//alias4.call(this, groupArray);
//groupArray.insertObject(ItemSentence.WeaponExp, 3);
//};
ItemSentence.WeaponExp = defineObject(BaseItemSentence,
{
// ↓武器経験値可視化用
//drawItemSentence: function(x, y, item) {
//var wexp = 1;
//var text = this._getText();
//
//if (typeof item.custom.wexp === 'number') {
//wexp = item.custom.wexp;
//}
//
//ItemInfoRenderer.drawKeyword(x, y, text);
//x += ItemInfoRenderer.getSpaceX();
//NumberRenderer.drawRightNumber(x, y, wexp);
//},
//
//getItemSentenceCount: function(item) {
//return 1;
//},
//
//_getText: function() {
//return '武器EX';
//}
}
);
})();
2016年07月10日 04点07分 20
level 1
冰鏡弦月 楼主
/*--------------------------------------------------------------------------
腳本1-custom-unit-jyukurendo(請自行改這檔名)
ユニットのステータスに武器毎の熟練度を追加します。GBA版FEの武器レベルのようなものです。
公式で配布されている、熟練度を追加するスクリプトとは併用しないで下さい。
使用方法:
custom-item-weapnlevelと併用してください。
ユニットのカスタムパラメータに{swd: 71, swdGrowthBonus: 80}のように設定します。
(剣熟練度の初期値が71、成長値が80%の意味)
剣熟練度ボーナスを持たせたいクラスのカスタムパラメータに{swd: 1, swdMax: 121}のように設定します。
剣熟練度ボーナスを持たせたいクラスのカスタムパラメータに{swd: 31, swdMax:121}のように設定します。
[swd: 1] ユニットがこのクラスに属している場合に、剣熟練度が
+3
1されます。
[swdMax: 121] ユニットがこのクラスに属している場合、剣熟練度の上限値が121になります(設定なしの場合251)。
熟練度を設定していない武器タイプについては、熟練度1として扱われます。
(デフォルトでは武器レベルが1に設定されるので、カスタムパラメータwlvを渡していない武器は装備可能な状態)
パラメータ名(getParameteNameのreturn値)は、対応する武器タイプの名前と同じにして下さい。
unitmenu-weaponlevelwindowで、正しく熟練度を表示できなくなります。
新たに武器熟練度を作成したい場合は、この内容をコピーして作って下さい。
また、新たに武器熟練度を作成した場合は、edit_weapontype-caseの編集が必要です。
作成者: CB
更新履歴:
2015/07/04 新規作成
--------------------------------------------------------------------------*/
(function() {
//剣熟練度の作成
ParamType.SWD = 9000;
UnitParameter.SWD = defineObject(BaseUnitParameter,
{getParameterType: function() {
return ParamType.SWD;},
getUnitValue: function(unit) {var swd;
if (typeof unit.custom.swd === 'number') {swd = unit.custom.swd;
}else {
swd = 1;}
return swd;},
setUnitValue: function(unit, value) {unit.custom.swd = value;},
getParameterBonus: function(obj) {var swd;
if (typeof obj.custom.swd === 'number') {
swd = obj.custom.swd;}
else {swd = 0;}
return swd;},
getGrowthBonus: function(obj) {
var swd;
if (typeof obj.custom.swdGrowthBonus === 'number') {
swd = obj.custom.swdGrowthBonus;}
else {swd = 0;}
return swd;},
getDopingParameter: function(obj) {var swd;
if (typeof obj.custom !== 'object') {
return 0;}
if (typeof obj.custom.swdDoping === 'number') {
swd = obj.custom.swdDoping;}
else {swd = 0;}
return swd;},
getAssistValue: function(obj) {return 0;},
getMaxValue: function(unit) {
var swdMax;
if (root.getUserExtension().isClassLimitEnabled()) {
if (typeof unit.getClass().custom.swdMax === 'number') {swdMax = unit.getClass().custom.swdMax;}
else {swdMax = 251;}}
else {if (typeof root.getMetaSession().global.swdMax === 'number') {
swdMax = root.getMetaSession().global.swdMax;}else {
swdMax = 251;}}
return swdMax;},
getMinValue: function(unit) {return 0;},
getParameterName: function() {
return '剣';}});
// 槍熟練度の作成
ParamType.LNC = 9001;UnitParameter.LNC = defineObject(BaseUnitParameter,{getParameterType: function() {return ParamType.LNC;},
getUnitValue: function(unit) {var lnc;if (typeof unit.custom.lnc === 'number') {
lnc = unit.custom.lnc;}
else {lnc = 1;}return lnc;},
setUnitValue: function(unit, value) {unit.custom.lnc = value;},
getParameterBonus: function(obj) {var lnc;if (typeof obj.custom.lnc === 'number') {
lnc = obj.custom.lnc;}else {lnc = 0;}return lnc;},
getGrowthBonus: function(obj) {var lnc;
if (typeof obj.custom.lncGrowthBonus === 'number') {
lnc = obj.custom.lncGrowthBonus;}
else {lnc = 0;}return lnc;},
getDopingParameter: function(obj) {var lnc;
if (typeof obj.custom !== 'object') {return 0;}
if (typeof obj.custom.lncDoping === 'number') {lnc = obj.custom.lncDoping;}
else {lnc = 0;}return lnc;},
getAssistValue: function(obj) {return 0;},
getMaxValue: function(unit) {var lncMax;if (root.getUserExtension().isClassLimitEnabled()) {
if (typeof unit.getClass().custom.lncMax === 'number') {lncMax = unit.getClass().custom.lncMax;}
else {lncMax = 251;}}else {if (typeof root.getMetaSession().global.lncMax === 'number') {lncMax = root.getMetaSession().global.lncMax;}
else {lncMax = 251;}}return lncMax;},getMinValue: function(unit) {return 0;},
getParameterName: function() {return '槍';}});
// 斧熟練度の作成
ParamType.AXE = 9002;
UnitParameter.AXE = defineObject(BaseUnitParameter,
{getParameterType: function() {return ParamType.AXE;},
getUnitValue: function(unit) {var axe;if (typeof unit.custom.axe === 'number') {axe = unit.custom.axe;}
else {axe = 1;}return axe;},setUnitValue: function(unit, value) {unit.custom.axe = value;},
getParameterBonus: function(obj) {var axe;if (typeof obj.custom.axe === 'number') {axe = obj.custom.axe;}
else {axe = 0;}return axe;},getGrowthBonus: function(obj) {var axe;if (typeof obj.custom.axeGrowthBonus === 'number') {axe = obj.custom.axeGrowthBonus;}else {axe = 0;}return axe;},getDopingParameter: function(obj) {var axe;if (typeof obj.custom !== 'object') {return 0;}if (typeof obj.custom.axeDoping === 'number') {axe = obj.custom.axeDoping;}else {axe = 0;}return axe;},getAssistValue: function(obj) {
return 0;},getMaxValue: function(unit) {var axeMax;if (root.getUserExtension().isClassLimitEnabled()) {if (typeof unit.getClass().custom.axeMax === 'number') {axeMax = unit.getClass().custom.axeMax;}
else {axeMax = 251;}}else {if (typeof root.getMetaSession().global.axeMax === 'number') {axeMax = root.getMetaSession().global.axeMax;}else {axeMax = 251;}}return axeMax;},
getMinValue: function(unit) {return 0;},getParameterName: function() {return '斧';}});
// 弓熟練度の作成
ParamType.ARW = 9003;UnitParameter.ARW = defineObject(BaseUnitParameter,
{getParameterType: function() {return ParamType.ARW;},getUnitValue: function(unit) {
var arw;if (typeof unit.custom.arw === 'number') {arw = unit.custom.arw;}else {arw = 1;}
return arw;},setUnitValue: function(unit, value) {unit.custom.arw = value;},getParameterBonus: function(obj) {var arw;if (typeof obj.custom.arw === 'number') {arw = obj.custom.arw;}else {arw = 0;}return arw;},
getGrowthBonus: function(obj) {var arw;if (typeof obj.custom.arwGrowthBonus === 'number') {arw = obj.custom.arwGrowthBonus;}else {arw = 0;}return arw;},getDopingParameter: function(obj) {var arw;if (typeof obj.custom !== 'object') {return 0;}if (typeof obj.custom.arwDoping === 'number') {arw = obj.custom.arwDoping;}else {arw = 0;}return arw;},getAssistValue: function(obj) {return 0;},getMaxValue: function(unit) {var arwMax;if (root.getUserExtension().isClassLimitEnabled()) {if (typeof unit.getClass().custom.arwMax === 'number') {
arwMax = unit.getClass().custom.arwMax;}
else {
arwMax = 251;}}
else {
if (typeof root.getMetaSession().global.arwMax === 'number') {
arwMax = root.getMetaSession().global.arwMax;}
else {
arwMax = 251;}}
return arwMax;},
getMinValue: function(unit) {
return 0;},
getParameterName: function() {
return '弓';}}
);
//魔法熟練度の作成
// 既存の数値と一致しない値に設定
ParamType.MGC = 9004;
UnitParameter.MGC = defineObject(BaseUnitParameter,
{
getParameterType: function() {
return ParamType.MGC;},
getUnitValue: function(unit) {
var mgc;
if (typeof unit.custom.mgc === 'number') {
mgc = unit.custom.mgc;}
else {
mgc = 1;}
return mgc;},
setUnitValue: function(unit, value) {
unit.custom.mgc = value;},
getParameterBonus: function(obj) {
var mgc;
if (typeof obj.custom.mgc === 'number') {
mgc = obj.custom.mgc;}
else {
mgc = 0;}
return mgc;},
getGrowthBonus: function(obj) {
var mgc;
if (typeof obj.custom.mgcGrowthBonus === 'number') {
mgc = obj.custom.mgcGrowthBonus;}
else {
mgc = 0;}
return mgc;},
getDopingParameter: function(obj) {
var mgc;
if (typeof obj.custom !== 'object') {
return 0;}
if (typeof obj.custom.mgcDoping === 'number') {
mgc = obj.custom.mgcDoping;}
else {
mgc = 0;}
return mgc;},
getAssistValue: function(obj) {
return 0;},
getMaxValue: function(unit) {
var mgcMax;
if (root.getUserExtension().isClassLimitEnabled()) {
if (typeof unit.getClass().custom.mgcMax === 'number') {
mgcMax = unit.getClass().custom.mgcMax;}
else {
mgcMax = 251;
}}
else {
if (typeof root.getMetaSession().global.mgcMax === 'number') {
mgcMax = root.getMetaSession().global.mgcMax;
}
else {
mgcMax = 251;
}}
return mgcMax;},
getMinValue: function(unit) {
return 0;},
getParameterName: function() {
return '魔法';
}});
//作成した熟練度をユニットパラメータに追加
var alias1 = ParamGroup._configureUnitParameters;
ParamGroup._configureUnitParameters = function(groupArray) {
alias1.call(this, groupArray);
groupArray.insertObject(UnitParameter.SWD, 9);
groupArray.insertObject(UnitParameter.LNC, 10);
groupArray.insertObject(UnitParameter.AXE, 11);
groupArray.insertObject(UnitParameter.ARW, 12);
groupArray.insertObject(UnitParameter.MGC, 13);
};})();
2016年07月10日 04点07分 21
level 1
冰鏡弦月 楼主
/*--------------------------------------------------------------------------
ユニットメニューの下ウインドウに2ページ目を追加します。
ユニットウインドウの2ページ目に武器(杖)熟練度を表示します。
作成者: CB
更新履歴:
2015/07/03 新規作成
2015/07/06 杖の熟練度実装に対応
--------------------------------------------------------------------------*/
(function() {
var alias1 = UnitMenuScreen._configureBottomWindows;
UnitMenuScreen._configureBottomWindows = function(groupArray) {
alias1.call(this, groupArray);
groupArray.appendWindowObject(UnitMenuBottomSecondWindow, this);
};
//ユニットウインドウの2ページ目に武器熟練度を表示
var UnitMenuBottomSecondWindow = defineObject(BaseWindow,
{
_itemScrollbar: null,
_itemInfoWindow: null,
_skillIconScrollbar: null,
_skillInfoWindow: null,
_statusScrollbar: null,
_unit: null,
_isHelpMode: false,
_unitMenuHelp: 0,
setUnitMenuData: function() {
this._itemScrollbar = createScrollbarObject(ItemListScrollbar, this);
this._itemScrollbar.setScrollFormation(1, DefineControl.getVisibleUnitItemCount());
this._itemScrollbar.resetDropMark();
this._itemInfoWindow = createWindowObject(ItemInfoWindow, this);
this._skillIconScrollbar = createScrollbarObject(IconItemScrollbar, this);
this._skillIconScrollbar.setScrollFormation(7, 1);
this._skillInfoWindow = createWindowObject(SkillInfoWindow, this);
this._statusScrollbar = createScrollbarObject(StatusScrollbar, this);
},
changeUnitMenuTarget: function(unit) {
var weapon, arr;
this._unit = unit;
this._isHelpMode = false;
this._unitMenuHelp = 0;
this._itemScrollbar.setUnitItemFormation(unit);
weapon = ItemControl.getEquippedWeapon(unit);
arr = SkillControl.getSkillMixArray(unit, weapon, -1, '');
this._skillIconScrollbar.setObjectArray(arr);
},
moveWindowContent: function() {
return MoveResult.END;
},
drawWindowContent: function(x, y) {
this._drawParamArea(x, y);
},
getWindowWidth: function() {
return 450;
},
getWindowHeight: function() {
return DefineControl.getUnitMenuBottomWindowHeight();
},
setHelpMode: function() {
return false;
},
isHelpMode: function() {
return false;
},
drawWindowContent: function(x, y) {
this._drawUnitWeaponLv(x, y);
},
_drawUnitWeaponLv: function(xBase, yBase) {
var i, c, ParamName, ParamValue;
var unit = this._unit;
var textui_name = this._getWindowTextUI_Name();
var color_name = textui_name.getColor();
var font_name = textui_name.getFont();
var textui_param = this._getWindowTextUI_Param();
var color_param = textui_param.getColor();
var font_param = textui_param.getFont();
var length = this._getUnitTextLength();
var x = xBase + 15;
var y = yBase + 7;
var xspace = 0;
var yspace = 0;
var col = 4;
var count = ParamGroup.getParameterCount();
// HP~移動力を入れないために9から開始する
for (i = 9, c = 1, xspace = 0; i < count; i++, c++){
// パラメータ名(熟練度に対応する武器名)の記述
ParamName = ParamGroup.getParameterName(i);
TextRenderer.drawText(x + xspace, y + yspace, ParamName, length, color_name, font_name);
// パラメータの値(熟練度の値)の記述
// 武器が装備可能か調べる
if(this._isWeaponTypeEquiped(unit, ParamName)) {
// 装備可能な場合、ボーナスも加算する
ParamValue = ParamGroup.getClassUnitValue(unit, i) + ParamGroup.getUnitTotalParamBonus(unit, i);
// 熟練度の値に応じて、表示する文字を設定
text = ItemSentence.WeaponLevel.replaceWeaponLevel(ParamValue);
} else if((ParamName === '杖') && (unit.getClass().getClassOption() & ClassOptionFlag.WAND)){
// 杖が使用可能な場合、ボーナスも加算する(杖熟練度を実装していない場合、意味を持たない)
ParamValue = ParamGroup.getClassUnitValue(unit, i) + ParamGroup.getUnitTotalParamBonus(unit, i);
// 熟練度の値に応じて、表示する文字を設定
text = ItemSentence.WeaponLevel.replaceWeaponLevel(ParamValue);
} else {
// 装備できない場合は、'-'を表示
text = '-';
}
xspace += 40;
TextRenderer.drawText(x + xspace, y + yspace, text, length, color_param, font_param);
if(c % col === 0) {
xspace = 0;
yspace += 30;
} else {
xspace += 55;
}
}
},
_isWeaponTypeEquiped: function(unit, paramname) {
var i;
var list = unit.getClass().getEquipmentWeaponTypeReferenceList();
var count = list.getTypeCount();
// クラスの装備可能武器のリストに入っているか
for (i = 0; i < count; i++) {
if (paramname === list.getTypeData(i).getName()) {
break;
}
}
if (i === count) {
return false;
}
return true;
},
_getWindowTextUI_Name: function() {
return root.queryTextUI('infowindow_title');
},
_getWindowTextUI_Param: function() {
return root.queryTextUI('default_window');
},
_getUnitTextLength: function() {
return 180;
},
isTracingHelp: function() {
return false;
},
getHelpText: function() {
return '';
}
}
);
})();
2016年07月10日 04点07分 23
level 1
冰鏡弦月 楼主
/*--------------------------------------------------------------------------
腳本1-22樓-custom-unit-jyukurendo(請自行改這檔名)
腳本1-23樓-edit_weapontype-case(請自行改這檔名)
----------------------------------------------------------------------------
腳本2-此樓-singleton-calculator_custom(請自行改這檔名)
命中率計算式変更(武器熟練度S時のボーナス有り)
命中率クラスボーナス
回避率計算式変更
回避率クラスボーナス
必殺率計算式変更(武器熟練度S時のボーナス有り)
必殺率クラスボーナス
経験値計算式変更<<<要改的是這裡★
nobu9氏作成の「singleton-calculator-hit-avoid-crt-exp」を大元として、
それに熟練度S補正について追記した形です。
↓以下、nobu9氏作成の「singleton-calculator-hit-avoid-crt-exp」の記述です。
//【使い方】
//Pluginフォルダにコピー
//補正関連はクラスのカスタムパラメータに
//{hitp:10} 命中率補正
//{crt:10} 必殺率補正
//{avo:10} 回避率補正
//などと書き込む
//まとめてなら{hitp:10, crt:10, avo:10}といった感じ
//
//【混ぜるな危険】
//Pluginフォルダに命中率・回避率・必殺率・経験値計算式を変更する
//ほかのスクリプトを入れないこと
//またはコメントアウトすること
//(スクリプトに自信のある方は除く)
↑ここまでコピペです。
【注意】
「武器レベル、武器熟練度実装」フォルダ内のスクリプト群と併用してください。
さもないと、命中、必殺の計算がバグります。
これは、命中、必殺の計算に「武器ランクS補正」を加えている為です。
ランクS補正の部分をコメントアウトすれば、単品で使えます。
作成者: CB
更新履歴:
2015/07/06 作成
2015/08/05 武器レベルS判定の際、
クラスボーナス、アイテムボーナスが無視されていた問題を修正
--------------------------------------------------------------------------*/
AbilityCalculator.getHit = function(unit, weapon) {
var cls = unit.getClass();
var hitb = cls.custom.hitp;
var value;
//クラスのカスタムパラメータのhitpに
//数値が入っていなかったら上の式,
//数値が入っていたら下の式で計算
//(!== 右側でない場合という意味)
if (typeof cls.custom.hitp !== 'number') {
// 武器の命中率 + 技 * 2 + 運 * 0.5
value = weapon.getHit() + RealBonus.getSki(unit) * 2 + RealBonus.getLuk(unit) * 0.5;
}
else{
value = weapon.getHit() + RealBonus.getSki(unit) * 2 + RealBonus.getLuk(unit) * 0.5 + hitb;
}
// 武器の熟練度が251(ランクS)の場合、Sランク補正をつける
if (AbilityCalculator.getJyukurendo(unit, weapon) >= 251) {
value = value + 5;
}
return value;
};
AbilityCalculator.getAvoid = function(unit) {
var avoid, terrain;
var cls = unit.getClass();
var avob = cls.custom.avo;
if (typeof cls.custom.avo !== 'number') {
// 回避は、速さ * 2 + 運 + 地形情報
avoid = RealBonus.getSpd(unit) * 2 + RealBonus.getLuk(unit);
}
else{
avoid = RealBonus.getSpd(unit) * 2 + RealBonus.getLuk(unit) + avob;
}
// クラス系統が、地形情報を考慮するかどうか
if (cls.getClassType().isTerrainBonusEnabled()) {
terrain = PosChecker.getTerrainFromPos(unit.getMapX(), unit.getMapY());
avoid += terrain.getAvoid();
}
return avoid;
};
AbilityCalculator.getCritical = function(unit, weapon) {
var cls = unit.getClass();
var clb = cls.custom.crt;
var value;
if (typeof cls.custom.crt !== 'number') {
// 技/2 + 武器のクリティカル率
value = RealBonus.getSki(unit)/2 + weapon.getCritical();
}
else {
value = RealBonus.getSki(unit)/2 + weapon.getCritical() + clb;
};
// 武器の熟練度が251(ランクS)の場合、Sランク補正をつける
if (AbilityCalculator.getJyukurendo(unit, weapon) >= 251) {
value = value + 5;
}
return value;
};
AbilityCalculator.getAgility = function(unit, weapon) {
var agi, pow, value;
var spd = RealBonus.getSpd(unit);
// 通常、敏捷は速さと同一
agi = spd;
// 重さ表示が有効な場合
if (DataConfig.isItemWeightDisplayable() && weapon !== null) {
pow = ParamBonus.getStr(unit);
// 重さ - 力
value = weapon.getWeight() - pow;
if (value > 0) {
// 力が重さより低いため、その差分だけ敏捷を下げる
agi -= value;
}
}
return agi;
};
/*--------------------------------------------------------------------------
以下是有關擊敗敵人、反擊與沒擊倒敵人所得經驗,
看數字修改即可
--------------------------------------------------------------------------*/
ExperienceValueControl._getNoDamageExperience = function(active, activeHp, activeDamageTotal, passive, passiveHp, passiveDamageTotal) {
var exp = 1;
// こちらがダメージを与えられなかったときは経験値1で固定
return this._getValidExperience(exp);
};
ExperienceValueControl._getVictoryExperience = function(active, activeHp, activeDamageTotal, passive, passiveHp, passiveDamageTotal) {
var exp;
var baseExp = this._getBaseExperience();
var bonusExp = passive.getClass().getBonusExp();
var lv = passive.getLv() - active.getLv();
// ボーナス経験値がマイナスの場合は、勝利時に経験値を取得しない。
// これは最終マップのリーダー撃破を想定したものである。
if (bonusExp < 0) {
return 0;
}
// 撃破時の経験値を固定にしているため、
// クラスの追加経験値をそのまま返す。
if (root.getUserExtension().isFixedExperience()) {
return this._getValidExperience(bonusExp);
}
// 相手を倒した場合の処理
if (lv > 0) {
exp = ((21 + lv) * 0.5) + (baseExp + lv);
exp = Math.floor(exp);
}
else {
exp = ((21 + lv) * 0.5) + (baseExp + lv);
exp = Math.floor(exp);
}
// 相手がリーダー、サブリーダーの場合は経験値を加算
exp += this._getBonusExperience(passive);
// 相手のクラスの追加経験値を加算
exp += bonusExp;
// 撃破時の最低経験値は1
if (exp < 1) {
exp = 1;
}
return this._getValidExperience(exp);
};
ExperienceValueControl._getNormalValue = function(active, activeHp, activeDamageTotal, passive, passiveHp, passiveDamageTotal) {
var exp;
var lv = passive.getLv() - active.getLv();
// 未撃破経験値の基本値は21
exp = (21 + lv) * 0.5;
exp = Math.floor(exp);
if (exp < 1) {
exp = 1;
}
return this._getValidExperience(exp);
};
2016年07月10日 05点07分 24
愚蠢的我还是表示不会,还是等大佬发布简单易懂版罢了。。。[泪]
2016年07月10日 12点07分
@eliche 最近很忙...連我自己也沒多少時間碰觸了[狂汗] 我找時間把這些在統合一下~因為我自己也發現需要這個腳本
2016年07月14日 02点07分
@冰鏡弦月 [滑稽]其实是可以用的,但是打开界面就跳错误,在仓库里还是能看到可以用的。估计是要改界面?还是说我少了个界面的js?
2016年07月14日 06点07分
@eliche 我目前測試都正常...可能是度娘排版有問題...導致語法部分錯誤的關係吧?
2016年07月14日 06点07分
level 9
楼主自己也在挖坑吗?有做游戏的意愿吗?
2016年07月18日 02点07分 28
目前還沒有做遊戲的意願唷~只是單純改系統跟見面而已~ 不過...最近公司太多是太忙碌...幾乎沒時間碰觸了Orz
2016年07月18日 17点07分
@冰鏡弦月 都是上班族,惨啊。我也就擅长地图,剧本,数据设置。[汗]其实时间少可以慢慢做的。
2016年07月18日 23点07分
1 2 3 尾页