|
|
老飞的完美武器虽然我也经历过不过早忘了咋回事,应该是系统赠送的吧,现在星辰搞出的我也没玩过不知道咋产出的,既然有人说是开箱子,那咱就用箱子得到好了。
7 w3 O6 L4 Z2 p8 g# c! f% i- B; K& M$ _: y0 Q
首先是武器名称为红色,看我的另一篇文章有介绍,星辰是设置了完美武器这么个属性,就是U武、绿武、普通的那个分类,具体哪栏我忘了。可以自己设置,我出于测试就以dwItemRare==300 这个属性来判断好了。8 l- Y; T4 U' t& J- @# T
2 f& @" T$ D& m
然后是开箱子得到装备,在user.cpp下的函数。) W- t" O. `0 D& P8 H
; U. E: u. k8 m0 }4 a
DoUseGiftbox( CItemElem* pItemElem, DWORD dwItemId )//这个是开随机箱子
* ?- d [* B8 w. I: N2 O4 V+ I% w, ^- v" ]- f
DoUsePackItem( CItemElem* pItemElem, PPACKITEMELEM pPackItemElem )//这个是开普通箱子9 R* j, a, I" S
( W \0 Z" w, f; M4 i 在这两个函数体下加一个判断就行了8 j6 C* j& g4 q6 J; ~) Q
+ Q G3 p0 G, i Q- q( |$ a
if(itemElem.GetProp()->dwItemRare==300)) q' r, P. Z# Y3 ]
{
$ a& y8 B& s/ A6 {2 v9 e itemElem.m_bItemResist=(BYTE)xRandom(1,6);
: ^: q8 m+ W& a9 @& K itemElem.m_nResistAbilityOption=10;( P- F3 I+ t& S, j5 t* O, n8 G5 a
}4 q4 `$ f& K) @- k6 y% F- [
- ]) x" n) v8 F" Q
就是上面这句。
+ s% y& G0 v! {" H3 T* m% r9 M5 D: Y1 d/ e3 t) P
至于加在哪里,不用我说了吧,就在创建物品之前就行了。
! E$ B* N. E M9 K% x- L! ]7 Y/ D5 D5 l4 ^7 z
& }% D* Z% {7 R' K6 L, K$ X- f9 U# n; x0 m; Y" }: E
对了,现在的端一般都是加20才满的,如果不想让玩家还能继续加工,就在加工那写个判断了,如果为完美武器则提示,特殊装备无法加工然后返回即可。也可以直接让他属性定义成20,这样已经满了就不用再管了。
" ?- {* p% C% ? x3 W1 h
6 h- q& S+ T7 ~4 P8 ~7 ?9 ?, A2 f4 e
4 R# t; W( u1 a+ J& N# Q. d5 ^; k8 R% T; w9 S
$ ^0 a" g( R8 b- U/ z
6 G, z9 Q) y7 i6 m& H
活动给物品的话那就模仿这里面的创建物品的句子写就行了。
. t y' _ Z4 { Z
. c$ A$ ], w4 v" q9 i& C6 i6 q以上写法已经通过验证。不成功自己找原因了。
8 L9 J4 d( n) A5 \6 u5 F( |( A# r) z( T3 F6 k0 n' [ i7 h" m
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ( B0 ~9 z# ]3 t' W) q& ^
- E, D) G# G8 h# o6 j) Y+ G9 U& g1 y
BOOL CMover::CreateItem( CItemBase* pItemBase, BYTE* pnId, short* pnNum, BYTE nCount )
- r3 B# }6 V4 Q6 J! w/ k3 ?. |* E! V0 m7 m4 \0 n
在这个函数下修改的话,只要修改这一处,任何方式获得的都是完美武器= =
) }% f, _3 S Z3 k6 Y! M2 Z- T. s# }! _# |( c
从B包拿出物品也会调用,所以不适合用在随机属性的物品上,这样可以随时换属性了- -2 \! J2 Q k" q) N9 D7 J
3 b; Z0 ]0 ?# {- `2 s3 N# I3 @2 {
, w; ?8 R' s3 j |
|