找传奇、传世资源到传世资源站!

传世单机版如何做一个特色的武器。

  • 资源分类:游戏教程
  • 发 布 人:房东的猫
  • 文件大小:未知
  • 文件格式:.zip
  • 浏览次数:180
  • 下载次数: 0
  • 发布时间:3月30日

  • 标签:
8.8玩家评分(2人评分)
下载后可评
介绍 评论 失效链接反馈

传世单机版如何做一个特色的武器。 游戏教程-第1张QQ图片20200123191206.png

个人美工水平有限,所以做了个简易版本。

说说实现方式

先说淬炼:盛大支持淬炼格式如下。
1        1        生命值 +%u
2        1        躲避 %u
3        1        魔法躲避 %u%%
4        1        命中 %u
5        1        魔法命中 %u%%
6        2        攻击 %u-%u
7        2        道术 %u-%u
8        2        魔法 %u-%u
9        2        防御 %u-%u
10        2        魔法防御 %u-%u
11        1        幸运 +%u
12        1        吸血 +%u
13        1        无视物理防御 %u
14        1        无视魔法躲避 %u
15        1        无视物理躲避 %u
16        1        暴击等级 +%u
17        1        无视魔法防御 %u
18        1        抗性 +%u
19        1        双倍暴击 %u%%
20        1        韧性 +%u复制代码
第一个数字是ID,数据库中也是相对应的淬炼ID。第二个数字是代表需要的参数值,1 就是只读取第一个参数CL1VAL,2就是读取CL1val-CL2VAL的值。

技能是如何显示和实现的。

51        1        小火球     强化+%u
52        1        治疗术     强化+%u
53        1        初级剑法   强化+%u
54        1        精神战法   强化+%u
55        1        火炎刀     强化+%u
56        1        施毒术     强化+%u复制代码这是自定义的,放在客户端DB_CuiLianCfg.txt

第一个参数值代表技能ID。第二个参数值就是加强的系数。

比如51 在游戏中是怎么读取并且获得该装备的技能属性的呢。

$ITEMINFO[$STR(S50)].CLIAN1ATTRIB 为数据库的装备DB, - 50 就是技能Id啦,有了技能ID,就可以获得技能名称。
$USERMAGIC($STR(P62)).NAME  技能的名称
$HUMAN($USERMAGIC($STR(P62)).NAME) 当前技能具体是哪个技能根据装备自适应获得。技能的加强系数。

