こんにちは神乃木です。今日はCities Skylines のお話です。
先日紺野さんが道路アセットをアップデートし、橋の描画に関するバグを修正されました。
これに伴い、古い道路を新しい道路にアップデートしていかなきゃならないのですが、紺野さん本人が言っている通り、道路の識別は難しいし、マップ上のどこにアップデートが必要な道路があるのか探すのは非常に困難です。
というわけで以下のスクリプトを書きました。このスクリプトをコピーしてModToolsのコンソールに張り付ける(張り付け方はCSLコンテストの記事参照)と、古い道路(Ver2.1の道路)はピンク色にハイライトされます。道路を引くときもピンク色になるので間違って引いてしまうことを防げます。セーブデータには影響しません。ゲームを再起動するとピンク色は消えます。
道路の色は実行後すぐに反映されないので、一度地下ビューや渋滞ビューなどに切り替えてから戻すと、色が反映されます。
これで、置き換えるべき道路がわかりやすくなって作業が進むと思います。
// 2.1
string[] highlight_workshop_ids = new string[] {
"1838149115","1864625632","1864625841","1864626196","1991444810",
"1991445238","1991445516","1991447906","1991448372","1991450559",
"1997702954","1997703095","1997703201","1997703506","1997704310",
"1997704440","1997704825","1997706295","1997706744","1997714575",
"2045583051","2053816982","2061609675","2061610175","2061610424",
"2061613538","2061613939","2061614113","2063121788","2063122088",
"2063122534","2063122767","2063122977","2079217000","2079217238",
"2079217788","2079219811","2079220178","2079221074","2079221446",
"2079221751","2079307050","2079307372","2079308060","2079308782"
};
var networks = Resources.FindObjectsOfTypeAll();
Debug.Log("Detected: " + networks.Length + "networks");
for(uint i = 0; i < networks.Length; i++)
{
var network = networks[i];
if(network == null) continue;
if(network.m_netAI == null) continue;
{
// Matching workshop ids
for(uint j = 0; j < highlight_workshop_ids.Length; j++){
if(network.m_netAI.name.Contains(highlight_workshop_ids[j])){
network.m_color = new Color(1f, 0f, 1f);
}
}
}
}
// 2.0-1.0 old roads
highlight_workshop_ids = new string[] {
"1857814625","1857812902","1857811000","1857807937","1857280575",
"1857280330","1857280048","1857279671","1849777842","1849771975",
"1849771174","1849770668","1849769984","1849767281","1844706014",
"1844705503","1838335778","1838389818",
"1212618891","1219724561","1219724792","1227174071","1227174411",
"1240666360","1255652797","1273305772","1273310532","1273317204",
"1273326827","1273339278","1273341670","1273345623","1275250720",
"1275253012","1576838118","2016920607"
};
networks = Resources.FindObjectsOfTypeAll();
for(uint i = 0; i < networks.Length; i++)
{
var network = networks[i];
if(network == null) continue;
if(network.m_netAI == null) continue;
{
// Matching workshop ids
for(uint j = 0; j < highlight_workshop_ids.Length; j++){
if(network.m_netAI.name.Contains(highlight_workshop_ids[j])){
network.m_color = new Color(1f, 0f, 0f);
//Debug.Log("Marked: " + network.m_netAI);
}
}
}
}
5/10更新 紺野さんから古い道路のWorkshopIDを貰いましたので、それらの道路もハイライトするようにしました。
見ての通り、冒頭にVer2.1のワークショップIDをすべて定義しています。ほかの古い道路についても定義したいとは思うのですが、既に非公開にされた道路がありワークショップIDの抽出が困難なので今はそのままです。もし古い道路のワークショップIDがわかれば更新しようと思います。
作者に確認したところ、これを解消するには道路オブジェクトからスキンデータを取り除く作業が必要で相当複雑になるとのことなので、私のスクリプトではこれ以上はできなさそうです。このため、リプレース作業をやるときにはNetwork Skins 2をオフにして行う必要があり、かつ道路を変更したら再度街灯などの設定を行う必要がでてきます。




神乃木リュウイチといいます。
コメントを残す