?? trade.c
字號:
if (getStringFromIndexWithDelim(toitembuf, "|", 15, token, sizeof(token)) == TRUE)
strcpy(l, token);
if (getStringFromIndexWithDelim(toitembuf, "|", 16, token, sizeof(token)) == TRUE)
toitemindex6 = atoi(token);
#endif
#ifdef _TRADESYSTEM2 // (不可開) Syu ADD 新交易系統(tǒng)
//檢查有無重復交易的道具
for ( ii = 0 ; ii < 15 ; ii ++ ) {
for ( jj = ii + 1 ; jj < 15 ; jj ++ ) {
if ( myItem[ii] == myItem[jj] )
if ( myItem[ii] != -1 )
return -1 ;
}
}
for ( ii = 21 ; ii < 36 ; ii ++ ) {
for ( jj = ii + 1 ; jj < 36 ; jj++ ) {
if ( myItem[ii] == myItem[jj] )
if ( myItem[ii] != -1 )
return -1 ;
}
}
#else
// shan hjj add 洗道具
if (itemindex1==itemindex2){
if (itemindex1!=-1){
return -1;
}
}
if (itemindex4==itemindex5){
if (itemindex4!=-1){
return -1;
}
}
// End
#endif
#ifdef _TRADESYSTEM2 // (不可開) Syu ADD 新交易系統(tǒng)
//比對雙方交易的物品是否都正確
for ( ii = 0 ; ii < 21 ; ii ++ ) {
if ( myItem[ii] != oppItem[ii+21] ) {
tradeflag = FALSE ;
break;
}
}
for ( ii = 21 ; ii < 42 ; ii ++ ){
if ( myItem[ii] != oppItem[ii-21]) {
tradeflag = FALSE;
break;
}
}
//雙方內(nèi)容正確開始進行處理
if ( tradeflag == TRUE ) {
//計算雙方道具的加減
for ( ii = 0 ; ii < 15 ; ii ++ ) {
if ( myItem[ii] != -1 ) {
swapitem1--;
swapitem2++;
}
}
for ( ii = 21 ; ii < 36 ; ii ++ ) {
if ( myItem[ii] != -1 ) {
swapitem1++;
swapitem2--;
}
}
#else
if ((strcmp(a, j) == 0) && (strcmp(b, k) == 0) && (strcmp(c,l) == 0)
&& (strcmp(d, g) == 0) && (strcmp(e, h) == 0) && (strcmp(f, i) == 0)
&& (itemindex1 == toitemindex4) && (itemindex2 == toitemindex5)
&& (itemindex3 == toitemindex6) && (itemindex4 == toitemindex1)
&& (itemindex5 == toitemindex2) && (itemindex6 == toitemindex3))
{
// 檢驗雙方物品欄是否有空位
if ((strcmp(a, "I") == 0) && (itemindex1 != -1)){
swapitem1--;
swapitem2++;
}
if ((strcmp(b, "I") == 0) && (itemindex2 != -1)){
swapitem1--;
swapitem2++;
}
if ((strcmp(d, "I") == 0) && (itemindex4 != -1)){
swapitem1++;
swapitem2--;
}
if ((strcmp(e, "I") == 0) && (itemindex5 != -1)){
swapitem1++;
swapitem2--;
}
#endif
if (swapitem1 > CHAR_findTotalEmptyItem(meindex))
return -2;
toindex = CONNECT_getCharaindex(tofd);
if (!CHAR_CHECKINDEX(toindex)) return -1;
if (swapitem2 > CHAR_findTotalEmptyItem(toindex))
return -3;
#ifdef _TRADESYSTEM2 // (不可開) Syu ADD 新交易系統(tǒng)
//取得交換的金錢
if ( myItem[20] != -1 ) gold1 += myItem[20] ;
if ( myItem[41] != -1 ) gold2 += myItem[41] ;
#else
// 檢查雙方金錢
if ((strcmp(a, "G") == 0) && (itemindex1 != -1)) gold1 += itemindex1;
if ((strcmp(b, "G") == 0) && (itemindex2 != -1)) gold1 += itemindex2;
if ((strcmp(d, "G") == 0) && (itemindex4 != -1)) gold2 += itemindex4;
if ((strcmp(e, "G") == 0) && (itemindex5 != -1)) gold2 += itemindex5;
#endif
if (gold1 > CHAR_getMaxHaveGold( meindex) ) return -4;
if (gold1 > CHAR_getInt(meindex, CHAR_GOLD)) return -5;
if (gold2 > CHAR_getMaxHaveGold( toindex)) return -6;
if (gold2 > CHAR_getInt(toindex, CHAR_GOLD)) return -7;
if ((gold2 + CHAR_getInt(meindex, CHAR_GOLD) - gold1) > CHAR_getMaxHaveGold( meindex) ) return -8;
if ((gold1 + CHAR_getInt(toindex, CHAR_GOLD) - gold2) > CHAR_getMaxHaveGold( toindex)) return -9;
#ifdef _TRADESYSTEM2 // (不可開) Syu ADD 新交易系統(tǒng)
//計算雙方寵物的加減
for ( ii = 15 ; ii < 20 ; ii ++ ) {
if ( myItem[ii] != -1 ) {
pet1--;
pet2++;
}
}
for ( ii = 36 ; ii < 41 ; ii ++ ) {
if ( myItem[ii] != -1 ) {
pet1++;
pet2--;
}
}
#else
// 檢查雙方寵物
if ((strcmp(c, "P") == 0) && (itemindex3 != -1))
{
pet1--; pet2++;
}
if ((strcmp(f, "P") == 0) && (itemindex6 != -1))
{
pet1++; pet2--;
}
#endif
#ifdef _TRADESYSTEM2 // (不可開) Syu ADD 新交易系統(tǒng)
if ((pet1 > 5) || (pet2 > 5)) return -10;
//取得雙方身上能放的寵物數(shù)量
for( ii = 0; ii < CHAR_MAXPETHAVE; ii ++ ) {
if( CHAR_getCharPet( meindex , ii ) == -1 ) count ++ ;
}
if ( pet1 > count ) return -10;
count = 0 ;
for( ii = 0; ii < CHAR_MAXPETHAVE; ii ++ ) {
if( CHAR_getCharPet( toindex , ii ) == -1 ) count ++ ;
}
if ( pet2 > count ) return -11;
#else
if ((pet1 > 1) || (pet2 > 1)) return -10;
if ((pet1 == 1) && (CHAR_getCharPetElement( meindex) == -1)) return -10;
if ((pet2 == 1) && (CHAR_getCharPetElement( toindex) == -1)) return -11;
#endif
#ifdef _TRADESYSTEM2 // (不可開) Syu ADD 新交易系統(tǒng)
//取得所有欲交易的道具index
for ( ii = 0 ; ii < 15 ; ii ++ ) {
if ( myItem[ii] != -1 )
Iitem1[ii] = CHAR_getItemIndex(meindex, myItem[ii]);
else
Iitem1[ii] = -1 ;
if ( myItem[ii + 21 ] != -1 )
Iitem2[ii] = CHAR_getItemIndex(toindex, myItem[ii + 21]);
else
Iitem2[ii] = -1 ;
}
#else
if ((strcmp(a, "I") == 0) && (itemindex1 != -1))
item1 = CHAR_getItemIndex(meindex, itemindex1);
else item1 = -1;
if ((strcmp(b, "I") == 0) && (itemindex2 != -1))
item2 = CHAR_getItemIndex(meindex, itemindex2);
else item2 = -1;
if ((strcmp(d, "I") == 0) && (itemindex4 != -1))
item4 = CHAR_getItemIndex(toindex, itemindex4);
else item4 = -1;
if ((strcmp(e, "I") == 0) && (itemindex5 != -1))
item5 = CHAR_getItemIndex(toindex, itemindex5);
else item5 = -1;
#endif
#ifdef _TRADESYSTEM2 // (不可開) Syu ADD 新交易系統(tǒng)
//取得欲交易寵物的index
for ( ii = 15 ; ii < 20 ; ii ++ ) {
if ( myItem[ii] != -1 ) {
if ( CHAR_getInt( meindex , CHAR_RIDEPET) == myItem[ii] )
return -1 ;
ppet1[ii - 15 ] = CHAR_getCharPet( meindex , myItem[ii] ) ;
}
else
ppet1[ii - 15 ] = -1 ;
}
for ( ii = 36 ; ii < 41 ; ii ++ ) {
if ( myItem[ii] != -1 ) {
if ( CHAR_getInt( toindex , CHAR_RIDEPET) == myItem[ii] )
return -1 ;
ppet2[ ii - 36 ] = CHAR_getCharPet( toindex , myItem[ii] ) ;
}
else
ppet2[ ii - 36 ] = -1 ;
}
#else
if (itemindex3 != -1)
{
if( CHAR_getInt( meindex, CHAR_RIDEPET) == itemindex3 )
return -1;
pet3 = CHAR_getCharPet(meindex, itemindex3);
}
else pet3 = -1;
if (itemindex6 != -1)
{
if( CHAR_getInt( toindex, CHAR_RIDEPET) == itemindex6 )
return -1;
pet6 = CHAR_getCharPet(toindex, itemindex6);
}
else pet6 = -1;
#endif
#ifdef _TRADESYSTEM2 // (不可開) Syu ADD 新交易系統(tǒng)
for ( ii = 0 ; ii < 15 ; ii ++ ) {
if ( ITEM_getInt( Iitem1[ii] , ITEM_VANISHATDROP ) == 1 )
return -12 ;
if ( ITEM_getInt( Iitem2[ii] , ITEM_VANISHATDROP ) == 1 )
return -12 ;
}
#else
if ((ITEM_getInt(item1, ITEM_VANISHATDROP) == 1)||
(ITEM_getInt(item2, ITEM_VANISHATDROP) == 1)||
(ITEM_getInt(item4, ITEM_VANISHATDROP) == 1)||
(ITEM_getInt(item5, ITEM_VANISHATDROP) ==1))
return -12;
#endif
#ifdef _TRADESYSTEM2 // (不可開) Syu ADD 新交易系統(tǒng)
//寵物等級能否交易判斷
if( CHAR_getWorkInt( meindex, CHAR_PickAllPet) != TRUE ) {
for ( ii = 0 ; ii < 5 ; ii ++ ) {
if ( (ppet2[ii] != -1 ) && ( CHAR_getInt( ppet2[ii] , CHAR_LV )
- CHAR_getInt(meindex, CHAR_LV) > 5)
&& (CHAR_getInt(meindex,CHAR_TRANSMIGRATION) <= 0))
return -13 ;
}
}
if( CHAR_getWorkInt( toindex, CHAR_PickAllPet) != TRUE ) {
for ( ii = 0 ; ii < 5 ; ii ++ ) {
if ( (ppet1[ii] != -1 ) && ( CHAR_getInt( ppet1[ii] , CHAR_LV )
- CHAR_getInt(toindex, CHAR_LV) > 5)
&& (CHAR_getInt(toindex,CHAR_TRANSMIGRATION) <= 0))
return -13 ;
}
}
#else
if( CHAR_getWorkInt( meindex, CHAR_PickAllPet) != TRUE ) {
if ((pet6 != -1) && (CHAR_getInt(pet6, CHAR_LV)
- CHAR_getInt(meindex, CHAR_LV) > 5)
&& (CHAR_getInt(meindex,CHAR_TRANSMIGRATION) <= 0))
return -13;
}
if( CHAR_getWorkInt( toindex, CHAR_PickAllPet) != TRUE ) {
if ((pet3 != -1) && (CHAR_getInt(pet3, CHAR_LV)
- CHAR_getInt(toindex, CHAR_LV) > 5)
&& (CHAR_getInt(toindex,CHAR_TRANSMIGRATION) <= 0))
return -14;
}
#endif
#ifdef _TRADESYSTEM2 // (不可開) Syu ADD 新交易系統(tǒng)
//是否為家族守護獸
for ( ii = 0 ; ii < 5 ; ii ++ ) {
if ( ( ppet1[ii] != -1 ) && (CHAR_getInt(ppet1[ii], CHAR_PETFAMILY) == 1))
return -15;
if ( ( ppet2[ii] != -1 ) && (CHAR_getInt(ppet2[ii], CHAR_PETFAMILY) == 1))
return -15;
}
#else
if ((pet6 != -1) && (CHAR_getInt(pet6, CHAR_PETFAMILY) == 1))
return -15;
if ((pet3 != -1) && (CHAR_getInt(pet3, CHAR_PETFAMILY) == 1))
return -15;
#endif
#ifdef _TRADESYSTEM2 // (不可開) Syu ADD 新交易系統(tǒng)
// 交換玩家道具、金錢、寵物
for ( ii = 0 ; ii < 15 ; ii ++ ) {
TRADE_ChangeItem(meindex, toindex, "I", "I", Iitem1[ii], Iitem2[ii],
myItem[ii], oppItem[ii]);
}
for ( ii = 15 ; ii < 20 ; ii ++ ) {
TRADE_ChangeItem(meindex, toindex, "P", "P", ppet1[ii - 15 ], ppet2[ii-15],
myItem[ii], oppItem[ii]);
}
TRADE_ChangeItem(meindex, toindex, "G", "G", Iitem1[20], Iitem2[41],
myItem[20], oppItem[20]);
#else
TRADE_ChangeItem(meindex, toindex, a, d, item1, item4,
itemindex1, itemindex4);
TRADE_ChangeItem(meindex, toindex, b, e, item2, item5,
itemindex2, itemindex5);
TRADE_ChangeItem(meindex, toindex, c, f, pet3, pet6,
itemindex3, itemindex6);
#endif
// 寫入 trade.log
{
char petname1[256], petname2[256];
int pet1lv, pet2lv;
int logitem1 = 0, logitem2 = 0, logitem4 = 0, logitem5 = 0;
if ((strcmp(a, "I") == 0) && (item1 != -1)) logitem1 = ITEM_getInt(item1, ITEM_ID);
if ((strcmp(b, "I") == 0) && (item2 != -1)) logitem2 = ITEM_getInt(item2, ITEM_ID);
if ((strcmp(a, "G") == 0) && (item1 == -1)) logitem1 = itemindex1;
if ((strcmp(b, "G") == 0) && (item2 == -1)) logitem2 = itemindex2;
if ((strcmp(c, "P") == 0) && (pet3 == -1))
{
sprintf(petname1, "NONE");
pet1lv = 0;
}
else
{
sprintf(petname1, "%s", CHAR_getChar(pet3, CHAR_NAME));
pet1lv = CHAR_getInt(pet3, CHAR_LV);
}
if ((strcmp(f, "P") == 0) && (pet6 == -1))
{
sprintf(petname2, "NONE");
pet2lv = 0;
}
else
{
sprintf(petname2, "%s", CHAR_getChar(pet6, CHAR_NAME));
pet2lv = CHAR_getInt(pet6, CHAR_LV);
}
if ((strcmp(d, "I") == 0) && (item4 != -1)) logitem4 = ITEM_getInt(item4, ITEM_ID);
if ((strcmp(e, "I") == 0) && (item5 != -1)) logitem5 = ITEM_getInt(item5, ITEM_ID);
if ((strcmp(d, "G") == 0) && (item4 == -1)) logitem4 = itemindex4;
if ((strcmp(e, "G") == 0) && (item5 == -1)) logitem5 = itemindex5;
sprintf(buf, "%s\t%s\t(%s[%d,%s],%s[%d,%s],%s[%s,%d,%s]) <-> %s\t%s\t(%s[%d,%s],%s[%d,%s],%s[%s,%d,%s])",
CHAR_getChar(meindex, CHAR_CDKEY), mycharaname,
a, logitem1, ITEM_getChar( item1, ITEM_UNIQUECODE), b, logitem2, ITEM_getChar( item2, ITEM_UNIQUECODE),
c, petname1, pet1lv, CHAR_getChar( pet3, CHAR_UNIQUECODE),
CHAR_getChar(toindex, CHAR_CDKEY), tocharaname,
d, logitem4, ITEM_getChar( item4, ITEM_UNIQUECODE), e, logitem5, ITEM_getChar( item5, ITEM_UNIQUECODE),
f, petname2, pet2lv, CHAR_getChar( pet6, CHAR_UNIQUECODE));
LogTrade(buf);
}
return 1;
}// if
else
return 2;
}
*/
#endif
/*
BOOL TRADE_ChangeItem(int meindex, int toindex, char *a, char *b,
int item1, int item2, int itemindex1, int itemindex2)
{
int gold1 = 0, gold2 = 0, eptitem = -1;
if (CHAR_CHECKINDEX(meindex) == FALSE) return FALSE;
if (CHAR_CHECKINDEX(toindex) == FALSE) return FALSE;
// 道具 <-> 道具
if ((strcmp(a, "I") == 0) && (strcmp(b, "I") == 0))
{
// 無 <-> 道具
if ((itemindex1 == -1) && (itemindex2 > 0))
{
if (ITEM_CHECKINDEX(item2) == FALSE) return FALSE;
eptitem = CHAR_findEmptyItemBox(meindex);
if (eptitem < 0) return FALSE;
CHAR_setItemIndex(meindex, eptitem, item2);
ITEM_setWorkInt(item2, ITEM_WORKCHARAINDEX, meindex);
ITEM_setWorkInt(item2, ITEM_WORKOBJINDEX, -1);
CHAR_setItemIndex(toindex, itemindex2, -1);
}
// 道具 <-> 無
else if ((itemindex1 > 0) && (itemindex2 == -1))
{
if (ITEM_CHECKINDEX(item1) == FALSE) return FALSE;
eptitem = CHAR_findEmptyItemBox(toindex);
if (eptitem < 0) return FALSE;
CHAR_setItemIndex(toindex, eptitem, item1);
ITEM_setWorkInt(item1, ITEM_WORKCHARAINDEX, toindex);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -