動かすために変更するスクリプトの箇所
Main,AccessClass,Sounds の3つのクラスに変更を加えています
これはとりあえず動かすための変更で
このスクリプトではcharaData,partyData,itemData,questDataを(しょうがなく)SharedObejctでローカルに保存しています
一応、自己責任でお願いします
まだログ保存、ログイン、ログアウト、レジスト、リプレイ、ゾンビから復活、レスキューなど対応していない機能も多く、とりあえずでいれているデータも多い
スクリプト内のどの行かを()に書いています、上から順に変更した場合の行数なのでだいたいそのあたりだと思ってください。
Main
追加 | Main にSharedObjectを追加します、"InishieCloneSaveData"の部分はなんでもいいです、それがセーブファイルの名前になります(186,188)
private var try_cnt:int = 0;
の次の行に↓を挿入
public var mso:SharedObject;
public function Main() {
の次の行に↓を挿入
this.mso = SharedObject.getLocal("InishieCloneSaveData","/");
削除 | よくわからないがJavaScriptの呼び出しになんかを設定している?(210)
ExternalInterface.addCallback("flashFunc",this.getJavaScriptCall);
AccessClass
変更 | サーバーと送受信をしている箇所なのでけっこう変えないといけない
ここではxmlファイルから読み込んでいるがデータを読み込めれば他の方法でもよさそう
{xmlファイルをおいてるフォルダ}はxmlファイルを置いてる場所に適宜変える(331)
変更時にパスの"\"の部分を"\\"か"/"に変えといてください("aaa\bbb\ccc"→"aaa\\bbb\\ccc")
変更前
this.loader.dataFormat = URLLoaderDataFormat.VARIABLES; this.loader.addEventListener(Event.OPEN,this.loaderOpenFunc); this.loader.addEventListener(Event.COMPLETE,this.loaderCompleteFunc); this.loader.addEventListener(IOErrorEvent.IO_ERROR,this.URLLoaderIOErrorFunc); this.loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR,this.loaderSecurityErrorFunc); this.access_time = getTimer() / 1000; addEventListener(Event.ENTER_FRAME,this.loadEnterFrameFunc); this.loader.load(_loc2_);
変更後
_loc2_.data = _loc3_;
_loc2_.method = URLRequestMethod.POST;
this.loader.data = _loc3_;
var save_path:* = "{xmlファイルをおいてるフォルダ}\\";
var xmlLoader:* = new URLLoader();
if(this.loader.data.mode == "first")
{
save_path += "inishieFirst.xml";
xmlLoader.addEventListener(Event.COMPLETE,this.newFirstLCFunc);
}
else if(this.loader.data.mode == "mapload" || this.loader.data.mode == "mapload2")
{
var areaML:* = this.loader.data.mapname.split("_")[0];
var floorML:* = this.loader.data.mapname.split("_")[1];
xmlLoader.addEventListener(Event.COMPLETE,this.loaderComp_mapload);
save_path += areaML == 0 || areaML == -1 ? "inishieMapTown.xml" : (1 <= areaML && areaML <= 15 ? "inishieMapA" + areaML + ".xml" : (500 <= areaML ? "inishieMapPC.xml" : "inishieXML.xml"));
}
else
{
save_path += "inishieXML.xml";
xmlLoader.addEventListener(Event.COMPLETE,this.newloaderCompleteFunc);
}
trace(save_path);
xmlLoader.load(new URLRequest(save_path));
追加 | さらにサーバー側で行っていたであろう処理に関する関数を追加する(341)*1
追加関数
- newFirstLCFunc : 最初にデータをロードする関数
- newloaderCompleteFunc : いろいろサーバーと通信する関数
- loaderComp_mapload : ロードしたマップデータを処理する関数
- avatarSetNL : avatarを表す文字列を設定する関数
- mergeItems : 所持しているアイテムでローカルに保存されたアイテムを上書きする関数
- getEquip : 初期装備の設定を得る関数
- setZukanData : 図鑑を更新する関数
- mergeChara : キャラデータを更新する関数
- emergeConv : emergeを変換する関数
- setCode : ひみつのコードの関数
private function loaderOpenFunc(param1:Event) : *
の前に↓を挿入private function newFirstLCFunc(param1:Event) : * { var seedAC:* = Math.floor(Math.random() * 2147483647); trace("------ " + this.loader.data.mode + " ------"); for(var entry in this.loader.data) { trace("pr: " + entry + ", val: " + this.loader.data[entry]); } trace("------ " + this.loader.data.mode + " ------"); this.loader.data.playcount = 200; this.loader.data.counttime = 100; var xmlF:* = new XML(param1.target.data); xmlF.seed = seedAC; if(this.Main.mso.data.quest != undefined) { xmlF.charaData = this.Main.mso.data.chara; xmlF.partyData = this.Main.mso.data.party; xmlF.questData = this.Main.mso.data.quest; xmlF.itemData = this.Main.mso.data.item; xmlF.ezukan = this.Main.mso.data.ezukan == undefined ? "" : this.Main.mso.data.ezukan; xmlF.izukan = this.Main.mso.data.izukan == undefined ? "" : this.Main.mso.data.izukan; } this.Main.accessEnd(this.loader.data.mode,xmlF); }
private function newloaderCompleteFunc(param1:Event) : * { var xml:* = new XML(param1.target.data); var seedAC:* = Math.floor(Math.random() * 2147483647); trace("------ " + this.loader.data.mode + " ------"); for(var entry in this.loader.data) { trace("pr: " + entry + ", val: " + this.loader.data[entry]); } trace("------ " + this.loader.data.mode + " ------"); this.loader.data.playcount = 200; this.loader.data.counttime = 100; var inmode:* = this.loader.data.mode; if(inmode == "charamake") { this.loader.data.id = "testID"; this.loader.data.pass = "testPass"; this.loader.data.counttime = 1; this.loader.data.loginkey = "testLK"; var temp0:* = "cID" + this.loader.data.slot; var newcharabase:* = [temp0,this.loader.data.slot,this.loader.data.name,this.loader.data.job,this.avatarSetNL(this.loader.data.seed,this.loader.data.index),1,0,50,0,1,-1]; newcharabase[14] = 0; this.loader.data.newchara = newcharabase.join(","); if(this.Main.mso.data.chara != undefined && this.Main.mso.data.chara != "") { var temp1:* = this.Main.mso.data.chara.split("/"); temp1[this.loader.data.slot] = this.loader.data.newchara; this.Main.mso.data.chara = temp1.join("/"); } else { this.Main.mso.data.chara = this.loader.data.newchara; } temp1 = []; if(this.Main.mso.data.item != undefined && this.Main.mso.data.item != null && this.Main.mso.data.item != "") { temp1.push(this.Main.mso.data.item); } temp1.push(this.getEquip(this.loader.data.seed,this.loader.data.index,temp0,this.loader.data.job,true)); temp1 = temp1.join("/"); this.loader.data.itemData = temp1; this.Main.mso.data.item = temp1; this.Main.mso.flush(); this.Main.accessEnd(this.loader.data.mode,this.loader.data); } else if(inmode == "gamestart") { this.loader.data.seed = seedAC; this.loader.data.time = 100; this.loader.data.playkey = "testPK"; this.loader.data.zombieid = ""; this.loader.data.practice = 0; this.loader.data.zindex = 0; var pTIME:* = "0000000000"; this.loader.data.charaData = this.Main.mso.data.chara; temp0 = this.Main.mso.data.party; this.loader.data.partyData = temp0 == undefined || temp0 == "" || temp0 == null ? "1,1,0,0," + seedAC + "," + pTIME + "<>" + this.loader.data.partydata : temp0.split("<>")[0] + "<>" + this.loader.data.partydata; this.Main.mso.data.party = this.loader.data.partyData; if(this.Main.mso.data.quest == undefined) { this.Main.mso.data.quest = "0,0/0,0/0,0/0,0/0,0/0,0/0,0/0,1/0,0/0,0/0,0/0,0/0,0/0,0/0,0/0,0/0,0/0,0/0,0/0,0/0,0/0,0/0,0/0,0/0,0/0,0/0,0/0,0/0,0/0,0/0,0/0,0/0,0/0,0/0,0/0,0/0,0/0,0/0,0/0,0"; } this.loader.data.questData = this.Main.mso.data.quest; this.loader.data.itemData = this.Main.mso.data.item; this.Main.mso.data.dropRandIndex = 0; this.Main.mso.flush(); this.Main.accessEnd(this.loader.data.mode,this.loader.data); } else if(inmode == "datasave" || inmode == "saveware" || inmode == "savelog" || inmode == "saveend" || inmode == "wareend") { this.setZukanData(this.loader.data.killdata,this.loader.data.pickupdata,false); var charList:* = mergeChar(this.loader.data.charadata,this.Main.mso.data.chara); var partyMem:* = this.loader.data.partydata.split("<>")[1].split("/"); var i:* = 0; while(i < charList.length) { if(charList[i] != "") { var flagInParty:Boolean = false; if(inmode == "savelog") { var j:* = 0; while(j < partyMem.length) { if(charList[i][0] == partyMem[j].split(",")[0]) { flagInParty = true; break; } j++; } } charList[i][14] = flagInParty ? int(charList[i][14]) + 1 : charList[i][14]; charList[i] = charList[i].join(","); } i++; } this.loader.data.charaData = charList.join("/"); this.Main.mso.data.chara = charList.join("/"); temp1 = this.loader.data.partydata.split("<>"); temp2 = temp1[0].split(","); areaNL = temp2[0]; var floorNL:* = temp2[1]; var xNL:* = temp2[2]; var yNL:* = temp2[3]; var erasePotalFlag:* = false; var pos:* = this.Main.mso.data.party.split("<>")[0].split(","); if(inmode == "datasave" && pos[0] == 14 && pos[1] == 100 && xNL == 40 && yNL == 44) { temp2[0] = 6; temp2[1] = 26; temp2[2] = 47; temp2[3] = 12; } else if(areaNL == 0 && floorNL == 0) { if(xNL == -1 && yNL == -1) { temp2[2] = 36; temp2[3] = 31; } else { temp3 = this.Main.mso.data.party.split("<>")[0].split(",")[0]; var locToTown:* = temp3 == 1 ? [29,7] : (temp3 == 2 ? [46,4] : (temp3 == 3 ? [8,5] : (temp3 == 4 ? [38,6] : (temp3 == 5 ? [41,20] : (temp3 == 6 ? [29,5] : (temp3 == 7 ? [17,20] : (temp3 == 8 ? (this.Main.mso.data.party.split("<>")[0].split(",")[1] == 40 ? [26,7] : [46,21]) : (8 < temp3 ? [29,7] : [temp2[2],temp2[3]])))))))); temp2[2] = locToTown[0]; temp2[3] = locToTown[1]; } } else if(areaNL == 0 && floorNL == 1) { if(xNL == 29 && yNL == 38) { temp2[0] = 5; temp2[1] = 1; } else if(xNL == 29 && yNL == 7) { temp2[0] = 1; temp2[1] = 1; } else if(xNL == 46 && yNL == 4) { temp2[0] = 2; temp2[1] = 6; } else if(xNL == 8 && yNL == 5) { temp2[0] = 3; temp2[1] = 11; } else if(xNL == 38 && yNL == 6) { temp2[0] = 4; temp2[1] = 16; } else if(xNL == 41 && yNL == 20) { temp2[0] = 5; temp2[1] = 21; } else if(xNL == 29 && yNL == 5) { temp2[0] = 6; temp2[1] = 26; temp2[2] = 31; temp2[3] = 36; } else if(xNL == 17 && yNL == 20) { temp2[0] = 7; temp2[1] = 31; } else if(xNL == 46 && yNL == 21) { temp2[0] = 8; temp2[1] = 36; } else if(xNL == 26 && yNL == 7) { temp2[0] = 8; temp2[1] = 40; } else if(xNL == 37 && yNL == 27) { temp2[0] = -1; } else { temp2[0] = 1; } } else if(areaNL == 1 && floorNL == -1) { temp2[0] = 0; temp2[2] = 5; temp2[3] = 16; } else if(areaNL == -1 && floorNL == 0) { temp2[0] = 0; temp2[2] = 37; temp2[3] = 27; } else if(areaNL == -2 && floorNL == 0) { temp2[0] = 0; temp2[2] = 47; temp2[3] = 46; } else if(areaNL == 1 && floorNL == 6) { temp2[0] = 2; } else if(areaNL == 2 && floorNL == 11) { temp2[0] = 3; } else if(areaNL == 3 && floorNL == 16) { temp2[0] = 4; } else if(areaNL == 4 && floorNL == 21) { temp2[0] = 5; } else if(areaNL == 5 && floorNL == 26) { temp2[0] = 6; temp2[2] = 31; temp2[3] = 36; } else if(areaNL == 6 && floorNL == 27 && xNL == 47 && yNL == 12) { temp2[0] = 14; temp2[1] = 100; temp2[2] = 40; temp2[3] = 44; } else if(areaNL == 6 && floorNL == 31) { temp2[0] = 7; } else if(areaNL == 7 && floorNL == 36) { temp2[0] = 8; } else if(areaNL == 8 && floorNL == 41) { temp2[0] = 9; } else if(areaNL == 9 && floorNL == 51) { temp2[0] = 10; } else if(areaNL == 10 && floorNL == 61) { temp2[0] = 11; } else if(areaNL == 11 && floorNL == 71) { temp2[0] = 12; } else if(areaNL == 12 && floorNL == 81) { temp2[0] = 13; } else if(areaNL == 13 && floorNL == 91) { temp2[0] = 14; } else if(areaNL == 14 && floorNL == 100) { temp2[2] = 43; temp2[3] = 31; } else if(areaNL == 14 && floorNL == 101) { temp2[0] = 15; } else if(areaNL == 15 && floorNL == 110 && this.loader.data.questdata.split("/")[24].split(",")[1] & 0x010000) { temp2[0] = 0; temp2[1] = 0; temp2[2] = 26; temp2[3] = 7; temp1[1] = ""; var qs:* = this.loader.data.questdata.split("/"); qs[25] = qs[25].split(",")[0] + "," + String(int(qs[25].split(",")[1]) - 4096); this.loader.data.questdata = qs.join("/"); charaList = mergeChar(this.loader.data.charadata,this.Main.mso.data.chara); i = 0; while(i < charaList.length) { if(charaList[i][0] == this.Main.myPlayScreen.myPC.ID) { charaList[i][4] += "1"; break; } i++; } this.Main.mso.data.chara = charaList.join("/"); this.loader.data.charaData = charaList.join("/"); } else if(xNL == -1 && yNL == -1 && floorNL != 0) { erasePotalFlag = true; } temp2[4] = seedAC; pTIME = "0000000000"; temp2[5] = pTIME; temp1[0] = temp2.join(","); if(!(inmode == "saveware" || inmode == "wareend")) { this.loader.data.warehouse = ""; } temp3 = this.mergeItems(inmode,temp1[1],this.loader.data.itemdata,this.loader.data.warehouse,this.Main.mso.data.item); this.loader.data.partyData = temp1.join("<>"); this.Main.mso.data.party = temp1.join("<>"); temp1 = this.loader.data.questdata.split("/"); if(inmode == "datasave") { temp1[29] = temp1[29].split(",")[0] + ",0"; } if(erasePotalFlag) { temp1[36] = "0,0"; } this.loader.data.questData = temp1.join("/"); this.Main.mso.data.quest = this.loader.data.questData; this.loader.data.itemData = temp3; this.Main.mso.data.item = temp3; this.Main.mso.data.dropRandIndex = 0; this.Main.mso.flush(); this.Main.accessEnd(this.loader.data.mode,this.loader.data); } else if(inmode == "eventsave") { if(this.loader.data.eventtype.substr(0,7) == "upgrade") { var ugOrder:* = this.loader.data.eventtype.split("_")[1].split(">"); var quest:* = this.Main.mso.data.quest.split("/"); var loc_ql:* = [9,10,21,22,11,13,5,6,2,3,4,30]; var soulNum:* = [1,2,5,10,20,40,60,100]; var cost:* = 0; i = 0; while(i < ugOrder.length) { temp0 = quest[loc_ql[ugOrder[i]]].split(","); quest[loc_ql[ugOrder[i]]] = String(int(temp0[0]) + 1) + "," + temp0[1]; cost += soulNum[int(temp0[0])]; i++; } cost = int(quest[31].split(",")[1]) - cost; quest[31] = quest[31].split(",")[0] + "," + cost; this.Main.mso.data.quest = quest.join("/"); this.Main.mso.flush(); } else if(this.loader.data.eventtype.substr(0,4) == "boss") { trace("boss defeat"); } else if(this.loader.data.eventtype.substr(0,6) == "undead") { temp0 = this.loader.data.mydata.split(",")[0]; var charaList:* = this.Main.mso.data.chara.split("/"); i = 0; while(i < charaList.length) { var chara:* = charaList[i].split(","); if(chara[0] == temp0) { chara[13] = this.loader.data.eventtype == "undead" ? 1 : 0; charaList[i] = chara.join(","); break; } i++; } this.Main.mso.data.chara = charaList.join("/"); this.Main.mso.flush(); } else if(this.loader.data.eventtype.substr(0,3) == "job") { trace(); } else if(this.loader.data.eventtype.substr(0,6) == "lifeup") { setZukanData(this.loader.data.eventtype.split("_")[1],"",true); var qs:* = this.Main.mso.data.quest.split("/"); qs[37] = String(int(qs[37].split(",")[0]) + 1) + "," + qs[37].split(",")[1]; this.Main.mso.data.quest = qs.join("/"); this.Main.mso.flush(); } else if(this.loader.data.eventtype.substr(0,6) == "zaeega") { this.loader.data.mode = "zaeega"; this.loader.data.item = "1,,"; this.loader.data.zcnt = 1; /* このコメント内の処理は、本来存在していたザイーガの10回購入制限の実装とランダムではありませんが、購入アイテムの変更の実装です。 this.loader.data.zaitemの形式は アイテムNO,ID(空欄でよい),アイテムOP(セーブデータのと同じ形式) /でアイテムの区切りです。 this.loader.data.zaitemの初期値はスモールライフポーション、ライフポーション、ラージライフポーション、スモールマナポーション、マナポーション、ラージマナポーション、キュアポーション、キュアポーション、エリクサー、エリクサーの順になっています。 多分、10回購入制限も本来の実装とは違う形になっていると思われますが、一応動作確認できたので理解できる必要な方向けに載せておきます。 this.loader.data.zcnt = this.Main.myPlayScreen.town_data.zaeega_cnt; this.loader.data.zaitem = "1,,/2,,/20,,/3,,/4,,/21,,/5,,/5,,/7,,/7,,"; this.loader.data.zitem = this.loader.data.zaitem.split("/"); trace("count:" + this.loader.data.zcnt + "length" + this.loader.data.zitem.length); if(this.loader.data.zcnt < this.loader.data.zitem.length) { this.loader.data.item = this.loader.data.zitem[this.loader.data.zcnt]; } else { this.loader.data.item = "1,,"; } this.loader.data.zcnt++; */ } else if(this.loader.data.eventtype.substr(0,7) == "giftget") { var getgiftID:* = this.loader.data.eventtype.split("_")[1]; var giftlist:* = this.Main.mso.data.gift == undefined || this.Main.mso.data.gift == "" ? [] : this.Main.mso.data.gift.split("<>"); i = 0; while(i < giftlist.length) { var giftID:* = giftlist[i].split("/")[1]; if(giftID == getgiftID) { var gift:* = giftlist[i].split("/"); giftlist.removeAt(i); break; } i++; } gift.removeAt(3); var soukoLV:* = int(this.Main.mso.data.quest.split("/")[15].split(",")[0]); var itemlist:* = this.Main.mso.data.item.split("/"); var locsouko:* = 0; while(locsouko < 100) { if((5 - soukoLV) * 10 <= locsouko && 5 - soukoLV <= locsouko % 10) { var emptyflag:* = true; i = 0; while(i < itemlist.length) { var item:* = itemlist[i].split(","); if(item[4] == 2 && item[5] == locsouko) { emptyflag = false; break; } i++; } if(emptyflag) { break; } } locsouko++; } if(locsouko != 100) { this.Main.mso.data.item += "/" + gift.join(",") + ",0,2," + locsouko; } else { trace(); } this.Main.mso.data.gift = giftlist.join("<>"); this.Main.mso.flush(); this.loader.data.mode = "giftget"; } else if(this.loader.data.eventtype.substr(0,7) == "giftdel") { var delgiftID:* = this.loader.data.eventtype.split("_")[1]; giftlist = this.Main.mso.data.gift == undefined || this.Main.mso.data.gift == "" ? [] : this.Main.mso.data.gift.split("<>"); i = 0; while(i < giftlist.length) { giftID = giftlist[i].split("/")[1]; if(giftID == delgiftID) { giftlist.removeAt(i); break; } i++; } this.Main.mso.data.gift = giftlist.join("<>"); this.Main.mso.flush(); this.loader.data.mode = "giftdel"; } else if(this.loader.data.eventtype.substr(0,7) == "avatar2") { var cosStr:* = this.loader.data.eventtype.split("_")[1]; var cosNo:* = cosStr == "milk" ? 2 : (cosStr == "glasses" ? 6 : (cosStr == "princess" ? 5 : (cosStr == "angel" ? 3 : (cosStr == "devil" ? 4 : (cosStr == "king" ? 1 : (cosStr == "goatman" ? 7 : "")))))); } else if(this.loader.data.eventtype.substr(0,9) == "avataroff") { var coscID:* = this.loader.data.eventtype.split("_")[1]; } else if(this.loader.data.eventtype.substr(0,7) == "avatar_") { trace("avater_"); } else if(this.loader.data.eventtype.substr(0,9) == "townpotal") { trace("townpotal"); } else { this.Main.accessError("",this.loader.data); } this.Main.accessEnd(this.loader.data.mode,this.loader.data); } else if(inmode == "upreset") { this.loader.data.seed = seedAC; loc_ql = [9,10,21,22,11,13,5,6,2,3,4,30]; soulNum = [0,1,3,8,18,38,78,138,238]; quest = this.Main.mso.data.quest.split("/"); var returnSoul:* = 0; i = 0; while(i < loc_ql.length) { temp0 = quest[loc_ql[i]].split(","); returnSoul += soulNum[temp0[0]]; temp0[0] = 0; quest[loc_ql[i]] = temp0.join(","); i++; } returnSoul += int(quest[31].split(",")[1]); quest[31] = quest[31].split(",")[0] + "," + returnSoul; this.Main.mso.data.quest = quest.join("/"); this.Main.mso.flush(); this.Main.accessEnd(this.loader.data.mode,this.loader.data); } else if(inmode == "charadel") { this.loader.data.seed = seedAC; temp0 = this.Main.mso.data.chara.split("/"); temp1 = temp0[this.loader.data.slot].split(",")[0]; temp0[this.loader.data.slot] = ""; this.Main.mso.data.chara = temp0.join("/"); temp0 = this.Main.mso.data.party.split("<>"); temp2 = temp0[1].split("/"); temp3 = []; i = 0; while(i < temp2.length) { if(temp2[i].split(",")[0] != temp1) { temp3.push(temp2[i]); } i++; } this.Main.mso.data.party = temp0[0] + "<>" + temp3.join("/"); temp2 = this.Main.mso.data.item.split("/"); temp3 = []; i = 0; while(i < temp2.length) { if(temp2[i].split(",")[3] != temp1) { temp3.push(temp2[i]); } i++; } this.Main.mso.data.item = temp3.join("/"); this.Main.mso.flush(); this.Main.accessEnd(this.loader.data.mode,this.loader.data); } else if(inmode == "milkyway") { var pSEED:* = int(this.Main.mso.data.party.split("<>")[0].split(",")[4]); pTIME = this.Main.mso.data.party.split("<>")[0].split(",")[5]; var pTIME1:* = int(String(pTIME).substr(-6,1)); var pTIME2:* = int(String(pTIME).substr(-1,1)); var pTIME3:* = int(String(pTIME).substr(-4,1)); var pTIME4:* = int(String(pTIME).substr(-2,1)); var dropRandNL:* = new MTrandom(pSEED + pTIME1 * 100000000 + pTIME2 * 10000000 + pTIME3 * 1000000 + pTIME4 * 100000); i = 0; while(i < this.Main.mso.data.dropRandIndex) { dropRandNL.nextInt(1); i++; } var omamoriSlot:* = this.loader.data.mydata.split("<>")[0].split(",")[10]; var items:* = this.loader.data.mydata.split("<>")[1].split("/"); var zombieRate:* = !!this.loader.data.gameover ? 0 : 4 + 2 * int(this.loader.data.questdata.split("/")[4].split(",")[0]); i = 0; while(i < items.length) { item = items[i].split(","); if(item[5] == omamoriSlot && 800 <= item[0] && item[0] < 900) { zombieRate += 50; break; } i++; } var partydata0:* = this.loader.data.partydata.split("<>")[0].split(","); var undeadFloor:* = partydata0[0] == 6 && partydata0[1] == 26 || partydata0[0] == 8 && partydata0[1] == 40 || partydata0[0] == 3 && partydata0[1] == 1 || partydata0[0] == 1 && partydata0[1] == -2; charaList = mergeChar(this.loader.data.charadata,this.Main.mso.data.chara); flag = false; i = 0; while(i < charaList.length) { if(charaList[i] != "" && charaList[i][0] == this.loader.data.dieid) { if(undeadFloor) { charaList[i][7] = 1; charaList[i][12] = 1; } else { var dora:* = dropRandNL.nextInt(100); charaList[i][7] = 0; if(dora < zombieRate || charaList[i][13] == 1) { charaList[i][12] = 1; flag = true; } else { dropRandNL.index += 4; } } break; } if(charaList[i] != "") { charaList[i] = charaList[i].join(","); } i++; } this.Main.mso.data.dropRandIndex = dropRandNL.index; this.Main.mso.data.chara = charaList.join("/"); this.loader.data.charaData = charaList.join("/"); if(this.loader.data.gameover) { partydata0 = this.loader.data.partydata.split("<>")[0].split(","); partydata0[0] = 0; partydata0[1] = 0; this.loader.data.partydata = partydata0.join(",") + "<>" + this.loader.data.partydata.split("<>")[1]; } this.Main.mso.data.party = this.loader.data.partydata; this.loader.data.partyData = this.loader.data.partydata; var itemNew:* = this.loader.data.itemdata.split("/"); if(this.loader.data.gameover && !undeadFloor) { quest = this.loader.data.questdata.split("/"); quest[27] = quest[27].split(",")[0] + ",0"; this.loader.data.questdata = quest.join("/"); i = 0; while(i < itemNew.length) { item = itemNew[i].split(","); if(item[4] == 1) { itemNew.removeAt(i); i--; } i++; } } this.Main.mso.data.quest = this.loader.data.questdata; this.loader.data.questData = this.loader.data.questdata; temp0 = this.loader.data.mydata.split("<>")[1].split("/"); if(flag) { j = 4; i = 0; while(i < temp0.length) { if(Math.floor(Math.random() * j) == 0 && 0 < j) { j = -1; } else { itemNew.push(temp0[i]); j--; } i++; } } else if(undeadFloor) { itemNew = itemNew.concat(temp0); } temp0 = this.loader.data.partydata.split("<>")[1].split("/"); if(temp0.length == 0) { temp3 = this.loader.data.dieid + ",,"; } else { temp0.push(this.loader.data.dieid + ",,"); temp3 = temp0.join("/"); } temp2 = this.mergeItems(inmode,temp3,itemNew.join("/"),"",this.Main.mso.data.item); this.Main.mso.data.item = temp2; this.loader.data.itemData = temp2; this.Main.mso.flush(); this.loader.data.mode = this.loader.data.gameover == 1 ? "deadsave" : "savelog"; this.Main.accessEnd(this.loader.data.mode,this.loader.data); } else if(inmode == "graveload") { var data1:* = "じかん"; var data2:* = "レベル/ジョブ/なまえ"; var data3:* = "フロア/フロアのなまえ"; var data4:* = "てきのなまえ"; var data5:* = "しいん"; var datum2:* = this.Main.mso.data.chara.split("/")[this.Main.myTitleScreen.graveWindow.myslot].split(","); data2 = "Lv" + datum2[5] + " " + this.Main.myTitleScreen.JOBnames[datum2[3]] + "の " + datum2[2] + "は"; var data:* = "|" + data1 + "|" + data2 + "|" + data3 + "|" + data4 + "|" + data5; this.loader.data.logver = "logver"; this.loader.data.logdata = this.Main.compressData(">>>>>>>>>"); this.loader.data.infodata = ["ID","IP","LOG_TEXT","LOG_TEXT2" + data,"","","LOG_TYPE",this.Main.version,"HELP_ID"].join(","); this.loader.data.mainchara = this.Main.mso.data.chara.split("/")[this.Main.myTitleScreen.graveWindow.myslot]; this.loader.data.charadata = this.Main.mso.data.chara; this.loader.data.partydata = this.Main.mso.data.party; this.loader.data.questdata = this.Main.mso.data.quest; this.loader.data.itemdata = this.Main.mso.data.item; this.Main.accessEnd(this.loader.data.mode,this.loader.data); } else if(inmode == "charareset") { this.loader.data.seed = seedAC; temp0 = this.Main.mso.data.chara.split("/"); temp1 = temp0[this.loader.data.slot].split(","); temp1[5] = 1; temp1[6] = 0; temp1[7] = 50; temp1[14] = 0; this.loader.data.newchara = temp1.join(","); temp0[this.loader.data.slot] = temp1.join(","); this.Main.mso.data.chara = temp0.join("/"); temp2 = this.Main.mso.data.item.split("/"); temp2.push(getEquip(this.loader.data.seed,0,temp1[0],temp1[3],false)); this.loader.data.itemData = temp2.join("/"); this.Main.mso.data.item = temp2.join("/"); this.Main.mso.flush(); this.Main.accessEnd(this.loader.data.mode,this.loader.data); } else if(inmode == "chararevive") { this.loader.data.seed = seedAC; this.loader.data.soul = -1; temp0 = this.Main.mso.data.chara.split("/"); temp1 = temp0[this.loader.data.slot].split(","); temp1[5] -= 1 < temp1[5] ? 1 : 0; temp1[6] = 5 * temp1[5] * temp1[5] * temp1[5]; temp1[7] = 9999; temp1[12] = 0; temp0[this.loader.data.slot] = temp1.join(","); this.loader.data.newchara = temp1.join(","); this.Main.mso.data.chara = temp0.join("/"); this.loader.data.itemData = this.Main.mso.data.item; this.Main.mso.flush(); this.Main.accessEnd(this.loader.data.mode,this.loader.data); } else if(inmode == "partybreak") { temp0 = this.Main.mso.data.party.split("<>"); temp1 = temp0[0].split(","); temp1[0] = 0; temp1[1] = 0; temp1[2] = 29; temp1[3] = 32; this.Main.mso.data.party = temp1.join(",") + "<>" + temp0[1]; this.Main.mso.flush(); this.Main.accessEnd(this.loader.data.mode,this.loader.data); } else if(inmode == "gameclear") { this.loader.data.seed = seedAC; this.Main.mso.data.chara = ""; this.Main.mso.data.party = ""; this.Main.mso.data.quest = ""; this.Main.mso.data.item = ""; this.Main.mso.data.ezukan = ""; this.Main.mso.data.izukan = ""; this.Main.mso.flush(); this.Main.accessEnd(this.loader.data.mode,this.loader.data); } else if(inmode == "practice") { this.Main.accessEnd(this.loader.data.mode,this.loader.data); } else if(inmode == "codesend") { var coderesult:Array = this.setCode(this.loader.data.mycode,xml); giftlist = this.Main.mso.data.gift == undefined || this.Main.mso.data.gift == "" ? [] : this.Main.mso.data.gift.split("<>"); giftlist = giftlist.concat(coderesult[0]); this.loader.data.giftcount = giftlist.length; this.loader.data.mes = "? codesend : " + this.loader.data.mycode + ", " + coderesult[1]; this.Main.mso.data.gift = giftlist.join("<>"); this.Main.mso.flush(); this.Main.accessEnd(this.loader.data.mode,this.loader.data); } else if(inmode == "giftcount") { giftlist = this.Main.mso.data.gift == undefined || this.Main.mso.data.gift == "" ? [] : this.Main.mso.data.gift.split("<>"); this.loader.data.giftcount = giftlist.length; this.Main.accessEnd(this.loader.data.mode,this.loader.data); } else if(inmode == "giftload") { this.loader.data.gift = this.Main.mso.data.gift; this.loader.data.giftcount = this.Main.mso.data.gift == "" ? 0 : this.Main.mso.data.gift.split("<>").length; this.Main.accessEnd(this.loader.data.mode,this.loader.data); } else if(inmode == "giftget") { this.Main.accessEnd(this.loader.data.mode,this.loader.data); } else { trace(inmode); this.Main.accessError(this.loader.data.mode,this.loader.data.error); } }
private function loaderComp_mapload(param1:Event) : * { var entry:*; var md0:*; var emerge_select:*; var map_select:int; trace("------ " + this.loader.data.mode + " ------"); for(entry in this.loader.data) { trace("pr: " + entry + ", val: " + this.loader.data[entry]); } trace("------ " + this.loader.data.mode + " ------"); var areaNL:int = int(this.loader.data.mapname.split("_")[0]); var mapNoNL:int = int(this.loader.data.mapname.split("_")[1]); var seedAC:int = Math.floor(Math.random() * 2147483647); var randMT:MTrandom = new MTrandom(int(this.Main.mso.data.party.split("<>")[0].split(",")[4] || seedAC)); var xml:* = new XML(param1.target.data); var qvp:Array = this.Main.mso.data.quest.split("/"); var qv:Array = []; var qp:Array = []; var emerge:String = ""; i = 0; while(i < 40) { qv.push(qvp[i].split(",")[0]); qp.push(qvp[i].split(",")[1]); i++; } emerge = ""; if(areaNL == 0 || areaNL == -1) { this.loader.data.mapdata1 = xml.mapdata1; this.loader.data.mapdata2 = xml.mapdata2; this.loader.data.mapdata3 = xml.mapdata3; this.loader.data.soukomap = xml.soukomap; emerge = xml.emerge; } else if(1 <= areaNL && areaNL <= 15) { md0 = xml.mapdata.(@map_no == mapNoNL); if(1000 <= int(mapNoNL)) { emerge = xml.emergeX.(@emerge_no == mapNoNL); if(areaNL == 1 && mapNoNL == 1000) { temp0 = 1; i = 0; while(i < 5) { if(!(qp[35] & temp0)) { if(temp0 == 1) { emerge = xml.emerges_yaneura.child("emerge")[i]; break; } if(temp0 >= 4) { temp1 = temp0 * 0.5; if(qp[35] & temp1) { emerge = xml.emerges_yaneura.child("emerge")[i]; break; } if(!(qp[35] & temp1)) { emerge = ""; break; } } } temp0 *= 4; i++; } } else if(areaNL == 2 && mapNoNL == 1000 && qp[16] >= 2) { emerge = xml.emerge; } else if(areaNL == 3 && mapNoNL == 1000 && qp[24] & 2) { emerge = ""; } else if(areaNL == 3 && mapNoNL == 1001 && qp[25] & 2) { emerge = ""; } else if(areaNL == 4 && mapNoNL == 1000) { emerge = ""; if(!(qp[24] & 4)) { emerge = xml.emergeX.(@emerge_no == mapNoNL && @ene == "M"); } else if(!(qp[25] & 512)) { emerge = xml.emergeX.(@emerge_no == mapNoNL && @ene == "N"); } } else if(areaNL == 5 && mapNoNL == 1000 && qp[24] & 8) { emerge = ""; } else if(areaNL == 5 && mapNoNL == 1002 && qp[25] & 4) { emerge = ""; } else if(areaNL == 5 && mapNoNL == 1003 && qp[25] & 16) { emerge = ""; } else if(areaNL == 6 && mapNoNL == 1000 && qp[24] & 16) { emerge = ""; } else if(areaNL == 7 && mapNoNL == 1000 && qp[24] & 32) { emerge = ""; } else if(areaNL == 8 && mapNoNL == 1000) { if(qp[24] & 128) { emerge = ""; } else if(qp[24] & 64) { emerge = xml.emergeX.(@emerge_no == mapNoNL && @ene == "A"); } else { emerge = xml.emergeX.(@emerge_no == mapNoNL && @ene == "GA"); } } else if(areaNL == 9 && mapNoNL == 1000 && qp[29] & 1) { emerge = ""; } else if(areaNL == 10 && mapNoNL == 1000 && qp[29] & 2) { emerge = ""; } else if(areaNL == 11 && mapNoNL == 1000 && qp[29] & 4) { emerge = ""; } else if(areaNL == 12 && mapNoNL == 1000 && qp[29] & 8) { emerge = ""; } else if(areaNL == 13 && mapNoNL == 1000 && qp[29] & 16) { emerge = ""; } else if(areaNL == 14 && mapNoNL == 1000) { if(!(qp[29] & 32) && !(qp[24] & 256)) { trace(xml.emergeX.(@emerge_no == mapNoNL && @ene == "KS")); trace(String(xml.emergeX.(@emerge_no == mapNoNL && @ene == "KS"))); emerge = xml.emergeX.(@emerge_no == mapNoNL && @ene == "KS"); } else if(qp[29] & 32 && !(qp[24] & 256)) { emerge = xml.emergeX.(@emerge_no == mapNoNL && @ene == "S"); } else if(!(qp[29] & 32) && qp[24] & 256) { emerge = xml.emergeX.(@emerge_no == mapNoNL && @ene == "K"); } else { emerge = ""; } } else if(areaNL == 14 && mapNoNL == 1001 && qp[24] & 512) { emerge = ""; } } else { map_select = randMT.nextInt(xml.child("mapdata").length()); md0 = xml.mapdata.(@map_no == mapNoNL); if(1 <= areaNL && areaNL <= 8) { emerge_select = randMT.nextInt(xml.child("emerge").length()); emerge = xml.child("emerge")[emerge_select]; if(2 <= areaNL && qp[23] == 1) { emerge += "/" + xml.emerge_rareEnemy; } if(areaNL == 7) { if(qp[25] & 16384 && !(qp[25] & 32768)) { emerge += "/" + xml.emerge_Glutton.(@ene == "224"); } else if(qp[25] & 16384 && !(qp[25] & 65536)) { emerge += "/" + xml.emerge_Glutton.(@ene == "225"); } } } else { temp2 = this.Main.mso.data.party.split("<>")[0].split(",")[1].substr(-1,1); if(temp2 < 5) { emerge_select = randMT.nextInt(xml.emergesA.child("emerge").length()); emerge = xml.emergesA.child("emerge")[emerge_select]; } else { emerge_select = randMT.nextInt(xml.emergesB.child("emerge").length()); emerge = xml.emergesB.child("emerge")[emerge_select]; } } if(xml.no_variation == 1) { this.Main.myPlayScreen.map_name = "1_1001"; } } if(md0.toString() == "") { md0 = xml.mapdata.(@map_no == "1"); } this.loader.data.mapdata = md0; } else if(500 <= areaNL) { this.loader.data.mapdata = xml.mapdata.(@map_no == this.loader.data.mapname); emerge = ""; } else { trace(); } this.loader.data.emerge = this.emergeConv(emerge, randMT); this.loader.data.rescue = 0; this.loader.data.encount = ""; this.Main.accessEnd("mapload",this.loader.data); }
private function avatarSetNL(seed:*, index:*) : String { var ra:* = new MTrandom(seed); var i:* = 0; while(i < index) { ra.nextInt(1); i++; } var temp:int = 0; var avatarInt:* = new Vector.<int>(4,true); avatarInt[0] = ra.nextInt(52); avatarInt[1] = ra.nextInt(52); avatarInt[2] = ra.nextInt(61) + 1; avatarInt[3] = ra.nextInt(52) + 1; temp = int(ra.nextInt(100)); if(temp < 60) { avatarInt[2] = 0; } temp = int(ra.nextInt(500)); if(temp == 0) { avatarInt[3] = 0; } var words62:* = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; var avatarString:* = ""; i = 0; while(i < 4) { avatarString += words62.substr(avatarInt[i],1); i++; } return avatarString; }
private function mergeItems(inmode:String, party:String, items1:String, souko:String, items2:String) : String { var partyList:* = party.split("/"); var itemList1:* = items1 == "" ? [] : items1.split("/"); var soukoList:* = souko == "" ? [] : souko.split("/"); var itemList2:* = items2.split("/"); var i:* = 0; while(i < itemList2.length) { var item:* = itemList2[i].split(","); if(item[4] == 0) { flag = true; var j:* = 0; while(j < partyList.length) { if(item[3] == partyList[j].split(",")[0]) { flag = false; } j++; } if(flag) { itemList1.push(item.join(",")); } } else if(item[4] == 2 && souko == "" && inmode != "saveware" && inmode != "wareend") { itemList1.push(item.join(",")); } i++; } i = 0; while(i < soukoList.length) { itemList1.push(soukoList[i]); i++; } return itemList1.join("/"); }
private function getEquip(seed:int, index:int, cID:String, job:int, nc:*) : String { var ra:* = new MTrandom(seed); var i:* = 0; while(i < index + 4) { ra.nextInt(1); i++; } var randD:* = this.Main.titleRand; if(nc) { this.Main.titleRand = ra; } var equipList:* = this.Main.myTitleScreen.startEquip(job,0); var equipSet:* = []; i = 0; while(i < equipList.length) { if(equipList[i] != null && equipList[i] != "") { var equip:* = equipList[i].split(","); equipSet.push([equip[0],equip[1],"",cID,0,i].join(",")); } i++; } this.Main.titleRand = randD; return equipSet.join("/"); }
private function setZukanData(ez:String, iz:String, ch:*) : * { var ezList:* = ez == null || ez == "" ? [] : ez.split(","); var izList:* = iz == null || iz == "" ? [] : iz.split(","); var ezList_old:* = this.Main.mso.data.ezukan == undefined || this.Main.mso.data.ezukan == "" ? [] : this.Main.mso.data.ezukan.split("/"); var izList_old:* = this.Main.mso.data.izukan == undefined || this.Main.mso.data.izukan == "" ? [] : this.Main.mso.data.izukan.split("/"); var i:* = 0; while(i < ezList.length) { var flag:* = true; var j:* = 0; while(j < ezList_old.length) { var id:* = ezList_old[j].split(",")[0]; if(ezList[i] < id) { break; } if(ezList[i] == id) { flag = !!ch ? true : false; break; } j++; } if(flag) { if(ch) { ezList_old[j] = ezList[i] + ",1"; } else { ezList_old.insertAt(j,ezList[i] + ",0"); } } i++; } i = 0; while(i < izList.length) { flag = true; j = 0; while(j < izList_old.length) { id = izList_old[j].split(",")[0]; if(izList[i] < id) { break; } if(izList[i] == id) { flag = false; break; } j++; } if(flag) { izList_old.insertAt(j,izList[i]); } i++; } this.Main.mso.data.ezukan = ezList_old.join("/"); this.Main.mso.data.izukan = izList_old.join("/"); }
private function mergeChar(newchara:*, oldchara:*) : Array { temp0 = newchara.split("/"); temp1 = oldchara.split("/"); var i:* = 0; while(i < temp0.length) { if(temp0[i] != "") { var onechara:* = temp0[i].split(","); var onechara_old:* = temp1[i].split(","); onechara[11] = onechara_old[11]; onechara[12] = onechara_old[12]; onechara[13] = onechara_old[13]; onechara[14] = onechara_old[14]; temp0[i] = onechara; } i++; } return temp0; }
private function emergeConv(emerge:String, randMT:MTrandom) : String { if(emerge == "") { return ""; } var emes:* = emerge.split("/"); var e99:* = []; var eCo:* = []; var e468:Array = [[],[],[]]; var rt:* = 0; var rt468:Array = [0,0,0]; var i:* = 0; while(i < emes.length) { var em:* = emes[i].split(","); if(em[5] == 99999) { e99.push(emes[i]); } else if(em[4] == 104 || em[4] == 106 || em[4] == 108) { var eS468:* = em[4] == 104 ? 0 : (em[4] == 106 ? 1 : 2); em[5] = Number(em[5]) + rt468[eS468]; e468[eS468].push(em); rt468[eS468] = Number(em[5]); } else { em[5] = Number(em[5]) + rt; eCo.push(em); rt = Number(em[5]); } i++; } i = 0; while(i < eCo.length) { var er:* = eCo[i][5]; if(95000 < rt) { eCo[i][5] = Math.floor(eCo[i][5] / rt * 95000); } e99.push(eCo[i].join(",")); i++; } rt = rt > 95000 ? 95000 : rt; i = 0; while(i < e468.length) { var j:* = 0; while(j < e468[i].length) { e468[i][j][5] = Math.floor(e468[i][j][5] / rt468[i] * Math.max(rt,rt468[i])); e468[i][j] = e468[i][j].join(","); j++; } if(e468[i].length != 0) { e99.push(e468[i].join("/")); } i++; } return e99.join("/"); }
private function setCode(code:String, xml:XML) : Array { if(code == "milk") { return [["13/milk//モーモーミルク"],"モーモーミルク"]; } if(code == "glasses") { return [["14/glasses//めがね"],"めがね"]; } if(code == "princess") { return [["15/princess//プリンセスドレス"],"プリンセスドレス"]; } if(code == "angel") { return [["16/angel//てんしのはね"],"てんしのはね"]; } if(code == "devil") { return [["17/devil//あくまのはね"],"あくまのはね"]; } if(code == "king") { return [["18/king//おうかん"],"おうかん"]; } if(code == "G3iv8") { return [["19/goatman//ヤギマスク"],"ヤギマスク"]; } return [[],"code error"]; }
Sounds
変更 | 対応するbgmがswfファイルに含まれてないので
ゲーム中、bgmはならなくなります(効果音はあります)
もしくはaudio stockで対応するbgmを手に入れてフォルダに入れる
(注意、下の変更する場所は2箇所あります 613,618)
変更前
this.bgm[bgm_no] = new Sound(url);
変更後
this.bgm[bgm_no] = new BGM0();
エラーやバグの報告は専用のページにお願いします。
それ以外の質問や議論等は対応するページのコメント欄でお願いします。
コメント
- loaderComp_mapload関数でthis.loader.data.emergeのほとんどでemergeConv()が抜けていたので追加するように編集して、それに合わせてemergeConvも修正しました。これによりダンジョンではないエリアや特殊フロアにもモンスター出現割合の計算を正しく行うようになりました。この変更によってinishieMapA1.xmlとinishieMapA2.xmlのemergeXの出現レートが正常ではなくなったので合わせて更新しました。loaderComp_mapload関数はMTrandomを使うようになりました。理由はリプレイログでマップのシード値を元にマップと敵を再現するためにはMTrandomが必要だからです。ちなみにクローンは固有のシード値から原作と同一のマップ状況を再現することはできません。本家wikiのB1-10Fによるとフロア毎に出現モンスターが細かく調節されてるようですが、このページを編集するためには行列が足りないので今回は見送りました。 -- 2025-02-27 (木) 21:58:49
- そうこフロアに置かれたアイテムを全て拾ってからそうこフロアを離れると、そうこの状態はそうこフロアに入る前の状態に戻ってしまう、ひどいバグを修正しました。本件修正前のプログラムを使用してる方に忠告しますが、このバグは任意のアイテムを複製可能なものなので利用は避けてください。それでイニシエダンジョンの体験性が損なわれたとしてもあなたの責任です。 -- 2025-03-02 (日) 08:37:55
- 最新のスクリプト変更を適用してから、B31~の溶岩地帯で全然敵が出てこなくなった(1階層に1体だけ)のですが、なぜでしょうか? -- 2025-03-08 (土) 10:02:50
- 報告ありがとうございます。指摘していた通りミスがあったのを確認したのでスクリプトを編集して修正しました。この問題はのろわれしようとうクエストで、グラットンを倒してキキョウの日記を手に入れてからツバキにキキョウの日記を渡す前の間に起きていたらしいです。これを修正するにはemerge = "/" + xml.emerge_Glutton.(@ene == "225");をemerge += "/" + xml.emerge_Glutton.(@ene == "225");に変更すると治ると思います(症状を確認していないため) -- 2025-03-08 (土) 13:55:45
- emergeConv()でわかりやすく変換していますというのをほぼ理解できてなくて自信ないですが、現状クローン仕様でeme_rateを記述しているので、原作のemergeデータがあっても、クローン用の相対的な記述に修正する必要があるという認識で合ってますか? -- 2025-04-12 (土) 14:20:13
- 本家のinishieFirstのxmlデータを入れた状態でほんきのオルバンス王を倒したとき、現行のスクリプトでは図鑑に登録されない(B15のオルバンス王の枠が解放される)仕様のようです。enelistのほんきのオルバンス王のデータにあたる部分のput_noを121にすることで一応登録させることはできますが、スクリプト側で対応させることは可能ですか? -- 2025-04-17 (木) 15:07:39