mirror of
https://github.com/drmext/MonkeyBusiness.git
synced 2026-03-21 18:04:48 -05:00
Fix
This commit is contained in:
parent
827c80b26d
commit
ed64259784
|
|
@ -19,6 +19,6 @@ port = 8000
|
||||||
services_prefix = "/core"
|
services_prefix = "/core"
|
||||||
verbose_log = True
|
verbose_log = True
|
||||||
|
|
||||||
arcade = "Monkey Business"
|
arcade = "M0NKYBUS1N3Z"
|
||||||
paseli = 5730
|
paseli = 10000
|
||||||
maintenance_mode = False
|
maintenance_mode = False
|
||||||
|
|
|
||||||
|
|
@ -1,24 +1,40 @@
|
||||||
import config
|
import config
|
||||||
|
|
||||||
from fastapi import APIRouter, Request, Response
|
from fastapi import APIRouter, Request, Response
|
||||||
|
from tinydb import where
|
||||||
|
|
||||||
from core_common import core_process_request, core_prepare_response, E
|
from core_common import core_process_request, core_prepare_response, E
|
||||||
|
from core_database import get_db
|
||||||
|
|
||||||
router = APIRouter(prefix="/core", tags=["eacoin"])
|
router = APIRouter(prefix="/core", tags=["eacoin"])
|
||||||
|
|
||||||
|
sessid = 0
|
||||||
|
payments = {}
|
||||||
|
|
||||||
@router.post("/{gameinfo}/eacoin/checkin")
|
@router.post("/{gameinfo}/eacoin/checkin")
|
||||||
async def eacoin_checkin(request: Request):
|
async def eacoin_checkin(request: Request):
|
||||||
request_info = await core_process_request(request)
|
request_info = await core_process_request(request)
|
||||||
|
pcbid = request_info["root"].attrib["srcid"]
|
||||||
|
cardid = request_info["root"][0].find("cardid").text
|
||||||
|
|
||||||
|
op = get_db().table("shop").get(where("pcbid") == pcbid)
|
||||||
|
op = {} if op is None else op
|
||||||
|
|
||||||
|
bal = get_db().table("paseli").get(where("cardid") == cardid)
|
||||||
|
bal = {} if bal is None else bal
|
||||||
|
|
||||||
|
global sessid
|
||||||
|
sessid += 1
|
||||||
|
payments[sessid] = cardid
|
||||||
|
|
||||||
response = E.response(
|
response = E.response(
|
||||||
E.eacoin(
|
E.eacoin(
|
||||||
E.sequence(1, __type="s16"),
|
E.sequence(1, __type="s16"),
|
||||||
E.acstatus(1, __type="u8"),
|
E.acstatus(1, __type="u8"),
|
||||||
E.acid(1, __type="str"),
|
E.acid(1, __type="str"),
|
||||||
E.acname(config.arcade, __type="str"),
|
E.acname(op.get("opname", config.arcade), __type="str"),
|
||||||
E.balance(config.paseli, __type="s32"),
|
E.balance(bal.get("balance", config.paseli), __type="s32"),
|
||||||
E.sessid(1, __type="str"),
|
E.sessid(sessid, __type="str"),
|
||||||
E.inshopcharge(1, __type="u8"),
|
E.inshopcharge(1, __type="u8"),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
@ -40,15 +56,55 @@ async def eacoin_checkout(request: Request):
|
||||||
@router.post("/{gameinfo}/eacoin/consume")
|
@router.post("/{gameinfo}/eacoin/consume")
|
||||||
async def eacoin_consume(request: Request):
|
async def eacoin_consume(request: Request):
|
||||||
request_info = await core_process_request(request)
|
request_info = await core_process_request(request)
|
||||||
|
sessid = int(request_info["root"][0].find("sessid").text)
|
||||||
|
payment = int(request_info["root"][0].find("payment").text)
|
||||||
|
|
||||||
|
cardid = payments.get(sessid, None)
|
||||||
|
|
||||||
|
# fallback if server is restarted mid-round for IIDX movie or gacha purchases
|
||||||
|
if cardid == None:
|
||||||
|
response = E.response(
|
||||||
|
E.eacoin(
|
||||||
|
E.acstatus(0, __type="u8"),
|
||||||
|
E.autocharge(0, __type="u8"),
|
||||||
|
E.balance(config.paseli, __type="s32"),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
response_body, response_headers = await core_prepare_response(request, response)
|
||||||
|
return Response(content=response_body, headers=response_headers)
|
||||||
|
|
||||||
|
bal = get_db().table("paseli").get(where("cardid") == cardid)
|
||||||
|
if bal == None:
|
||||||
|
bal = {
|
||||||
|
"cardid": cardid,
|
||||||
|
"balance": config.paseli,
|
||||||
|
"total_spent": 0,
|
||||||
|
}
|
||||||
|
|
||||||
|
new_balance = bal["balance"] - payment
|
||||||
|
|
||||||
|
paseli_card = {
|
||||||
|
"cardid": cardid,
|
||||||
|
"balance": new_balance,
|
||||||
|
"total_spent": bal["total_spent"] + payment,
|
||||||
|
}
|
||||||
|
|
||||||
response = E.response(
|
response = E.response(
|
||||||
E.eacoin(
|
E.eacoin(
|
||||||
E.acstatus(0, __type="u8"),
|
E.acstatus(0, __type="u8"),
|
||||||
E.autocharge(0, __type="u8"),
|
E.autocharge(0, __type="u8"),
|
||||||
E.balance(config.paseli, __type="s32"),
|
E.balance(new_balance, __type="s32"),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if new_balance < 1000 or new_balance > config.paseli:
|
||||||
|
paseli_card["balance"] = config.paseli
|
||||||
|
|
||||||
|
get_db().table("paseli").upsert(paseli_card, where("cardid") == cardid)
|
||||||
|
|
||||||
|
# del payments[sessid]
|
||||||
|
|
||||||
response_body, response_headers = await core_prepare_response(request, response)
|
response_body, response_headers = await core_prepare_response(request, response)
|
||||||
return Response(content=response_body, headers=response_headers)
|
return Response(content=response_body, headers=response_headers)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
import config
|
import config
|
||||||
|
|
||||||
from fastapi import APIRouter, Request, Response
|
from fastapi import APIRouter, Request, Response
|
||||||
|
from tinydb import where
|
||||||
|
|
||||||
from core_common import core_process_request, core_prepare_response, E
|
from core_common import core_process_request, core_prepare_response, E
|
||||||
|
from core_database import get_db
|
||||||
|
|
||||||
router = APIRouter(prefix="/core", tags=["facility"])
|
router = APIRouter(prefix="/core", tags=["facility"])
|
||||||
|
|
||||||
|
|
@ -10,6 +12,10 @@ router = APIRouter(prefix="/core", tags=["facility"])
|
||||||
@router.post("/{gameinfo}/facility/get")
|
@router.post("/{gameinfo}/facility/get")
|
||||||
async def facility_get(request: Request):
|
async def facility_get(request: Request):
|
||||||
request_info = await core_process_request(request)
|
request_info = await core_process_request(request)
|
||||||
|
pcbid = request_info["root"].attrib["srcid"]
|
||||||
|
|
||||||
|
op = get_db().table("shop").get(where("pcbid") == pcbid)
|
||||||
|
op = {} if op is None else op
|
||||||
|
|
||||||
response = E.response(
|
response = E.response(
|
||||||
E.facility(
|
E.facility(
|
||||||
|
|
@ -26,7 +32,7 @@ async def facility_get(request: Request):
|
||||||
E.regionname("Tokyo", __type="str"),
|
E.regionname("Tokyo", __type="str"),
|
||||||
E.countryjname("日本国", __type="str"),
|
E.countryjname("日本国", __type="str"),
|
||||||
E.regionjname("東京都", __type="str"),
|
E.regionjname("東京都", __type="str"),
|
||||||
E.name(config.arcade, __type="str"),
|
E.name(op.get("opname", config.arcade), __type="str"),
|
||||||
E("type", 255, __type="u8"),
|
E("type", 255, __type="u8"),
|
||||||
),
|
),
|
||||||
E.line(
|
E.line(
|
||||||
|
|
@ -42,7 +48,7 @@ async def facility_get(request: Request):
|
||||||
),
|
),
|
||||||
E.public(
|
E.public(
|
||||||
E.flag(1, __type="u8"),
|
E.flag(1, __type="u8"),
|
||||||
E.name(config.arcade, __type="str"),
|
E.name(op.get("opname", config.arcade), __type="str"),
|
||||||
E.latitude(0, __type="str"),
|
E.latitude(0, __type="str"),
|
||||||
E.longitude(0, __type="str"),
|
E.longitude(0, __type="str"),
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
import config
|
import config
|
||||||
|
|
||||||
from fastapi import APIRouter, Request, Response
|
from fastapi import APIRouter, Request, Response
|
||||||
|
from tinydb import Query, where
|
||||||
|
|
||||||
from core_common import core_process_request, core_prepare_response, E
|
from core_common import core_process_request, core_prepare_response, E
|
||||||
|
from core_database import get_db
|
||||||
|
|
||||||
router = APIRouter(prefix="/local", tags=["local"])
|
router = APIRouter(prefix="/local", tags=["local"])
|
||||||
router.model_whitelist = ["LDJ"]
|
router.model_whitelist = ["LDJ"]
|
||||||
|
|
@ -11,11 +13,15 @@ router.model_whitelist = ["LDJ"]
|
||||||
@router.post("/{gameinfo}/IIDX33shop/getname")
|
@router.post("/{gameinfo}/IIDX33shop/getname")
|
||||||
async def iidx33shop_getname(request: Request):
|
async def iidx33shop_getname(request: Request):
|
||||||
request_info = await core_process_request(request)
|
request_info = await core_process_request(request)
|
||||||
|
pcbid = request_info["root"].attrib["srcid"]
|
||||||
|
|
||||||
|
op = get_db().table("shop").get(where("pcbid") == pcbid)
|
||||||
|
op = {} if op is None else op
|
||||||
|
|
||||||
response = E.response(
|
response = E.response(
|
||||||
E.IIDX33shop(
|
E.IIDX33shop(
|
||||||
cls_opt=0,
|
cls_opt=0,
|
||||||
opname=config.arcade,
|
opname=op.get("opname", config.arcade),
|
||||||
pid=13,
|
pid=13,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
@ -24,6 +30,25 @@ async def iidx33shop_getname(request: Request):
|
||||||
return Response(content=response_body, headers=response_headers)
|
return Response(content=response_body, headers=response_headers)
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/{gameinfo}/IIDX33shop/savename")
|
||||||
|
async def iidx33shop_savename(request: Request):
|
||||||
|
request_info = await core_process_request(request)
|
||||||
|
pcbid = request_info["root"].attrib["srcid"]
|
||||||
|
opname = request_info["root"][0].attrib["opname"]
|
||||||
|
|
||||||
|
shop_info = {
|
||||||
|
"pcbid": pcbid,
|
||||||
|
"opname": opname,
|
||||||
|
}
|
||||||
|
|
||||||
|
get_db().table("shop").upsert(shop_info, where("pcbid") == pcbid)
|
||||||
|
|
||||||
|
response = E.response(E.IIDX33shop())
|
||||||
|
|
||||||
|
response_body, response_headers = await core_prepare_response(request, response)
|
||||||
|
return Response(content=response_body, headers=response_headers)
|
||||||
|
|
||||||
|
|
||||||
@router.post("/{gameinfo}/IIDX33shop/getconvention")
|
@router.post("/{gameinfo}/IIDX33shop/getconvention")
|
||||||
async def iidx33shop_getconvention(request: Request):
|
async def iidx33shop_getconvention(request: Request):
|
||||||
request_info = await core_process_request(request)
|
request_info = await core_process_request(request)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user