|
以下會說明如何增加線上泡點的流程, 主要以關鍵字帶過, 因為我也懶得解釋..
1. 在 char_base.h 的 CHAR_DATAINT 加上
CHAR_TIMEPOINT
在 char_base.h 的 CHAR_DATAWORKINT 加上
CHAR_WORKINTTIMEPOINT
2. 在 char_base.c 的 CHAR_setintdata 裡加上對應的存檔字串
"timepoint"
3. 在 net.c 的 CONNECT_SysEvent_Loop 適當位置加上 (可以自行決定要加在多少循環間隔)
if(gettimepointinterval()>0){
if(CHAR_CHECKINDEX(charaindex) && (gettimepointmap() == -1 || CHAR_getInt( charaindex,CHAR_FLOOR) == gettimepointmap())
//離線掛機不可獲得泡點
&& CHAR_getWorkInt(charaindex, CHAR_WORK_OFFLINE)==0
){
if(CHAR_getWorkInt(charaindex, CHAR_WORKINTTIMEPOINT) + 10 >= gettimepointinterval()){
CHAR_setWorkInt( charaindex, CHAR_WORKINTTIMEPOINT, 0 ); //歸零
int point = gettimepointnum(CHAR_getInt( charaindex,CHAR_TRANSMIGRATION));
//避免溢位
if(CHAR_getInt( charaindex,CHAR_TIMEPOINT) + point>0){
CHAR_setInt( charaindex,CHAR_TIMEPOINT, CHAR_getInt( charaindex,CHAR_TIMEPOINT) + point);
}
}else{
CHAR_setWorkInt( charaindex, CHAR_WORKINTTIMEPOINT, CHAR_getWorkInt(charaindex, CHAR_WORKINTTIMEPOINT) + 10 );
}
}
}
gettimepointinterval() 為多久時間間隔可以獲得點數
gettimepointmap() 為有效的泡點地圖
gettimepointnum(CHAR_getInt( charaindex,CHAR_TRANSMIGRATION)) 根據轉數決定給予的點數
最後, 泡點點數可以用 CHAR_getInt( charaindex,CHAR_TIMEPOINT) 取得, 用CHAR_setInt修改數值,
其他部分就不多說, 可以直接寫進服務端的NPC模板或導入LUA使用.
|
|