<div class="blockcode"><blockquote>[@淬炼属性]
{
;传入说明

#IF
EQUAL S50
#ACT
BREAK

#IFONE
EQUAL D87 3
#ACT
MOV P61 $ITEMINFO[$STR(S50)].CLIAN1ATTRIB
MOV P62 $ITEMINFO[$STR(S50)].CLIAN2ATTRIB
MOV P63 $ITEMINFO[$STR(S50)].CLIAN3ATTRIB
DEC P61 50
DEC P62 50
DEC P63 50
#ELSEACT
BREAK

#IF
LARGE $USERMAGIC($STR(P61)).LEVEL 0
CHECKVAR HUMAN $USERMAGIC($STR(P61)).NAME < 1
#ACT
CALCVAR HUMAN $USERMAGIC($STR(P61)).NAME = 1000

#IF
LARGE $USERMAGIC($STR(P62)).LEVEL 0
CHECKVAR HUMAN $USERMAGIC($STR(P62)).NAME < 1
#ACT
CALCVAR HUMAN $USERMAGIC($STR(P62)).NAME = 1000

#IF
LARGE $USERMAGIC($STR(P63)).LEVEL 0
CHECKVAR HUMAN $USERMAGIC($STR(P63)).NAME < 1
!EQUAL $ITEMINFO[$STR(S50)].STDMODE 10
!EQUAL $ITEMINFO[$STR(S50)].STDMODE 11
#ACT
CALCVAR HUMAN $USERMAGIC($STR(P63)).NAME = 1000

#IF
LARGE P63 0
EQUAL $ITEMINFO[$STR(S50)].STDMODE 10
#ACT
MOV P70 $ITEMINFO[$STR(S50)].CLIAN3ATTRIB
CALCVAR HUMAN 免伤属性 - $MULT.$STR(P70).3
SetProvisionalAbil 42 = $HUMAN(免伤属性)

#IF
LARGE P63 0
EQUAL $ITEMINFO[$STR(S50)].STDMODE 11
#ACT
MOV P70 $ITEMINFO[$STR(S50)].CLIAN3ATTRIB
CALCVAR HUMAN 免伤属性 - $MULT.$STR(P70).3
SetProvisionalAbil 42 = $HUMAN(免伤属性)

#IF
EQUAL D87 1
LARGE $ITEMINFO[$STR(S50)].ITEMEXT(87) 0
LARGE $USERMAGIC($STR(P61)).LEVEL 0
#ACT
MOV P50 $ITEMINFO[$STR(S50)].CLIAN1VAL
MULT P50 50
CALCVAR HUMAN $USERMAGIC($STR(P61)).NAME - $STR(P50)
SKILLPOWERPERMILL $USERMAGIC($STR(P61)).NAME  = $HUMAN($USERMAGIC($STR(P61)).NAME)

#IF
EQUAL D87 1
LARGE $ITEMINFO[$STR(S50)].ITEMEXT(87) 1
LARGE $USERMAGIC($STR(P62)).LEVEL 0
#ACT
MOV P50 $ITEMINFO[$STR(S50)].CLIAN2VAL
MULT P50 50
CALCVAR HUMAN $USERMAGIC($STR(P62)).NAME - $STR(P50)
SKILLPOWERPERMILL $USERMAGIC($STR(P62)).NAME  = $HUMAN($USERMAGIC($STR(P62)).NAME)

#IF
EQUAL D87 1
LARGE $ITEMINFO[$STR(S50)].ITEMEXT(87) 2
LARGE $USERMAGIC($STR(P63)).LEVEL 0
!EQUAL $ITEMINFO[$STR(S50)].STDMODE 10
!EQUAL $ITEMINFO[$STR(S50)].STDMODE 11
#ACT
MOV P50 $ITEMINFO[$STR(S50)].CLIAN3VAL
MULT P50 50
CALCVAR HUMAN $USERMAGIC($STR(P63)).NAME - $STR(P50)
SKILLPOWERPERMILL $USERMAGIC($STR(P63)).NAME  = $HUMAN($USERMAGIC($STR(P63)).NAME)

#IF
EQUAL D87 1
LARGE $ITEMINFO[$STR(S50)].ITEMEXT(87) 2
EQUAL $ITEMINFO[$STR(S50)].STDMODE 10
#ACT
MOV P50 $ITEMINFO[$STR(S50)].CLIAN3VAL
MULT P50 3
CALCVAR HUMAN 免伤属性 - $STR(P50)
SetProvisionalAbil 42 = $HUMAN(免伤属性)

#IF
EQUAL D87 1
LARGE $ITEMINFO[$STR(S50)].ITEMEXT(87) 2
EQUAL $ITEMINFO[$STR(S50)].STDMODE 11
#ACT
MOV P50 $ITEMINFO[$STR(S50)].CLIAN3VAL
MULT P50 3
CALCVAR HUMAN 免伤属性 - $STR(P50)
SetProvisionalAbil 42 = $HUMAN(免伤属性)

#IF
EQUAL D87 1
#ACT
BREAK

#IF
EQUAL D87 2
LARGE $ITEMINFO[$STR(S50)].ITEMEXT(87) 0
LARGE $USERMAGIC($STR(P61)).LEVEL 0
#ACT
MOV P50 $ITEMINFO[$STR(S50)].CLIAN1VAL
MULT P50 50
CALCVAR HUMAN $USERMAGIC($STR(P61)).NAME + $STR(P50)
SKILLPOWERPERMILL $USERMAGIC($STR(P61)).NAME  = $HUMAN($USERMAGIC($STR(P61)).NAME)
MOV S90 $USERMAGIC($STR(P61)).NAME
SENDMSG 7 佩戴:<$ITEMINFO[$STR(S50)].NAME>,<$STR(S90)>强化+<$ITEMINFO[$STR(S50)].CLIAN1VAL>...

#IF
EQUAL D87 2
LARGE $ITEMINFO[$STR(S50)].ITEMEXT(87) 1
LARGE $USERMAGIC($STR(P62)).LEVEL 0
#ACT
MOV P50 $ITEMINFO[$STR(S50)].CLIAN2VAL
MULT P50 50
CALCVAR HUMAN $USERMAGIC($STR(P62)).NAME + $STR(P50)
SKILLPOWERPERMILL $USERMAGIC($STR(P62)).NAME  = $HUMAN($USERMAGIC($STR(P62)).NAME)
MOV S90 $USERMAGIC($STR(P62)).NAME
SENDMSG 7 佩戴:<$ITEMINFO[$STR(S50)].NAME>,<$STR(S90)>强化+<$ITEMINFO[$STR(S50)].CLIAN2VAL>...

#IF
EQUAL D87 2
LARGE $ITEMINFO[$STR(S50)].ITEMEXT(87) 2
LARGE $USERMAGIC($STR(P63)).LEVEL 0
!EQUAL $ITEMINFO[$STR(S50)].STDMODE 10
!EQUAL $ITEMINFO[$STR(S50)].STDMODE 11
#ACT
MOV P50 $ITEMINFO[$STR(S50)].CLIAN3VAL
MULT P50 50
CALCVAR HUMAN $USERMAGIC($STR(P63)).NAME + $STR(P50)
SKILLPOWERPERMILL $USERMAGIC($STR(P63)).NAME  = $HUMAN($USERMAGIC($STR(P63)).NAME)
MOV S90 $USERMAGIC($STR(P63)).NAME
SENDMSG 7 佩戴:<$ITEMINFO[$STR(S50)].NAME>,<$STR(S90)>强化+<$ITEMINFO[$STR(S50)].CLIAN3VAL>...
BREAK

#IF
EQUAL D87 2
LARGE $ITEMINFO[$STR(S50)].ITEMEXT(87) 2
EQUAL $ITEMINFO[$STR(S50)].STDMODE 10
#ACT
MOV P50 $ITEMINFO[$STR(S50)].CLIAN3VAL
MULT P50 3
CALCVAR HUMAN 免伤属性 + $STR(P50)
SetProvisionalAbil 42 = $HUMAN(免伤属性)
SENDMSG 7 佩戴:<$ITEMINFO[$STR(S50)].NAME>,免伤强化+<$ITEMINFO[$STR(S50)].CLIAN3VAL>...
BREAK

#IF
EQUAL D87 3
LARGE $ITEMINFO[$STR(S50)].ITEMEXT(87) 2
EQUAL $ITEMINFO[$STR(S50)].STDMODE 11
#ACT
MOV P50 $ITEMINFO[$STR(S50)].CLIAN3VAL
MULT P50 3
CALCVAR HUMAN 免伤属性 + $STR(P50)
SetProvisionalAbil 42 = $HUMAN(免伤属性)
SENDMSG 7 佩戴:<$ITEMINFO[$STR(S50)].NAME>,免伤强化+<$ITEMINFO[$STR(S50)].CLIAN3VAL>...
BREAK

#IF
EQUAL D87 2
#ACT
BREAK

#IF
EQUAL D87 3
LARGE $ITEMINFO[$STR(S50)].ITEMEXT(87) 0
LARGE $USERMAGIC($STR(P61)).LEVEL 0
#ACT
MOV P50 $ITEMINFO[$STR(S50)].CLIAN1VAL
MULT P50 50
CALCVAR HUMAN $USERMAGIC($STR(P61)).NAME + $STR(P50)
SKILLPOWERPERMILL $USERMAGIC($STR(P61)).NAME  = $HUMAN($USERMAGIC($STR(P61)).NAME)
MOV S90 $USERMAGIC($STR(P61)).NAME

#IF
EQUAL D87 3
LARGE $ITEMINFO[$STR(S50)].ITEMEXT(87) 1
LARGE $USERMAGIC($STR(P62)).LEVEL 0
#ACT
MOV P50 $ITEMINFO[$STR(S50)].CLIAN2VAL
MULT P50 50
CALCVAR HUMAN $USERMAGIC($STR(P62)).NAME + $STR(P50)
SKILLPOWERPERMILL $USERMAGIC($STR(P62)).NAME  = $HUMAN($USERMAGIC($STR(P62)).NAME)

#IF
EQUAL D87 3
LARGE $ITEMINFO[$STR(S50)].ITEMEXT(87) 2
LARGE $USERMAGIC($STR(P63)).LEVEL 0
!EQUAL $ITEMINFO[$STR(S50)].STDMODE 10
!EQUAL $ITEMINFO[$STR(S50)].STDMODE 11
#ACT
MOV P50 $ITEMINFO[$STR(S50)].CLIAN3VAL
MULT P50 50
CALCVAR HUMAN $USERMAGIC($STR(P63)).NAME + $STR(P50)
SKILLPOWERPERMILL $USERMAGIC($STR(P63)).NAME  = $HUMAN($USERMAGIC($STR(P63)).NAME)
BREAK

#IF
EQUAL D87 3
LARGE $ITEMINFO[$STR(S50)].ITEMEXT(87) 2
EQUAL $ITEMINFO[$STR(S50)].STDMODE 10
#ACT
MOV P50 $ITEMINFO[$STR(S50)].CLIAN3VAL
MULT P50 3
CALCVAR HUMAN 免伤属性 + $STR(P50)
SetProvisionalAbil 42 = $HUMAN(免伤属性)
BREAK

#IF
EQUAL D87 3
LARGE $ITEMINFO[$STR(S50)].ITEMEXT(87) 2
EQUAL $ITEMINFO[$STR(S50)].STDMODE 11
#ACT
MOV P50 $ITEMINFO[$STR(S50)].CLIAN3VAL
MULT P50 3
CALCVAR HUMAN 免伤属性 + $STR(P50)
SetProvisionalAbil 42 = $HUMAN(免伤属性)
BREAK

}
<font color="#ff0000">;以下脚本 和当前显示的功能无关,是另外一个功能。已经停用。</font>
[@符文属性]
{

#IF
RANDOM 1
#ACT
CALCVAR HUMAN 厄运几率 = 0
CALCVAR HUMAN 嗜血几率 = 0
CALCVAR HUMAN 魔窃几率 = 0
CALCVAR HUMAN 迷惑几率 = 0
CALCVAR HUMAN 共振几率 = 0
CALCVAR HUMAN 摧残几率 = 0
CALCVAR HUMAN 厄运基值 = 0
CALCVAR HUMAN 嗜血基值 = 0
CALCVAR HUMAN 魔窃基值 = 0
CALCVAR HUMAN 迷惑基值 = 0
CALCVAR HUMAN 摧残基值 = 0
CALCVAR HUMAN 连击次数 = 0
CALCVAR HUMAN 连击几率 = 0
MOV S0
#ELSEACT
BREAK

#IF
!EQUAL $ITEMINFO[$USEITEMMAKEINDEX(0)].JEWEL(3).NAME
#ACT
INC S0 $ITEMINFO[$USEITEMMAKEINDEX(0)].JEWEL(3).NAME
INC S0 |

#IF
!EQUAL $ITEMINFO[$USEITEMMAKEINDEX(1)].JEWEL(3).NAME
#ACT
INC S0 $ITEMINFO[$USEITEMMAKEINDEX(1)].JEWEL(3).NAME
INC S0 |

#IF
!EQUAL $ITEMINFO[$USEITEMMAKEINDEX(3)].JEWEL(3).NAME
#ACT
INC S0 $ITEMINFO[$USEITEMMAKEINDEX(3)].JEWEL(3).NAME
INC S0 |

#IF
!EQUAL $ITEMINFO[$USEITEMMAKEINDEX(4)].JEWEL(3).NAME
#ACT
INC S0 $ITEMINFO[$USEITEMMAKEINDEX(4)].JEWEL(3).NAME
INC S0 |

#IF
!EQUAL $ITEMINFO[$USEITEMMAKEINDEX(5)].JEWEL(3).NAME
#ACT
INC S0 $ITEMINFO[$USEITEMMAKEINDEX(5)].JEWEL(3).NAME
INC S0 |

#IF
!EQUAL $ITEMINFO[$USEITEMMAKEINDEX(6)].JEWEL(3).NAME
#ACT
INC S0 $ITEMINFO[$USEITEMMAKEINDEX(6)].JEWEL(3).NAME
INC S0 |

#IF
!EQUAL $ITEMINFO[$USEITEMMAKEINDEX(7)].JEWEL(3).NAME
#ACT
INC S0 $ITEMINFO[$USEITEMMAKEINDEX(7)].JEWEL(3).NAME
INC S0 |

#IF
!EQUAL $ITEMINFO[$USEITEMMAKEINDEX(8)].JEWEL(3).NAME
#ACT
INC S0 $ITEMINFO[$USEITEMMAKEINDEX(8)].JEWEL(3).NAME
INC S0 |

#IF
!EQUAL $ITEMINFO[$USEITEMMAKEINDEX(9)].JEWEL(3).NAME
#ACT
INC S0 $ITEMINFO[$USEITEMMAKEINDEX(9)].JEWEL(3).NAME

#IF
EQUAL S0
#ACT
BREAK
#ELSEACT
GOTO @BUFF循环

[@BUFF循环]
#IF
!POS $STR(S0) |
#ACT
MOV S1 $STR(S0)
MOV S0
REPLACETEXT S1 一 1
REPLACETEXT S1 二 2
REPLACETEXT S1 三 3
REPLACETEXT S1 四 4
REPLACETEXT S1 五 5
REPLACETEXT S1 六 6
REPLACETEXT S1 七 7

#IF
POS $STR(S0) |
#ACT
GETVALIDSTR $STR(S0) | S1 S2
MOV S0 $STR(S2)
REPLACETEXT S1 一 1
REPLACETEXT S1 二 2
REPLACETEXT S1 三 3
REPLACETEXT S1 四 4
REPLACETEXT S1 五 5
REPLACETEXT S1 六 6
REPLACETEXT S1 七 7

#IF
POS $STR(S1) 厄运符
#ACT
COPYTEXT $STR(S1) 8 1 S3
MOV P3 $STR(S3)
READRANDOMSTR ..\QuestDiary\数据文件\极品属性\符文几率.ini S4 $STR(P3)
GETVALIDSTR $STR(S4) | S4 S5
CALCVAR HUMAN 厄运几率 = $STR(S5)
CALCVAR HUMAN 厄运基值 = $STR(S4)
SENDMSG 6 [符文的力量伴随左右]:摧残几率:<$HUMAN(厄运几率)>%,窃取生命值:<$HUMAN(厄运基值)>%-<$MULT.$HUMAN(厄运基值).2>%...

#IF
POS $STR(S1) 嗜血符
#ACT
COPYTEXT $STR(S1) 8 1 S3
MOV P3 $STR(S3)
READRANDOMSTR ..\QuestDiary\数据文件\极品属性\符文几率.ini S4 $INC.$STR(P3).10
GETVALIDSTR $STR(S4) | S4 S5
CALCVAR HUMAN 嗜血几率 = $STR(S5)
CALCVAR HUMAN 嗜血基值 = $STR(S4)
SENDMSG 6 [符文的力量伴随左右]:摧残几率:<$HUMAN(嗜血几率)>%,窃取生命值:<$HUMAN(嗜血基值)>%-<$MULT.$HUMAN(嗜血基值).2>%...

#IF
POS $STR(S1) 魔窃符
#ACT
COPYTEXT $STR(S1) 8 1 S3
MOV P3 $STR(S3)
READRANDOMSTR ..\QuestDiary\数据文件\极品属性\符文几率.ini S4 $INC.$STR(P3).20
GETVALIDSTR $STR(S4) | S4 S5
CALCVAR HUMAN 魔窃几率 = $STR(S5)
CALCVAR HUMAN 魔窃基值 = $STR(S4)
SENDMSG 6 [符文的力量伴随左右]:摧残几率:<$HUMAN(魔窃几率)>%,窃取魔法值:<$HUMAN(魔窃基值)>%-<$MULT.$HUMAN(魔窃基值).2>%...

#IF
POS $STR(S1) 迷惑符
#ACT
COPYTEXT $STR(S1) 8 1 S3
MOV P3 $STR(S3)
READRANDOMSTR ..\QuestDiary\数据文件\极品属性\符文几率.ini S4 $INC.$STR(P3).30
GETVALIDSTR $STR(S4) | S4 S5
CALCVAR HUMAN 迷惑几率 = $STR(S5)
CALCVAR HUMAN 迷惑基值 = $STR(S4)
SENDMSG 6 [符文的力量伴随左右]:摧残几率:<$HUMAN(迷惑几率)>,禁止攻击时长:<$HUMAN(迷惑基值)>秒...

#IF
POS $STR(S1) 摧残符
#ACT
COPYTEXT $STR(S1) 8 1 S3
MOV P3 $STR(S3)
READRANDOMSTR ..\QuestDiary\数据文件\极品属性\符文几率.ini S4 $INC.$STR(P3).40
GETVALIDSTR $STR(S4) | S4 S5
CALCVAR HUMAN 摧残几率 = $STR(S5)
CALCVAR HUMAN 摧残基值 = $STR(S4)
SENDMSG 6 [符文的力量伴随左右]:摧残几率:<$HUMAN(摧残几率)>,禁锢时长:<$HUMAN(摧残基值)>秒...

#IF
POS $STR(S1) 共振符
#ACT
COPYTEXT $STR(S1) 8 1 S3
MOV P3 $STR(S3)
READRANDOMSTR ..\QuestDiary\数据文件\极品属性\符文几率.ini S4 $INC.$STR(P3).50
CALCVAR HUMAN 共振几率 = $STR(S4)
SENDMSG 6 [符文的力量伴随左右]:共振几率:<$HUMAN(共振几率)>%,对方生命值高于自身触发...

#IF
POS $STR(S1) 连击符
#ACT
COPYTEXT $STR(S1) 8 1 S3
MOV P3 $STR(S3)
SENDMSG 7
READRANDOMSTR ..\QuestDiary\数据文件\极品属性\符文几率.ini S4 $INC.$STR(P3).60
CALCVAR HUMAN 连击几率 = $STR(S4)
SENDMSG 6 [符文的力量伴随左右]:连击几率:<$HUMAN(连击几率)>%,造成3x3范围伤害,并造成恐惧特效...

#IF
!EQUAL S0
#ACT
CLEARVAR S1 5
GOTO @BUFF循环
#ELSEACT
SENDMSG 7 [轮回战神]:符文的力量已激活...
BREAK

}复制代码[@TAKEOFFALL]
#IFONE
EQUAL $PARAM(3) 0
EQUAL $PARAM(3) 1
#ACT
MOV D87 1
MOV S50 $USEITEMMAKEINDEX($PARAM(3))
#CALL [\游戏功能\穿戴装备.txt] @淬炼属性
复制代码[@TAKEONALL]
#ACT
MOV D87 2
MOV S50 $PARAM(2)
#CALL [\游戏功能\穿戴装备.txt] @淬炼属性
复制代码上面是关于技能淬炼的脚本

