1
0
mirror of synced 2024-09-24 02:58:24 +02:00

Add 471 support.

Updated config
Updated readme
Add default values, remove null
This commit is contained in:
Yuchen Ji 2022-06-11 20:22:12 +08:00
parent c7deb8f970
commit c142516b00
21 changed files with 164 additions and 67 deletions

View File

@ -63,6 +63,10 @@
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
</None>
<None Update="db\music471.db3">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
</None>
</ItemGroup>
<ItemGroup>

View File

@ -9,4 +9,6 @@ public interface IDataResponse
long NotAfterUnixTime { get; }
string Md5 { get; }
int Index { get; }
}

View File

@ -1,27 +1,71 @@
{
"AvatarCount": 323,
"NavigatorCount": 94,
"AvatarCount": 356,
"NavigatorCount": 118,
"ItemCount": 21,
"SkinCount": 21,
"SeCount": 26,
"TitleCount": 5273,
"TitleCount": 5530,
"CardDbName": "card.db3",
"MusicDbName": "music4MAX465.db3",
"MusicDbName": "music471.db3",
"ServerIp": "127.0.0.1",
"RelayServer": "127.0.0.1",
"RelayPort": 54321,
"RelayServer": "26.56.10.224",
"RelayPort": 54321,
"ResponseData": [
{
"FileName": "/event_031_20160112.evt",
"NotBeforeUnixTime": 1272260187,
"NotAfterUnixTime": 1903412187,
"Md5": "28a12ed884747db261b188bc2c97c555"
"FileName": "/event_103_20201125.evt",
"NotBeforeUnixTime": 1335677127,
"NotAfterUnixTime": 1966397127,
"Md5": "9ef6c4d5ca381583a2d99b626ce06b5e",
"Index": 0
},
{
"FileName": "/event_20201125_reg.jpg",
"NotBeforeUnixTime": 1335677127,
"NotAfterUnixTime": 1966397127,
"Md5": "8e3fe25bf50dcbed13dbb54cc18b1efa",
"Index": 1
},
{
"FileName": "/event_20201125_sgreg.png",
"NotBeforeUnixTime": 1335677127,
"NotAfterUnixTime": 1966397127,
"Md5": "e0abb0503fe0c530d8a68e36994264c6",
"Index": 2
},
{
"FileName": "/news_big_20201125_0.jpg",
"NotBeforeUnixTime": 1335677127,
"NotAfterUnixTime": 1966397127,
"Md5": "4a0f66431f6449279dc046149d1dd882",
"Index": 0
},
{
"FileName": "/news_big_20201125_2.jpg",
"NotBeforeUnixTime": 1335677127,
"NotAfterUnixTime": 1966397127,
"Md5": "8e3fe25bf50dcbed13dbb54cc18b1efa",
"Index": 2
},
{
"FileName": "/news_small_20201125_1.jpg",
"NotBeforeUnixTime": 1335677127,
"NotAfterUnixTime": 1966397127,
"Md5": "e20135bcd41c98875aec2b52eb9fcd06",
"Index": 1
},
{
"FileName": "/telop_20201125.txt",
"NotBeforeUnixTime": 1272260187,
"NotAfterUnixTime": 1903412187,
"Md5": "86fb269d190d2c85f6e0468ceca42a20"
"NotBeforeUnixTime": 1335677127,
"NotAfterUnixTime": 1966397127,
"Md5": "ee228de44d6656a9ec0bb7f1a0ca64e1",
"Index": 0
},
{
"FileName": "/event_unlock_20201125.cmp",
"NotBeforeUnixTime": 1335677127,
"NotAfterUnixTime": 1966397127,
"Md5": "623b0f10125cbe19c5394d992930ae8c",
"Index": 8
}
]
}

View File

@ -114,7 +114,8 @@ public class RankController : WebApiController
{
Rows = 30,
TableName = "play_num_rank",
Status = 1
Status = 1,
EndDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
};
var playNumRankContainer = new PlayNumRankContainer

View File

@ -99,7 +99,7 @@ public class ServerController : WebApiController
for (var i = 0; i < count; i++)
{
var data = responseList[i];
dataString.Append($"{i},{data.FileName},{data.NotBeforeUnixTime},{data.NotAfterUnixTime},{data.Md5},file");
dataString.Append($"{i},{data.FileName},{data.NotBeforeUnixTime},{data.NotAfterUnixTime},{data.Md5},{data.Index}");
dataString.Append('\n');
}

