====== 商城 ======
**SHOP**
===== 1填表 =====
==== 1.1免费次数填写 ====
免费次数填在[[generated:dailyrefresh_config]] 中,VIP和非VIP区分对待
==== 1.2付费次数填写 ====
付费次数填在[[generated:dailycost_config]]中, 第几次购买/是否VIP 都是影响这个模块消耗价格的因素
- 从第一次开始填写,如果之后没有次数,就是一天可以最大购买的次数
- 如果有次数为-1,则表示今天购买次数无限
=== 1.2.1相关枚举 ===
[[generated:daily_limit|DAILY_LIMIT]]
- 金币宝箱单开次数 1031
- 金币宝箱十连抽次数 1032
- 钻石宝箱单开次数 1033
- 钻石宝箱十连抽次数 1034
- 钻石换金币次数 1035
==== 1.3时装配置 ====
时装在[[generated:dress_config]]中配置
时装价格在[[generated:spread_shop_config]]中配置
==== 1.4内购项目配置 ====
**名词解释:IAP: In App Purchase **
特指手机内购买的项目,我们这里主要是钻石包和VIP
在[[generated:iap_product_config]]中配置
==== 1.4内购项目配置 ====
**名词解释:IAP: In App Purchase **
特指手机内购买的项目,我们这里主要是钻石包和VIP
在[[generated:iap_product_config]]中配置
文本填写在[[generated:message_config]]中
客户端读取文本的方法
DataParserHelper.getMessage(9001);
==== 1.5其他配置 =====
[[generated:shop_setting]] 钻石换金币比的初始时间和各类宝箱id
[[generated:chest_config]] 宝箱配置, 关于如何填写loot 参考[[填表说明|填表说明]]
===== 2相关协议 =====
====购买内购商品====
[[generated:ShopBuyIAP]]
====从商城换金币====
[[generated:ShopGoldExchange]]
**每次兑换的价格计算方法**
//免费//
- 免费次数从[[generated:dailyrefresh_config]]中获取,module为1035, 根据你是不是VIP可以获得对应的免费次数
- 已使用的次数是 [[generated:character_daily_info]]的 daily_gold_exchange 字段
- 只有daily_gold_exchange 小于 免费次数的时候,才可以免费兑换。免费只考虑“一次兑换”,可以不考虑“十次兑换”
客户端读取的方法
int value = EnumConditionHelper.getValueFromEnum (1035);//取得使用次数
//付费//
- 读取[[generated:dailycost_config]], 根据你**当前已购买次数**和是不是VIP可以获下一次的价格
- **当前已购买次数**从 [[generated:character_daily_buy_info]]的 daily_gold_exchange
- 下十次的价格,是循环计算后10次的价格
- 超过填表times数值上限后,判断是否有times为-1的价格,如果有,则使用它填满剩余次数。 如果没有,则10次购买按钮灰态不可用。
客户端读取的方法
int value = EnumConditionHelper.getBuyCountValueFromEnum(1035);//取得购买次数
**每次兑换的收益计算方法**
- 总时间为(单位分钟): [[generated:character_statistic_info]]的gold_exchange_count + [[generated:shop_setting]]的gold_exchange_base_time
- 每分钟收益根据[[generated:character_info]]的stage字段, 去[[generated:stage_config]]的gold字段查找
- 十连兑换,需要递归计算总收益
//计算总收益
$shop_setting = json_decode($redismanager_proto->getinfo("shop_setting"));
$total_gold = 0;
for($i = 0;$i<$times;$i++)
{
$total_gold += ($shop_setting->gold_exchange_base_time + $character_statistic_info->gold_exchange_count + $i ) * $stage_config->gold;
}
====从商城买时装====
[[generated:ShopBuyDress]]
====从商城开宝箱====
[[generated:ShopOpenChest]]
====VIP到期(提示后不再提示)====
[[generated:ShopVIPExpire]]
策划中增加了,VIP过期后的第一次登陆会提示玩家续费的功能
如何判断VIP到期:
- 决定VIP有效是两个字段 [[generated:character_info]]的is_vip字段,且当前时间在[[generated:character_info]]的vip_expire_time之内
- 如果vip_expire_time 过期,但is_vip 还是1, 则说明第一次过期。//原理解释,短连接游戏,服务器不会主动重置is_vip字段//
- 过期之后调用该协议,则服务器会把is_vip 置为0,保证下次不会提示。
===== 3相关存档表格 =====
[[generated:character_statistic_info]] 中的gold_exchange_count 表示累积兑换了多少次
[[generated:character_daily_info]] 记录几个模块的每日免费次数
[[generated:character_daily_buy_info]] 记录几个模块的每日购买次数
IAP Log写在[[generated:purchase_log_info]]
VIP 购买成功后 [[generated:character_info]]的is_vip字段会更新,同时会更新 过期时间**vip_expire_time**
另外在[[generated:character_statistic_info]] 中的
-vip_start_timeVIP 开始购买时间
-vip_last_start_time 上一个VIP开始周期
-vip_last_end_time 上一个VIP结束周期
也需要更新
===== 4UI 效果图 =====
- [[美术:ui:ui效果图|UI效果图]]
===== 5测试要求 =====
- 增加推广币的指令 Add Item 4,1000
- 待完善