|
老飞的完美武器虽然我也经历过不过早忘了咋回事,应该是系统赠送的吧,现在星辰搞出的我也没玩过不知道咋产出的,既然有人说是开箱子,那咱就用箱子得到好了。$ U$ a1 f) C# r5 K4 ^
, P. q- a @' c
首先是武器名称为红色,看我的另一篇文章有介绍,星辰是设置了完美武器这么个属性,就是U武、绿武、普通的那个分类,具体哪栏我忘了。可以自己设置,我出于测试就以dwItemRare==300 这个属性来判断好了。0 W7 h# a8 s) j0 P$ n+ M4 @6 M
( t* N8 n/ O3 n* R! p& J& O然后是开箱子得到装备,在user.cpp下的函数。7 s1 [. Q# }$ t8 Z6 G* m$ y
4 a% B- j6 J5 w. V! A
DoUseGiftbox( CItemElem* pItemElem, DWORD dwItemId )//这个是开随机箱子, P0 ^6 V, p6 M
$ \+ \; z1 G+ t1 {& O( e* ^
DoUsePackItem( CItemElem* pItemElem, PPACKITEMELEM pPackItemElem )//这个是开普通箱子" A. i q# }7 U7 t! r# k' ~) \) g: p% S1 T
9 c& ^ g7 T; w) h9 K
在这两个函数体下加一个判断就行了
4 E+ Z4 A/ `0 V, x+ T0 v" ~7 u( _$ w4 z, N: Q$ y
if(itemElem.GetProp()->dwItemRare==300)8 R- X: U: Z2 ^
{! s5 f5 m7 ~2 r) V5 U
itemElem.m_bItemResist=(BYTE)xRandom(1,6);
" Z7 m F8 v; p1 I& L6 p' } itemElem.m_nResistAbilityOption=10;
6 U* P/ }0 k4 ~! h W2 r9 p& l' X }
; l' S6 W; i0 B3 Y" Y4 Q. w- @* ?* J' U" K5 K
就是上面这句。
2 p* o& U& `2 K2 i. P0 z
) ~0 k. I+ b* y. w5 r至于加在哪里,不用我说了吧,就在创建物品之前就行了。 t7 m. z8 i# K: F" `
6 [0 v, ]7 Y5 D
- [ C. M( ?" r0 L- X% ?" \
+ P- L9 E/ Z) L$ W0 ~ 对了,现在的端一般都是加20才满的,如果不想让玩家还能继续加工,就在加工那写个判断了,如果为完美武器则提示,特殊装备无法加工然后返回即可。也可以直接让他属性定义成20,这样已经满了就不用再管了。( p8 \8 Z( S7 v
, [0 |* p8 A8 C8 j" l H
8 Z2 k1 n5 }. O: z4 h
+ F- o2 v( Y' t$ ]# v. c
. N/ }6 v8 y% q7 K1 A+ D* a9 s" [
9 w9 s5 P5 X; F% m* E7 C" }( F活动给物品的话那就模仿这里面的创建物品的句子写就行了。
5 U) q' y1 a) _# q& h3 H* ]2 ]* k" i$ t' k3 U. e: I
以上写法已经通过验证。不成功自己找原因了。! Y3 S5 e! E8 y+ B. L3 {2 h
- @2 N" v& Z( Z+ B* `: B
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// / Q4 I. R! D2 I5 j
- G3 l W$ n J+ ]" V+ w4 u8 n
BOOL CMover::CreateItem( CItemBase* pItemBase, BYTE* pnId, short* pnNum, BYTE nCount )
( k: Y3 d0 Y1 Y& H% f8 d
& a3 t% c% D" p' Z 在这个函数下修改的话,只要修改这一处,任何方式获得的都是完美武器= =
5 _- K& k- W& Q- j! e% u o% K3 ^" L
从B包拿出物品也会调用,所以不适合用在随机属性的物品上,这样可以随时换属性了- -% ?6 I+ L, u: f: G* a% j& o
5 H( s% A' o7 H+ k. l2 @
6 N0 ~% i/ ]) D$ t$ _. b |
|