插件简介
为了高仿官方抽卡概率,我设计调整了数据,在一定程度上满足了出货期望和官方概率近视相等~(注意:不同十连间抽卡保底事件是相互独立的,同卡池单抽十连共享保底,抽卡保底不与抽卡的人有关)(Pro和Air版本都可用)
更新日志(随缘更新):
版本:1.3.2
- 修复标配抽卡只有四个A级角色的bug
- 更新了扩充卡池-扩充由真红改为樱桃炸弹,精准专属武器up改为睡美人
版本:1.3.1
- 增加管理员系统
- 增加管理员初始化签到记录的指令
- 开启关闭抽卡指令交给管理员
- 默认抽卡=关闭
版本:1.2.2
- 各卡池单抽与十连共享抽卡保底次数,扩充单抽与十连共享百连保底次数
- 修复各卡池单抽十连的部分抽卡次数被共享使用的问题,完全独立各卡池的保底事件
版本:1.2.1
- 更改抽卡提示方式,由显示帐号改为艾特抽卡对象
- 修改部分描述(如 阁下===>舰长)
- 更新了最近的扩充和精准A卡池内容(data1.txt和data3.txt)
- 修复280水晶无法单抽2800水晶无法十连的问题
- 修复签到只能签一次的问题(第二天未签到但无法签到)
版本:1.2.0
- 增加水晶管理系统
- 通过消耗水晶进行抽卡,水晶不足不能抽卡
版本:1.1.0
- 可自定义抽卡内容
- 自动创建数据文件以及文件夹
- 修改了部分文字描述
- 群聊默认抽卡关闭=>开启
- 增加扩充百连保底
版本:1.0.0
- 模拟崩坏三抽卡三种卡池六种抽卡方式
- 支持私聊群聊抽卡
- 群聊默认抽卡关闭(重载应用会初始化抽卡的状态)
加载代码块核心代码(appmain.cpp):
EVE_Enable(Enable)
{
logger.Info("应用被启用");
int res = mkdir(".\\data\\app\\com.7cyang.bh3");
if (res == 0) {
logger.Info("创建文件夹成功");
}
else {
logger.Info("创建文件夹失败:已存在文件夹请忽略这条消息");
}
ifstream infile1(".\\data\\app\\com.7cyang.bh3\\data1.txt");
if (!infile1) {
ofstream fout(".\\data\\app\\com.7cyang.bh3\\data1.txt");//create
logger.Info("创建data1文件成功");
fout.close();
infile1.close();
}
ifstream infile2(".\\data\\app\\com.7cyang.bh3\\data2.txt");
if (!infile2) {
ofstream fout(".\\data\\app\\com.7cyang.bh3\\data2.txt");//create
logger.Info("创建data2文件成功");
fout.close();
infile2.close();
}
ifstream infile3(".\\data\\app\\com.7cyang.bh3\\data3.txt");
if (!infile3) {
ofstream fout(".\\data\\app\\com.7cyang.bh3\\data3.txt");//create
logger.Info("创建data3文件成功");
fout.close();
infile3.close();
}
ifstream infile4(".\\data\\app\\com.7cyang.bh3\\user_data.txt");
if (!infile4) {
ofstream fout(".\\data\\app\\com.7cyang.bh3\\user_data.txt");//create
logger.Info("创建user_data文件成功");
fout.close();
infile4.close();
int sigi = 0;
if (sigi == 0) {
sigi = 1;
ofstream ofresult(".\\data\\app\\com.7cyang.bh3\\user_data.txt", ios::app);
ofresult << "q=14000" << endl;
ofresult << "admin=123456789,987654321" << endl;
ofresult.close();
}
}
return 0;
}
EVE_Disable(Disable)
{
logger.Info("应用被停用");
return 0;
}
MUST_AppInfo_RETURN(CQAPPID)
群聊代码(example_winSpeak.cpp):
#include <CQEVE_GroupMsg.h>
#include <CQcode.h>
#include <CQLogger.h>
#include <time.h>
#include <string>
#include <iostream>
#include <fstream>
#include <cassert>
#include <sstream>
using namespace std;
using namespace CQ;
static Logger logger("崩坏三抽卡模拟");
static int isOpen = 0;
static long long str1[] = { 0,0 };
static string str2[] = { "","" };
static int sigi = 0;
static string KC[5] = { "S级女武神(UP)","A级女武神(UP)","A级女武神A","A级女武神B","A级女武神C" };//扩初始内容
static string ZB[][100] = { {"极品武器"},
{"极品圣痕"},
{"极品武器A","极品武器B","极品武器C","极品武器D","极品武器E","极品武器F"},
{"极品圣痕A","极品圣痕B" ,"极品圣痕C" ,"极品圣痕D"},
{"稀有武器A","稀有武器B","稀有武器C","稀有武器D","稀有武器E","稀有武器F","稀有武器G","稀有武器H","稀有武器I","稀有武器J","稀有武器K",
"稀有武器L","稀有武器M","稀有武器N","稀有武器O","稀有武器P","稀有武器Q","稀有武器R","稀有武器S","稀有武器T","稀有武器U","稀有武器V"},
{"稀有圣痕A","稀有圣痕B","稀有圣痕C","稀有圣痕D","稀有圣痕E","稀有圣痕F","稀有圣痕G","稀有圣痕H","稀有圣痕I","稀有圣痕J","稀有圣痕K","稀有圣痕L"},
{"[材料:★4]超合金盾","[材料:★4]相转移镜面","[材料:★4]特斯拉涡轮机","[材料:★3]断裂的刀柄","[材料:★3]超小型反应炉","[材料:★3]铱合金火星塞"},
{"[圣痕经验]双子以太结晶","[武器经验]双子灵魂结晶","[圣痕经验]以太结晶","[武器经验]灵魂结晶"},
{"[金币:5w]吼咪宝藏","[金币:2w]吼美宝藏","[金币:5k]吼里宝藏"}
};//精准初始内容
static string KC2[][100] = { {"白骑士·月光","雷电女王的鬼铠","次元边界突破","血色玫瑰","处刑装·紫菀","神恩歌颂",
"影骑士·月轮","炽翎","苍骑士·月魂","樱桃炸弹"},//10个
{"女武神·游侠","圣女祈祷","女武神·强袭","影舞冲击","驱动装·山吹","雪地狙击",
"融核装·深红","女武神·凯旋","樱火轮舞","女武神·誓约","女武神·讯羽",
"白夜执事","黯蔷薇","猎袭装·影铁","蓝莓特攻"},//15个
{"领域装·白练","脉冲装·绯红","女武神·战车","战场疾风"},//4个
{"[武器]!极品武器★★★★☆","[圣痕]!极品圣痕★★★★☆","[圣痕]稀有圣痕★★★☆","[武器]稀有武器★★★☆"},//4个
{"[材料]进化材料","[芯片]角色经验芯片","[金币材料]吼美宝藏"}//3个
};//标配初始内容
static int sigGet = 0,countGet = 0;//是否获得保底+抽奖次数
static int sigGetb = 0, countGetb = 0,countGetS = 0,sigGetS = 0, sigGetj = 0, countGetj = 0;//标配获得保底,抽奖次数,扩充获得S级角色次数,扩充是否获得了S级,精准是否获得极品,精准抽奖次数
static int num_s = 0,num_a = 0,num_U = 0,num_u = 0,num_D = 0,num_d = 0,num_P = 0,num_p = 0;
static long long user_account[200];
static long long user_have[200];
static unsigned int isCheck[200];
static long long qi = 0;
static long long admin[10];
static int loadsig = 0;
//获取当前日期0点时的时间戳
unsigned int getMorningTime()
{
time_t t = time(NULL);
struct tm* tm = localtime(&t);
tm->tm_hour = 0;
tm->tm_min = 0;
tm->tm_sec = 0;
return mktime(tm);
}
long long div(string str) {//字符串转longlong
long long num = 0;
string newStr = "";
int sigdiv = 0;
for (int i = 0; i < str.length(); i++) {
if (sigdiv == 1) {
newStr = newStr + str[i];
}
if (str[i] == '=') {
sigdiv = 1;
}
}
num = stoll(newStr);
//num = atoi(newStr.c_str());
return num;
}
string rediv(long long a){//long long 转 string
stringstream os;
os << a;
string str = os.str();
return str;
}
//加载管理员
void adminUser(string str) {
string newStr = "";
string nextStr = "";
int sn = 0;
int sig = 0;
for (int i = 0; i < str.length(); i++) {
if (sig == 1) {
newStr = newStr + str[i];
}
if (str[i] == '=') {
sig = 1;
}
}
for (int i = 0; i < newStr.length(); i++) {
if (newStr[i] != ',') {
nextStr = nextStr + newStr[i];
}
if (newStr[i] == ',' || i == newStr.length() - 1) {
admin[sn] = stoll(nextStr);
nextStr = "";
sn++;
}
}
}
string charToStr(char* contentChar)
{
string tempStr;
for (int i = 0; contentChar[i] != '\0'; i++)
{
tempStr += contentChar[i];
}
return tempStr;
}
void use_c(long long account, long long num) {
ifstream in;
char line[1024] = { '\0' };
int sigsite = 0;
for (int i = 0; i < 200; i++) {
if (user_account[i] == account) {
sigsite = i;
break;
}
}
in.open(".\\data\\app\\com.7cyang.bh3\\user_data.txt");
int i = 0;
string tempStr;
int sigusec = 0;
string eqstr = "QQ=" + rediv(account);
while (in.getline(line, sizeof(line)))
{
i++;
if (i == sigusec) {
string newsline;
newsline = "num=" + rediv(user_have[sigsite] - num);
char newline[1024] = { '\0' };
for (int i = 0; i < newsline.length(); i++) {
newline[i] = newsline[i];
}
newline[newsline.length()] = '\0';
tempStr += charToStr(newline);
}
else {
if (charToStr(line) != eqstr)
{
tempStr += charToStr(line);
}
else
{
tempStr += charToStr(line);
sigusec = i + 2;
}
}
tempStr += '\n';
}
sigusec = 0;
in.close();
ofstream out;
out.open(".\\data\\app\\com.7cyang.bh3\\user_data.txt");
out.flush();
out << tempStr;
out.close();
}
void crystal(long long account) {
//签到增加14000水晶
ifstream in;
char line[1024] = { '\0' };
int sigsite = 0;
for (int i = 0; i < 200; i++) {
if (user_account[i] == account) {
sigsite = i;
break;
}
}
in.open(".\\data\\app\\com.7cyang.bh3\\user_data.txt");
int i = 0;
string tempStr;
int sigcc = 0;
string eqstr = "QQ=" + rediv(account);
while (in.getline(line, sizeof(line)))
{
i++;
if (i == sigcc - 1) {
//替换
string newsline;
newsline = "sig=" + rediv(getMorningTime());
char newline[1024] = { '\0' };
for (int i = 0; i < newsline.length(); i++) {
newline[i] = newsline[i];
}
newline[newsline.length()] = '\0';
tempStr += charToStr(newline);
}
else {
if (i == sigcc) {
string newsline;
newsline = "num=" + rediv(user_have[sigsite] + qi);
char newline[1024] = { '\0' };
for (int i = 0; i < newsline.length(); i++) {
newline[i] = newsline[i];
}
newline[newsline.length()] = '\0';
tempStr += charToStr(newline);
}
else {
if (charToStr(line) != eqstr)
{
tempStr += charToStr(line);
}
else
{
tempStr += charToStr(line);
sigcc = i + 2;
}
}
}
tempStr += '\n';
}
sigcc = 0;
in.close();
ofstream out;
out.open(".\\data\\app\\com.7cyang.bh3\\user_data.txt");
out.flush();
out << tempStr;
out.close();
}
//初始化签到记录
void initData() {
ifstream in;
char line[1024] = { '\0' };
in.open(".\\data\\app\\com.7cyang.bh3\\user_data.txt");
string tempStr;
while (in.getline(line, sizeof(line)))
{
if (charToStr(line)[0]=='s'&& charToStr(line)[1] == 'i'&& charToStr(line)[2] == 'g'&& charToStr(line)[3] == '=')
{
string newsline;
newsline = "sig=0";
char newline[1024] = { '\0' };
for (int i = 0; i < newsline.length(); i++) {
newline[i] = newsline[i];
}
newline[newsline.length()] = '\0';
tempStr += charToStr(newline);
}
else
{
tempStr += charToStr(line);
}
tempStr += '\n';
}
in.close();
ofstream out;
out.open(".\\data\\app\\com.7cyang.bh3\\user_data.txt");
out.flush();
out << tempStr;
out.close();
}
string add(string str) {
string s0 = "";
int len = str.length();
for (int i = 1; i < len; i++) {
s0 = s0 + str[i];
}
return s0;
}
void getUserData() {
//读取用户数据
int i = 0, a1 = 0, a2 = 0, a3 = 0;
string s;
ifstream infile;
infile.open(".\\data\\app\\com.7cyang.bh3\\user_data.txt");
while(getline(infile, s))
{
if (s[0]!='q'&&s[0]!='a') {
i++;
if (i % 3 == 1) {
long long a = div(s);
user_account[a1] = a;
a1++;
}
else {
if (i % 3 == 0) {
long long a = div(s);
user_have[a2] = a;
a2++;
}
else {
if (i % 3 == 2) {
long long a = div(s);
isCheck[a3] = a;
a3++;
}
}
}
}
else {
if (s[0] == 'q') {
qi = div(s);
}
else {
//管理员QQ
adminUser(s);
}
}
}
i = 0; a1 = 0; a2 = 0; a3 = 0;
infile.close();
}
//获取卡池内容,格式参照崩坏三官网
void getData() {
int i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0;
string s,str;
ifstream infile;
infile.open(".\\data\\app\\com.7cyang.bh3\\data1.txt");
while(getline(infile, s))
{
KC[i1]=s;
i1++;
}
infile.close();
i1 = 0;
infile.open(".\\data\\app\\com.7cyang.bh3\\data3.txt");
while (getline(infile, s))
{
if (s[0]=='S') {
str = add(s);
KC2[0][i1] = str;
i1++;
}
else {
if (s[0] == 'A')
{
str = add(s);
KC2[1][i2] = str;
i2++;
}
else if(s[0] == 'B'){
str = add(s);
KC2[2][i3] = str;
i3++;
}
}
}
infile.close();
i1 = 0; i2 = 0 ,i3 = 0;
infile.open(".\\data\\app\\com.7cyang.bh3\\data2.txt");
while (getline(infile, s))
{
if (s[0] == 'U') {
str = add(s);
ZB[0][i1] = str;
i1++;
}
else {
if (s[0] == 'u')
{
str = add(s);
ZB[1][i2] = str;
i2++;
}
else {
if (s[0] == 'D') {
str = add(s);
ZB[2][i3] = str;
i3++;
}
else {
if (s[0] == 'd') {
str = add(s);
ZB[3][i4] = str;
i4++;
}
else {
if (s[0] == 'P') {
str = add(s);
ZB[4][i5] = str;
i5++;
}
else {
if (s[0] == 'p') {
str = add(s);
ZB[5][i6] = str;
i6++;
}
}
}
}
}
}
}
infile.close();
i1 = 0; i2 = 0; i3 = 0; i4 = 0; i5 = 0; i6 = 0;
}
string judge(int sig) {
string str;
if (sig <= 1231) {//S
str = "<角色卡>" + KC[0] + "(UP)";
}
else {
if (sig <= 4924) {//Aup
str = "<角色卡>" + KC[1] + "(UP)";
}
else {
if (sig <= 7386) {//a
str = "<角色卡>" + KC[2] + "(歪)";
}
else {
if (sig <= 9848) {//b
str = "<角色卡>" + KC[3] + "(歪)";
}
else {
if (sig <= 12310) {//c
str = "<角色卡>" + KC[4] + "(歪)";
}
else {
if (sig <= 14890) {
str = "(碎片)" + KC[0]+ "碎片(UP)";
}
else {
if (sig <= 30370) {
str = "(碎片)" + KC[1]+"碎片(UP)";
}
else {
if (sig <= 33466) {
str = "(碎片)" + KC[2] + "碎片";
}
else {
if (sig <= 36562) {
str = "(碎片)" + KC[3] + "碎片";
}
else {
if (sig <= 39658) {
str = "(碎片)" + KC[4] + "碎片";
}
else {
if (sig <= 65458) {
str = "[材料]技能材料";
}
else {
int num = (rand() % 3)+1;
num = (rand() % 3)+1;
if (num == 1) {
str = "[材料]低星装备材料";
}
if (num == 2) {
str = "[芯片]角色经验";
}
if (num == 3) {
str = "[金币]吼姆宝藏";
}
}
}
}
}
}
}
}
}
}
}
}
return str;
}
string judge2(int sig) {
string str;
int num_sig = 0;
if (sig <= 1619) {//武器UP
num_sig = (rand() % num_U);
num_sig = (rand() % num_U);
str = ZB[0][num_sig];
str = "[武器]" + str +"★★★★☆(UP)";
}
else {
if (sig <= 4047) {//3720圣痕up
num_sig = (rand() % num_u);
num_sig = (rand() % num_u);
if (sig <= 2428&&sig>1619)
str = ZB[1][num_sig] + "(上)★★★★☆(UP)";
if (sig <= 3238 && sig > 2428)
str = ZB[1][num_sig] + "(中)★★★★☆(UP)";
if (sig <= 4047 && sig > 3238)
str = ZB[1][num_sig] + "(下)★★★★☆(UP)";
str = "[圣痕]" + str;
}
else {
if (sig <= 5666) {//武器 歪
num_sig = (rand() % num_D);
num_sig = (rand() % num_D);
str = ZB[2][num_sig];
str = "[武器]" + str + "★★★★☆(歪)";
}
else {
if (sig <= 8095) {//圣痕歪
num_sig = (rand() % num_d);
num_sig = (rand() % num_d);
str = ZB[3][num_sig];
if (sig <= 6476 && sig > 5666)
str = str + "(上)★★★★☆(歪)";
if (sig <= 7285 && sig > 6476)
str = str + "(中)★★★★☆(歪)";
if (sig <= 8095 && sig > 7285)
str = str + "(下)★★★★☆(歪)";
str = "[圣痕]" + str;
}
else {
if (sig <= 19888) {
num_sig = (rand() % num_P);
num_sig = (rand() % num_P);
str = ZB[4][num_sig];
str = "[武器]" + str + "★★★☆";
}
else {
if (sig <= 55238) {
num_sig = (rand() % num_p);
num_sig = (rand() % num_p);
str = ZB[5][num_sig];
if (sig <= 31671 && sig > 19888)
str = str + "(上)★★★☆";
if (sig <= 43455 && sig > 31671)
str = str + "(中)★★★☆";
if (sig <= 55238 && sig > 43455)
str = str + "(下)★★★☆";
str = "[圣痕]" + str;
}
else {
int numsigt = (rand() % 50)+1;
numsigt = (rand() % 50)+1;
if (numsigt <= 20 && numsigt > 0){
num_sig = (long)(6.0 * rand() / (1.0 * RAND_MAX));
num_sig = (long)(6.0 * rand() / (1.0 * RAND_MAX));
str = ZB[6][num_sig];
}
if (numsigt <= 40 && numsigt > 20) {
num_sig = (long)(4.0 * rand() / (1.0 * RAND_MAX));
num_sig = (long)(4.0 * rand() / (1.0 * RAND_MAX));
str = ZB[7][num_sig];
}
if (numsigt <= 50 && numsigt > 40) {
num_sig = (long)(3.0 * rand() / (1.0 * RAND_MAX));
num_sig = (long)(3.0 * rand() / (1.0 * RAND_MAX));
str = ZB[8][num_sig];
}
}
}
}
}
}
}
return str;
}
string judge3(int sig) {
string str;
if (sig <= 1231) {
int num = (rand() % num_s);
num = (rand() % num_s);
str = "<角色卡>" + KC2[0][num] + "(S级女武神)";
}
else {
if (sig <= 12310) {
int num = (rand() % num_a);
num = (rand() % num_a);
str = "<角色卡>" + KC2[1][num] + "(A级女武神)";
}
else {//1350
if (sig <= 13619) {
int num = (rand() % num_s);;
num = (rand() % num_s);
str = "(碎片)"+ KC2[0][num] + "碎片(S级)";
}
else {//1019
if (sig <= 24130) {
int num = (rand() % num_a);
num = (rand() % num_a);
str = "(碎片)" + KC2[1][num] + "碎片(A级)";
}
else {//550
if (sig <= 29803) {
int num = (rand() % 4) ;
num = (rand() % 4) ;
str = "<角色卡>" + KC2[2][num]+"(B级女武神)";
}
else {//46 73 750 2250=====3242 3315 4065 6315
if (sig <= 61982) {
if (sig <= 30227 && sig > 29803)
str = KC2[3][0];
if (sig <= 30930 && sig > 30227)
str = KC2[3][1];
if (sig <= 38668 && sig > 30930) {
int num = (rand() % num_P);
num = (rand() % num_P);
str = "[武器]" + ZB[3][num] + "★★★☆";//稀有武器
}
if (sig <= 61982 && sig > 38668) {
int num = (rand() % num_p);
num = (rand() % num_p);
str = ZB[3][num];//稀有圣痕
int sig_num = (rand() % 3) + 1;
sig_num = (rand() % 3) + 1;
if (sig_num == 1)
str = "[圣痕]" + str + "(上)★★★☆";
if (sig_num == 2)
str = "[圣痕]" + str + "(中)★★★☆";
if (sig_num == 3)
str = "[圣痕]" + str + "(下)★★★☆";
}
}
else {//1474
if (sig <= 77189) {
str = KC2[4][0];
}
else {//1474
if (sig <= 92396) {
str = KC2[4][1];
}
else {//737
str = KC2[4][2];
}
}
}
}
}
}
}
}
return str;
}
EVE_GroupMsg_EX(Speak) {
static string msgs("Speak:");
long long str0;
string adminlist = "";
memset(user_account, 0, sizeof(user_account));
memset(user_have, 0, sizeof(user_have));
memset(isCheck, 0, sizeof(isCheck));
memset(admin, 0, sizeof(admin));
getData();
getUserData();
if (loadsig == 0) {
for (int ad = 0; ad < 10; ad++) {
if (admin[ad] == 0)
break;
else {
adminlist = adminlist + rediv(admin[ad]);
}
if (ad < 9 && admin[ad + 1] != 0) {
adminlist = adminlist + "|";
}
}
logger.Info("已加载管理员:" + adminlist);
loadsig = 1;
}
auto message = eve.message;
auto msg = eve.sendMsg();
num_s = 0; num_a = 0; num_U = 0; num_u = 0; num_D = 0; num_d = 0; num_P = 0; num_p = 0;
for (int numto = 0; numto < 100; numto++) {
//标配
if (KC2[0][numto] != "") {
num_s++;
}
if (KC2[1][numto] != "") {
num_a++;
}
//精准
if (ZB[0][numto] != "") {
num_U++;
}
if (ZB[1][numto] != "") {
num_u++;
}
if (ZB[2][numto] != "") {
num_D++;
}
if (ZB[3][numto] != "") {
num_d++;
}
if (ZB[4][numto] != "") {
num_P++;
}
if (ZB[5][numto] != "") {
num_p++;
}
}
if (message.compare("")) {
str0 = eve.fromQQ;
str1[sigi] = eve.fromQQ;
str2[sigi] = eve.message;
sigi = (sigi+1)%2;
}
if (!message.compare("CQ1")) {
// 发送内容由多个内容组成
msg
<< "发送人为:" << str1[sigi]
<< ",消息为:" << str2[sigi]
<< send;
}
if (!message.compare("签到初始化")) {
// 发送内容由多个内容组成
long long account = eve.fromQQ;
int sigAdmin = 0;
for (int i = 0; i < 10; i++) {
if (admin[i] == 0)
break;
else {
if (account == admin[i]) {
sigAdmin = 1;
break;
}
}
}
if (sigAdmin == 1) {
//初始化
initData();
msg
<< "一位会空中劈叉的舰长清空了今日的签到记录,所有舰长都可以再次签到了哦~"
<< send;
}
}
if (!message.compare("抽卡签到")) {
long long account = eve.fromQQ;
int sig = 0;
if (isOpen == 1) {
//读取是否存在用户,不存在,则创建新用户
for (int i = 0; i < 200; i++) {
if (user_account[i]==0)
break;
else {
if (user_account[i] == account) {
sig = 1;
//写入文档,更新水晶
if (isCheck[i]== getMorningTime()) {
msg
<< "[CQ:at,qq=" << eve.fromQQ << "]" << "嗨呀,舰长已经签到过了呢~"
<< send;
}
else {
crystal(account);
msg
<< "[CQ:at,qq=" << eve.fromQQ << "]"
<< "签到成功啦,哦~~,你获得每日抽卡签到奖励"<<qi<<"水晶耶"
<< send;
}
break;
}
else {//不存在用户,进行添加+重新读取----移动到其他地方
}
}
}
if (sig == 0) {
msg
<< "[CQ:at,qq=" << eve.fromQQ << "]"
<< "还没有舰长的数据哦~发送 抽卡注册 成为一名休伯利安的清洁工怎么样?"
<< send;
}
}
else {
msg
<< "系统未开启呢,有没有哪位可爱的舰长会来开启呢" << send;
}
}
if (!message.compare("抽卡注册")) {
// 发送内容由多个内容组成
long long account = eve.fromQQ;
long long num = 14000;
int sig_user = 0,this_sig = 0;
for (int i = 0; i < 200; i++) {
if (account == user_account[i]) {
this_sig = 1;
break;
}
}
if (this_sig == 0) {
ofstream ofresult(".\\data\\app\\com.7cyang.bh3\\user_data.txt", ios::app);
ofresult << "QQ=" << account << endl;
ofresult << "sig=" << sig_user << endl;
ofresult << "num=" << num << endl;
msg
<< "[CQ:at,qq=" << eve.fromQQ << "]" <<"恭喜注册成功,赠送舰长14000水晶" << send;
ofresult.close();
}
else {
msg
<< "[CQ:at,qq=" << eve.fromQQ << "]"
<< "舰长已经注册过了,不能重复注册哦~"
<< send;
}
}
if (!message.compare("我的水晶")) {
// 发送内容由多个内容组成
long long account = eve.fromQQ;
long long num_have = 0;
int sig = 0;
for (int i = 0; i < 200; i++) {
if (user_account[i] == account) {
num_have = user_have[i];
sig = 1;
break;
}
}
if (sig == 1) {
msg
<< "[CQ:at,qq=" << account << "]"
<< "舰长还有" << num_have << "水晶。"
<< send;
}
else {
msg
<< "[CQ:at,qq=" << account << "]"
<< "还没有舰长的数据哦~发送 抽卡注册 成为一名休伯利安的清洁工怎么样?"
<< send;
}
}
if (!message.compare("开启抽卡")) {
// 发送内容由多个内容组成
long long account = eve.fromQQ;
int sig = 0;
for (int i = 0; i < 10; i++) {
if (admin[i] == 0)
break;
else {
if (admin[i] == account) {
sig = 1;
if (isOpen == 1) {
msg
<< "抽卡已经被会空中劈叉的清洁工开启过了,不要重复开启啦~" << send;
}
else {
isOpen = 1;
msg
<< "一名会空中劈叉的清洁工开启了抽卡,各位舰长快来围观吧~" << send;
}
break;
}
}
}
if (sig == 0) {
msg
<< "[CQ:at,qq=" << eve.fromQQ << "]" << "舰长还是个不会空中劈叉的清洁工哦,你还没有这种操作~"
<< send;
}
}
if (!message.compare("关闭抽卡")) {//&&eve.fromQQ == 1476911135
// 发送内容由多个内容组成
long long account = eve.fromQQ;
int sig = 0;
for (int i = 0; i < 10; i++) {
if (admin[i] == 0)
break;
else {
if (admin[i] == account) {
sig = 1;
if (isOpen == 1) {
isOpen = 0;
msg
<< "一位舰长学会了空中劈叉,并关闭了抽卡" << send;
}
else {
msg
<< "抽卡已经被一名路过的舰长关闭了,再关也没用了呢" << send;
}
break;
}
}
}
if (sig==0) {
msg
<< "[CQ:at,qq=" << eve.fromQQ << "]" << "舰长还是个不会空中劈叉的清洁工哦,你还没有这种操作~"
<< send;
}
}
/*if (!message.compare("查看卡池")) {
string list = "";
list = list + "扩充:";
for (int k = 0; k < KC->length(); k++) {
if(KC[k]!="")
list = list + KC[k];
if (k != KC->length() - 1&& KC[k] != "") {
list = list + ",";
}
}
list = list + "\n精准:";
for (int k = 0; k < 4; k++) {
for (int l = 0; l < ZB[k]->length(); l++) {
if(ZB[k][l] != ""){
list = list + ZB[k][l];
if (ZB[k][l + 1] != ""&& l < ZB[k]->length()-1) {
list = list + ",";
}
}
}
}
list = list + "\n标配:";
for (int k = 0; k < 5; k++) {
for (int l = 0; l < 100; l++) {
list = list + KC2[k][l]+",";
}
}
msg
<< "卡池一览:\n" << list << send;
}*/
if (!message.compare("扩充单抽")) {
// 发送内容由多个内容组成
long long account = eve.fromQQ;
int sig_account = -1;
for (int i = 0; i < 200; i++) {
if (account == user_account[i]) {
sig_account = i;
break;
}
}
if (isOpen == 1) {
if (sig_account != -1) {
if (user_have[sig_account] >= 280) {
use_c(account, 280);
int tm = (int)time(NULL);
srand(tm);
int sig = (long)(100000.0 * rand() / (1.0 * RAND_MAX)) + 1;
sig = (long)(100000.0 * rand() / (1.0 * RAND_MAX)) + 1;
if (sigGet == 0 && countGet == 9)//保底
{
sig = (rand() % 12310) + 1;
sigGet = 1;
}
if (sig <= 12310) {
sigGet = 1;
}
if (sig <= 1231) {
sigGetS = 1;
}
string str;
str = judge(sig);
msg
<< "[CQ:at,qq=" << str0 << "]"
<< "\n抽取结果[扩充]:" << str
<< send;
countGet++;
if (sigGet == 1) {
sigGet = 0;
countGet = 0;
}
countGetS++;
if (sigGetS == 1) {
sigGetS = 0;
countGetS = 0;
}
sig = -1;
}
else {
msg
<< "[CQ:at,qq=" << account << "]" << "舰长的水晶不够了呢~~" << send;
}
}
else {
msg
<< "[CQ:at,qq=" << account << "]"
<< "还没有舰长的数据哦~发送 抽卡注册 成为一名休伯利安的清洁工怎么样?"
<< send;
}
}
else {
msg
<< "抽卡没有被开启呢~" << send;
}
}
if (!message.compare("扩充十连")) {
// 发送内容由多个内容组成
long long account = eve.fromQQ;
int sig_account = -1;
for (int i = 0; i < 200; i++) {
if (account == user_account[i]) {
sig_account = i;
break;
}
}
if (isOpen == 1) {
if (sig_account != -1) {
if (user_have[sig_account] >= 2800) {
use_c(account, 2800);
int tm = (int)time(NULL);
int count = 0;
string str[10] = {};
string strHave = "";
srand(tm);
int sig = (long)(100000.0 * rand() / (1.0 * RAND_MAX)) + 1;
for (int i = 0; i < 10; i++) {
sig = (long)(100000.0 * rand() / (1.0 * RAND_MAX)) + 1;
if (sig <= 12310)//获得S或者A计数+1
sigGet = 1;//获得A/S
if (sig <= 1231) {//获得S
sigGetS = 1;
}
if (countGet == 9 && sigGet == 0)//保底---->十连的保底
{
sig = (rand() % 12310) + 1;
if (sig <= 1231) {
sigGetS = 1;
}
sigGet = 1;
}
if (countGetS == 99 && sigGetS == 0) {//百连保底
sig = (rand() % 1231) + 1;
sigGetS = 1;
sigGet = 1;
}
str[i] = judge(sig);
countGetS++;
if (sigGetS == 1) {//如果获得了S === 清零S
sigGetS = 0;
countGetS = 0;
}
countGet++;
if (sigGet == 1) {//如果获得了A或者S === 清零
sigGet = 0;
countGet = 0;
}
}
for (int i = 0; i < 10; i++) {
strHave = strHave + str[i];
if (i != 9) {
strHave = strHave + "\n";
}
}
msg
<< "[CQ:at,qq=" << str0 << "]"
<< "\n抽取结果[扩充]:\n" << strHave << send;
sig = -1;
}
else {
msg
<< "[CQ:at,qq=" << account << "]" << "舰长的水晶不够抽十连了哟~" << send;
}
}
else {
msg
<< "[CQ:at,qq=" << account << "]"
<< "还没有舰长的数据哦~发送 抽卡注册 成为一名休伯利安的清洁工怎么样?"
<< send;
}
}
else {
msg
<< "抽卡没有被开启呢~" << send;
}
}
if (!message.compare("精准单抽")) {
// 发送内容由多个内容组成
long long account = eve.fromQQ;
int sig_account = -1;
for (int i = 0; i < 200; i++) {
if (account == user_account[i]) {
sig_account = i;
break;
}
}
if (isOpen == 1) {
if (sig_account != -1) {
if (user_have[sig_account] >= 280) {
use_c(account, 280);
int tm = (int)time(NULL);
srand(tm);
int sig = (long)(100000.0 * rand() / (1.0 * RAND_MAX)) + 1;
sig = (long)(100000.0 * rand() / (1.0 * RAND_MAX)) + 1;
if (sigGetj == 0 && countGetj == 9)//保底
{
sig = (rand() % 8095) + 1;
sigGetj = 1;
}
string str;
str = judge2(sig);
msg
<< "[CQ:at,qq=" << str0 << "]"
<< "\n抽取结果[精准]:" << str
<< send;
countGetj++;
if (sigGetj == 1) {
sigGetj = 0;
countGetj = 0;
}
sig = -1;
}
else {
msg
<< "[CQ:at,qq=" << account << "]" << "舰长的水晶不够了呢~~" << send;
}
}
else {
msg
<< "[CQ:at,qq=" << account << "]"
<< "还没有舰长的数据哦~发送 抽卡注册 成为一名休伯利安的清洁工怎么样?"
<< send;
}
}
else {
msg
<< "抽卡没有被开启呢~" << send;
}
}
if (!message.compare("精准十连")) {
long long account = eve.fromQQ;
int sig_account = -1;
for (int i = 0; i < 200; i++) {
if (account == user_account[i]) {
sig_account = i;
break;
}
}
// 发送内容由多个内容组成
if (isOpen == 1) {
if (sig_account != -1) {
if (user_have[sig_account] >= 2800) {
use_c(account, 2800);
int tm = (int)time(NULL);
int count = 0;
string str[10] = {};
string strHave = "";
srand(tm);
int sig = (long)(100000.0 * rand() / (1.0 * RAND_MAX)) + 1;
for (int i = 0; i < 10; i++) {
sig = (long)(100000.0 * rand() / (1.0 * RAND_MAX)) + 1;
if (sig <= 8095)
sigGetj = 1;
if (countGetj == 9 && sigGetj == 0) {
sigGetj = 1;
sig = (rand() % 8095) + 1;
}
str[i] = judge2(sig);
countGetj++;
if (sigGetj == 1) {
countGetj = 0;
sigGetj = 0;
}
}
for (int i = 0; i < 10; i++) {
strHave = strHave + str[i];
if (i != 9) {
strHave = strHave + "\n";
}
}
msg
<< "[CQ:at,qq=" << str0 << "]"
<< "\n抽取结果[精准]:\n" << strHave << send;
sig = -1;
}
else {
msg
<< "[CQ:at,qq=" << account << "]" << "舰长的水晶不够抽十连了哟~" << send;
}
}
else {
msg
<< "[CQ:at,qq=" << account << "]"
<< "还没有舰长的数据哦~发送 抽卡注册 成为一名休伯利安的清洁工怎么样?"
<< send;
}
}
else {
msg
<< "抽卡没有被开启呢~" << send;
}
}
if (!message.compare("标配单抽")) {
long long account = eve.fromQQ;
int sig_account = -1;
for (int i = 0; i < 200; i++) {
if (account == user_account[i]) {
sig_account = i;
break;
}
}
// 发送内容由多个内容组成
if (isOpen == 1) {
if (sig_account != -1) {
if (user_have[sig_account] >= 280) {
use_c(account, 280);
int tm = (int)time(NULL);
srand(tm);
int sig = (long)(100000.0 * rand() / (1.0 * RAND_MAX)) + 1;
sig = (long)(100000.0 * rand() / (1.0 * RAND_MAX)) + 1;
if (sigGetb == 0 && countGetb == 9)//保底
{
int number = (rand() % 10) + 1;
number = (rand() % 10) + 1;
if (number <= 1) {
sig = (rand() % 1231) + 1;
}
else
sig = (rand() % (12310 - 1231)) + 1231 + 1;
sigGetb++;
}
string str;
str = judge3(sig);
msg
<< "[CQ:at,qq=" << str0 << "]"
<< "\n抽取结果[标配]:" << str
<< send;
countGetb++;
if (sigGetb == 1) {
sigGetb = 0;
countGetb = 0;
}
sig = -1;
}
else {
msg
<< "[CQ:at,qq=" << account << "]" << "舰长的水晶不够了呢~~" << send;
}
}
else {
msg
<< "[CQ:at,qq=" << account << "]"
<< "还没有舰长的数据哦~发送 抽卡注册 成为一名休伯利安的清洁工怎么样?"
<< send;
}
}
else {
msg
<< "抽卡没有被开启呢~" << send;
}
}
if (!message.compare("标配十连")) {
long long account = eve.fromQQ;
int sig_account = -1;
for (int i = 0; i < 200; i++) {
if (account == user_account[i]) {
sig_account = i;
break;
}
}
// 发送内容由多个内容组成
if (isOpen == 1) {
if (sig_account != -1) {
if (user_have[sig_account] >= 2800) {
use_c(account, 2800);
int tm = (int)time(NULL);
int count = 0;
string str[10] = {};
string strHave = "";
srand(tm);
int sig = (long)(100000.0 * rand() / (1.0 * RAND_MAX)) + 1;
for (int i = 0; i < 10; i++) {
sig = (long)(100000.0 * rand() / (1.0 * RAND_MAX)) + 1;
if (sig <= 12310)
sigGetb = 1;
if (countGetb == 9 && sigGetb == 0)//保底
{
int number = (rand() % 10) + 1;
number = (rand() % 10) + 1;
if (number <= 1) {
sig = (rand() % 1231) + 1;
}
else
sig = (rand() % (12310 - 1231)) + 1231 + 1;
sigGetb = 1;
}
str[i] = judge3(sig);
countGetb++;
if (sigGetb == 1) {
sigGetb = 0;
countGetb = 0;
}
}
for (int i = 0; i < 10; i++) {
strHave = strHave + str[i];
if (i != 9) {
strHave = strHave + "\n";
}
}
msg
<< "[CQ:at,qq=" << str0 << "]"
<< "\n抽取结果[标配]:\n" << strHave << send;
sig = -1;
}
else {
msg
<< "[CQ:at,qq=" << account << "]" << ",舰长的水晶不够抽取十连了哟~" << send;
}
}
else {
msg
<< "[CQ:at,qq=" << account << "]"
<< "还没有舰长的数据哦~发送 抽卡注册 成为一名休伯利安的清洁工怎么样?"
<< send;
}
}
else {
msg
<< "抽卡没有被开启呢~" << send;
}
}
//if (eve.message.compare(0, msgs.size(), msgs)) return;
//auto txt = eve.message.substr(msgs.size());
//eve.sendMsg() << code::record("out.wav", txt) << send;
//record 的第一个参数指示将语音生成到哪个文件(相对于酷Q的语音目录)
//record 的第二个参数指示将指定文字生成语音
//由于一些兼容性问题,不是所有版本的window都支持此条目
}