Binary file not shown.

View File

@ -11,10 +11,10 @@ public class Avatar : Record , IIdModel, ICardIdModel
public int AvatarId { get; set; }
[XmlElement("created")]
public string? Created { get; set; } = "1";
public string Created { get; set; } = "1";
[XmlElement("modified")]
public string? Modified { get; set; } = "1";
public string Modified { get; set; } = "1";
[XmlElement("new_flag")]
public int NewFlag { get; set; } = 1;

View File

@ -11,12 +11,12 @@ public class Card : ICardIdModel
[Column("card_id")]
[ChoXmlElementRecordField(FieldName = "card_id")]
[XmlElement(ElementName = "card_id")]
public long? CardId { get; set; }
public long CardId { get; set; }
[Column("player_name")]
[ChoXmlElementRecordField(FieldName = "player_name")]
[XmlElement(ElementName = "player_name")]
public string? PlayerName { get; set; }
public string PlayerName { get; set; } = "player";
[Column("score_i1")]
[ChoXmlElementRecordField(FieldName = "score_i1")]
@ -41,7 +41,7 @@ public class Card : ICardIdModel
[Column("achieve_status")]
[ChoXmlElementRecordField(FieldName = "achieve_status")]
[XmlElement("achieve_status")]
public string? AchieveStatus { get; set; } = string.Empty;
public string AchieveStatus { get; set; } = string.Empty;
[Column("created")]
[ChoXmlElementRecordField(FieldName = "created")]

View File

@ -11,7 +11,7 @@ public class CardBData : ICardIdModel
[Column("card_id")]
[ChoXmlElementRecordField(FieldName = "card_id")]
[XmlElement(ElementName = "card_id")]
public long? CardId { get; set; }
public long CardId { get; set; }
[Column("bdata")]
[ChoXmlElementRecordField(FieldName = "bdata")]

View File

@ -17,8 +17,8 @@ public class Coin
public int MonthlyCoins { get; set; }
[XmlElement("created")]
public string? Created { get; set; } = "1";
public string Created { get; set; } = "1";
[XmlElement("modified")]
public string? Modified { get; set; } = "1";
public string Modified { get; set; } = "1";
}

View File

@ -14,10 +14,10 @@ public class Item : Record, IIdModel, ICardIdModel
public int ItemNum { get; set; } = 90;
[XmlElement("created")]
public string? Created { get; set; } = "1";
public string Created { get; set; } = "1";
[XmlElement("modified")]
public string? Modified { get; set; } = "1";
public string Modified { get; set; } = "1";
[XmlElement("new_flag")]
public int NewFlag { get; set; }

View File

@ -12,20 +12,20 @@ public class Music : Record
public int MusicId { get; set; }
[Column("title")]
[XmlElement(ElementName = "title", IsNullable = true)]
public string? Title { get; set; }
[XmlElement(ElementName = "title")]
public string? Title { get; set; } = string.Empty;
[Column("artist")]
[XmlElement(ElementName = "artist", IsNullable = true)]
public string? Artist { get; set; }
[XmlElement(ElementName = "artist")]
public string Artist { get; set; } = string.Empty;
[Column("release_date")]
[XmlElement(ElementName = "release_date", IsNullable = true)]
public string? ReleaseDate { get; set; }
[XmlElement(ElementName = "release_date")]
public string ReleaseDate { get; set; } = "2013-01-01 08:00:00";
[Column("end_date")]
[XmlElement(ElementName = "end_date", IsNullable = true)]
public string? EndDate { get; set; }
[XmlElement(ElementName = "end_date")]
public string EndDate { get; set; } = "2030-01-01 08:00:00";
[Column("new_flag")]
[XmlElement("new_flag")]

View File

@ -11,10 +11,10 @@ public class Navigator : Record, IIdModel, ICardIdModel
public int NavigatorId { get; set; }
[XmlElement("created")]
public string? Created { get; set; } = "1";
public string Created { get; set; } = "1";
[XmlElement("modified")]
public string? Modified { get; set; } = "1";
public string Modified { get; set; } = "1";
[XmlElement("new_flag")]
public int NewFlag { get; set; }

View File

