Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[原创]水客版宠物系统加入了偷血等四种属性,可以掉宝,可以升级装备,可以拍卖物品..

[复制链接]
t1000 发表于 2005-8-2 02:14:10 | 显示全部楼层 |阅读模式
因为变动比较大,下之前请先看完变动列表,喜欢的话再下。
ps:因为下载地址的空间不是我的,所以可能不够稳定,所以希望有条件朋友下完以后能够提供分流。谢了。
[下载地址1]:http://xyz-hunter.vicp.net/pet.rar
[分流地址2]:右键选另存为下载

另,最近完成了配合此插件的远程宠物。希望大家能关注一下,出点注意,给点意见
https://discuz.dismall.com/viewth ... &extra=page%3D3

水客坊宠物之将宠物信息在会员资料及贴子中显示的方法也出了

看这里:https://discuz.dismall.com/viewth ... &extra=page%3D1
=================================================               插件名称:论坛宠物系统 水客加强版 1.01

              与童虎下拉菜单、虚拟形象兼容
================================================
适用版本:Discuz! 2.5F sp1
程序制作:财神(童虎)
更改版本:木瓜加化版 1.1
程序修改:小豆芽
水客版开发:t1000
开发论坛:水客坊论坛 http://xyz-hunter.ful.cn/
最后更新:2005.06.30
技术支持:http://xyz-hunter.ful.cn/
安装难易:易
安装条件:已经安装了银行 已安装下拉菜单童虎版(没安装请看安装文档菜单部分)

演示: http://xyz-hunter.ful.cn

特点:
发现童虎的新版宠物似乎不再有战斗的元素,便自己制作了这个版本。这个版本主要的特点
便是强化了战斗,加入了新的元素,使战斗系统更平衡。因为变动较大,下载前请先阅读下
面的更改列表。

另:附在会员资料和帖子中显示宠物信息的方法。

此版宠物所作更新如下:

1.加入了偷生命、反弹伤害、魔法武器、生命恢复四种新属性
加入这四个属性的目的是为了改变以前敏捷太过重要的局面,使各属性更平衡。

偷生命属性:是成功偷取生命所占对对方伤害的百分比, 成功发动机率与魔法技能(即宠
物的魔法属性)和等级有关。

反弹伤害属性:是成功反弹对方所造成伤害的百分比,成功发动机率与强度和等级有关。需
要注意的是,此属性不能反弹魔法伤害,魔法伤害见魔法武器。

魔法武器属性:使武器攻击时一定几率产生魔法伤害,发生几率与魔法技能(即宠物的魔法
属性)和等级有关。

生命恢复属性:每回和一定几率恢复宠物生命值的点数(不是百分比)最大恢复10%发生几率
与体力和等级有关。

宠物只有通过装备才能获得这些属性。商店中有四种商品预设了这四种属性,其他带着几种属
性的物品大都必须打怪得到(也可以自己打造,拍卖场购得)。


2.新增装备宝石注入系统:

可以通过注入宝石给装备添加新的属性(宝石种类15种,需要定制添加请看install.txt中的
物品定制小节)。可添加的属性列表如下:
maxhp,maxsp,攻击力atk,防御力def,敏捷spd,魔法技能mag,装备最大耐久度,durmax
偷生命 blood;反弹伤害 rebound ;魔法武器 magatk ;生命恢复 restore;

这些宝石在本系统中只会在打怪时掉宝出现。(建议不要在商店中出现,要想加精化随机赠送
宝石请看安装文件)

3.打怪掉宝系统:
打怪会掉物品,本系统新增的71个物品大都只能打怪得到,宝物等级分十级,需要注意的是宝物
属性是在一定范围随机生成的,所以就是同一级别,同种物品,也是会有属性值不一样的情况。
要想设定或添加掉宝系统所掉的宝物,请依照安装文件修改pet/petconfig.php


4.为方便会员交换物品添加了拍卖场功能

可以指定拍卖对象,拍卖价格。不想拍卖也可取回。基本功能与木瓜论坛所用的差不多,但因为
实现程序不同,所以省了一个表tablepre_itemmarket

5.加入了折扣系统:
用户在购买物品,修理物品时可以便宜一些,折扣大小与会员发贴数有关(注意拍卖场的交易不
能优惠。为防止赚取差价,卖给商店时也会扣除折扣)
如果想禁用折扣系统,请在插件中心配置相应参数

6.加入了能力点清零功能

如果会员向重修技能点可以使用此功能,需花费一定金钱,如须禁用请设定pet/petconfig.php

7.加入了清理宠物系统日志功能

清理范围以天计算,要想设定日志纪录的范围或禁用日志请在插件中心配置相应参数

8.修理铺加入修理全身装备功能

不用再一个一个先卸载再修复了

9.修理装备算法改变,费用为物品价格的80%*(1-耐久度/最大耐久度)
修理不再损失最大耐久度

10.加能力点界面,加了输入框,一次可以分配多点,现在再也不用一下一下点了。(原来
得限制如单项点数不得超过所有点数的一半还存在).

11.增加了17个宠物(包括仙境传说战士)加了71个物品,大部分打怪才掉

12.解决了宠物中的下拉菜单与童虎下拉菜单及虚拟形象冲突的问题。

13。修正不合理的pk算法。

14.修正宠物之间PK时,不能打死对方宠物的BUG,修改为真实PK
  pk结束会向被pk者发出通知,通知会在主页面有提示

15.修正宠物外出杀怪出现错误的BUG

16。修正管理程序的N多bug,以及其他方面的bug。

[ 本帖最后由 t1000 于 2005-8-6 10:35 编辑 ]

评分

1

查看全部评分

 楼主| t1000 发表于 2005-8-2 02:15:41 | 显示全部楼层
安装方法:

安装步骤:
安装之前需要童虎的下拉菜单,没按过的看下面安装下拉菜单的部分,安过童虎虚拟形象就自带下拉菜单了。


因为网上流传的宠物太多,表的结构还都不一样,所以如果以前安过宠物
全新安装或升级安装出现任何问题请执行完全卸载的步骤再进行,步骤如下:
1。升级数据库:ALTER TABLE cdb_members DROP pktime;
这一步出错没有关系,说明你没有这一列
2。执行pet_install.php进行卸载
经过完全卸载的步骤,载进行下面的全新安装就完全没有问题了。


<1>全新安装:
1.在插件中心导入plug_pet.txt中的配置数据(复制到”导入插件“下的文本框提交即可)
  本插件不用开启功能即可正常工作,是否显示此插件连接也清选否。
2.把pet.php、pet_install.php、目录images、目录pet、目录templates复制到论坛根目录下。覆盖原有文件
3.运行pet_install.php,选全新安装。安装成功后删初此文件。
4.修改header.htm在 | <a href="faq.php">{lang faq}</a> 之前加入 | <a href="pet.php">宠物中心</a>

完成!

<2>升级安装
升级只适用于木瓜版1.1(悠闲之心版似乎没有太大改动程序,也可)

第一种方法:
1.在插件中心删除原插件配置数据。导入plug_pet.txt中的配置数据
(复制到”导入插件“下的文本框提交即可)
  本插件不用开启功能即可正常工作,是否显示此插件连接也清选否。
2。把pet.php、pet_install.php、目录images、目录pet、目录templates复制到论坛根目录下。覆盖原有文件
3。运行pet_install.php,选升级安装。安装成功后删初此文件。
4.修改header.htm在 | <a href="faq.php">{lang faq}</a> 之前加入 | <a href="pet.php">宠物中心</a>

第二种方法:

1.在插件中心删除原插件配置数据。导入plug_pet.txt中的配置数据
(复制到”导入插件“下的文本框提交即可)
  本插件不用开启功能即可正常工作,是否显示此插件连接也清选否。
