feat(game): add warp pulls
This commit is contained in:
1 parent
0e2f2f71f7
commit
f27cde756c
19 files changed
+8166
-25
No files matched your search
@@ -0,0 +1,134 @@
|
||||
[
|
||||
{
|
||||
"GachaID": 1001,
|
||||
"GachaType": "Normal",
|
||||
"SortID": 99,
|
||||
"StartTime": "",
|
||||
"EndTime": "",
|
||||
"PrefabPath": "UI/Drawcard/GachaPanel/StandardGacha_1001.prefab",
|
||||
"PoolName": {
|
||||
"Hash": 12642828881931173103
|
||||
},
|
||||
"PoolDesc": {
|
||||
"Hash": 1121704090967857799
|
||||
},
|
||||
"PoolDescFTC": {
|
||||
"Hash": 6970163302865048869
|
||||
},
|
||||
"PoolLabelIcon": "SpriteOutput/DrawCardPic/GachaTabIcon/TabIcon_Standard.png",
|
||||
"PoolLabelIconSelected": "SpriteOutput/DrawCardPic/GachaTabIcon/TabIcon_Standard_Selected.png",
|
||||
"TypeTitle": {
|
||||
"Hash": 10012362747660649297
|
||||
}
|
||||
},
|
||||
{
|
||||
"GachaID": 4001,
|
||||
"GachaType": "Newbie",
|
||||
"SortID": 1,
|
||||
"StartTime": "",
|
||||
"EndTime": "",
|
||||
"PrefabPath": "UI/Drawcard/GachaPanel/NoviceGacha_4001.prefab",
|
||||
"PoolName": {
|
||||
"Hash": 16076008841484912183
|
||||
},
|
||||
"PoolDesc": {
|
||||
"Hash": 13113094041792250269
|
||||
},
|
||||
"PoolDescFTC": {
|
||||
"Hash": 6682982103413155220
|
||||
},
|
||||
"PoolLabelIcon": "SpriteOutput/DrawCardPic/GachaTabIcon/TabIcon_Novice.png",
|
||||
"PoolLabelIconSelected": "SpriteOutput/DrawCardPic/GachaTabIcon/TabIcon_Novice_Selected.png",
|
||||
"TypeTitle": {
|
||||
"Hash": 12992035607736039415
|
||||
}
|
||||
},
|
||||
{
|
||||
"GachaID": 2001,
|
||||
"GachaType": "AvatarUp",
|
||||
"SortID": 2,
|
||||
"StartTime": "",
|
||||
"EndTime": "",
|
||||
"PrefabPath": "UI/Drawcard/GachaPanelLimited/AvatarGacha_1102.prefab",
|
||||
"PoolName": {
|
||||
"Hash": 10466444443325460861
|
||||
},
|
||||
"PoolDesc": {
|
||||
"Hash": 12575760539773716760
|
||||
},
|
||||
"PoolDescFTC": {
|
||||
"Hash": 9461473220466468630
|
||||
},
|
||||
"PoolLabelIcon": "SpriteOutput/DrawCardPic/GachaTabIconLimited/TabIcon_1102.png",
|
||||
"PoolLabelIconSelected": "SpriteOutput/DrawCardPic/GachaTabIconLimited/TabIcon_1102_Selected.png",
|
||||
"TypeTitle": {
|
||||
"Hash": 16335421618088345187
|
||||
}
|
||||
},
|
||||
{
|
||||
"GachaID": 3001,
|
||||
"GachaType": "WeaponUp",
|
||||
"SortID": 4,
|
||||
"StartTime": "",
|
||||
"EndTime": "",
|
||||
"PrefabPath": "UI/Drawcard/GachaPanelLimited/LightConeGacha_23001.prefab",
|
||||
"PoolName": {
|
||||
"Hash": 10051276577110162368
|
||||
},
|
||||
"PoolDesc": {
|
||||
"Hash": 13567216986870304529
|
||||
},
|
||||
"PoolDescFTC": {
|
||||
"Hash": 12441093686588219336
|
||||
},
|
||||
"PoolLabelIcon": "SpriteOutput/DrawCardPic/GachaTabIconLimited/TabIcon_LightCone_23001.png",
|
||||
"PoolLabelIconSelected": "SpriteOutput/DrawCardPic/GachaTabIconLimited/TabIcon_LightCone_23001_Selected.png",
|
||||
"TypeTitle": {
|
||||
"Hash": 689370920993170148
|
||||
}
|
||||
},
|
||||
{
|
||||
"GachaID": 2002,
|
||||
"GachaType": "AvatarUp",
|
||||
"SortID": 3,
|
||||
"StartTime": "",
|
||||
"EndTime": "",
|
||||
"PrefabPath": "UI/Drawcard/GachaPanelLimited/AvatarGacha_1204.prefab",
|
||||
"PoolName": {
|
||||
"Hash": 9253952357381402356
|
||||
},
|
||||
"PoolDesc": {
|
||||
"Hash": 12575760539773716760
|
||||
},
|
||||
"PoolDescFTC": {
|
||||
"Hash": 9461473220466468630
|
||||
},
|
||||
"PoolLabelIcon": "SpriteOutput/DrawCardPic/GachaTabIconLimited/TabIcon_1204.png",
|
||||
"PoolLabelIconSelected": "SpriteOutput/DrawCardPic/GachaTabIconLimited/TabIcon_1204_Selected.png",
|
||||
"TypeTitle": {
|
||||
"Hash": 16335421618088345187
|
||||
}
|
||||
},
|
||||
{
|
||||
"GachaID": 3002,
|
||||
"GachaType": "WeaponUp",
|
||||
"SortID": 5,
|
||||
"StartTime": "",
|
||||
"EndTime": "",
|
||||
"PrefabPath": "UI/Drawcard/GachaPanelLimited/LightConeGacha_23010.prefab",
|
||||
"PoolName": {
|
||||
"Hash": 3268726668422334764
|
||||
},
|
||||
"PoolDesc": {
|
||||
"Hash": 13567216986870304529
|
||||
},
|
||||
"PoolDescFTC": {
|
||||
"Hash": 12441093686588219336
|
||||
},
|
||||
"PoolLabelIcon": "SpriteOutput/DrawCardPic/GachaTabIconLimited/TabIcon_LightCone_23010.png",
|
||||
"PoolLabelIconSelected": "SpriteOutput/DrawCardPic/GachaTabIconLimited/TabIcon_LightCone_23010_Selected.png",
|
||||
"TypeTitle": {
|
||||
"Hash": 689370920993170148
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,535 @@
|
||||
[
|
||||
{
|
||||
"ID": 1,
|
||||
"RewardItem": 300011,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 2,
|
||||
"RewardItem": 1,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 3,
|
||||
"RewardItem": 102,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 4,
|
||||
"RewardItem": 300003,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 5,
|
||||
"RewardItem": 300002,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 6,
|
||||
"RewardItem": 200103,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 7,
|
||||
"RewardItem": 200104,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 8,
|
||||
"RewardItem": 1,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 9,
|
||||
"RewardItem": 201,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 10,
|
||||
"RewardItem": 200101,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 11,
|
||||
"RewardItem": 200102,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 12,
|
||||
"RewardItem": 200107,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 13,
|
||||
"RewardItem": 200108,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 14,
|
||||
"RewardItem": 200109,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 15,
|
||||
"RewardItem": 200110,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 16,
|
||||
"RewardItem": 200111,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 17,
|
||||
"RewardItem": 200112,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 18,
|
||||
"RewardItem": 200113,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 19,
|
||||
"RewardItem": 200114,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 20,
|
||||
"RewardItem": 1,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 21,
|
||||
"RewardItem": 236,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 22,
|
||||
"RewardItem": 102,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 23,
|
||||
"RewardItem": 300011,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 24,
|
||||
"RewardItem": 300003,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 25,
|
||||
"RewardItem": 201,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 26,
|
||||
"RewardItem": 241,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 27,
|
||||
"RewardItem": 213,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 28,
|
||||
"RewardItem": 223,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 29,
|
||||
"RewardItem": 235,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 30,
|
||||
"RewardItem": 200115,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 31,
|
||||
"RewardItem": 200116,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 32,
|
||||
"RewardItem": 110101,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 33,
|
||||
"RewardItem": 200117,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 34,
|
||||
"RewardItem": 200118,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 35,
|
||||
"RewardItem": 200119,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 36,
|
||||
"RewardItem": 200120,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 37,
|
||||
"RewardItem": 200121,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 38,
|
||||
"RewardItem": 200122,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 39,
|
||||
"RewardItem": 200123,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 40,
|
||||
"RewardItem": 200124,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 41,
|
||||
"RewardItem": 200125,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 42,
|
||||
"RewardItem": 200126,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 43,
|
||||
"RewardItem": 200127,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 44,
|
||||
"RewardItem": 200128,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 45,
|
||||
"RewardItem": 200129,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 46,
|
||||
"RewardItem": 200130,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 47,
|
||||
"RewardItem": 200131,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 48,
|
||||
"RewardItem": 200132,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 49,
|
||||
"RewardItem": 200133,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 50,
|
||||
"RewardItem": 200134,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 51,
|
||||
"RewardItem": 200135,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 52,
|
||||
"RewardItem": 200136,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 53,
|
||||
"RewardItem": 200137,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 54,
|
||||
"RewardItem": 200138,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 55,
|
||||
"RewardItem": 200139,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 56,
|
||||
"RewardItem": 200140,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 57,
|
||||
"RewardItem": 200141,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 58,
|
||||
"RewardItem": 200142,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 59,
|
||||
"RewardItem": 200143,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 60,
|
||||
"RewardItem": 200144,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 61,
|
||||
"RewardItem": 200145,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 62,
|
||||
"RewardItem": 200146,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 63,
|
||||
"RewardItem": 200147,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 64,
|
||||
"RewardItem": 200148,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 65,
|
||||
"RewardItem": 200149,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 66,
|
||||
"RewardItem": 200150,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 67,
|
||||
"RewardItem": 200151,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 68,
|
||||
"RewardItem": 200152,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 69,
|
||||
"RewardItem": 200153,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 70,
|
||||
"RewardItem": 200154,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 71,
|
||||
"RewardItem": 200155,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 72,
|
||||
"RewardItem": 200156,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 73,
|
||||
"RewardItem": 200157,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 74,
|
||||
"RewardItem": 200158,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 75,
|
||||
"RewardItem": 200159,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 76,
|
||||
"RewardItem": 200160,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 77,
|
||||
"RewardItem": 200161,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 78,
|
||||
"RewardItem": 200162,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 501,
|
||||
"RewardItem": 238,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 502,
|
||||
"RewardItem": 237,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 503,
|
||||
"RewardItem": 300012,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 504,
|
||||
"RewardItem": 283,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 505,
|
||||
"RewardItem": 300014,
|
||||
"RewardIcon": ""
|
||||
},
|
||||
{
|
||||
"ID": 1001,
|
||||
"RewardItem": 21052,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 1002,
|
||||
"RewardItem": 21028,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 1003,
|
||||
"RewardItem": 21029,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 1004,
|
||||
"RewardItem": 21030,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 1005,
|
||||
"RewardItem": 21031,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 1006,
|
||||
"RewardItem": 21032,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 1007,
|
||||
"RewardItem": 21033,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 1008,
|
||||
"RewardItem": 21034,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 1009,
|
||||
"RewardItem": 21057,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 1010,
|
||||
"RewardItem": 21055,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 1011,
|
||||
"RewardItem": 21061,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 1012,
|
||||
"RewardItem": 21053,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 1013,
|
||||
"RewardItem": 21062,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 1014,
|
||||
"RewardItem": 21056,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 1015,
|
||||
"RewardItem": 21058,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 1016,
|
||||
"RewardItem": 21060,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
},
|
||||
{
|
||||
"ID": 1017,
|
||||
"RewardItem": 21065,
|
||||
"RewardIcon": "",
|
||||
"NumShow": true
|
||||
}
|
||||
]
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,72 @@
|
||||
[
|
||||
{
|
||||
"GachaTypeID": "Normal",
|
||||
"ItemCosume": 101,
|
||||
"ItemPrice": 160,
|
||||
"DiamondID": 1,
|
||||
"GachaBar": "StandardGachaPage",
|
||||
"BuyPos": {
|
||||
"ShopID": 1000,
|
||||
"ShopGoodID": 1000001
|
||||
}
|
||||
},
|
||||
{
|
||||
"GachaTypeID": "Newbie",
|
||||
"ItemCosume": 101,
|
||||
"ItemPrice": 160,
|
||||
"DiamondID": 1,
|
||||
"GachaBar": "StandardGachaPage",
|
||||
"BuyPos": {
|
||||
"ShopID": 1000,
|
||||
"ShopGoodID": 1000001
|
||||
}
|
||||
},
|
||||
{
|
||||
"GachaTypeID": "AvatarUp",
|
||||
"UpPropability": 50,
|
||||
"ItemCosume": 102,
|
||||
"ItemPrice": 160,
|
||||
"DiamondID": 1,
|
||||
"GachaBar": "CharacterGachaPage",
|
||||
"BuyPos": {
|
||||
"ShopID": 1000,
|
||||
"ShopGoodID": 1000002
|
||||
}
|
||||
},
|
||||
{
|
||||
"GachaTypeID": "WeaponUp",
|
||||
"UpPropability": 75,
|
||||
"ItemCosume": 102,
|
||||
"ItemPrice": 160,
|
||||
"DiamondID": 1,
|
||||
"GachaBar": "LightconeGachaPage",
|
||||
"BuyPos": {
|
||||
"ShopID": 1000,
|
||||
"ShopGoodID": 1000002
|
||||
}
|
||||
},
|
||||
{
|
||||
"GachaTypeID": "CollaborationAvatarUp",
|
||||
"UpPropability": 50,
|
||||
"ItemCosume": 102,
|
||||
"ItemPrice": 160,
|
||||
"DiamondID": 1,
|
||||
"GachaBar": "CharacterGachaPage",
|
||||
"BuyPos": {
|
||||
"ShopID": 1000,
|
||||
"ShopGoodID": 1000002
|
||||
}
|
||||
},
|
||||
{
|
||||
"GachaTypeID": "CollaborationWeaponUp",
|
||||
"UpPropability": 75,
|
||||
"ItemCosume": 102,
|
||||
"ItemPrice": 160,
|
||||
"DiamondID": 1,
|
||||
"GachaBar": "LightconeGachaPage",
|
||||
"BuyPos": {
|
||||
"ShopID": 1000,
|
||||
"ShopGoodID": 1000002
|
||||
}
|
||||
}
|
||||
]
|
||||
Reference in new issue
Block a user