@ -5,14 +5,14 @@ namespace GCLocalServerRewrite.models;
[XmlType("ranking_status")]
public class RankStatus
{
[XmlElement("table_name")]
public string? TableName { get; set; }
[XmlElement("table_name")]
public string TableName { get; set; } = "rank_table";
[XmlElement("start_date")]
public string StartDate { get; set; } = "2021-05-30 08:00:00";
public string StartDate { get; set; } = "2021-05-30";
[XmlElement("end_date")]
public string EndDate { get; set; } = "2022-06-08 08:00:00";
public string EndDate { get; set; } = "2022-06-08";
[XmlElement("status")]
public int Status { get; set; }

View File

@ -7,11 +7,11 @@ public class Session
[XmlElement(ElementName = "card_id")]
public long CardId { get; set; }
[XmlElement(ElementName = "mac_addr")]
public string? Mac { get; set; }
[XmlElement(ElementName = "mac_addr")]
public string Mac { get; set; } = "000000000000";
[XmlElement(ElementName = "session_id")]
public string? SessionId { get; set; }
public string SessionId { get; set; } = "12345678901234567890123456789012";
[XmlElement(ElementName = "expires")]
public int Expires { get; set; }

View File

@ -11,10 +11,10 @@ public class Skin : Record, IIdModel, ICardIdModel
public int SkinId { get; set; }
[XmlElement("created")]
public string? Created { get; set; } = "1";
public string Created { get; set; } = "1";
[XmlElement("modified")]
public string? Modified { get; set; } = "1";
public string Modified { get; set; } = "1";
[XmlElement("new_flag")]
public int NewFlag { get; set; }

View File

@ -11,10 +11,10 @@ public class SoundEffect : Record, IIdModel, ICardIdModel
public int SeId { get; set; }
[XmlElement("created")]
public string? Created { get; set; } = "1";
public string Created { get; set; } = "1";
[XmlElement("modified")]
public string? Modified { get; set; } = "1";
public string Modified { get; set; } = "1";
[XmlElement("new_flag")]
public int NewFlag { get; set; }

View File

@ -11,10 +11,10 @@ public class Title : Record, IIdModel, ICardIdModel
public int TitleId { get; set; }
[XmlElement("created")]
public string? Created { get; set; } = "1";
public string Created { get; set; } = "1";
[XmlElement("modified")]
public string? Modified { get; set; } = "1";
public string Modified { get; set; } = "1";
[XmlElement("new_flag")]
public int NewFlag { get; set; }

View File

@ -26,8 +26,8 @@ public class UnlockKeynum : Record
public int CashFlag { get; set; }
[XmlElement("created")]
public string? Created { get; set; } = "1";
public string Created { get; set; } = "1";
[XmlElement("modified")]
public string? Modified { get; set; } = "1";
public string Modified { get; set; } = "1";
}

View File

@ -14,16 +14,16 @@ public class UnlockReward : Record
public int RewardType { get; set; }
[XmlElement(ElementName = "open_date")]
public string? OpenDate { get; set; } = "2021-05-30";
public string OpenDate { get; set; } = "2021-05-30";
[XmlElement(ElementName = "close_date")]
public string? CloseDate { get; set; } = "2030-05-30";
public string CloseDate { get; set; } = "2030-05-30";
[XmlElement(ElementName = "open_time")]
public string? OpenTime { get; set; } = "00:00:01";
public string OpenTime { get; set; } = "00:00:01";
[XmlElement(ElementName = "close_time")]
public string? CloseTime { get; set; } = "23:59:59";
public string CloseTime { get; set; } = "23:59:59";
[XmlElement(ElementName = "target_id")]
public int TargetId { get; set; }
@ -50,8 +50,8 @@ public class UnlockReward : Record
public long CloseUnixTime { get; set; } = 1906387199;
[XmlElement("created")]
public string? Created { get; set; } = "1";
public string Created { get; set; } = "1";
[XmlElement("modified")]
public string? Modified { get; set; } = "1";
public string Modified { get; set; } = "1";
}

View File

