骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索
购买CDKEY 小黑盒加速器
查看: 3320|回复: 2

[功能与代码] 将装备防御减为1/3的代码

[复制链接]

71

主题

326

回帖

129

积分

见习骑士

Rank: 3

UID
3209025
第纳尔
1316
精华
0
互助
2
荣誉
0
贡献
0
魅力
20
注册时间
2020-11-30

霸主正版勋章

鲜花(3) 鸡蛋(0)
发表于 2021-6-27 11:49:12 | 显示全部楼层 |阅读模式
#include <stdlib.h>
#include <string>
#include <vector>

void split_string(std::vector<std::string>& out, const char* in, char delim)
{
    while (*in)
    {
        const char* next = strchr(in, delim);
        if (next)
        {
            std::string tmp(in, next);
            out.push_back(tmp);
        }
        else
        {
            out.push_back(in);
        }
        in = (next ? next + 1 : "");
    }
}

int main(int argc, char** argv)
{
    int div = 3;
    if (argc > 1)
    {
        div = atoi(argv[1]);
    }
    if (0 == div)
    {
        return 0;
    }
    printf("装备防御力变为原来的%d分之一\n",div);
    std::vector<std::string> lines;
    FILE* fp = fopen("./item_kinds1.txt", "r");

    if (NULL != fp)
    {
        printf("open item_kinds1.txt success!\n");
        int line = 0;
        char buf[512];
        while (!feof(fp))
        {
            fgets(buf, 512, fp); line++;
            std::string tmp(buf);

            if (std::string::npos != tmp.find("itm_", 0))
            {

                std::vector<std::string> vs;
                split_string(vs, buf, ' ');

                int len = vs.size();
                int m1 = atoi(vs[len - 11].c_str());
                int m2 = atoi(vs[len - 10].c_str());
                int m3 = atoi(vs[len - 9].c_str());
                if (m1 > 0 || m2 > 0 || m3 > 0)
                {
                    printf("%s %d %d %d\n", vs[1].c_str(), m1, m2, m3);
                }
                int nm1 = m1 / 3;
                int nm2 = m2 / 3;
                int nm3 = m3 / 3;
                if (0 == nm1 && m1 > 0)
                {
                    nm1 = 1;
                }
                if (0 == nm2 && m2 > 0)
                {
                    nm2 = 1;
                }
                if (0 == nm3 && m3 > 0)
                {
                    nm3 = 1;
                }

                vs[len - 11] = std::to_string(nm1);
                vs[len - 10] = std::to_string(nm2);
                vs[len - 9] = std::to_string(nm3);

                strcpy(buf, " ");
                for (int i = 0; i < vs.size(); i++)
                {
                    strcat(buf, vs[i].c_str());
                    if ((i + 1) != vs.size())
                    {
                        strcat(buf, " ");
                    }
                }

            }
            lines.push_back(buf);
        }
        fclose(fp);
    }

    if (lines.size() > 0)
    {
        fp = fopen("./item_kinds1_new.txt", "w");
        if (NULL != fp)
        {
            for (int i = 0; i < lines.size(); i++)
            {
                fprintf(fp, "%s", lines[i].c_str());
            }
            fclose(fp);
        }
        printf("create item_kinds1_new.txt file %d lines\n", lines.size());
    }
    printf("press any key to exit ...");
    getchar();
    return 0;
}

评分

参与人数 1第纳尔 +20 收起 理由
Aomine Daiki + 20 文章不错,继续努力!

查看全部评分

just so so

71

主题

326

回帖

129

积分

见习骑士

Rank: 3

UID
3209025
第纳尔
1316
精华
0
互助
2
荣誉
0
贡献
0
魅力
20
注册时间
2020-11-30

霸主正版勋章

鲜花(3) 鸡蛋(0)
 楼主| 发表于 2021-6-27 11:50:33 | 显示全部楼层
以上C++代码在windows上编译成exe,然后放到Native目录下,直接运行就是1/3
指定参数也可以变为其他比率
just so so

170

主题

2997

回帖

1390

积分

骑士长

宫廷画师

Rank: 5Rank: 5Rank: 5

UID
120620
第纳尔
12762
精华
0
互助
58
荣誉
15
贡献
20
魅力
696
注册时间
2009-3-17

元老骑士勋章骑士美德之英勇勋章[杰出会员活跃勋章]骑士美德之仁慈勋章[杰出会员互助勋章]骑士美德之谦恭勋章[杰出会员财富勋章]骑士美德之慷慨勋章骑砍中文站微博会员勋章骑砍中文站微信会员勋章骑友真人秀Ⅲ勋章骑友真人秀Ⅳ勋章骑友真人秀Ⅴ勋章骑友真人秀Ⅵ勋章骑友真人秀终身成就勋章

鲜花(853) 鸡蛋(0)
发表于 2021-6-27 13:37:41 | 显示全部楼层
本帖最后由 zendenxx 于 2021-6-27 13:54 编辑

这个看起高端了,自己的C++忘记很多年哈哈,
我是小白提问下,这种带循环嵌套会不会卡的,还是说就只是启动时调用。
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

Archiver|手机版|小黑屋|骑马与砍杀中文站

GMT+8, 2024-11-19 14:42 , Processed in 0.124808 second(s), 25 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表