?? npc_transmigration.c
字號(hào):
//
// 旦 □正旦楮溢及凳蕙
//
//*******************************************************
BOOL NPC_TransmigrationStatus(int meindex, int toindex,int work[10])
{
int vital, str, tgh, dex;
int quest , level ,equ;
int t_quest, t_level;
int total,ans;
float tmp,lvup;
vital = CHAR_getInt(toindex,CHAR_VITAL);
str = CHAR_getInt(toindex,CHAR_STR);
tgh = CHAR_getInt(toindex,CHAR_TOUGH);
dex = CHAR_getInt(toindex,CHAR_DEX);
//弁巨旦玄白仿弘毛民尼永弁
quest = NPC_TransmigrationQuestCheck( toindex);
//伊矛伙
level = CHAR_getInt(toindex,CHAR_LV);
work[0] = level;
work[1] = quest;
equ = CHAR_getInt(toindex, CHAR_TRANSEQUATION);
t_quest = (float)(( equ >> 16 ) & 0xFFFF);
t_level = (float)(( equ >> 0 ) & 0xFFFF);
if( level > 130 ) level = 130;
t_quest = t_quest + quest;
t_level = t_level + level;
CHAR_setInt(toindex, CHAR_TRANSEQUATION,
( t_quest << 16 )+( t_level << 0 )
);
total = vital + str + tgh + dex;
ans = NPC_TransCalculation(toindex, total);
work[2] = vital;
tmp = (float)vital/total * ans;
work[3] = Rounding(tmp,1) * 100;
work[4] = str;
tmp = (float)str/total * ans;
work[5] = Rounding(tmp,1) * 100;
work[6] = tgh;
tmp = (float)tgh/total * ans;
work[7] = Rounding(tmp,1) * 100;
work[8] = dex;
tmp = (float)dex/total * ans;
work[9] = Rounding(tmp,1) * 100;
//vital本永玄
if(work[3] < 0) work[3] = 0;
CHAR_setInt(toindex, CHAR_VITAL, work[3]);
//str本永玄
if(work[5] < 0) work[5] = 0;
CHAR_setInt(toindex, CHAR_STR, work[5]);
//tghr本永玄
if(work[7] < 0) work[7] = 0;
CHAR_setInt(toindex, CHAR_TOUGH, work[7]);
//dex本永玄
if(work[9] < 0) work[9] = 0;
CHAR_setInt(toindex, CHAR_DEX, work[9]);
//伊矛伙 禾奶件玄手 凳
lvup = CHAR_getInt(toindex, CHAR_SKILLUPPOINT );
/*#ifdef _TRANS_6
if( CHAR_getInt(toindex, CHAR_TRANSMIGRATION) == 6)
lvup = 620;
#endif*/
lvup = lvup / 12;
lvup = Rounding(lvup, 1);
if(lvup < 0) lvup = 0;
CHAR_setInt(toindex, CHAR_SKILLUPPOINT, (int)lvup);
/* 旦平伙失永皿匹五兇日仇木毛霜月 */
if( CHAR_getInt( toindex,CHAR_SKILLUPPOINT ) >=1 )
CHAR_Skillupsend(toindex);
return TRUE;
}
/*----------------------------
* 矢永玄毛馨笛允月
------------------------------*/
BOOL NPC_TransmigrationAddPet(int meindex, int talker, int petid)
{
int ret;
char msgbuf[64];
int enemynum;
int i,j;
int petindex;
int petindex2;
for( i = 0 ;i < CHAR_MAXPETHAVE ; i++) {
petindex = CHAR_getCharPet( talker, i);
if( petindex == -1 ) break;
}
if(i == CHAR_MAXPETHAVE) return FALSE;
enemynum = ENEMY_getEnemyNum();
for( i = 0; i < enemynum; i ++ ) {
if( ENEMY_getInt( i, ENEMY_ID) == petid) {
break;
}
}
if( i == enemynum ) return FALSE;
ret = ENEMY_createPetFromEnemyIndex( talker, i);
for( i = 0; i < CHAR_MAXPETHAVE; i ++ ){
if( CHAR_getCharPet( talker, i ) == ret )break;
}
if( i == CHAR_MAXPETHAVE ) i = 0;
if( CHAR_CHECKINDEX( ret ) == TRUE ){
CHAR_setMaxExpFromLevel( ret, CHAR_getInt( ret, CHAR_LV ));
}
petindex2 = CHAR_getCharPet(talker, i);
if( !CHAR_CHECKINDEX( petindex2) ) return FALSE;
snprintf( msgbuf,sizeof( msgbuf), "拿到%s。",
CHAR_getChar(petindex2,CHAR_NAME));
CHAR_talkToCli( talker, -1, msgbuf, CHAR_COLORWHITE);
for(j = 0; j < CHAR_MAXPETHAVE; j++){
petindex = CHAR_getCharPet(talker, j);
if( !CHAR_CHECKINDEX( petindex) ) continue;
CHAR_complianceParameter( petindex );
snprintf( msgbuf, sizeof( msgbuf ), "K%d", j );
CHAR_sendStatusString( talker, msgbuf );
snprintf( msgbuf, sizeof( msgbuf ), "W%d", j );
CHAR_sendStatusString( talker, msgbuf );
}
// 矢永玄毛澎卞 木兇夫弘
LogPet(
CHAR_getChar( talker, CHAR_NAME ), /* 平乓仿 */
CHAR_getChar( talker, CHAR_CDKEY ),
CHAR_getChar( petindex2, CHAR_NAME),
CHAR_getInt( petindex2, CHAR_LV),
"TenseiGet",
CHAR_getInt( talker,CHAR_FLOOR),
CHAR_getInt( talker,CHAR_X ),
CHAR_getInt( talker,CHAR_Y ),
CHAR_getChar( petindex2, CHAR_UNIQUECODE) // shan 2001/12/14
);
return TRUE;
}
#ifdef _TEACHER_SYSTEM
extern int FMAdvTbl[];
#endif
int NPC_TransmigrationFlg_CLS(int meindex, int toindex)
{
#ifdef _TEACHER_SYSTEM
int iGetFame = 0;
#endif
#ifdef _PET_TRANS
#ifdef _PROSK99
int endevflg[]={69,70,71,72,109,118,122,131,127,158,159,181,-1};//181:白狼獎(jiǎng)品
#else
int endevflg[]={69,70,71,72,109,118,122,131,127,158,159,-1};
#endif
int nowevflg[]={69,70,71,72,-1};
#endif
#ifdef _TRANS_6
int flg[6] = {48,49,50,51,52,179};
#else
int flg[5] = {48,49,50,51,52};
#endif
int num= CHAR_getInt(toindex ,CHAR_TRANSMIGRATION);
int i;
#ifdef _PET_TRANS
i=0;
while(endevflg[i] != -1 ) {
if( NPC_EventCheckFlg( toindex, endevflg[i] ) == FALSE ) {
endevflg[i] = 0;
}
i++;
}
i=0;
while( nowevflg[i] != -1 ) {
if( NPC_NowEventCheckFlg( toindex, nowevflg[i] ) == FALSE ) {
nowevflg[i] = 0;
}
i++;
}
#endif
CHAR_setInt(toindex,CHAR_ENDEVENT,0);
CHAR_setInt(toindex,CHAR_ENDEVENT2,0);
CHAR_setInt(toindex,CHAR_ENDEVENT3,0);
#ifdef _NEWEVENT
CHAR_setInt(toindex,CHAR_ENDEVENT4,0);
CHAR_setInt(toindex,CHAR_ENDEVENT5,0);
CHAR_setInt(toindex,CHAR_ENDEVENT6,0);
#endif
CHAR_setInt(toindex,CHAR_NOWEVENT,0);
CHAR_setInt(toindex,CHAR_NOWEVENT2,0);
CHAR_setInt(toindex,CHAR_NOWEVENT3,0);
#ifdef _NEWEVENT
CHAR_setInt(toindex,CHAR_NOWEVENT4,0);
CHAR_setInt(toindex,CHAR_NOWEVENT5,0);
CHAR_setInt(toindex,CHAR_NOWEVENT6,0);
#endif
#ifdef _ADD_NEWEVENT // WON 多增任務(wù)旗標(biāo)
CHAR_setInt(toindex,CHAR_ENDEVENT7,0);
CHAR_setInt(toindex,CHAR_NOWEVENT7,0);
CHAR_setInt(toindex,CHAR_ENDEVENT8,0);
CHAR_setInt(toindex,CHAR_NOWEVENT8,0);
#endif
//鱉戲白仿弘毛 化月
#ifdef _PET_TRANS
i=0;
while( endevflg[i] != -1 ) {
if( endevflg[i] > 0 ) {
// shan Begin
//NPC_EventSetFlg( toindex, endevflg[i]);
s_eventsetend(toindex, endevflg[i]);
// End
}
i++;
}
i=0;
while( nowevflg[i] != -1 ) {
if( nowevflg[i] > 0 ) {
NPC_NowEventSetFlg( toindex, nowevflg[i]);
}
i++;
}
#endif
for(i = 0 ;i < num ;i++) {
NPC_EventSetFlg(toindex, flg[i]);
// CoolFish: Family Adv 2001/8/4
AddFMAdv(toindex, flg[i]);
#ifdef _TEACHER_SYSTEM
// 累加所得聲望
if(flg[i] < 179) iGetFame += FMAdvTbl[flg[i]];
#endif
}
#ifdef _TEACHER_SYSTEM
iGetFame /= 20; // 導(dǎo)師獲得學(xué)生所得聲望的 5% (1/20)
// 檢查所得的聲望有沒有大於0
if(iGetFame > 0){
// 檢查有沒有導(dǎo)師
if(strlen(CHAR_getChar(toindex,CHAR_TEACHER_ID)) > 0 && strlen(CHAR_getChar(toindex,CHAR_TEACHER_NAME)) > 0){
int iPlayernum = CHAR_getPlayerMaxNum();
char szMsg[128];
// 檢查導(dǎo)師在不在線上
for(i=0;i<iPlayernum;i++){
if(CHAR_getCharUse(i) == FALSE) continue;
if(strcmp(CHAR_getChar(toindex,CHAR_TEACHER_ID),CHAR_getChar(i,CHAR_CDKEY)) == 0 &&
strcmp(CHAR_getChar(toindex,CHAR_TEACHER_NAME),CHAR_getChar(i,CHAR_NAME)) == 0){
float fGetFame = (float)iGetFame/100;
// 導(dǎo)師在線上
CHAR_setWorkInt(i,CHAR_WORK_GET_TEACHER_FAME,CHAR_getWorkInt(i,CHAR_WORK_GET_TEACHER_FAME) + iGetFame);
sprintf(szMsg,"獲得學(xué)生 %s %.2f 點(diǎn)聲望",CHAR_getChar(toindex,CHAR_NAME),fGetFame);
CHAR_talkToCli(i,-1,szMsg,CHAR_COLORYELLOW);
break;
}
}
}
}
#endif
#ifdef _TRANS_6
if( num == 6 ){
NPC_EventSetFlg(toindex, 63); //不給玩家解英雄的祝福
NPC_EventSetFlg(toindex, 136);//不給玩家解淚之石
NPC_EventSetFlg(toindex, 175);//雷爾任務(wù)
NPC_EventSetFlg(toindex, 176);//雷爾任務(wù)
}
#endif
return 1;
}
//******************************************************************
//矢永玄毛壅允
//******************************************************************
BOOL NPC_TransmigrationDelPetDel(int meindex,int talker,int petsel)
{
int petindex;
int fd = getfdFromCharaIndex( talker );
char msgbuf[64];
char szPet[128];
int defpet;
petindex = CHAR_getCharPet( talker, petsel);
if( !CHAR_CHECKINDEX(petindex) ) return FALSE;
/*--公及平乓仿互爵 卅日}矢永玄毛丹日內(nèi)蔽 --*/
if( CHAR_getWorkInt( CONNECT_getCharaindex( fd),
CHAR_WORKBATTLEMODE) != BATTLE_CHARMODE_NONE) return FALSE;
/*--公及矢永玄互田玄伙井升丹井及民尼永弁--*/
defpet = CHAR_getInt( talker, CHAR_DEFAULTPET);
if(defpet == petsel){
CHAR_setInt( talker, CHAR_DEFAULTPET, -1);
lssproto_KS_send( fd, -1, TRUE);
}
snprintf( msgbuf,sizeof( msgbuf), "交出%s。",
CHAR_getChar( petindex, CHAR_NAME)); CHAR_talkToCli( talker, -1, msgbuf, CHAR_COLORWHITE);
// 矢永玄毛澎 仄兇夫弘
LogPet(
CHAR_getChar( talker, CHAR_NAME ), /* 平乓仿 */
CHAR_getChar( talker, CHAR_CDKEY ),
CHAR_getChar( petindex, CHAR_NAME),
CHAR_getInt( petindex, CHAR_LV),
"TenseiDel",
CHAR_getInt( talker,CHAR_FLOOR),
CHAR_getInt( talker,CHAR_X ),
CHAR_getInt( talker,CHAR_Y ),
CHAR_getChar( petindex, CHAR_UNIQUECODE) // shan 2001/12/14
);
/* 切 井日壅允 */
CHAR_setCharPet( talker, petsel, -1);
CHAR_endCharOneArray( petindex );
snprintf( szPet, sizeof( szPet ), "K%d", petsel);
// 蕙仄中矢永玄旦 □正旦霜曰勾仃月
CHAR_sendStatusString( talker, szPet );
return TRUE;
}
//***********************************************************
// 壅允矢永玄毛繭允[
//***********************************************************
BOOL NPC_TransmigrationDelPet(int meindex, int talker)
{
int petsel;
int petindex;
int num;
int j, k;
// int petid[4] = {1, 2, 3, 4}; //矢永玄及 毛隙爛
int petid[4] = {693, 694, 695, 696}; //矢永玄及 毛隙爛
// int petidfinal[4] = {11, 12, 13, 14}; //矢永玄及 毛隙爛
int petidfinal[4] = {693, 694, 695, 696}; //矢永玄及 毛隙爛
int petwork[4] ={ -1, -1, -1, -1};
num = CHAR_getInt(talker, CHAR_TRANSMIGRATION);
num--;
if(num < 4 ){
//隙爛矢永玄毛手勻化中月井矢永玄民尼永弁
for(petsel=0 ; petsel < CHAR_MAXPETHAVE ; petsel++){
petindex = CHAR_getCharPet( talker, petsel);
if( petindex == -1 ) continue;
//矢永玄及 反域踝井"
if(CHAR_getInt( petindex, CHAR_PETID) != petid[num]) continue;
//仇仇引匹五兇日公及矢永玄反 午 蠅
break;
}
if(petsel == CHAR_MAXPETHAVE) return FALSE;
if(NPC_TransmigrationDelPetDel(meindex, talker, petsel) == FALSE) return FALSE;
}
#ifdef _TRANS_6
else if( num == 4 )
#else
else
#endif
{
//詭莢
for(j = 0; j < 4; j++){
//隙爛矢永玄毛手勻化中月井矢永玄民尼永弁
for(petsel=0 ; petsel < CHAR_MAXPETHAVE ; petsel++){
petindex = CHAR_getCharPet( talker, petsel);
if( petindex == -1 ) continue;
//矢永玄及 反域踝井"
if(CHAR_getInt( petindex, CHAR_PETID) != petidfinal[j]) continue;
petwork[j] = petsel;
//仇仇引匹五兇日公及矢永玄反 午 蠅
break;
}
}
for(k=0; k < 4 ;k++)
{
if(petwork[k] == -1) return FALSE;
}
for(k = 0 ; k < 4 ;k++){
if(NPC_TransmigrationDelPetDel(meindex, talker, petwork[k]) == FALSE) return FALSE;
}
}
#ifdef _TRANS_6
else{
/*int lasttalkelder = 2;//烏力
if( CHAR_getInt( talker, CHAR_LASTTALKELDER) == 1 )//瑪麗娜絲
lasttalkelder = 112;//凱比
else if( CHAR_getInt( talker, CHAR_LASTTALKELDER) == 2 )//加加
lasttalkelder = 102;//克克爾
else if( CHAR_getInt( talker, CHAR_LASTTALKELDER) == 3 )//卡魯它那
lasttalkelder = 34;//威伯
*/
//隙爛矢永玄毛手勻化中月井矢永玄民尼永弁
for(petsel=0 ; petsel < CHAR_MAXPETHAVE ; petsel++){
int petid;
petindex = CHAR_getCharPet( talker, petsel);
if( petindex == -1 ) continue;
//矢永玄及 反域踝井"
if(CHAR_getInt( petindex, CHAR_TRANSMIGRATION) != 2) continue;
petid=CHAR_getInt( petindex, CHAR_PETID );
if (petid == 2) break;
if (petid == 112) break;
if (petid == 102) break;
if (petid == 34) break;
//仇仇引匹五兇日公及矢永玄反 午 蠅
}
if(petsel == CHAR_MAXPETHAVE) return FALSE;
if(NPC_TransmigrationDelPetDel(meindex, talker, petsel) == FALSE) return FALSE;
}
#endif
return TRUE;
}
#ifdef _PET_TRANS
void NPC_PetTransMan_selectWindow(int meindex,int toindex,int num,int select)
{
char token[1024],buf[1024],buf1[256];
char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE];
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -