創作內容

1 GP

5/4~,仿星穹鐵道─模擬宇宙,現階段戰鬥跳過,因為戰鬥系統還沒做或說沒仿

作者:李兒諳│2024-05-04 08:58:17│巴幣:2│人氣:78
下次實況仿模擬宇宙可能要6月,5月只剩三天假
這星期剩四個分身要衝開拓等級65(已於5/17完成)
星穹鐵道 亞服(Asia服)
UID 806507747 主帳號 6慢速百抗藿藿 , 2+1 140戰技點花火 , 2+1黃泉
UID 809955002  6+1阮‧梅
UID 809739802 6+1卡芙卡 2+1 黑天鵝
UID 809193429 6+5 飲月

仿模擬宇宙實況於5/15(三) 13:00~14:12
手工處理祝福文字檔的排版
但它格式不是很整齊
這段時間要想下祝福要怎麼儲存
或者說是戰鬥buff、debuff結算的問題

實況時間取決於我星穹鐵道全帳號跑完2.2活動跟主線會需要多少時間
於5/11 08:06左右,已將手頭上的全帳號2.2主線跑完
(更新這幾天正好有放兩天假,然後工作沒那麼忙,以後很難比這星期順利了)
雖然活動還沒解,但大致上能恢復實況了

5/4實況結束,處理文字檔不太順利
先說下處理的文字檔來源
複製下來之後,簡體轉繁體

如果是貼在記事本
原始內容應該會長這樣

命途回响:「存护」.png命途回响:「存护」存护

命途回响可消耗100点能量施放技能与命途「存护」发生回响共鸣,基于我方全体的护盾总量,对敌方全体造成物理属性伤害。1.0
回响构音:零维强化.png回响构音:零维强化存护

但文字檔還需要整理下,5/4今天主要就是在處理這個文字檔的整理
目前只整理了一小部份
還不是很滿意

處理結果大致上長這樣

命途迴響:「存護」命途迴響:「存護」存護
命途迴響可消耗100點能量施放技能與命途「存護」發生迴響共鳴,基於我方全體的護盾總量,對敵方全體造成物理屬性傷害。1.0
迴響構音:零維強化迴響構音:零維強化存護
命途迴響傷害提高命途迴響「存護」造成的攻擊必定造成暴擊。當隊伍中每有1個角色持有護盾時,暴擊傷害提高15%。1.0
迴響構音:共晶反應迴響構音:共晶反應存護
護盾
...

雖然有換行,但有些地方是沒對齊的

可能會找時間再人工整理
(其實我上星期就在想,人工整理可能還比較快
不過還是先嘗試下用程式處理
看能不能省去麻煩
因為真正需要用到的地方,只有玩家看到祝福的描述、祝福名稱、祝福類型 這三個
bwiki的內容畢竟主要是給玩家看的
跟遊戲中見到的會不太一樣)
放棄用程式來整理
或者是下次實況依然是在整理這份祝福文件

踩了一些坑

踩的坑主要是
要處理換行字元跟定位字元的話
優先處理換行字元
定位字元,也就是Tab鍵再另外替換掉會比反過來簡單很多

所以網頁檔只修改了這段
async function load_hit_order(url) {
  try {
    const response = await fetch(url);
    const data = await response.text();
    console.log(data);
    /*const data_after_mid = data.split("\r\n");
var data_after_end;

data_after_end = data_after_mid[0]

for(var i=1; i<data_after_mid.length;i++)
{
data_after_end = data_after_end.concat(","+data_after_mid[i]);
}
   */

seq_load[url]=data.split("\r\n");
//注意單純上面這行這個寫法
//在載入多個文字檔時會有問題
//但基本上我們可以利用seq_load[http://localhost/hit_order_1.txt]
//可以定位出要載入的文件要對應到哪個陣列索引
//所以我們要載入的文件名稱,最好具有數值上的順序

console.log(seq_load);

const regex = new RegExp(/\t/g);

for(var i=0; i<seq_load[url].length; i++)
{
if(regex.test(seq_load[url][i]))
{
regex.lastIndex=0;
seq_load[url][i] = seq_load[url][i].replace(/\t/g, "");
}

}

const regex_png = new RegExp(/.png/g);


for(var i=0; i<seq_load[url].length; i++)
{
if(regex_png.test(seq_load[url][i]))
{
regex.lastIndex=0;
seq_load[url][i] = seq_load[url][i].replace(/.png/g, "");
}

}
seq_load[url] = seq_load[url].filter(item => item)
console.log(seq_load[url]);

for(var i=0; i<seq_load[url].length; i++)
{
document.write(seq_load[url][i]);
document.write("<br>");

}



  } catch (err) {
    console.error(err);
  }
}

load_hit_order("http://localhost:5173/祝福_文字敘述.txt");
//因為我用node.js的功能來看網頁,所以它給的網址是這樣
//如果你們不是用npx vite開啟的話,網址可能要變
//然後,祝福_文字敘述是我把bwiki上面文字複製貼上簡轉繁之後自己存的文字檔
//由於內容有些大我就不提供了

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

5/4也就是今天 13:00~15:00實況
中間可能會暫離休息下眼睛大約總和20分鐘以上

5/4預計先處理模擬宇宙祝福的文字敘述檔
這部份應該很快就處理好
然後是試著記錄跟讓戰鬥時觸發已選擇的祝福效果

以下是上星期的初步結果
執行以下網頁檔需要三個圖片檔
battle.png

event.png
single_bless.png
跟一個jquery檔案
jquery-3.7.1.js

<!DOCTYPE html>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<html lang="zh-Hant" type="text/html; charset=UTF-8">
<title>仿星穹鐵道─模擬宇宙</title>
<body>
<script src="jquery-3.7.1.js" type="application/javascript" ></script>
<canvas id="myCanvas" width="1600" height="900"></canvas>

<script type="application/javascript" charset="UTF-8">

async function loadFileAndPrintToConsole(url) {
  try {
    const response = await fetch(url);
    const data = await response.text();
    console.log(data);
  } catch (err) {
    console.error(err);
  }
}


var our_hit_order=[];
var seq_load=[];

async function load_hit_order(url) {
  try {
    const response = await fetch(url);
    const data = await response.text();
    console.log(data);
    /*const data_after_mid = data.split("\r\n");
var data_after_end;

data_after_end = data_after_mid[0]

for(var i=1; i<data_after_mid.length;i++)
{
data_after_end = data_after_end.concat(","+data_after_mid[i]);
}
   */

seq_load[url]=data.split(",");
our_hit_order[0]=seq_load[url];
//注意單純上面這行這個寫法
//在載入多個文字檔時會有問題
//但基本上我們可以利用seq_load[http://localhost/hit_order_1.txt]
//可以定位出要載入的文件要對應到哪個陣列索引
//所以我們要載入的文件名稱,最好具有數值上的順序
console.log(seq_load);
  } catch (err) {
    console.error(err);
  }
}

var c=document.getElementById("myCanvas");
var canvas_2 = document.createElement("canvas");
//canvas_2不顯示在網頁上,它用於處理非同步圖片載入順序
canvas_2.setAttribute("height",300);
canvas_2.setAttribute("width",300);
//var ctx=c.getContext("2d");
var ctx =c.getContext("2d", { willReadFrequently: true })
var ctx_2 =canvas_2.getContext("2d", { willReadFrequently: true })

ctx.fillStyle="#FFFFFF";


ctx.fillStyle="#000000";

var cell_width = 100;
var cell_height = 96;


var battle_option = new temp_design("戰鬥","battle.png",200,50,3,127,196);
var event_option = new temp_design("事件","event.png",400,50,3,127,220);
var bless_option = new temp_design("祝福","single_bless.png",30,200,3,290,432);

//戰鬥圖檔寬高 127 196

//事件圖檔寬高 127 220

var elements = [];
elements.push(battle_option,event_option,bless_option);

function temp_design(id,img,left,top,zIndex,width,height)
{
this.id=id;
//this.image = img;
this.image = new Image();
this.image.src=img;
var self=this;
this.image.onload = function(){self.draw_flag=true; re_draw();}

this.left= left;
this.top= top;
this.zIndex = zIndex;
this.width=width;
this.height=height;
this.draw_flag = false;

$(c).on('handleClick', function(e, mouse) {
console.dir(mouse);

        if (self.left < mouse.x &&
            self.left + self.width > mouse.x &&
            self.top < mouse.y &&
            self.top + self.height > mouse.y) {
self.draw_flag = false;
ctx.clearRect(0,0,c.width,c.height);

ctx.fillStyle = "#000000";
ctx.fillText("選擇了"+self.id,300,120);
ctx.font = "20px 標楷體";

if(self.id == "戰鬥")
{
ctx.fillText("戰鬥勝利,請選擇祝福",270,160);
ctx.drawImage(elements[2].image,elements[2].left, elements[2].top,290,432);

ctx.drawImage(elements[2].image,elements[2].left+320, elements[2].top,290,432);
ctx.drawImage(elements[2].image,elements[2].left+640, elements[2].top,290,432);

}
else if(self.id == "事件")
{
ctx.fillText("尼爾底斯牌",320,260);
}
        }
    });
}

//目前生效的祝福
//就目前遊戲來看,已擁有的祝福就是已生效的祝福
//暫時還沒把生效的祝福無效化的可能性出現
//所以其實就是記錄單局擁有的祝福這樣

var bless_list=[]; //記錄祝福

for(i=0;i<9;i++)
{
bless_list[i]=[];
}
// 0 存護
// 1 記憶
// 2 虛無
// 3 豐饒
// 4 巡獵
// 5 毀滅
// 6 歡愉
// 7 繁育
// 8 智識
// 8個基本祝福 4個2星祝福 3個衍伸2星祝福 3個三星祝福
// 4個命途迴響 2個蝗災迴響交錯 2個黃金與機械回響交錯
// 除去智識外都最高有26個祝福
// 但正常遊戲模式下,單一命途頂多拿24個祝福,因為兩個DLC的迴響不會同時在同局出現

var miracles_list=[]; //記錄奇物
var ability_tree=[]; //記錄技能樹有哪些選項生效


var room_id = 1;

function re_draw()
{
num=0;
ctx.clearRect(0,0,c.width,c.height);

ctx.fillStyle = "#000000";
ctx.fillText("房間"+ room_id , 300 , 20);
ctx.font = "20px 標楷體";
elements.forEach(function(element) {
if(element.draw_flag && num < 2)
{
ctx.drawImage(element.image,element.left, element.top,cell_width,cell_width);
num++;
}
});
}


$(c).on('click', function(e) {
var mouse= {
        x: e.pageX - c.offsetLeft,
        y: e.pageY - c.offsetTop
}
         
    //fire off synthetic event containing mouse coordinate info
    $(c).trigger('handleClick', [mouse]);

});


</script>

</body>
</html>

引用網址:https://home.gamer.com.tw/TrackBack.php?sn=5927560
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

1喜歡★y541258 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:4/27,稍微計算了下,... 後一篇:5/16,最近時常對自己...

追蹤私訊切換新版閱覽

作品資料夾

ilove487奇幻小說連載中
[達人專欄] 《克蘇魯的黎明》0685.絕對不許分開!看更多我要大聲說昨天17:51


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】