Info_UserBase.php 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. <?php
  2. namespace loyalsoft;
  3. /**
  4. * 玩家基本信息
  5. * @author gwang(wanggangzero@qq.com)
  6. */
  7. class Info_UserBase extends Object_ext {
  8. //put your code here
  9. /**
  10. * 第一次登录时间
  11. * @var int
  12. */
  13. public $firstLogin;
  14. /**
  15. * 上次登录时间
  16. * @var int
  17. */
  18. public $lastLogin;
  19. /**
  20. * 上次活动时间
  21. * @var int
  22. */
  23. public $lastSaveTs;
  24. /**
  25. * @var int 当前等级
  26. */
  27. public $level; //
  28. /**
  29. * @var string 昵称
  30. */
  31. public $name; // 昵称
  32. /**
  33. * @var string 头像
  34. */
  35. public $headImg; // 头像
  36. /**
  37. * @var int 头像框Id
  38. */
  39. public $imgBorderId = 0;
  40. /**
  41. * @var string 形象(龙骨)
  42. */
  43. public $img;
  44. /**
  45. * @var int 金币
  46. */
  47. public $gold; // 金币
  48. /**
  49. * 钻石
  50. * @var int
  51. */
  52. public $cash; //
  53. /**
  54. * 分解后得倒的晶石
  55. * @var int
  56. */
  57. public $spar;
  58. /**
  59. * 体力值
  60. * @var int
  61. */
  62. public $tili = 120; //体力
  63. /**
  64. * 当前经验
  65. */
  66. public $xp = 0;
  67. /**
  68. * 升级经验
  69. * @var type
  70. */
  71. public $maxXp = 0;
  72. /**
  73. * @var int 好友赠送友情点数
  74. */
  75. public $friendPoint = 0;
  76. /**
  77. * @var int 历史充值总金额(单位:分)
  78. */
  79. public $charge_amt = 0; //
  80. /**
  81. * @var int 游戏内赠送游戏币总额
  82. */
  83. public $gift_cash = 0; //
  84. /**
  85. * 言灵等级消耗的资源点
  86. * @var type
  87. */
  88. public $resPoint = 0;
  89. public function initialize() {
  90. my_Assert(GameConfig::primordial_data(), "找不到账号初始化数据"); # 防御
  91. $this->gold = GameConfig::primordial_data()->User_Gold;
  92. $this->cash = GameConfig::primordial_data()->User_Cash;
  93. $this->xp = GameConfig::primordial_data()->User_XP;
  94. $this->maxXp = 0;
  95. $this->level = 1;
  96. $this->name = '步惊云';
  97. $this->spar = 0;
  98. $this->headImg = GameConfig::primordial_data()->User_head;
  99. $this->img = GameConfig::primordial_data()->User_img;
  100. }
  101. // <editor-fold defaultstate="collapsed" desc=" 方法 ">
  102. //
  103. /**
  104. * 增加资源点
  105. * @param int $amt
  106. */
  107. function Add_resPoint($amt) {
  108. my_Assert($amt >= 0, "参数为负");
  109. $this->resPoint += $amt;
  110. }
  111. /**
  112. * 扣除资源点
  113. * @param type $amt
  114. * @return boolean true:成功, false:资源点不足
  115. */
  116. function Consume_ResPoint($amt) {
  117. if ($amt > 0) {
  118. if ($this->resPoint - $amt >= 0) {
  119. $this->resPoint -= $amt;
  120. return true;
  121. }
  122. }
  123. return false;
  124. }
  125. /**
  126. * 给玩家增加体力
  127. * @param int $amt
  128. */
  129. function Add_tili($amt) {
  130. my_Assert($amt >= 0, "体力amt小于0");
  131. ActiveProc::ChangeTili($amt);
  132. }
  133. /**
  134. * 用户获得金币
  135. * @param int $amt
  136. */
  137. function Add_Gold($amt) {
  138. my_Assert($amt >= 0, "参数为负");
  139. $this->gold += $amt;
  140. }
  141. /**
  142. * 扣除玩家金币
  143. * @param int $amt
  144. * @return boolean true:成功, false:金币不足
  145. */
  146. function Consume_Gold($amt) {
  147. if ($amt > 0) {
  148. if ($this->gold - $amt >= 0) {
  149. $this->gold -= $amt;
  150. return true;
  151. }
  152. }
  153. return false;
  154. }
  155. /**
  156. * 增加用户钻石
  157. * @param type $amt
  158. */
  159. function Add_Cash($amt) {
  160. my_Assert($amt >= 0, "amt值为负");
  161. $this->cash += $amt;
  162. }
  163. /**
  164. * 扣除玩家钻石
  165. * @param int $amt
  166. * @return bool 成功与否
  167. */
  168. function Consume_Cash($amt) {
  169. if ($amt >= 0) {
  170. if ($this->cash - $amt >= 0) {
  171. $this->cash -= $amt;
  172. return true;
  173. }
  174. }
  175. return false;
  176. }
  177. /**
  178. * 增加用户友情点
  179. * @param type $amt
  180. */
  181. function Add_FriendPoint($amt) {
  182. my_Assert($amt >= 0, "amt值为负");
  183. $this->friendPoint += $amt; # 业务逻辑
  184. }
  185. /**
  186. * 扣除玩家友情点
  187. * @param int $amt
  188. */
  189. function Consume_FriendShipPoint($amt) {
  190. if ($amt > 0) {
  191. if ($this->friendPoint - $amt >= 0) {
  192. $this->friendPoint -= $amt;
  193. return true;
  194. }
  195. }
  196. return false;
  197. }
  198. /**
  199. * 用户获得经验值
  200. * @param int $amt
  201. */
  202. function Add_Exp($amt) {
  203. my_Assert($amt >= 0, "amt值为负");
  204. $cfgLVs = GameConfig::playerlevel();
  205. $this->xp += $amt;
  206. $initLevel = $curLevel = $this->level;
  207. $nextLevel = $curLevel + 1;
  208. while ($this->xp >= $cfgLVs->$nextLevel->xp_need) { # 超过升级所需经验
  209. if ($this->level < glc()->Game_MaxPlayerLevel) { # 如果未到达最大等级
  210. $this->level++;
  211. $this->xp -= $cfgLVs->$nextLevel->xp_need;
  212. $curLevel = $this->level;
  213. $nextLevel = $curLevel + 1;
  214. my_Assert(CommUtil::isPropertyExists($cfgLVs, $nextLevel), ErrCode::err_const_no); // "取英雄升级常量数据失败." . $nextLevel . "级");
  215. $this->maxXp = $cfgLVs->$nextLevel->xp_need;
  216. // StatProc::UserLevel($nowlv); # 等级统计
  217. } else { # 如果已到达最大等级则仅补齐缺失的经验即可
  218. $this->xp = $this->maxXp; # 经验不能超过最大值
  219. break;
  220. }
  221. }
  222. if ($this->level != $initLevel) { # 插入玩家升级的系统消息
  223. SystemProc::UserLevelUp(req()->zoneid, $this, $this->level);
  224. TaskProc::OnUserLevelUp($this->level); # 通知任务模块,这里应该有事件模块
  225. EventProc::OnUserLevelup($initLevel, $this->level); # 事件模块
  226. }
  227. }
  228. //
  229. // </editor-fold>
  230. }