📄 trade.c
字号:
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; } if ((pet6 != -1) && (CHAR_getInt(pet6, CHAR_PETFAMILY) == 1)) return -15; if ((pet3 != -1) && (CHAR_getInt(pet3, CHAR_PETFAMILY) == 1)) return -15; 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); // 写入 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; } return 2;}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); ITEM_setWorkInt(item1, ITEM_WORKOBJINDEX, -1); CHAR_setItemIndex(meindex, itemindex1, -1); } // 道具 <-> 道具 else if (itemindex1 > 0 && itemindex2 > 0) { if (ITEM_CHECKINDEX(item1) == FALSE) return FALSE; if (ITEM_CHECKINDEX(item2) == FALSE) return FALSE; ITEM_setWorkInt(item1, ITEM_WORKCHARAINDEX, toindex); ITEM_setWorkInt(item1, ITEM_WORKOBJINDEX, -1); ITEM_setWorkInt(item2, ITEM_WORKCHARAINDEX, meindex); ITEM_setWorkInt(item2, ITEM_WORKOBJINDEX, -1); CHAR_setItemIndex(toindex, itemindex2, item1); CHAR_setItemIndex(meindex, itemindex1, item2); } } // 道具 <-> 金钱 else if ((strcmp(a, "I") == 0) && (strcmp(b, "G") == 0)) { if (itemindex1 > 0) { if (ITEM_CHECKINDEX(item1) == FALSE) return FALSE; eptitem = CHAR_findEmptyItemBox(toindex); if (eptitem < 0) return FALSE; ITEM_setWorkInt(item1, ITEM_WORKCHARAINDEX, toindex); ITEM_setWorkInt(item1, ITEM_WORKOBJINDEX, -1); CHAR_setItemIndex(toindex, eptitem, item1); CHAR_setItemIndex(meindex, itemindex1, -1); } if (itemindex2 < 0) itemindex2 = 0; gold1 = CHAR_getInt(meindex, CHAR_GOLD); gold1 += itemindex2; CHAR_setInt(meindex, CHAR_GOLD, gold1); gold2 = CHAR_getInt(toindex, CHAR_GOLD); gold2 -= itemindex2; CHAR_setInt(toindex, CHAR_GOLD, gold2); } // 金钱 <-> 道具 else if ((strcmp(a, "G") == 0) && (strcmp(b, "I") == 0)) { if (itemindex2 > 0) { if (ITEM_CHECKINDEX(item2) == FALSE) return FALSE; eptitem = CHAR_findEmptyItemBox(meindex); if (eptitem < 0) return FALSE; ITEM_setWorkInt(item2, ITEM_WORKCHARAINDEX, meindex); ITEM_setWorkInt(item2, ITEM_WORKOBJINDEX, -1); CHAR_setItemIndex(meindex, eptitem, item2); CHAR_setItemIndex(toindex, itemindex2, -1); } if (itemindex1 < 0) itemindex1 = 0; gold1 = CHAR_getInt(meindex, CHAR_GOLD); gold1 -= itemindex1; CHAR_setInt(meindex, CHAR_GOLD, gold1); gold2 = CHAR_getInt(toindex, CHAR_GOLD); gold2 += itemindex1; CHAR_setInt(toindex, CHAR_GOLD, gold2); } // 金钱 <-> 金钱 else if ((strcmp(a, "G") == 0) && (strcmp(b, "G") == 0)) { if (itemindex1 < 0) itemindex1 = 0; if (itemindex2 < 0) itemindex2 = 0; gold1 = CHAR_getInt(toindex, CHAR_GOLD); gold1 = gold1 + itemindex1 - itemindex2; CHAR_setInt(toindex, CHAR_GOLD, gold1); gold2 = CHAR_getInt(meindex, CHAR_GOLD); gold2 = gold2 + itemindex2 - itemindex1; CHAR_setInt(meindex, CHAR_GOLD, gold2); } // 宠物 <-> 宠物 else if ((strcmp(a, "P") == 0) && (strcmp(b, "P") == 0)) { char category[8]; if ((item1 != -1) && (CHAR_CHECKINDEX(item1) == FALSE)) return FALSE; if ((item2 != -1) && (CHAR_CHECKINDEX(item2) == FALSE)) return FALSE; if ((itemindex1 != -1) && (itemindex1 == CHAR_getInt(meindex, CHAR_DEFAULTPET))) { int fd; CHAR_setInt(meindex, CHAR_DEFAULTPET, -1); fd = getfdFromCharaIndex(meindex); if (fd != -1){ CHAR_setWorkInt( meindex, CHAR_WORK_PET0_STAT+itemindex1-1, 0); lssproto_KS_send(fd, itemindex1, 0); } } if ((itemindex2 != -1)&& (itemindex2 == CHAR_getInt(toindex, CHAR_DEFAULTPET))) { int tofd; CHAR_setInt(toindex, CHAR_DEFAULTPET, -1); tofd = getfdFromCharaIndex(toindex); if (tofd != -1){ CHAR_setWorkInt( toindex, CHAR_WORK_PET0_STAT+itemindex1-1, 0); lssproto_KS_send(tofd, itemindex2, 0); } } if (item1 != -1) CHAR_setWorkInt(item1, CHAR_WORKPLAYERINDEX, toindex); if (item2 != -1) CHAR_setWorkInt(item2, CHAR_WORKPLAYERINDEX, meindex); if (itemindex1 == -1) itemindex1 = CHAR_getCharPetElement( meindex); if (itemindex2 == -1) itemindex2 = CHAR_getCharPetElement( toindex); CHAR_setCharPet(meindex, itemindex1, item2); CHAR_setCharPet(toindex, itemindex2, item1); if ((itemindex1 != -1) && (item1 != -1)) { CHAR_setChar(item1, CHAR_OWNERCDKEY, CHAR_getChar(toindex, CHAR_CDKEY)); CHAR_setChar(item1, CHAR_OWNERCHARANAME, CHAR_getChar(toindex, CHAR_NAME)); CHAR_complianceParameter(item1); CHAR_setInt(item1, CHAR_PUTPETTIME, 0); } if ((itemindex2 != -1) && (item2 != -1)) { CHAR_setChar(item2, CHAR_OWNERCDKEY, CHAR_getChar(meindex, CHAR_CDKEY)); CHAR_setChar(item2, CHAR_OWNERCHARANAME, CHAR_getChar(meindex, CHAR_NAME)); CHAR_complianceParameter(item2); CHAR_setInt(item2, CHAR_PUTPETTIME, 0); } snprintf(category, sizeof(category), "K%d", itemindex1); CHAR_sendStatusString(meindex, category); snprintf(category, sizeof(category), "W%d", itemindex1); CHAR_sendStatusString(meindex, category); snprintf(category, sizeof(category), "K%d", itemindex2); CHAR_sendStatusString(toindex, category); snprintf(category, sizeof(category), "W%d", itemindex2); CHAR_sendStatusString(toindex, category); } return TRUE;}BOOL TRADE_HandleItem( int meindex, int showindex, char *message, char *outmess){ char token[256]; int item, itemindex; int fd = getfdFromCharaIndex( meindex ); if( CONNECT_get_confirm( fd) == TRUE ) return FALSE; if( CHAR_getWorkInt( meindex, CHAR_WORKTRADEMODE) != CHAR_TRADE_TRADING || CHAR_getWorkInt( meindex, CHAR_WORKTRADEMODE) == CHAR_TRADE_LOCK ) return FALSE; if( getStringFromIndexWithDelim( message, "|", 6, token, sizeof( token)) == FALSE) return FALSE; item = atoi( token); if( item < CHAR_STARTITEMARRAY || item > CHAR_MAXITEMHAVE ){ return FALSE; } itemindex = CHAR_getItemIndex(meindex, item); if( !ITEM_CHECKINDEX( itemindex)) return FALSE; { char itemname[256], tmpbuf[256], tmpbuf1[256]; int crushe; strcpy( itemname, ITEM_getChar(itemindex, ITEM_SECRETNAME));//ITEM_NAME crushe = ITEM_getItemDamageCrusheED( itemindex); sprintf( token, "不会损坏"); if( crushe >= 0 ) snprintf( token, sizeof(token), "%d%%", crushe ); sprintf( outmess, "%d|%s|%s|%d|%s", ITEM_getInt( itemindex, ITEM_BASEIMAGENUMBER), makeEscapeString( ITEM_getChar( itemindex, ITEM_NAME), tmpbuf1, sizeof(tmpbuf1)), ITEM_getChar(itemindex,ITEM_EFFECTSTRING), item, token ); } return TRUE;}BOOL TRADE_HandleGold( int meindex, int showindex, char *message, char *outmess){ int gold, tmpgold; char token[256]; int fd = getfdFromCharaIndex( meindex ); if(CONNECT_get_confirm( fd)==TRUE)return FALSE; if (CHAR_getWorkInt(meindex, CHAR_WORKTRADEMODE) != CHAR_TRADE_TRADING || CHAR_getWorkInt(meindex, CHAR_WORKTRADEMODE) == CHAR_TRADE_LOCK) return FALSE; tmpgold = CHAR_getInt(meindex, CHAR_GOLD); if (getStringFromIndexWithDelim(message, "|", 6, token, sizeof(token)) == FALSE) return FALSE; if( (gold = atoi(token)) < 0 ) return FALSE; if( gold > tmpgold )return FALSE; sprintf( outmess, "%d", gold); return TRUE;}BOOL TRADE_HandlePet( int meindex, int showindex, char *message, char *outmess){ int havepetindex, petindex; char token[256], buf[256]; int fd = getfdFromCharaIndex( meindex ); if(CONNECT_get_confirm( fd)==TRUE)return FALSE; if (CHAR_getWorkInt(meindex, CHAR_WORKTRADEMODE) != CHAR_TRADE_TRADING || CHAR_getWorkInt(meindex, CHAR_WORKTRADEMODE) == CHAR_TRADE_LOCK) return FALSE; if (getStringFromIndexWithDelim(message, "|", 6, token, sizeof(token)) == FALSE) return FALSE; if( (havepetindex = atoi(token)) < 0 ) return FALSE; petindex = CHAR_getCharPet(meindex, havepetindex); if( !CHAR_CHECKINDEX(petindex)) return FALSE; sprintf( token, "%d|%s|%d|%d|%d|%d|%d|%d", CHAR_getInt( petindex, CHAR_BASEIMAGENUMBER), makeEscapeString( CHAR_getUseName(petindex), buf, sizeof(buf)), CHAR_getInt( petindex, CHAR_LV), CHAR_getWorkInt( petindex, CHAR_WORKATTACKPOWER), CHAR_getWorkInt( petindex, CHAR_WORKDEFENCEPOWER), CHAR_getWorkInt( petindex, CHAR_WORKQUICK), havepetindex, CHAR_getInt( petindex , CHAR_TRANSMIGRATION)); sprintf( outmess , "%s|%d", token , CHAR_getWorkInt(petindex , CHAR_WORKMAXHP) ); return TRUE;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -