|
今天讲解下会员证道具的代码和原理,高手可以路过。
以longzoro的源码为例,打开item_event.c找到#ifdef _VIP_RIDE
代码如下:
void ITEM_VipRide( int charaindex, int toindex, int haveitemindex)
{
if(CHAR_getInt( charaindex , CHAR_VIPRIDE)!=1
|| CHAR_getInt( charaindex , CHAR_LOWRIDEPETS)&RIDE_PET14!=RIDE_PET14){ int LRCode = CHAR_getInt( charaindex, CHAR_LOWRIDEPETS);
LRCode = LRCode|RIDE_PET14;
CHAR_setInt( charaindex, CHAR_LOWRIDEPETS, LRCode);
CHAR_sendStatusString( charaindex, "x");
CHAR_setInt( charaindex , CHAR_VIPRIDE, 1);
CHAR_talkToCli( charaindex, -1, "恭喜你,你已成为正式会员了!", CHAR_COLORYELLOW );
CHAR_DelItem( charaindex, haveitemindex);
}else
CHAR_talkToCli( charaindex, -1, "你已是会员了,没必要再使用!", CHAR_COLORRED );
}
1、看void ITEM_VipRide( int charaindex, int toindex, int haveitemindex)
这里是对会员证道具做了声明,对应的头文件是item_event.h
2、蓝色部分的意思就是当这个没有会员标记的时候,或者不可能骑乘ID为14的骑宠的时候就可以吃会员证了。CHAR_VIPRIDE
则是在CHAR_BASE里声明的一个函数,用来表示是否为会员标记的判断,这里0为非会员,1为会员
3、红色部分就是针对吃证后是否可以骑乘14号骑宠加的骑乘码。
4、CHAR_setInt( charaindex, CHAR_LOWRIDEPETS, LRCode); //就表示设置给吃证的人物增加骑乘码实现可以骑乘14号骑宠的
效果
5、CHAR_sendStatusString( charaindex, "x"); //表示更新人物的骑乘码
6、CHAR_setInt( charaindex , CHAR_VIPRIDE, 1); //表示给人物设置会员判断标识 上面已经说到了0为非会员,1为会员
7、CHAR_talkToCli( charaindex, -1, "恭喜你,你已成为正式会员了!", CHAR_COLORYELLOW ); //吃完证后系统的提示
8、CHAR_DelItem( charaindex, haveitemindex); //吃完证后删除证,如果没有这句话,证使用后不会消失
9、CHAR_talkToCli( charaindex, -1, "你已是会员了,没必要再使用!", CHAR_COLORRED ); //这句很明白了,是会员了就提示无需吃证 |
|