------------------------------

下面是器灵属性的制作。

这里就不贴脚本了,只是说说实现方式,因为可能的类型很多,可以完全自定义,做出任意你需要的东西。

引擎需要支持宝石镶嵌。
以时光模式为例。

装备位置 237 238 239是镶嵌的位置。

我以237 为自定义的图片。数据库自己添加。

238作为一个属性值,图片items目录: 60001 -60009 =分别代表 1 - 9 图片的偏移量自己计算。

239作为一个属性值,图片items目录: 60011 -60019 =分别代表 1 - 9 图片的偏移量自己计算。

[@获得物品]
#ACT
GIVE 裁决 1
SETITEMJEWEL $PARAM(10) 1 60050  这里的60050其实是自定义的物品。不过是比较大的图片。下面的也是。
SETITEMJEWEL $PARAM(10) 2 60001

SETITEMJEWEL $PARAM(10) 2 60011
这里使用60050 等数字表示,是为了告诉大家,这个物品的looks
实际上,他的名字应该是 空格,也就是不可见的中文。这样就不会出现如上图的----横线。不会显示文字。

只是分享给听得懂的人,很多人说听不懂的,也别问我具体怎么实现的。

一个玩了十五年传世的老油条。

另外脚本不是最优脚本,可以自行编写。只是提供个范本。
甚至连测试都么测试,因为之前的脚本不是这样的。删除了一部分东西。添加了一部分东西。

评论

发表评论必须先登陆, 您可以 登陆 或者 注册新账号 !


在线咨询: 问题反馈
客服QQ:174666394

有问题请留言,看到后及时答复