搭建json-hero,让阅读JSON变得简单

注册

首先打开雨云官网

雨云官网网址:https://www.rainyun.com/YZJ_?s=xxx

 

然后登录/注册雨云(登录/注册建在右上角) 

 

如果没注册就点击下方注册,然后如果显示“正在使用优惠通道注册”就照常输入信息

 

没有则优惠码填“YZJ”

你的json是否类似这样

image

image1920×1040 31.2 KB

或者这样

image

image1920×1040 151 KB

后者还好,但前者非常的不易读

您除了可以使用json格式化工具以外,也可以使用json-hero

来自readme的图片

image

image1131×768 118 KB

本次将使用1panel来搭建json-hero

首先登录1Panel(以下简称1p)后台,点击计划任务-添加计划任务
雨云 支持预装1p了喔

image

image1812×956 49 KB

频率改为每天一次

将同步代码复制到脚本内容中,并且根据个人实际情况修改,如果你的1p安装在默认目录下,那么无需修改,如果你安装在自定义目录下,需要修改app_local_dir的值,例如你的1p安装在"/server"目录下,那么这里需要修改为/server/1panel/resource/apps/local

完成后建议cd到这个目录看一下

image

确认无误后点击计划任务的“执行”,等待越2秒左右打开报告

image

image1614×901 32.4 KB

此时,上面提到的目录中会多出一堆文件

image

image1471×361 38.8 KB

之后在1p后台找到应用商店-更多-本地

image

image710×269 13.2 KB

点击“更新应用列表”即可

image

image1609×957 67.8 KB

完整代码如下(由 https://blog.cnkj.site/archives/1696995023288 1 提供)

 

#!/bin/bash # 这下面是修改配置的地方 # # 1panel本地app的目录(如果不是默认安装,需修改该目录) app_local_dir="/opt/1panel/resource/apps/local" # AppStore的git仓库地址(必选) # git_repo_url="https://github.com/xxxily/local-appstore-for-1Panel" # git_repo_url="https://github.com/1Panel-dev/appstore" git_repo_url="https://github.com/okxlin/appstore" # 访问git仓库的access token,访问私有仓库时用,优先级高于账密(可选) # 建议使用access token,降低账密泄露的风险 git_access_token="" # 访问git仓库的用户名,访问私有仓库时用(可选) git_username="" # 访问git仓库的密码,访问私有仓库时用(可选) git_password="" # 指定克隆的分支(可选) git_branch="" # 指定克隆的深度(可选) git_depth=1 # 拉取远程仓库前是否清空本地app目录(可选) clean_local_app=false # 拉取远程仓库前是否清空远程app缓存(可选) clean_remote_app_cache=false # 设置克隆或拉取远程仓库时使用的代理(可选) proxyUrl="" # 设置示例: # proxyUrl="http://127.0.0.1:7890" # proxyUrl="socks5://127.0.0.1:7890" # proxyUrl="socks5://user:password@host:port" # 将远程app store工程克隆到本地的工作目录 work_dir="/opt/1panel/appstore" # 获取系统信息 os_info=$(uname -a) # 检查是否为Debian系统 if [[ "$os_info" == *"Debian"* ]]; then echo "检测到Debian环境,执行特殊设置" chmod +x /usr/bin/bash sudo su $@ else echo "非Debian,跳过特殊设置" fi # 检测Git是否已安装 echo "检测Git是否安装" if ! command -v git &> /dev/null; then echo "Git未找到,开始安装..." # # apt版 if [[ -f /etc/apt/sources.list ]]; then sudo apt-get update sudo apt-get install git -y fi # yum版 if [[ -f /etc/yum.repos.d/CentOS-Base.repo ]]; then sudo yum install git -y fi echo "Git安装完成." else echo "Git已安装." fi set -e mkdir -p "$work_dir/logs" log_file="$work_dir/logs/local_appstore_sync_helper_$(date +"%Y-%m-%d").log" logs() { local message="$1" if [ -n "$log_file" ]; then mkdir -p "$(dirname "$log_file")" if [ $? -eq 0 ]; then echo -e "[$(date +"%Y-%m-%d %H:%M:%S")] $message" echo "[$(date +"%Y-%m-%d %H:%M:%S")] $message" >>"$log_file" return fi fi echo -e "$message" } # 函数: url_encode # 参数: # - url: 需要进行编码的字符串 # 返回值: # 经过URL编码后的字符串 function url_encode() { local string=$1 local length="${#string}" local url_encoded_string="" local c for ((i = 0; i < length; i++)); do c=${string:i:1} case "$c" in [a-zA-Z0-9.~_-]) url_encoded_string+=$c ;; *) url_encoded_string+=$(printf '%%%02X' "'$c") ;; esac done echo "$url_encoded_string" } # 定义函数,接收一个URL参数和可选的替换字符串参数 replace_protocol() { local url=$1 local replacement=$2 # 如果没有提供替换字符串,则删除"http://"或"https://" if [[ -z $replacement ]]; then local new_url=$(echo $url | sed "s/http:\/\///" | sed "s/https:\/\///") else local new_url=$(echo $url | sed "s/http:\/\//${replacement}/" | sed "s/https:\/\//${replacement}/") fi # 输出替换后的URL echo $new_url } # 函数: clone_git_repo # 参数: # - url: Git仓库URL # - username: 账号(可选) # - password: 密码(可选) # - access_token: 访问令牌(可选) # - branch: 克隆分支(可选) # - depth: 克隆深度(可选,默认为0,即克隆整个仓库) function clone_git_repo() { local url=$1 local username=$2 local password=$3 local access_token=$4 local branch=$5 local depth=$6 branch=${branch:+--branch $branch} depth=${depth:+--depth $depth} echo "branch: $branch, depth: $depth" if [[ -n $access_token ]]; then echo "use access_token to clone" local fix_url=$(replace_protocol "$url") git clone "https://oauth2:$access_token@$fix_url" $branch $depth elif [[ -n $username && -n $password ]]; then local encoded_username=$(url_encode "$username") local encoded_password=$(url_encode "$password") local fix_url=$(replace_protocol "$url") # echo "use username and password to clone, encoded_username: $encoded_username, encoded_password: $encoded_password, fix_url: $fix_url" echo "use username and password to clone" git clone "https://$encoded_username:$encoded_password@$fix_url" $branch $depth else echo "use default clone" git clone "$url" $branch $depth fi } # 取消代理 function proxy_off() { unset http_proxy unset https_proxy unset ALL_PROXY unset no_proxy logs "Proxy Off" } # 开启代理 function proxy_on() { proxy_url="http://127.0.0.1:7890" match_str="://" if [ -n "$1" ]; then if [[ $1 =~ $match_str ]]; then proxy_url=$1 else logs "Incorrect proxy_url, use defualt proxy_url" return fi fi export http_proxy=$proxy_url export https_proxy=$proxy_url export ALL_PROXY=$proxy_url export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com" logs "Proxy On $proxy_url" } function scriptInfo() { echo "" logs "##################################################################" logs "# Name: local appstore sync helper for 1Panel #" logs "# Version: v1.0.1 #" logs "# Author: xxxily #" logs "# Author: BiliWind #" logs "# Github: https://github.com/xxxily/local-appstore-for-1Panel #" logs "##################################################################" echo "" } function main() { scriptInfo if [ ! -d "$app_local_dir" ]; then logs "未检测到1panel的app目录,请检查1panel是否安装正确,或修改脚本中的app_local_dir变量" exit 1 fi # 检查地址结尾是否包含.git,如果不包含则自动补全 if [[ "$git_repo_url" != *".git" ]]; then git_repo_url="${git_repo_url}.git" fi local repo_username="" local repo_projectname="" # 使用正则表达式匹配仓库地址中的用户名和项目名 if [[ $git_repo_url =~ .*\/(.*)\/(.*)\.git ]]; then repo_username=${BASH_REMATCH[1]} repo_projectname=${BASH_REMATCH[2]} # logs "用户名: $repo_username" # logs "项目名: $repo_projectname" fi if [ -z "$repo_username" ] || [ -z "$repo_projectname" ]; then logs "无法提取用户名和项目名,请检查git_repo_url变量提供的地址是否正确" exit 1 fi mkdir -p "$work_dir/temp" local repo_user_dir="$work_dir/temp/$repo_username" local repo_dir="$repo_user_dir/$repo_projectname" # 根据clean_remote_app_cache变量的值决定是否清空远程app的缓存数据 if [ "$clean_remote_app_cache" = true ] && [ -d "$repo_dir" ]; then rm -rf "$repo_dir" logs "已清空远程app的缓存数据" fi # 根据proxyUrl变量的值决定是否开启代理 if [ -n "$proxyUrl" ]; then proxy_on "$proxyUrl" fi # clone或拉取远程仓库最新代码 logs "准备获取远程仓库最新代码:$git_repo_url" if [ -d "$repo_dir" ]; then logs "执行git pull操作" cd "$repo_dir" # 强行拉取最新代码 git pull --force 2>>"$log_file" else logs "执行git clone操作" mkdir -p "$repo_user_dir" cd "$repo_user_dir" clone_git_repo "$git_repo_url" "$git_username" "$git_password" "$git_access_token" "$git_branch" "$git_depth" 2>>"$log_file" fi logs "远程仓库最新代码获取完成" if [ ! -d "$repo_dir/apps" ]; then logs "未检测到apps目录,请检查远程仓库是否正确" exit 1 fi # 根据clean_local_app变量的值决定是否清空本地app目录 if [ "$clean_local_app" = true ]; then rm -rf "$app_local_dir"/* logs "已清空本地原有的app" fi # 将远程仓库的apps目录下的所有app复制到本地app_local_dir目录下 cd "$repo_dir" cp -rf apps/* "$app_local_dir" pwd ls -lah du -sh # 根据clean_remote_app_cache变量的值决定是否清空远程app的缓存数据 if [ "$clean_remote_app_cache" = true ]; then rm -rf "$repo_dir" fi if [ -n "$proxyUrl" ]; then proxy_off fi logs "1panel本地app同步成功,enjoy it!" } main "$@" logs "脚本由BiliWind-风屿岛站长二改,尊重开源,请不要删除或修改原作者、二改者信息"

完成第三方库的导入后,即可在应用列表找到json-hero

点击安装后,在弹出的窗口中您只需要关注两个地方

 

image

image1870×1040 101 KB

如果你希望使用反向代理,那么无需勾选端口外部访问,并且反向代理您的回环ip:port(127.0.0.1:port)或者外网ip:port

这里以直接ip:port访问为例,那么他最终看起来是这样的

 

image

点击确认后稍等约1分钟左右,点击服务端口的框框即可快速跳转

 

image

image792×186 9.19 KB

进入页面后,您会看到一个酷似官网的页面和一些使用教学和介绍功能的视频

 

image

image1870×1040 205 KB

您可以在蓝框处上传您的json或者按照红框的步骤来操作上传

 

image

image1865×966 254 KB

除了粘贴文件内容,也可以将文件直接拖拽到此处

 

image

image1865×966 267 KB

上传完成后即可看到json文件的解析

 

image

image1920×1040 111 KB

上图为Edge浏览器的语言文件json

 

image

image1865×966 79.1 KB

上图为某Web漏洞扫描软件的授权信息json

点击右上角的share可以将此文件暂存在服务器上并可以由获得到此分享链接的人点击右下角的下载按钮下载json

 

image

image1865×966 90.4 KB

点击左上方的图标可以切换json的预览模式

 

image

image1865×966 53.8 KB

 

image

image1865×966 86.4 KB

如果你或者你的小伙伴看完了,那么可以点击右上角的delete按钮在服务器上删除此文件

 

image

image1865×966 90.1 KB

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简化的PHP代码示例,实现了您描述的三国题材卡牌手游的战斗逻辑。请注意,这只是一个简化的示例,您可以根据自己的需求和游戏规则进行进一步的扩展和优化。 ```php <?php // 定义英雄类 class Hero { public $name; public $hp; public $atk; // 更多属性... public function __construct($name, $hp, $atk) { $this->name = $name; $this->hp = $hp; $this->atk = $atk; } // 实现攻击方法 public function attack($target) { $target->hp -= $this->atk; } } // 初始化队伍 $team1 = [ new Hero("英雄1", 100, 10), new Hero("英雄2", 120, 8), // 更多英雄... ]; $team2 = [ new Hero("敌人1", 80, 15), new Hero("敌人2", 90, 12), // 更多敌人... ]; // 战斗开始前的光环技能检查与触发 buff 效果 // 战车攻击 // 战斗循环 $round = 1; $maxRounds = 30; $result = ""; while ($round <= $maxRounds) { $result .= "回合 " . $round . ":\n"; // 根据战力高低顺序出手 // 双方队伍交替出手 foreach ($team1 as $hero) { if ($hero->hp > 0) { $target = $team2[rand(0, count($team2) - 1)]; // 随机选择一个敌人 $hero->attack($target); $result .= $hero->name . " 对 " . $target->name . " 造成了 " . $hero->atk . " 点伤害。\n"; } } // 检查战斗是否结束(例如:判断英雄是否全部死亡) // 判断回合数是否达到上限 $round++; } // 判定胜负 // 生成战报数据 $battleReport = [ "result" => $result, // 其他战报数据... ]; // 将战报数据转换为 JSON 格式返回给客户端 echo json_encode($battleReport); ?> ``` 请注意,上述代码是一个简化的示例,实际的游戏逻辑可能更加复杂。您可以根据自己的需求进行修改和扩展。同时,为了保证游戏平衡性和公平性,建议在实际开发中添加更多的逻辑和规则验证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值