关灯
开启左侧

魔兽单机版的一个普通玩家积分交易系统参考

  [复制链接]
admin实名认证 发表于 2016-4-23 17:13:50 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
 
下面是一个涉及到积分系统交易的GM命令的函数参考。函数默认是MANGOS服务端的。不过你可以通过修改来支持T端的

GetAccountJf() 这个函数是自己增加的,主要是一个活的自己角色或则账号的积分数量的函数,。这里就不交代了


//普通玩家积分交易系统
bool ChatHandler::HandleTradeCommand(const char * args) {
if (!*args)
return false;
Player *target = getSelectedPlayer();
if(!target)
{
SendSysMessage(LANG_PLAYER_NOT_FOUND);
return true;
}

uint32 guidtrade = 0;
if(target == m_session->GetPlayer())
{
SendSysMessage(LANG_COMMAND_TRADESELF);
return true;
guidtrade = m_session->GetPlayer()->GetSession()->GetAccountId(); //获得自己的ID号
}


uint32 guid = 0; //定义设置的用户ID
if(target)
{
guid = target->GetSession()->GetAccountId(); //获得该玩家的注册ID号
}

uint32 amount = (uint32)atoi(args);
uint32 amountself = player->GetAccountJf(guidtrade);
uint32 amountother = m_session->GetPlayer()->GetAccountJf(m_session->GetPlayer()->GetSession()->GetAccountId());
if (amount < 0 || amount > amountself)
{
SendSysMessage(LANG_BAD_VALUE);
return true;
}
uint32 amountpointadd = amountother + amount;

loginDatabase.PExecute("UPDATE `account` SET `jf` = '%u' WHERE `id` = '%u'",amountpointless,guidtrade); //交易发送方最后点数
loginDatabase.CommitTransaction();
loginDatabase.PExecute("UPDATE `account` SET `jf` = '%u' WHERE `id` = '%u'",amountpointadd,guid); //被交易方最后点数
loginDatabase.CommitTransaction();

PSendSysMessage(LANG_COMMAND_MODIFY_INTEGRAL, target->GetName(), amount);

return true;
}//普通玩家积分交易系统
 
VIP介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 最佳新人

    注册账号后积极发帖的会员
  • 活跃会员

    经常参与各类话题的讨论,发帖内容较有主见
  • 热心会员

    经常帮助其他会员答疑
  • 推广达人

    积极宣传本站,为本站带来更多注册会员
  • 宣传达人

    积极宣传本站,为本站带来更多的用户访问量
  • 灌水之王

    经常在论坛发帖,且发帖量较大
  • 突出贡献

    长期对论坛的繁荣而不断努力,或多次提出建设性意见
  • 优秀版主

    活跃且尽责职守的版主
  • 荣誉管理

    曾经为论坛做出突出贡献目前已离职的版主
  • 论坛元老

    为论坛做出突出贡献的会员

0关注

5粉丝

3421帖子

排行榜
作者专栏

QQ交流群&&微信订阅号

QQ交流群

微信订阅号

吾爱尚玩资源基地永久域名:

Www.523Play.Com

在线管理员QQ:1589479632

邮箱:Email@523play.com

QQ交流群:558936238

Copyright   ©2015-2116  吾爱尚玩资源基地|523play.comPowered by©523Pplay.Com技术支持:吾爱尚玩资源基地