2。把pet.php、pet_install.php、目录images、目录pet、目录templates复制到论坛根目录下。覆盖原有文件
3。在论坛后台管理中,升级数据库,输入database.txt中的sql语句。
4.修改header.htm在 | <a href="faq.php">{lang faq}</a> 之前加入 | <a href="pet.php">宠物中心</a>


@@@@@@@@@@@@@@@@@关于下拉菜单的安装@@@@@@@@@@@@@@@@@@@@@

修改 include/common.js

于文件尾加入 ( 若之前已安装菜单 , 请将之前菜单的代码删掉 )


  1. <!--

  2. var menuOffX=0        //菜单距连接文字最左端距离
  3. var menuOffY=18        //菜单距连接文字顶端距离

  4. var fo_shadows=new Array()
  5. var linkset=new Array()


  6. var ie4=document.all&&navigator.userAgent.indexOf("Opera")==-1
  7. var ns6=document.getElementById&&!document.all
  8. var ns4=document.layers
  9. function openScript(url, width, height){
  10.         var Win = window.open(url,"openScript",'width=' + width + ',height=' + height + ',resizable=1,scrollbars=yes,menubar=no,status=no' );
  11. }

  12. function showmenu(e,vmenu,mod){
  13.         if (!document.all&&!document.getElementById&&!document.layers)
  14.                 return
  15.         which=vmenu
  16.         clearhidemenu()
  17.         ie_clearshadow()
  18.         menuobj=ie4? document.all.popmenu : ns6? document.getElementById("popmenu") : ns4? document.popmenu : ""
  19.         menuobj.thestyle=(ie4||ns6)? menuobj.style : menuobj
  20.         
  21.         if (ie4||ns6)
  22.                 menuobj.innerHTML=which
  23.         else{
  24.                 menuobj.document.write('<layer name=gui bgColor=#E6E6E6 width=165 onmouseover="clearhidemenu()" onmouseout="hidemenu()">'+which+'</layer>')
  25.                 menuobj.document.close()
  26.         }
  27.         menuobj.contentwidth=(ie4||ns6)? menuobj.offsetWidth : menuobj.document.gui.document.width
  28.         menuobj.contentheight=(ie4||ns6)? menuobj.offsetHeight : menuobj.document.gui.document.height
  29.         
  30.         eventX=ie4? event.clientX : ns6? e.clientX : e.x
  31.         eventY=ie4? event.clientY : ns6? e.clientY : e.y
  32.         
  33.         var rightedge=ie4? document.body.clientWidth-eventX : window.innerWidth-eventX
  34.         var bottomedge=ie4? document.body.clientHeight-eventY : window.innerHeight-eventY
  35.                 if (rightedge<menuobj.contentwidth)
  36.                         menuobj.thestyle.left=ie4? document.body.scrollLeft+eventX-menuobj.contentwidth+menuOffX : ns6? window.pageXOffset+eventX-menuobj.contentwidth : eventX-menuobj.contentwidth
  37.                 else
  38.                         menuobj.thestyle.left=ie4? ie_x(event.srcElement)+menuOffX : ns6? window.pageXOffset+eventX : eventX
  39.                
  40.                 if (bottomedge<menuobj.contentheight&&mod!=0)
  41.                         menuobj.thestyle.top=ie4? ie_y(event.srcElement)+menuOffY : ns6? window.pageYOffset+eventY+10 : eventY
  42.                 else
  43.                         menuobj.thestyle.top=ie4? ie_y(event.srcElement)+menuOffY : ns6? window.pageYOffset+eventY+10 : eventY
  44.         menuobj.thestyle.visibility="visible"
  45.         ie_dropshadow(menuobj,"#999999",3)
  46.         return false
  47. }

  48. function ie_y(e){  
  49.         var t=e.offsetTop;  
  50.         while(e=e.offsetParent){  
  51.                 t+=e.offsetTop;  
  52.         }  
  53.         return t;  
  54. }  
  55. function ie_x(e){  
  56.         var l=e.offsetLeft;  
  57.         while(e=e.offsetParent){  
  58.                 l+=e.offsetLeft;  
  59.         }  
  60.         return l;  
  61. }  
  62. function ie_dropshadow(el, color, size)
  63. {
  64.         var i;
  65.         for (i=size; i>0; i--)
  66.         {
  67.                 var rect = document.createElement('div');
  68.                 var rs = rect.style
  69.                 rs.position = 'absolute';
  70.                 rs.left = (el.style.posLeft + i) + 'px';
  71.                 rs.top = (el.style.posTop + i) + 'px';
  72.                 rs.width = el.offsetWidth + 'px';
  73.                 rs.height = el.offsetHeight + 'px';
  74.                 rs.zIndex = el.style.zIndex - i;
  75.                 rs.backgroundColor = color;
  76.                 var opacity = 1 - i / (i + 1);
  77.                 rs.filter = 'alpha(opacity=' + (100 * opacity) + ')';
  78.                 //el.insertAdjacentElement('afterEnd', rect);
  79.                 fo_shadows[fo_shadows.length] = rect;
  80.         }
  81. }
  82. function ie_clearshadow()
  83. {
  84.         for(var i=0;i<fo_shadows.length;i++)
  85.         {
  86.                 if (fo_shadows[i])
  87.                         fo_shadows[i].style.display="none"
  88.         }
  89.         fo_shadows=new Array();
  90. }


  91. function contains_ns6(a, b) {
  92.         while (b.parentNode)
  93.                 if ((b = b.parentNode) == a)
  94.                         return true;
  95.         return false;
  96. }

  97. function hidemenu(){
  98.         if (window.menuobj)
  99.                 menuobj.thestyle.visibility=(ie4||ns6)? "hidden" : "hide"
  100.         ie_clearshadow()
  101. }

  102. function dynamichide(e){
  103.         if (ie4&&!menuobj.contains(e.toElement))
  104.                 hidemenu()
  105.         else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))
  106.                 hidemenu()
  107. }

  108. function delayhidemenu(){
  109.         if (ie4||ns6||ns4)
  110.                 delayhide=setTimeout("hidemenu()",500)
  111. }

  112. function clearhidemenu(){
  113.         if (window.delayhide)
  114.                 clearTimeout(delayhide)
  115. }

  116. function highlightmenu(e,state){
  117.         if (document.all)
  118.                 source_el=event.srcElement
  119.         else if (document.getElementById)
  120.                 source_el=e.target
  121.         if (source_el.className=="menuitems"){
  122.                 source_el.id=(state=="on")? "mouseoverstyle" : ""
  123.         }
  124.         else{
  125.                 while(source_el.id!="popmenu"){
  126.                         source_el=document.getElementById? source_el.parentNode : source_el.parentElement
  127.                         if (source_el.className=="menuitems"){
  128.                                 source_el.id=(state=="on")? "mouseoverstyle" : ""
  129.                         }
  130.                 }
  131.         }
  132. }

复制代码




//-->
修改 css.htm

于 </style> 前加入:


  1. .menuskin {
  2.         filter: Alpha(Opacity=80);
  3.         BORDER: #666666 1px solid; VISIBILITY: hidden; FONT: 12px Verdana;
  4.         POSITION: absolute;
  5.         BACKGROUND-COLOR:#FFFFFF;
  6.         background-repeat : repeat-y;
  7.         }
  8. .menuskin A {
  9.         PADDING-RIGHT: 9px; PADDING-LEFT: 7px; COLOR: black; TEXT-DECORATION: none; behavior:url(inc/noline.htc);
  10.         }
  11. #mouseoverstyle {
  12.         BACKGROUND-COLOR: #F2F5FB; margin:2px; padding:0px; border:#8396C3 1px solid;
  13.         }
  14. #mouseoverstyle A {
  15.         COLOR: black
  16. }
  17. .menuitems{
  18.         margin:2px;padding:1px;word-break:keep-all;
  19. }
复制代码

打开include/cache.php

找到:


  1. $data["pluglink"] .= '| <a href="plugins.php?p='.$plugs[plug_key].'"><font class="navtd">'.$plugs['plug_title'].'</font></a> ';
复制代码

改成:


  1. $data["pluglink"] .= '<div class=menuitems><a style=font-size:9pt;line-height:14pt; href=plugins.php?p='.$plugs[plug_key].'>'.$plugs['plug_title'].'</a></div>';
复制代码


打开header.htm模板

找到<body>标签位于这个之后一行加入:


  1. <div class=menuskin id=popmenu
  2.       onmouseover="clearhidemenu();highlightmenu(event,'on')"
  3.       onmouseout="highlightmenu(event,'off');dynamichide(event)" style="Z-index:100"></div>

复制代码

找到:


  1. $pluglink

复制代码

改成:


  1. <a href="index.php " onMouseOver="showmenu(event,'$pluglink')" style="CURSOR:hand" >论坛插件</a>

复制代码


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
★宠物系统后台管理说明:

一、添加自定义宠物:

  宠物名字﹕输入宠物的中文名称。如﹕泡泡龙
  宠物类别﹕输入宠物的类别英文或拼音名﹐如﹕dragon 并将相关宠物图片上传至
            images/pet/宠物类别 目录下面 。如﹕将dragon类的宠物图片上传至
            images/pet/dragon  目录下面 图片名称也按宠物类别进行改变﹐
            例如﹕dragon类的图片名称应该是﹕dragon0.gif dragon1.gif dragon2.gif ....dragon11.gif
            每类宠物图片為0-11共12张图片。
  宠物介绍﹕长度不能超过25个汉字
  宠物属性﹕输入金﹑木﹑水﹑火﹑土等五行属性。

  注﹕新添加的宠物类别不能和已有的宠物类别重名﹐否则将会出现宠物头像不能正常显示。

二、会员宠物管理:

  可以对会员宠物的各项数据进行编辑﹐
  但有些属性(例如﹕级别、hp最大值、攻击力、防御力)是根据宠物的exp与基本五围能力进行计算的﹐
  如果改过之后没有相应地修改exp值与基本五围资料,这些属性会被按宠物的exp重新计算。


三、修改菜单功能:

  这个版本把菜单放在了一个模板文件pet_navbar.htm裡面﹐分特效菜单和下拉菜单

  打开pet_navbar.htm文件可以看见就可以看见﹐如果你為宠物系统添加新功能直接在pet_navbar.htm模板裡面修改﹐
  就可以在菜单裡面添加新的功能

四、物品新增:

  1.物品种类:  (例如:sword,1)
    本项目是对映  images\item 目录下的图片,如 sword,1 即為 images\item\sword\1.gif 档
    也是代表该物品的物品编号。

  2.物品名称:  
    这可自行取个好听的名字
        
  3.物品文字说明:  
  这部份是物品的功能说明,也可以自己编。

  4.可使用等级:  
    设定该物品最低可使用的等级,设定為 0 即為不限等级。   

  5.物品最大数量:  
    设定物品的一格最大数量為多少。

  6.物品效能:  (+hp,100,+sp,100)  
    设定物品的能力,设定的格式為 效能,数值 ,例如 +hp,100 代表 增加 100 hp 的意思囉
    目前能设定的功能请参考目前预设的物品效能相关资料。
    新功能、新效能会在往后的版本陆续补上。
    注意:如果写为这样:+spd,10-120  则物品在卖出或掉宝时敏捷spd都会在10到120之间随机生成能力

  7.物品交易价值:  (摆店价,倒店价)
    这部份就关於各商店贩卖物品的价位设定,与玩家把物品卖给商店的价位设定了。

  8.交易限制:  
    设定该物品所能进行的交易项目。
    可卖店 :该物品可以卖给商店换回金币
    可拍卖 :设定该物品是否可与其它玩家交易。
    可使用 :设定该物品是使用的功能,如復活之羽等等。
    可装备 :设定该物品是可装备的。
    可修理 :设定该物品是可修理的。如果物品可修理,请务必设定物品的+dur  +durmax属性

  9.装备设定:  头  左耳  右耳  左手  右手  身体  脚  
    设定物品能装备的位置。

