修复抽卡
This commit is contained in:
parent
62fe4d309f
commit
576eb6abf7
|
|
@ -48,7 +48,8 @@ export default class Avatar extends cc.Component {
|
|||
if (data) {
|
||||
this.avatarData = cc.fx.GameTool.getAvatarData(data.headArr);
|
||||
}
|
||||
this.film = data.film;
|
||||
this.film = Number(data.film) || 0;
|
||||
cc.fx.GameConfig.GM_INFO.film = this.film;
|
||||
// console.log("头像信息", this.avatarData);
|
||||
this.avatar = cc.fx.GameConfig.GM_INFO.useravatarIcon;
|
||||
this.avatarKuang = cc.fx.GameConfig.GM_INFO.useravaterkuang;
|
||||
|
|
@ -314,7 +315,6 @@ export default class Avatar extends cc.Component {
|
|||
if (this.avatar.length > 10) {
|
||||
this.content.children[0].getChildByName("select").active = true;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
this.changeBtnState("avatar");
|
||||
|
|
|
|||
|
|
@ -90,6 +90,7 @@ export class GameConfig {
|
|||
guide: boolean; //是否有引导
|
||||
url: string; //访问域名
|
||||
coin: number; //用户金币
|
||||
film: number; //头像抽卡代币
|
||||
success: boolean; //用户游戏成功与否
|
||||
matchId: any; //用于埋点上传的ID
|
||||
gameState: boolean; custom: number; //用于测试跳关卡
|
||||
|
|
@ -281,6 +282,7 @@ export class GameConfig {
|
|||
guide: true, //是否有引导
|
||||
url: "https://api.sparkus.cn",//访问域名
|
||||
coin: 0, //用户金币
|
||||
film: 0, //头像抽卡代币(以服务端返回值为准)
|
||||
success: false, //用户游戏成功与否
|
||||
matchId: null, //用于埋点上传的ID
|
||||
gameState: false,
|
||||
|
|
|
|||
|
|
@ -515,6 +515,9 @@ export default class Utils {
|
|||
Utils.POST("userLevel", setData, res => {
|
||||
//console.log("获得userLevel数据:", res);
|
||||
if (res.code === 1) {
|
||||
if (res.data && res.data.film !== undefined) {
|
||||
cc.fx.GameConfig.GM_INFO.film = Number(res.data.film);
|
||||
}
|
||||
//console.log("服务器:获得等级成功", res);
|
||||
if (callBack) callBack(res);
|
||||
} else {
|
||||
|
|
@ -552,6 +555,9 @@ export default class Utils {
|
|||
Utils.POST("userLevel", setData, res => {
|
||||
//console.log("获得userLevel数据:", res);
|
||||
if (res.code === 1) {
|
||||
if (res.data && res.data.film !== undefined) {
|
||||
cc.fx.GameConfig.GM_INFO.film = Number(res.data.film);
|
||||
}
|
||||
//console.log("服务器:上传等级成功", res);
|
||||
if (callBack) callBack(res);
|
||||
} else {
|
||||
|
|
@ -1665,10 +1671,11 @@ export default class Utils {
|
|||
Utils.POST("drawHead", setData, res => {
|
||||
if (res.code === 1) {
|
||||
console.log("正常获取到抽卡结果", res);
|
||||
if (callBack) callBack(res);
|
||||
} else {
|
||||
console.log("获取抽卡失败,失败原因", res);
|
||||
}
|
||||
// 失败也必须回调,否则抽卡页的 Loading 和防重复点击状态无法恢复。
|
||||
if (callBack) callBack(res);
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -1754,6 +1761,9 @@ export default class Utils {
|
|||
Utils.POST("getFilm", setData, res => {
|
||||
if (res.code === 1) {
|
||||
console.log("正常获取用户代币", res);
|
||||
if (res.data && res.data.film !== undefined) {
|
||||
cc.fx.GameConfig.GM_INFO.film = Number(res.data.film);
|
||||
}
|
||||
if (callBack) callBack(res);
|
||||
} else {
|
||||
console.log("获取代币失败,失败原因", res);
|
||||
|
|
|
|||
|
|
@ -19,17 +19,25 @@ export default class GachaManager extends cc.Component {
|
|||
avatarData: any = null;
|
||||
own = 0;
|
||||
reward = 0;
|
||||
film = 0;
|
||||
isDrawing = false;
|
||||
|
||||
onLoad() {
|
||||
this.avatarData = [];
|
||||
this.own = 0;
|
||||
this.reward = 0;
|
||||
this.film = 0;
|
||||
this.isDrawing = false;
|
||||
// this.init();
|
||||
}
|
||||
//初始化数据
|
||||
init(data, film) {
|
||||
this.avatarData = [];
|
||||
this.own = 0;
|
||||
const parsedFilm = Number(film);
|
||||
this.film = isNaN(parsedFilm) ? 0 : parsedFilm;
|
||||
// 界面显示和抽卡判断必须使用同一份代币数据。
|
||||
cc.fx.GameConfig.GM_INFO.film = this.film;
|
||||
console.log("222222初始化数据", data);
|
||||
if (data) {
|
||||
this.avatarData = data;
|
||||
|
|
@ -54,17 +62,17 @@ export default class GachaManager extends cc.Component {
|
|||
let cost = this.getCostFilm();
|
||||
botoom.getChildByName("total").getComponent(cc.Label).string = cost.toString();
|
||||
console.log("抽卡所需film", cost);
|
||||
if (film >= cost) {
|
||||
if (this.film >= cost) {
|
||||
botoom.getChildByName("yes").active = true;
|
||||
console.log("有足够film");
|
||||
botoom.getChildByName("yes").getComponent(cc.Label).string = film.toString();
|
||||
botoom.getChildByName("yes").getComponent(cc.Label).string = this.film.toString();
|
||||
}
|
||||
else {
|
||||
console.log("没有足够film");
|
||||
botoom.getChildByName("no").active = true;
|
||||
botoom.getChildByName("no").getComponent(cc.Label).string = film.toString();
|
||||
botoom.getChildByName("no").getComponent(cc.Label).string = this.film.toString();
|
||||
}
|
||||
console.log("拥有film", film);
|
||||
console.log("拥有film", this.film);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -73,6 +81,7 @@ export default class GachaManager extends cc.Component {
|
|||
if (this.own > film.length)
|
||||
this.own = film.length - 1;
|
||||
let count = film[this.own];
|
||||
console.log("抽卡所需film", count);
|
||||
return count;
|
||||
}
|
||||
|
||||
|
|
@ -88,21 +97,25 @@ export default class GachaManager extends cc.Component {
|
|||
}
|
||||
|
||||
playGacha() {
|
||||
if (this.isDrawing) {
|
||||
return;
|
||||
}
|
||||
if (this.own >= 8) {
|
||||
MiniGameSdk.API.showToast("已拥有当期所有头像");
|
||||
return;
|
||||
}
|
||||
else {
|
||||
let cost = this.getCostFilm();
|
||||
if (cc.fx.GameConfig.GM_INFO.film < cost) {
|
||||
MiniGameSdk.API.showToast("代币不足,闯关获取更多代币!");
|
||||
return;
|
||||
}
|
||||
console.log("抽卡所需film", cost, "当前页面film", this.film);
|
||||
}
|
||||
|
||||
// 余额和拥有头像最终以服务端为准,避免本地缓存过期误拦截。
|
||||
this.isDrawing = true;
|
||||
this.openLoad();
|
||||
Utils.getGacha(res => {
|
||||
console.log("抽卡结果", res);
|
||||
this.isDrawing = false;
|
||||
this.closeLoad();
|
||||
if (res.code == 1) {
|
||||
|
||||
console.log("抽卡成功");
|
||||
|
|
@ -121,7 +134,10 @@ export default class GachaManager extends cc.Component {
|
|||
});
|
||||
}
|
||||
else if (res.code == 0) {
|
||||
MiniGameSdk.API.showToast(res.msg);
|
||||
if (res.data && res.data.film !== undefined) {
|
||||
this.init(this.avatarData, res.data.film);
|
||||
}
|
||||
MiniGameSdk.API.showToast(res.msg || "代币不足,闯关获取更多代币!");
|
||||
cc.fx.GameTool.shushu_Track("avatar_gacha", {
|
||||
pool_id: "spring",
|
||||
pull_count: (this.own + 1),
|
||||
|
|
@ -142,7 +158,6 @@ export default class GachaManager extends cc.Component {
|
|||
result: "",
|
||||
});
|
||||
}
|
||||
this.closeLoad();
|
||||
});
|
||||
// let cost = this.getCostFilm();
|
||||
// if (cc.fx.GameConfig.GM_INFO.film >= cost) {
|
||||
|
|
|
|||
|
|
@ -68,12 +68,12 @@ export default async function (ctx: FunctionContext) {
|
|||
// 根据数量获取对应的消耗,数量超过7时取最后一个(120)
|
||||
let filmCost = filmConsumeTable[Math.min(count, 7)];
|
||||
|
||||
// 执行消耗
|
||||
film -= filmCost;
|
||||
|
||||
if (film < 0) {
|
||||
return { code: 0, data: null, msg: "代币不足" }
|
||||
film = Number(film) || 0;
|
||||
if (film < filmCost) {
|
||||
return { code: 0, data: { film: film, cost: filmCost }, msg: "代币不足,闯关获取更多代币!" }
|
||||
}
|
||||
// 检查通过后再扣除,余额始终以服务端数据为准。
|
||||
film -= filmCost;
|
||||
|
||||
let num = Math.floor(Math.random() * total);
|
||||
let list = [];
|
||||
|
|
@ -109,4 +109,3 @@ export default async function (ctx: FunctionContext) {
|
|||
await db.collection(dbname).where({ _id: uid }).update({ headArr: headArr, film: film });
|
||||
return { code: 1, data: { headArr: headArr, reward: list[num2], film: film }, msg: "成功" };
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@ export default async function (ctx: FunctionContext) {
|
|||
const uid = ctx.body.uid;
|
||||
let dbname = "users";
|
||||
const gameName = ctx.body.gameName;
|
||||
const isWuXian=ctx.body.isWuXian;
|
||||
const isWuXian = ctx.body.isWuXian;
|
||||
let db1 = "691093093cf0c4532ba4fd9c";
|
||||
if (gameName == "iaa") {
|
||||
dbname = "usersAd";
|
||||
db1 ="691097ac3cf0c4532ba4fd9e";
|
||||
db1 = "691097ac3cf0c4532ba4fd9e";
|
||||
}
|
||||
if (!action) {
|
||||
return { code: 0, data: null, msg: "未获取到action" };
|
||||
|
|
@ -23,17 +23,17 @@ export default async function (ctx: FunctionContext) {
|
|||
}
|
||||
let res1 = await db.collection(dbname).where({ _id: uid }).getOne();
|
||||
const token = ctx.body.token;
|
||||
if (res1.data&&res1.data.token) {
|
||||
let istoken=Utils.checkToken(token,res1.data.token);
|
||||
if (res1.data && res1.data.token) {
|
||||
let istoken = Utils.checkToken(token, res1.data.token);
|
||||
if (!istoken) {
|
||||
return { code: 0, data: null, msg: "token校验失败" };;
|
||||
}
|
||||
}
|
||||
let address=res1.data?.address;
|
||||
let address = res1.data?.address;
|
||||
const ip = ctx.headers['x-forwarded-for'] || ctx.headers['x-real-ip'] || '';
|
||||
let address1 = getProvinceByIP(ip);
|
||||
if(!address||address=="其他"){
|
||||
address=address1;
|
||||
if (!address || address == "其他") {
|
||||
address = address1;
|
||||
}
|
||||
if (["香港", "澳门", "台湾省"].includes(address)) {
|
||||
address = "港澳台";
|
||||
|
|
@ -44,24 +44,24 @@ export default async function (ctx: FunctionContext) {
|
|||
if (!levelAmount) {
|
||||
return { code: 0, data: null, msg: "未获取到levelAmount" };
|
||||
}
|
||||
let oldlevelAmount = res1.data?.levelAmount ||0;
|
||||
let oldAdd=res1.data?.addLevel||0;
|
||||
let levelTJ=res1.data?.levelTJ||0;
|
||||
let count=levelAmount-oldlevelAmount;
|
||||
if(count>10||count<-10){
|
||||
count=1;
|
||||
let oldlevelAmount = res1.data?.levelAmount || 0;
|
||||
let oldAdd = res1.data?.addLevel || 0;
|
||||
let levelTJ = res1.data?.levelTJ || 0;
|
||||
let count = levelAmount - oldlevelAmount;
|
||||
if (count > 10 || count < -10) {
|
||||
count = 1;
|
||||
return;
|
||||
}
|
||||
let add=oldAdd+count;
|
||||
let isWhite=res1.data?.isWhite;
|
||||
let careerAmount = res1.data?.careerAmount||0;
|
||||
if(isWuXian=="true"){
|
||||
add +=1;
|
||||
let add = oldAdd + count;
|
||||
let isWhite = res1.data?.isWhite;
|
||||
let careerAmount = res1.data?.careerAmount || 0;
|
||||
if (isWuXian == "true") {
|
||||
add += 1;
|
||||
//console.log("无线增加值:"+(add-oldAdd));
|
||||
}else{
|
||||
} else {
|
||||
//console.log("非无线增加值:"+(add-oldAdd));
|
||||
}
|
||||
add=Math.floor(add);
|
||||
add = Math.floor(add);
|
||||
// if (uid =="686513c8a173b1b78d21f881"){
|
||||
// console.error(add);
|
||||
// console.log(isWhite);
|
||||
|
|
@ -69,30 +69,30 @@ export default async function (ctx: FunctionContext) {
|
|||
// console.log(isWhite==false);
|
||||
// console.error(levelAmount);
|
||||
// }
|
||||
let rankNum=-1;
|
||||
if(add>=5&&isWhite==false){
|
||||
rankNum=await rank(db1, uid, add, levelAmount, res1, address,levelTJ);
|
||||
levelTJ=1;
|
||||
careerAmount+=1;
|
||||
let rankNum = -1;
|
||||
if (add >= 5 && isWhite == false) {
|
||||
rankNum = await rank(db1, uid, add, levelAmount, res1, address, levelTJ);
|
||||
levelTJ = 1;
|
||||
careerAmount += 1;
|
||||
}
|
||||
let film = res1.data.film;
|
||||
if (!film && film != 0) {
|
||||
film = res1.data.levelAmount;
|
||||
}
|
||||
film += count;
|
||||
if (uid =="6866ac24a173b1b78d21f8c2"){
|
||||
console.log("通关:"+levelAmount);
|
||||
if (uid == "6866ac24a173b1b78d21f8c2") {
|
||||
console.log("通关:" + levelAmount);
|
||||
}
|
||||
// console.error(add);
|
||||
// console.log(oldAdd);
|
||||
// console.log(levelAmount);
|
||||
// console.log(oldlevelAmount);
|
||||
// console.error("----------------------------------");
|
||||
let ret = await db.collection(dbname).where({ _id: uid }).update({address:address,film:film, careerAmount:careerAmount,levelTJ:levelTJ, levelAmount: levelAmount,addLevel:add,timestamp:Date.now()});
|
||||
return { code: 1, data: {IP:ip,address:address,rank:rankNum,levelAmount: levelAmount,timestamp: Date.now() }, msg: "用户数据更新成功" }
|
||||
let ret = await db.collection(dbname).where({ _id: uid }).update({ address: address, film: film, careerAmount: careerAmount, levelTJ: levelTJ, levelAmount: levelAmount, addLevel: add, timestamp: Date.now() });
|
||||
return { code: 1, data: { IP: ip, address: address, rank: rankNum, levelAmount: levelAmount, film: film, timestamp: Date.now() }, msg: "用户数据更新成功" }
|
||||
case 'read':
|
||||
return {
|
||||
code: 1, data: { levelAmount: res1.data?.levelAmount||0, timestamp: res1.data?.timestamp||0 }, msg: "成功"
|
||||
code: 1, data: { levelAmount: res1.data?.levelAmount || 0, film: res1.data?.film ?? res1.data?.levelAmount ?? 0, timestamp: res1.data?.timestamp || 0 }, msg: "成功"
|
||||
}
|
||||
default:
|
||||
return {
|
||||
|
|
@ -109,7 +109,7 @@ function isSameDayUTC(timestamp1, timestamp2) {
|
|||
date1.getUTCMonth() === date2.getUTCMonth() &&
|
||||
date1.getUTCDate() === date2.getUTCDate();
|
||||
}
|
||||
async function rank(db1,uid,add,levelAmount,res1,address,levelTJ){
|
||||
async function rank(db1, uid, add, levelAmount, res1, address, levelTJ) {
|
||||
let rankInfo = await db.collection("sRank").where({ _id: db1 }).getOne();
|
||||
|
||||
let total = rankInfo.data.total;
|
||||
|
|
@ -124,8 +124,8 @@ async function rank(db1,uid,add,levelAmount,res1,address,levelTJ){
|
|||
if (total["all"][i].id == uid) {
|
||||
isHave = true;
|
||||
total["all"][i].useravatar = res1.data?.useravatar,
|
||||
total["all"][i].username=res1.data?.username,
|
||||
total["all"][i].useravatarIcon=res1.data?.useravatarIcon,
|
||||
total["all"][i].username = res1.data?.username,
|
||||
total["all"][i].useravatarIcon = res1.data?.useravatarIcon,
|
||||
total["all"][i].addLevel = add;
|
||||
total["all"][i].time = Date.now();
|
||||
break;
|
||||
|
|
@ -212,19 +212,19 @@ async function rank(db1,uid,add,levelAmount,res1,address,levelTJ){
|
|||
if (total[address].length >= 10) {
|
||||
total[address] = total[address].slice(0, 10);
|
||||
}
|
||||
if(!total["role"]){
|
||||
total["role"]={};
|
||||
if (!total["role"]) {
|
||||
total["role"] = {};
|
||||
}
|
||||
if(levelTJ==0){
|
||||
if (levelTJ == 0) {
|
||||
|
||||
if (!total["role"][address]) {
|
||||
total["role"][address] = 1;
|
||||
} else {
|
||||
total["role"][address] += 1;
|
||||
//console.log(address+"真实:"+total[address].length+"----"+total["role"][address]);
|
||||
let length=total[address].length;
|
||||
if(length<10){
|
||||
total["role"][address]=length;
|
||||
let length = total[address].length;
|
||||
if (length < 10) {
|
||||
total["role"][address] = length;
|
||||
}
|
||||
//console.error(address + "真实:" + total[address].length + "----" + total["role"][address])
|
||||
// const res3 = await db.collection("sRank").where({ name: address }).getOne();
|
||||
|
|
@ -237,10 +237,10 @@ async function rank(db1,uid,add,levelAmount,res1,address,levelTJ){
|
|||
}
|
||||
//console.log(address);
|
||||
let ret1 = await db.collection("sRank").where({ _id: db1 }).update({ total: JSON.stringify(total) });
|
||||
let rank=-1;
|
||||
let rank = -1;
|
||||
for (let i = 0; i < total[address].length; i++) {
|
||||
if (total[address][i].id == uid) {
|
||||
rank=i+1;
|
||||
rank = i + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user