zozoylolo 发表于 2023-10-2 20:49

【PHP】非常古老的回合制WEBGAME游戏HOF源代码(个人进行了一定的优化修改)

很久没发帖了,经常刷论坛也是没登录隐身在刷,打算分享这个代码的时候犹豫了很久,毕竟不是原创,但看完代码觉得真的写的相当不错,虽然都十几年前的东西了,但架构和数据的处理仍然值得借鉴和学习,有兴趣的童鞋也可以自己二次开发尝试一下。
这是一个上古级别的文字网页游戏,2008年4月就停止更新了,我是在某论坛下到了一款被称为文字版DNF的换皮源代码时发现的,已经被改的面目全非,然后寻找了一下,还好找到了比较原始的版本,还是汉化版本的。

这个源代码包简称hof,全称是Hall of Fame,意为荣誉圣殿,是小日子流传过来的文字页游源代码,开发者开源,但是保留对其版权及二次开发的所有权。这个代码跟国内常见的PHP代码不同,没有使用SQL数据库,而是将基本数据写到php文件里,将动态数据写入dat文件,看见时候还是蛮惊艳的,代码小巧别致,单内容非常丰富,具备了回合制页游的基本功能,包含4个基本职业和11个转职后的进阶职业,游戏内容也非常丰富,粗略看了一下,设计了上百个游戏技能和近千种游戏道具,还具备了基本的商店、竞技场、精炼、制造、招募等等核心功能,但是由于代码过于古老,网页编码为gbk,且仅能在PHP5.3以下正常运行,于是我对这个源代码进行了下列优化修改:
1、删除了源代码包里的几个网页木马,已经尽力了,不知道删除干净没有;
2、修改了代码网页编码为utf-8,便于在目前常用的主流浏览器上面使用;
3、修改了PHP5.3以上版本不兼容的代码,目前在PHP7下运行暂时没发现问题;
4、对于部分细节的汉化进行了优化,但因为我拿到的就是已经汉化的版本,很多原版的日文由于编码问题翻译不出来了,所以只能就细节部分进行优化,但代码整体是中文的,基本不存在英文影响体验进行的问题。

架设方法:PHPSTUDY环境或IIS配置PHP支持后直接可用,测试环境PHP7。
测试账号:test/test
后台管理地址:./admin.php
后台管理密码:123456

后续个人是打算好好研究一下这个代码,计划把我喜欢的寻仙资源、世界观、概念和道具引入进来,重做角色职业、道具系统和技能,然后整合一些寻宝、赌坊之类的小游戏小玩法,自己弄个自娱自乐的网页游戏,总体来说这个源代码还是非常可玩耐玩的。

下面是基本配置文件的源代码,总体来看还是功能很丰富的,注释中的乱码是因为编码改变变成了乱码,不知道原来是什么,所以没办法作进一步的翻译:
<?php
// 游戏设置
define("TITLE","荣誉圣殿中文版 (Hall of Fame)");//网页标题
define("MAX_TIME",100);//最大体力
define("TIME_GAIN_DAY",500);//每日所获得的体力
define("MAX_CHAR",5);//最大角色数量
define("MAX_USERS",500);//最大用户数量
define("ABANDONED",60*60*24*14);//删除用户周期
define("CONTROL_PERIOD",60*60*12);//自动管理周期
define("RECORD_IP",1);//IP记录(0=NO 1=YES)

// 其他设置
define("DEBUG",0);// 0=OFF
define("CHAR_NO_IMAGE","NoImage.gif");// 无角色图片
define("SESSION_SWITCH",1);// 0=OFF
define("CHAR_ROW",5);//角色队列数
define("CRYPT_KEY",'$1$12345678$');//パス射规步キ〖(ゲ〖ム肋弥稿は恃えるな)
define("COOKIE_EXPIRE",60*60*24*3);//cookie时间 60*60*24*3
define("UP_PASS","password");// 公告管理密码

define("START_TIME",100);//游戏初始体力
define("START_MONEY",10000);//游戏初始资金
define("MAX_STATUS",255);//最大属性点
define("GET_STATUS_POINT",3);//升级获得属性点
define("GET_SKILL_POINT",1);//升级获得技能点
define("MAX_LEVEL",50);//最大等级
define("SELLING_PRICE",1/5);//卖出物品比率(物品原价x比率)
define("REFINE_LIMIT",10);//篮希嘎肠猛

define("EXP_RATE",1);//经验倍数
define("MONEY_RATE",1);//金钱倍数

define("NEW_NAME_COST",100000);//改变队伍名称所需资金
define("BBS_OUT","http://localhost/bbs/");//论坛链接地址
define("BBS_BOTTOM_TOGGLE",0);//底部论坛链接按钮(0=OFF 1=ON)
define("AUCTION_TOGGLE",1);//是否开启拍卖会所(0=OFF 1=ON)
define("AUCTION_EXHIBIT_TOGGLE",0);////拍卖(0=暂停 1=开启)
define("JUDGE_LIST_AUTO_LOAD",1);//条件判定列表自动取得 1=自动 0=手动操作
define("AUCTION_MAX",100);//最大拍卖数

// 排名设置
define("RANK_TEAM_SET_TIME",60*60*48);//排名队伍設定周期
define("RANK_BATTLE_NEXT_LOSE",60*60*24);//失败后再挑战时间
define("RANK_BATTLE_NEXT_WIN",60*1);//赢得排名站再战的时间

// 对战设置
define("NORMAL_BATTLE_TIME",1);//默认战斗消耗体力
define("ENEMY_INCREASE",0);//对手选择(随机)
define("BATTLE_MAX_TURNS",100);//战斗最大回合数
define("TURN_EXTENDS",20);// 疯缅がつきそうな眷圭变墓するタ〖ン眶。
define("BATTLE_MAX_EXTENDS",100);//变墓した眷圭の呵络乖瓢搀眶(变墓の嘎肠)
define("BTL_IMG_TYPE",2);// (0=GD 1=CSS 2=瓤啪貉茶咙蝗脱CSS)
define("BTL_IMG","./image.php");// GD文件
define("BATTLE_STAT_TURNS",10);// 战斗统计回合
define("DEAD_IMG","mon_145.gif");// HP=0时的角色图片
define("MAX_BATTLE_LOG",100);// 战斗记录保存数(通常怪)
define("MAX_BATTLE_LOG_UNION",50);// 战斗记录保存数(BOSS)
define("MAX_BATTLE_LOG_RANK",50);// 战斗记录保存数(BOSS)
define("MAX_STATUS_MAXIMUM",2500);// 最大战斗回合数(1000%=10)

define("DELAY_TYPE",1);// 0=奠 1=糠
// DELAY_TYPE=0
define("DELAY",2.5);//ディレイ(2笆惧が誊奥。眶猛が你いとSPDが光い客は铜网)
// DELAY_TYPE=1
define("DELAY_BASE",5);// 眶猛が光いと汗がつかなくなる。

// union
define("UNION_BATTLE_TIME",10);//BOSS战消耗体力
define("UNION_BATTLE_NEXT",60*20);//BOSS战再挑战时间

// files
define("INDEX","index.php");

// CLASS FILE
define("CLASS_DIR", "./class/");
define("BTL_IMG_CSS", CLASS_DIR."class.css_btl_image.php");// CSS山绩
define("CLASS_MAIN", CLASS_DIR."class.main.php");
define("CLASS_USER", CLASS_DIR."class.user.php");
define("CLASS_CHAR", CLASS_DIR."class.char.php");
define("CLASS_MONSTER", CLASS_DIR."class.monster.php");
define("CLASS_UNION", CLASS_DIR."class.union.php");
define("CLASS_BATTLE", CLASS_DIR."class.battle.php");
define("CLASS_SKILL_EFFECT", CLASS_DIR."class.skill_effect.php");
define("CLASS_RANKING", CLASS_DIR."class.rank2.php");
define("CLASS_JS_ITEMLIST", CLASS_DIR."class.JS_itemlist.php");
define("CLASS_SMITHY", CLASS_DIR."class.smithy.php");
define("CLASS_AUCTION", CLASS_DIR."class.auction.php");
define("GLOBAL_PHP", CLASS_DIR."global.php");
define("COLOR_FILE", CLASS_DIR."Color.dat");

// DATA FILE
define("DATA_DIR", "./data/");
define("DATA_BASE_CHAR", DATA_DIR."data.base_char.php");
define("DATA_JOB", DATA_DIR."data.job.php");
define("DATA_ITEM", DATA_DIR."data.item.php");
define("DATA_ENCHANT", DATA_DIR."data.enchant.php");
define("DATA_SKILL", DATA_DIR."data.skill.php");
define("DATA_SKILL_TREE", DATA_DIR."data.skilltree.php");
define("DATA_JUDGE_SETUP", DATA_DIR."data.judge_setup.php");
define("DATA_JUDGE", DATA_DIR."data.judge.php");
define("DATA_MONSTER", DATA_DIR."data.monster.php");
define("DATA_LAND", DATA_DIR."data.land_info.php");
define("DATA_LAND_APPEAR", DATA_DIR."data.land_appear.php");
define("DATA_CLASSCHANGE", DATA_DIR."data.classchange.php");
define("DATA_CREATE", DATA_DIR."data.create.php");
define("DATA_TOWN", DATA_DIR."data.town_appear.php");

define("MANUAL", DATA_DIR."data.manual0.php");
define("MANUAL_HIGH", DATA_DIR."data.manual1.php");

define("GAME_DATA_JOB", DATA_DIR."data.gd_job.php");
define("GAME_DATA_ITEM", DATA_DIR."data.gd_item.php");
define("GAME_DATA_JUDGE", DATA_DIR."data.gd_judge.php");
define("GAME_DATA_MONSTER", DATA_DIR."data.gd_monster.php");

define("TUTORIAL", DATA_DIR."data.tutorial.php");
// DAT
define("AUCTION_ITEM","./auction.dat");//アイテムオ〖クション脱のファイル
define("AUCTION_ITEM_LOG","./auction_log.dat");//アイテムオ〖クション脱のログファイル

define("REGISTER","./register.dat");
define("UPDATE","./update.dat");
define("CTRL_TIME_FILE","./ctrltime.dat");//年袋瓷妄のための箕粗淡脖ファイル
define("RANKING","./ranking.dat");
define("BBS_BOTTOM","./bbs.dat");
define("BBS_TOWN","./bbs_town.dat");
define("MANAGE_LOG_FILE","./managed.dat");//年袋瓷妄淡峡ファイル
define("USER_NAME","./username.dat");//叹涟瘦赂ファイル

// dir
define("IMG_CHAR","./image/char/");
define("IMG_CHAR_REV","./image/char_rev/");
define("IMG_ICON","./image/icon/");
define("IMG_OTHER","./image/other/");
define("USER","./user/");
define("UNION","./union/");
define("DATA","data.dat");
define("ITEM","item.dat");

define("LOG_BATTLE_NORMAL","./log/normal/");
define("LOG_BATTLE_RANK","./log/rank/");
define("LOG_BATTLE_UNION","./log/union/");

// 觉轮年盗
define("FRONT","front");
define("BACK","back");

define("TEAM_0",0);
define("TEAM_1",1);
define("WIN",0);
define("LOSE",1);
define("DRAW","d");

define("ALIVE",0);
define("DEAD",1);
define("POISON",2);

define("CHARGE",0);
define("CAST",1);

?>

按照管理,上几张截图,有图有真相才行:





最后附上下载地址,因为源代码体积很小,只有2M多一些,就直接在论坛上传了:


ytw6176 发表于 2023-10-2 21:47

感谢分享,居然才2MB,下载看下老前辈写的php

zozoylolo 发表于 2023-10-3 09:13

cyxnzb 发表于 2023-10-2 21:44
挺厉害的,放在0几年甚至1几年估计能火

火不了,国内玩游戏一直有一个急功近利和不社交就得死的坏毛病,在文字游戏最鼎盛的2000年左右,玩的也是江湖。这类偏文字和策略类的网页游戏都属于小众,另外还有一个国外的phaos的文字游戏也非常好。

tunnel213 发表于 2023-10-2 20:53

stu2162583 发表于 2023-10-2 21:13

感谢楼主分享

sp0770 发表于 2023-10-2 21:28

唉,算了,主要是自己不会配置

啊笨 发表于 2023-10-2 21:35

打开提示No input file specified.

不知道要怎么操作

cyxnzb 发表于 2023-10-2 21:44

挺厉害的,放在0几年甚至1几年估计能火

jiang000 发表于 2023-10-2 21:52

谁弄好了叫我来玩

aonima 发表于 2023-10-2 22:03

php啊,我的编程入门语言,现在忘的差不多了

CainY 发表于 2023-10-2 22:25


感谢楼主分享
页: [1] 2 3 4 5 6 7 8 9
查看完整版本: 【PHP】非常古老的回合制WEBGAME游戏HOF源代码(个人进行了一定的优化修改)