@ -29,9 +29,11 @@ Open game using teknoparrot loader (you can find that in discord). The loader sh
# Config
The config file is ~~GC-local-server-rewrite.exe.config~~ config.json
The config file is ~~GC-local-server-rewrite.exe.config~~ config.json
If you are using 4MAX 4.65 data, it should work out of box.
If you are using 4MAX 4.71 data, it should work out of box.
If you are using 4MAX 4.65 data, MusicDbName=music4MAX465.db3
If you are using 4MAX 4.61 data, first change MusicDbName to bundled music4MAX.db3
@ -48,16 +50,60 @@ You can now add solo events. In the config file, change the following section
```
"ResponseData": [
{
"FileName": "/event_031_20160112.evt", // This is the file name of the file to be read
"NotBeforeUnixTime": 1272260187,
"NotAfterUnixTime": 1903412187,// Be sure that NotBeforeUnixTime<= current time <= NotAfterUnixTime
"Md5": "28a12ed884747db261b188bc2c97c555" // File MD5, must match
"FileName": "/event_103_20201125.evt", // This is the file name of the file to be read
"NotBeforeUnixTime": 1335677127,
"NotAfterUnixTime": 1966397127, // Be sure that NotBeforeUnixTime<= current time <= NotAfterUnixTime
"Md5": "9ef6c4d5ca381583a2d99b626ce06b5e", // File MD5, must match
"Index": 0 // Special value, must be 0 for .evt file, this is the file controlling event
},
{
"FileName": "/event_20201125_reg.jpg",
"NotBeforeUnixTime": 1335677127,
"NotAfterUnixTime": 1966397127,
"Md5": "8e3fe25bf50dcbed13dbb54cc18b1efa",
"Index": 1 // Special value, must be 1 for event_reg.jpg
},
{
"FileName": "/event_20201125_sgreg.png",
"NotBeforeUnixTime": 1335677127,
"NotAfterUnixTime": 1966397127,
"Md5": "e0abb0503fe0c530d8a68e36994264c6",
"Index": 2 // Special value, must be 2 for event_sreg.jpg, this is the event picture in mode selection
},
{
"FileName": "/news_big_20201125_0.jpg",
"NotBeforeUnixTime": 1335677127,
"NotAfterUnixTime": 1966397127,
"Md5": "4a0f66431f6449279dc046149d1dd882",
"Index": 0 // Special value, must be 0 for first news_big.jpg, this is the picture shown before demo
},
{
"FileName": "/news_big_20201125_2.jpg",
"NotBeforeUnixTime": 1335677127,
"NotAfterUnixTime": 1966397127,
"Md5": "8e3fe25bf50dcbed13dbb54cc18b1efa",
"Index": 2 // Special value, can be 2~9 for 2nd to 9th news_big.jpg, so there can be up to 9 of these
},
{
"FileName": "/news_small_20201125_1.jpg",
"NotBeforeUnixTime": 1335677127,
"NotAfterUnixTime": 1966397127,
"Md5": "e20135bcd41c98875aec2b52eb9fcd06",
"Index": 1 // Special value, must be 1 for news_small.jpg, this is shown after game over
},
{
"FileName": "/telop_20201125.txt",
"NotBeforeUnixTime": 1272260187,
"NotAfterUnixTime": 1903412187,
"Md5": "86fb269d190d2c85f6e0468ceca42a20"
"NotBeforeUnixTime": 1335677127,
"NotAfterUnixTime": 1966397127,
"Md5": "ee228de44d6656a9ec0bb7f1a0ca64e1",
"Index": 0 // Special value, must be 1 for telop, this is the text in scrolling banner
},
{
"FileName": "/event_unlock_20201125.cmp",
"NotBeforeUnixTime": 1335677127,
"NotAfterUnixTime": 1966397127,
"Md5": "623b0f10125cbe19c5394d992930ae8c",
"Index": 8 // Special value, must be 8 for .cmp file
}
]
```
@ -96,7 +142,7 @@ reward0.navigator = 0
File name starts with `telop` is the scrolling banner, it's just a plain text file with banner content.
Other files like `news`, `option` and `cap` should also be possible, but I have not tested these.
Other files like `news`, `option` and `cap` should also be possible, but I have not tested these.
The configured file should be put into the `event` folder, which you can change the position by using jconfig (regedit->event path)
@ -111,7 +157,7 @@ The configured file should be put into the `event` folder, which you can change
# Difficulty unlocking
This is processed on client side, so if you like to unlock all difficuties, just use bemani patcher.
This is processed on client side, so if you like to unlock all difficulties, just use Bemani patcher.
# Deteled songs