五、商店物品增设:

  1.先设定完成新的物品。
  2.修改商店档 itemshop.php , weaponshop.php
  3.设定 $sellitem 变量增加贩卖项目 例如:$sellitem[10]="'sword,10'";        
  4.在该商店即可看到新上架的物品了。


@@@@@@@@@@@@@@@@@@@@关于添加掉宝物品@@@@@@@@@@@@@@@@@@@@@@
需要修改/pet/petconfig.php

找到“//掉宝设定暂定10级“的行在下面输入要填加的调宝物品
如要填加4级物品,则加入:$TreasureArray[4][13]="potion,1";
数组的第一个索引代表级数,第二个是本级别物品的序号一定不能跟其他物品重复。
potion,1就是物品新增时的物品种类。



@@@@@@@@@@@@@@@@@@@@@关于发贴加经验@@@@@@@@@@@@@@@@@@@@@@@@
发新贴加宠物经验
在include/newthread.php中末尾

  1. showmessage('post_newthread_succeed', "viewthread.php?tid=$tid");
复制代码

的上面加入

  1. $db->query("UPDATE cdb_mypetdata SET mypetexp= mypetexp+30 WHERE username='$discuz_user' and mypetdead <1 and openpk<2");
复制代码

本例是发新贴+30经验 具体数值可自行修改,本例死亡和拒绝挑战的状态下不加经验,要想去掉这两个条件刻分别去掉  mypetdead <1 和 openpk<2

会贴加经验需要修改include/newreply.php 方法同上。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

先写这么多,近期会把贴子中显示宠物信息、查看会员资料显示宠物信息的方法和加为净华贴随机得到物品的方法整理出来,发布在http://xyz-hunter.ful.cn上,大家可以先去看看效果。

[ 本帖最后由 t1000 于 2005-8-2 22:26 编辑 ]
回复

使用道具 举报

vairt 发表于 2005-8-2 07:27:07 | 显示全部楼层
支持一下~~
不过不安装
回复

使用道具 举报

lj80117 发表于 2005-8-2 08:37:33 | 显示全部楼层
先支持一下
回复

使用道具 举报

ghostlees 发表于 2005-8-2 08:38:15 | 显示全部楼层
支持啊,又是一个好东西,下载去装装
回复

使用道具 举报

freddy 发表于 2005-8-2 08:53:34 | 显示全部楼层
支持一下,希望楼主能用CODE代码..不然看起来会很累
回复

使用道具 举报

 楼主| t1000 发表于 2005-8-2 09:22:32 | 显示全部楼层
原帖由 freddy 于 2005-8-2 08:53 发表
支持一下,希望楼主能用CODE代码..不然看起来会很累

已改,大家如过还看不清的话可以客压缩包中的readme.txt
回复

使用道具 举报

 楼主| t1000 发表于 2005-8-2 09:56:34 | 显示全部楼层
压缩包已更正!这个问题只有在服务器PHP 4以上才有
更正一个bug,特征:用户折扣始终为1。
在文件pet.php找到:

  1. if($bApplyDiscount===TRUE)
复制代码


改为

  1. if($bApplyDiscount==TRUE)
复制代码
回复

使用道具 举报

 楼主| t1000 发表于 2005-8-2 10:32:13 | 显示全部楼层
再更正一个bug(压缩包已更正压缩包注释中有说明):
特征:最低掉包率,最高掉包率,掉包率因数无效
在/pet/petconfig.php中,找到

  1. <?php

复制代码

在下面加上

  1. @include DISCUZ_ROOT.'./forumdata/cache/cache_plugins.php';

  2. $petsettings = $_DCACHE['plugins_settings']['pet'];
复制代码


:lh:都是昨晚把配置项移到插件中心惹的货。
回复

使用道具 举报

FLOKY﹏。 发表于 2005-8-2 10:33:22 | 显示全部楼层
啊,童虎的寵物系統終於出了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-5-1 00:05 , Processed in 0.095472 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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