Jump to content
  • 0

Help Please Vending 11 lvl Errors


nejiko

Question


  • Group:  Members
  • Topic Count:  4
  • Topics Per Day:  0.00
  • Content Count:  7
  • Reputation:   0
  • Joined:  12/31/11
  • Last Seen:  

Hi peoples, i bad speak to English!
I have problems to SRC Vending 11 lvl!

1)

4>..\src\map\clif.c(15546): error C2065: USESKILL_FAIL_LEVEL: необъявленный идентификатор

2)
 

4>..\src\map\skill.c(10091): error C2065: USESKILL_FAIL_LEVEL: необъявленный идентификатор
4>..\src\map\skill.c(10091): error C2198: clif_skill_fail: слишком мало аргументов для вызова
4>..\src\map\skill.c(10104): error C2065: USESKILL_FAIL_LEVEL: необъявленный идентификатор

3)

4>..\src\map\vending.c(224): error C2065: LOG_TYPE_VENDING: необъявленный идентификатор
4>..\src\map\vending.c(224): warning C4047: функция: "char *" отличается по уровням косвенного обращения от "int"
4>..\src\map\vending.c(224): warning C4024: log_zeny: различные типы для формального и фактического параметров 2

I have to 3ceam

To mod:
 

[spoiler]Index: conf/battle/feature.conf
===================================================================
--- conf/battle/feature.conf (revision 15154)
+++ conf/battle/feature.conf (working copy)
@@ -26,3 +26,12 @@
// Search stores (Note 1)
// Requires: 2010-08-03aRagexeRE or later
feature.search_stores: on
+
+// Enable or disable extended vending system? (Note 1)
+extended_vending: yes
+// Show currency's name in vending board? (Note 1)
+show_item_vending: yes
+// Show more info about buying? (Note 1)
+ex_vending_info: yes
+// Item ID for Zeny. Set to 0 if you don't want use Zeny.
+item_zeny: 30000
\ No newline at end of file
Index: conf/msg_athena.conf
===================================================================
--- conf/msg_athena.conf (revision 15154)
+++ conf/msg_athena.conf (working copy)
@@ -535,5 +535,16 @@
//...
650: Unknown Job

+// Extended Vending system
+700: You do not have enough CashPoint
+701: You do not have enough items
+702: Seller has not enough space in your inventory
+703: Seller can not take all the item
+704: You have selected: %s
+705: You've opened %s's shop. Sale is carried out: %s
+706: Current Currency: %s
+707: %s has bought '%s' in the amount of %d. Revenue: %d %s
+708: Full revenue from %s is %d %s
+
//Custom translations
import: conf/import/msg_conf.txt
Index: db/item_db2.txt
===================================================================
--- db/item_db2.txt (revision 15154)
+++ db/item_db2.txt (working copy)
@@ -61,3 +61,6 @@
//==================================================================
//2338,Wedding_Dress,Wedding Dress,5,43000,,500,,0,,0,0xFFFFFFFE,7,0,16,,0,1,0,{},{ setoption Option_Wedding,1; },{ setoption Option_Wedding,0; }
//7170,Tuxedo,Tuxedo,5,43000,,10,,0,,0,0xFFFFFFFE,7,1,16,,0,1,0,{},{ setoption Option_Wedding,1; },{ setoption Option_Wedding,0; }
+
+// Vending system
+30000,Zeny,Zeny,3,,10,10,,,,,,,,,,,,,{},{},{}
\ No newline at end of file
Index: db/item_vending.txt
===================================================================
--- db/item_vending.txt (revision 0)
+++ db/item_vending.txt (working copy)
@@ -0,0 +1,11 @@
+// Specific items for Vending System
+// Format: ItemID
+
+// TCG Card
+7227
+// Mithril Coin
+// 674
+// Silver Coin
+// 675
+// Bronze Coin
+// 673
\ No newline at end of file
Index: db/skill_db.txt
===================================================================
--- db/skill_db.txt (revision 15154)
+++ db/skill_db.txt (working copy)
@@ -83,7 +83,7 @@
38,0,0,0,0,0,0,10,0,no,0,0,0,none,0, MC_OVERCHARGE,Overcharge
39,1,0,0,0,0,0,10,0,no,0,0,0,none,0, MC_PUSHCART,Pushcart
40,1,6,4,0,0x1,0,1,1,no,0,0,0,none,0, MC_IDENTIFY,Item Appraisal
-41,1,6,4,0,0x1,0,10,1,no,0,0,0,none,0, MC_VENDING,Vending
+41,1,6,4,0,0x1,0,11,1,no,0,0,0,none,0, MC_VENDING,Vending
42,-1,6,1,-1,0,0,10,1,no,0,0,0,weapon,0, MC_MAMMONITE,Mammonite
43,0,0,0,0,0,0,10,0,no,0,0,0,none,0, AC_OWL,Owl's Eye
44,0,0,0,0,0,0,10,0,no,0,0,0,none,0, AC_VULTURE,Vulture's Eye
Index: db/skill_tree.txt
===================================================================
--- db/skill_tree.txt (revision 15154)
+++ db/skill_tree.txt (working copy)
@@ -79,7 +79,7 @@
5,38,10,37,3,0,0,0,0,0,0,0,0 //MC_OVERCHARGE#Overcharge#
5,39,10,36,5,0,0,0,0,0,0,0,0 //MC_PUSHCART#Pushcart#
5,40,1,0,0,0,0,0,0,0,0,0,0 //MC_IDENTIFY#Item Appraisal#
-5,41,10,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#
+5,41,11,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#
5,42,10,0,0,0,0,0,0,0,0,0,0 //MC_MAMMONITE#Mammonite#
5,153,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTREVOLUTION#Cart Revolution#
5,154,1,0,0,0,0,0,0,0,0,0,0 //MC_CHANGECART#Change Cart#
@@ -210,7 +210,7 @@
10,38,10,37,3,0,0,0,0,0,0,0,0 //MC_OVERCHARGE#Overcharge#
10,39,10,36,5,0,0,0,0,0,0,0,0 //MC_PUSHCART#Pushcart#
10,40,1,0,0,0,0,0,0,0,0,0,0 //MC_IDENTIFY#Item Appraisal#
-10,41,10,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#
+10,41,11,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#
10,42,10,0,0,0,0,0,0,0,0,0,0 //MC_MAMMONITE#Mammonite#
10,153,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTREVOLUTION#Cart Revolution#
10,154,1,0,0,0,0,0,0,0,0,0,0 //MC_CHANGECART#Change Cart#
@@ -486,7 +486,7 @@
18,38,10,37,3,0,0,0,0,0,0,0,0 //MC_OVERCHARGE#Overcharge#
18,39,10,36,5,0,0,0,0,0,0,0,0 //MC_PUSHCART#Pushcart#
18,40,1,0,0,0,0,0,0,0,0,0,0 //MC_IDENTIFY#Item Appraisal#
-18,41,10,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#
+18,41,11,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#
18,42,10,0,0,0,0,0,0,0,0,0,0 //MC_MAMMONITE#Mammonite#
18,153,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTREVOLUTION#Cart Revolution#
18,154,1,0,0,0,0,0,0,0,0,0,0 //MC_CHANGECART#Change Cart#
@@ -658,7 +658,7 @@
23,38,10,37,3,0,0,0,0,0,0,0,0 //MC_OVERCHARGE#Overcharge#
23,39,10,36,5,0,0,0,0,0,0,0,0 //MC_PUSHCART#Pushcart#
23,40,1,0,0,0,0,0,0,0,0,0,0 //MC_IDENTIFY#Item Appraisal#
-23,41,10,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#
+23,41,11,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#
23,42,10,0,0,0,0,0,0,0,0,0,0 //MC_MAMMONITE#Mammonite#
23,43,10,0,0,0,0,0,0,0,0,0,0 //AC_OWL#Owl's Eye#
23,44,10,43,3,0,0,0,0,0,0,0,0 //AC_VULTURE#Vulture's Eye#
@@ -807,7 +807,7 @@
4006,38,10,37,3,0,0,0,0,0,0,0,0 //MC_OVERCHARGE#Overcharge#
4006,39,10,36,5,0,0,0,0,0,0,0,0 //MC_PUSHCART#Pushcart#
4006,40,1,0,0,0,0,0,0,0,0,0,0 //MC_IDENTIFY#Item Appraisal#
-4006,41,10,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#
+4006,41,11,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#
4006,42,10,0,0,0,0,0,0,0,0,0,0 //MC_MAMMONITE#Mammonite#
4006,153,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTREVOLUTION#Cart Revolution#
4006,154,1,0,0,0,0,0,0,0,0,0,0 //MC_CHANGECART#Change Cart#
@@ -955,7 +955,7 @@
4011,38,10,37,3,0,0,0,0,0,0,0,0 //MC_OVERCHARGE#Overcharge#
4011,39,10,36,5,0,0,0,0,0,0,0,0 //MC_PUSHCART#Pushcart#
4011,40,1,0,0,0,0,0,0,0,0,0,0 //MC_IDENTIFY#Item Appraisal#
-4011,41,10,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#
+4011,41,11,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#
4011,42,10,0,0,0,0,0,0,0,0,0,0 //MC_MAMMONITE#Mammonite#
4011,153,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTREVOLUTION#Cart Revolution#
4011,154,1,0,0,0,0,0,0,0,0,0,0 //MC_CHANGECART#Change Cart#
@@ -1276,7 +1276,7 @@
4019,38,10,37,3,0,0,0,0,0,0,0,0 //MC_OVERCHARGE#Overcharge#
4019,39,10,36,5,0,0,0,0,0,0,0,0 //MC_PUSHCART#Pushcart#
4019,40,1,0,0,0,0,0,0,0,0,0,0 //MC_IDENTIFY#Item Appraisal#
-4019,41,10,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#
+4019,41,11,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#
4019,42,10,0,0,0,0,0,0,0,0,0,0 //MC_MAMMONITE#Mammonite#
4019,153,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTREVOLUTION#Cart Revolution#
4019,154,1,0,0,0,0,0,0,0,0,0,0 //MC_CHANGECART#Change Cart#
@@ -1507,7 +1507,7 @@
4028,38,10,37,3,0,0,0,0,0,0,0,0 //MC_OVERCHARGE#Overcharge#
4028,39,10,36,5,0,0,0,0,0,0,0,0 //MC_PUSHCART#Pushcart#
4028,40,1,0,0,0,0,0,0,0,0,0,0 //MC_IDENTIFY#Item Appraisal#
-4028,41,10,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#
+4028,41,11,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#
4028,42,10,0,0,0,0,0,0,0,0,0,0 //MC_MAMMONITE#Mammonite#
4028,153,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTREVOLUTION#Cart Revolution#
4028,154,1,0,0,0,0,0,0,0,0,0,0 //MC_CHANGECART#Change Cart#
@@ -1642,7 +1642,7 @@
4033,38,10,37,3,0,0,0,0,0,0,0,0 //MC_OVERCHARGE#Overcharge#
4033,39,10,36,5,0,0,0,0,0,0,0,0 //MC_PUSHCART#Pushcart#
4033,40,1,0,0,0,0,0,0,0,0,0,0 //MC_IDENTIFY#Item Appraisal#
-4033,41,10,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#
+4033,41,11,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#
4033,42,10,0,0,0,0,0,0,0,0,0,0 //MC_MAMMONITE#Mammonite#
4033,153,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTREVOLUTION#Cart Revolution#
4033,154,1,0,0,0,0,0,0,0,0,0,0 //MC_CHANGECART#Change Cart#
@@ -1926,7 +1926,7 @@
4041,38,10,37,3,0,0,0,0,0,0,0,0 //MC_OVERCHARGE#Overcharge#
4041,39,10,36,5,0,0,0,0,0,0,0,0 //MC_PUSHCART#Pushcart#
4041,40,1,0,0,0,0,0,0,0,0,0,0 //MC_IDENTIFY#Item Appraisal#
-4041,41,10,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#
+4041,41,11,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#
4041,42,10,0,0,0,0,0,0,0,0,0,0 //MC_MAMMONITE#Mammonite#
4041,153,1,0,0,0,0,0,0,0,0,0,0 //MC_CARTREVOLUTION#Cart Revolution#
4041,154,1,0,0,0,0,0,0,0,0,0,0 //MC_CHANGECART#Change Cart#
@@ -2095,7 +2095,7 @@
4045,38,10,37,3,0,0,0,0,0,0,0,0 //MC_OVERCHARGE#Overcharge#
4045,39,10,36,5,0,0,0,0,0,0,0,0 //MC_PUSHCART#Pushcart#
4045,40,1,0,0,0,0,0,0,0,0,0,0 //MC_IDENTIFY#Item Appraisal#
-4045,41,10,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#
+4045,41,11,39,3,0,0,0,0,0,0,0,0 //MC_VENDING#Vending#
4045,42,10,0,0,0,0,0,0,0,0,0,0 //MC_MAMMONITE#Mammonite#
4045,43,10,0,0,0,0,0,0,0,0,0,0 //AC_OWL#Owl's Eye#
4045,44,10,43,3,0,0,0,0,0,0,0,0 //AC_VULTURE#Vulture's Eye#
Index: src/map/battle.c
===================================================================
--- src/map/battle.c (revision 15154)
+++ src/map/battle.c (working copy)
@@ -4023,6 +4023,11 @@
{ "bg_magic_attack_damage_rate", &battle_config.bg_magic_damage_rate, 60, 0, INT_MAX, },
{ "bg_misc_attack_damage_rate", &battle_config.bg_misc_damage_rate, 60, 0, INT_MAX, },
{ "bg_flee_penalty", &battle_config.bg_flee_penalty, 20, 0, INT_MAX, },
+// Extended Vending system
+ { "extended_vending", &battle_config.extended_vending, 1, 0, 1, },
+ { "show_item_vending", &battle_config.show_item_vending, 1, 0, 1, },
+ { "ex_vending_info", &battle_config.ex_vending_info, 1, 0, 1, },
+ { "item_zeny", &battle_config.item_zeny, 0, 0, MAX_ITEMDB, },
};


Index: src/map/battle.h
===================================================================
--- src/map/battle.h (revision 15154)
+++ src/map/battle.h (working copy)
@@ -497,6 +497,12 @@
int bg_magic_damage_rate;
int bg_misc_damage_rate;
int bg_flee_penalty;
+
+ // Extended Vending system
+ int extended_vending;
+ int show_item_vending;
+ int ex_vending_info;
+ int item_zeny;
} battle_config;

void do_init_battle(void);
Index: src/map/clif.c
===================================================================
--- src/map/clif.c (revision 15154)
+++ src/map/clif.c (working copy)
@@ -5280,7 +5280,24 @@
clif_notify_playerchat(sd, buf);
}

+void clif_displaymessagecolor(struct map_session_data *sd, const char* msg, unsigned long color)
+{
+ int fd;
+ unsigned short len = strlen(msg) + 1;

+ nullpo_retv(sd);
+
+ color = (color & 0x0000FF) << 16 | (color & 0x00FF00) | (color & 0xFF0000) >> 16; // RGB to BGR
+ fd = sd->fd;
+ WFIFOHEAD(fd, len+12);
+ WFIFOW(fd,0) = 0x2C1;
+ WFIFOW(fd,2) = len+12;
+ WFIFOL(fd,4) = 0;
+ WFIFOL(fd,8) = color;
+ memcpy(WFIFOP(fd,12), msg, len);
+ WFIFOSET(fd, WFIFOW(fd,2));
+}
+
/// Send broadcast message in yellow or blue without font formatting (ZC_BROADCAST).
/// 009a <packet len>.W <message>.?B
void clif_broadcast(struct block_list* bl, const char* mes, int len, int type, enum send_target target)
@@ -11015,7 +11032,7 @@
/// 01ae <name id>.W
void clif_parse_SelectArrow(int fd,struct map_session_data *sd)
{
- if (sd->menuskill_id != AC_MAKINGARROW)
+ if (sd->menuskill_id != AC_MAKINGARROW && sd->menuskill_id != MC_VENDING)
return;
if (pc_istrading(sd)) {
//Make it fail to avoid shop exploits where you sell something different than you see.
@@ -11023,7 +11040,14 @@
sd->menuskill_val = sd->menuskill_id = 0;
return;
}
- skill_arrow_create(sd,RFIFOW(fd,2));
+ switch( sd->menuskill_id ) {
+ case AC_MAKINGARROW:
+ skill_arrow_create(sd,RFIFOW(fd,2));
+ break;
+ case MC_VENDING: // Extended Vending system
+ skill_vending(sd,RFIFOW(fd,2));
+ break;
+ }
sd->menuskill_val = sd->menuskill_id = 0;
}

@@ -11701,11 +11725,18 @@
/// 1 = open
void clif_parse_OpenVending(int fd, struct map_session_data* sd)
{
+ struct item_data *item = itemdb_exists(sd->vend_loot);
short len = (short)RFIFOW(fd,2) - 85;
const char* message = (char*)RFIFOP(fd,4);
bool flag = (bool)RFIFOB(fd,84);
const uint8* data = (uint8*)RFIFOP(fd,85);
+ char out_msg[1024];

+ if(battle_config.extended_vending && battle_config.show_item_vending && sd->vend_loot && item->nameid != ITEMID_ZENY){
+ memset(out_msg, '\0', sizeof(out_msg));
+ strcat(strcat(strcat(strcat(out_msg,"["),item->jname),"] "),message);
+ }
+
if( sd->sc.data[SC_NOCHAT] && sd->sc.data[SC_NOCHAT]->val1&MANNER_NOROOM )
return;
if( map[sd->bl.m].flag.novending ) {
@@ -11719,7 +11750,10 @@
if( message[0] == '\0' ) // invalid input
return;

- vending_openvending(sd, message, flag, data, len/8);
+ if(battle_config.extended_vending && battle_config.show_item_vending && sd->vend_loot && item->nameid != ITEMID_ZENY)
+ vending_openvending(sd, out_msg, flag, data, len/8);
+ else
+ vending_openvending(sd, message, flag, data, len/8);
}


@@ -15778,7 +15812,43 @@
ShowDump(RFIFOP(fd,0), packet_len);
}

+// Extended Vending system
+int clif_vend(struct map_session_data *sd, int skill_lv)
+{
+ struct item_data *item;
+ int c, i, d = 0;
+ int fd;

+ nullpo_ret(sd);
+
+ fd = sd->fd;
+
+ WFIFOHEAD(fd, 8 * 8 + 8);
+ WFIFOW(fd,0) = 0x1ad;
+ if(battle_config.item_zeny){
+ WFIFOW(fd, d * 2 + 4) = ITEMID_ZENY;
+ d++;
+ }
+ for( c = d, i = 0; i < ARRAYLENGTH(item_vend); i ++ ) {
+
+ if((item = itemdb_exists(item_vend[i].itemid)) != NULL && item->nameid != ITEMID_ZENY){
+ WFIFOW(fd, c * 2 + 4) = item->nameid;
+ c++;
+ }
+ }
+ if( c > 0 ) {
+ sd->menuskill_id = MC_VENDING;
+ sd->menuskill_val = skill_lv;
+ WFIFOW(fd,2) = c * 2 + 4;
+ WFIFOSET(fd, WFIFOW(fd, 2));
+ } else {
+ clif_skill_fail(sd,MC_VENDING,USESKILL_FAIL_LEVEL,0);
+ return 0;
+ }
+
+ return 1;
+}
+
/// Main client packet processing function
static int clif_parse(int fd)
{
Index: src/map/clif.h
===================================================================
--- src/map/clif.h (revision 15154)
+++ src/map/clif.h (working copy)
@@ -561,6 +561,7 @@
void clif_notify_chat(struct block_list* bl, const char* message, send_target target);
void clif_notify_playerchat(struct map_session_data* sd, const char* message);
void clif_displaymessage(const int fd, const char* mes);
+void clif_displaymessagecolor(struct map_session_data *sd, const char* msg, unsigned long color);
void clif_displayformatted(struct map_session_data* sd, const char* fmt, ...);
void clif_disp_onlyself(struct map_session_data *sd, const char *mes, int len);
void clif_disp_message(struct block_list* src, const char* mes, int len, enum send_target target);
@@ -719,4 +720,8 @@
void clif_open_search_store_info(struct map_session_data* sd);
void clif_search_store_info_click_ack(struct map_session_data* sd, short x, short y);

+// Extended Vending system
+int clif_vend(struct map_session_data *sd, int skill_lv);
+#define VEND_COLOR 0x00FFFF // Cyan
+
#endif /* _CLIF_H_ */
Index: src/map/itemdb.c
===================================================================
--- src/map/itemdb.c (revision 15154)
+++ src/map/itemdb.c (working copy)
@@ -689,7 +689,29 @@
return true;
}

+// Extended Vending system
+static bool itemdb_read_vending(char* fields[], int columns, int current)
+{
+ struct item_data* id;
+ int nameid;
+ nameid = atoi(fields[0]);

+ if( ( id = itemdb_exists(nameid) ) == NULL )
+ {
+ ShowWarning("itemdb_read_vending: Invalid item id %d.\n", nameid);
+ return false;
+ }
+
+ if( id->type == IT_ARMOR || id->type == IT_WEAPON )
+ {
+ ShowWarning("itemdb_read_vending: item id %d cannot be equipment or weapon.\n", nameid);
+ return false;
+ }
+
+ item_vend[current].itemid = nameid;
+ return true;
+}
+
/*======================================
* Applies gender restrictions according to settings. [Skotlex]
*======================================*/
@@ -1007,6 +1029,7 @@
sv_readdb(db_path, "item_trade.txt", ',', 3, 3, -1, &itemdb_read_itemtrade);
sv_readdb(db_path, "item_delay.txt", ',', 2, 2, MAX_ITEMDELAYS, &itemdb_read_itemdelay);
sv_readdb(db_path, "item_buyingstore.txt", ',', 1, 1, -1, &itemdb_read_buyingstore);
+ sv_readdb(db_path, "item_vending.txt", ',', 1, 1, ARRAYLENGTH(item_vend), &itemdb_read_vending); // Extended Vending system
}

/*==========================================
@@ -1059,6 +1082,7 @@
itemdb_other->clear(itemdb_other, itemdb_final_sub);

memset(itemdb_array, 0, sizeof(itemdb_array));
+ memset(item_vend,0,sizeof(item_vend)); // Extended Vending system

// read new data
itemdb_read();
Index: src/map/itemdb.h
===================================================================
--- src/map/itemdb.h (revision 15154)
+++ src/map/itemdb.h (working copy)
@@ -6,6 +6,9 @@

#include "../common/mmo.h" // ITEM_NAME_LENGTH

+// 32k array entries in array (the rest goes to the db)
+#define MAX_ITEMDB 0x8000
+
#define MAX_RANDITEM 11000

// The maximum number of item delays
@@ -92,6 +95,12 @@
int qty; //Counts amount of items in the group.
};

+struct s_item_vend {
+ int itemid;
+};
+
+struct s_item_vend item_vend[MAX_INVENTORY];
+
struct item_data* itemdb_searchname(const char *name);
int itemdb_searchname_array(struct item_data** data, int size, const char *str);
struct item_data* itemdb_load(int nameid);
@@ -149,4 +158,7 @@
void do_final_itemdb(void);
int do_init_itemdb(void);

+// Extended Vending system
+#define ITEMID_ZENY battle_config.item_zeny
+
#endif /* _ITEMDB_H_ */
Index: src/map/pc.h
===================================================================
--- src/map/pc.h (revision 15154)
+++ src/map/pc.h (working copy)
@@ -424,6 +424,10 @@
// temporary debugging of bug #3504
const char* delunit_prevfile;
int delunit_prevline;
+
+ // Extended Vending system
+ int vend_loot;
+ int vend_lvl;
};

//Update this max as necessary. 55 is the value needed for Super Baby currently
Index: src/map/skill.c
===================================================================
--- src/map/skill.c (revision 15154)
+++ src/map/skill.c (working copy)
@@ -10,6 +10,7 @@
#include "../common/utils.h"
#include "../common/ers.h"

+#include "atcommand.h" // get_atcommand_level()
#include "skill.h"
#include "map.h"
#include "path.h"
@@ -4332,8 +4333,40 @@
{ //Prevent vending of GMs with unnecessary Level to trade/drop. [Skotlex]
if ( !pc_can_give_items(pc_isGM(sd)) )
clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0);
- else
- clif_openvendingreq(sd,2+skilllv);
+ else {
+ if(battle_config.extended_vending && skilllv > 10){
+ struct item_data *item;
+
+ char output[1024];
+ int c = 0, i, d = 0;
+ sd->vend_lvl = skilllv;
+
+ if(battle_config.item_zeny)
+ d++;
+
+ for( c = d, i = 0; i < ARRAYLENGTH(item_vend); i ++ ) {
+ if((item = itemdb_exists(item_vend[i].itemid)) != NULL && item->nameid != ITEMID_ZENY)
+ c++;
+ }
+ if(c > 1)
+ clif_vend(sd,sd->vend_lvl);
+ else {
+ if(c) {
+ item = itemdb_exists(battle_config.item_zeny?battle_config.item_zeny:item_vend[0].itemid);
+ sd->vend_loot = item->nameid;
+ sprintf(output,msg_txt(706),itemdb_jname(sd->vend_loot));
+ clif_displaymessagecolor(sd,output,VEND_COLOR);
+ clif_openvendingreq(sd,1+sd->vend_lvl);
+ } else {
+ sd->vend_loot = 0;
+ clif_openvendingreq(sd,1+sd->vend_lvl);
+ }
+ }
+ } else {
+ sd->vend_loot = 0;
+ clif_openvendingreq(sd,2+skilllv);
+ }
+ }
}
break;

@@ -10319,6 +10352,36 @@
return 1;
}

+// Extended Vending system
+int skill_vending(struct map_session_data *sd, int nameid)
+{
+ struct item_data *item;
+ char output[1024];
+
+ nullpo_ret(sd);
+
+ if(nameid <= 0) {
+ clif_skill_fail(sd,MC_VENDING,USESKILL_FAIL_LEVEL,0);
+ return 0;
+ }
+
+ if(nameid > MAX_ITEMDB)
+ return 0;
+
+ sd->vend_loot = nameid;
+ item = itemdb_exists(nameid);
+ sprintf(output,msg_txt(704),item->jname);
+ clif_displaymessagecolor(sd,output,VEND_COLOR);
+
+ if ( !pc_can_give_items(pc_isGM(sd)) )
+ clif_skill_fail(sd,MC_VENDING,USESKILL_FAIL_LEVEL,0);
+ else {
+ clif_openvendingreq(sd,2+sd->vend_lvl);
+ }
+
+ return 0;
+}
+
/*==========================================
*
*------------------------------------------*/
Index: src/map/skill.h
===================================================================
--- src/map/skill.h (revision 15154)
+++ src/map/skill.h (working copy)
@@ -1548,4 +1548,7 @@
UNT_MAX = 0x190
};

+// Extended Vending system
+int skill_vending( struct map_session_data *sd, int nameid);
+
#endif /* _SKILL_H_ */
Index: src/map/vending.c
===================================================================
--- src/map/vending.c (revision 15154)
+++ src/map/vending.c (working copy)
@@ -47,6 +47,7 @@
void vending_vendinglistreq(struct map_session_data* sd, int id)
{
struct map_session_data* vsd;
+ char output[1024]; // Extended Vending system
nullpo_retv(sd);

if( (vsd = map_id2sd(id)) == NULL )
@@ -60,6 +61,12 @@
return;
}

+ // Extended Vending system
+ if(battle_config.extended_vending && vsd->vend_loot){
+ sprintf(output,msg_txt(705),vsd->status.name, itemdb_jname(vsd->vend_loot));
+ clif_displaymessagecolor(sd,output,VEND_COLOR);
+ }
+
sd->vended_id = vsd->vender_id; // register vending uid

clif_vendinglist(sd, id, vsd->vending);
@@ -121,16 +128,57 @@
vend_list[i] = j;

z += ((double)vsd->vending[j].value * (double)amount);
- if( z > (double)sd->status.zeny || z < 0. || z > (double)MAX_ZENY )
- {
- clif_buyvending(sd, idx, amount, 1); // you don't have enough zeny
- return;
- }
- if( z + (double)vsd->status.zeny > (double)MAX_ZENY && !battle_config.vending_over_max )
- {
- clif_buyvending(sd, idx, vsd->vending[j].amount, 4); // too much zeny = overflow
- return;

+ // Extended Vending system
+ if(battle_config.extended_vending){
+ if(vsd->vend_loot == ITEMID_ZENY || !vsd->vend_loot) {
+ if( z > (double)sd->status.zeny || z < 0. || z > (double)MAX_ZENY )
+ {
+ //clif_buyvending(sd, idx, amount, 1); // you don't have enough zeny
+ return;
+ }
+ if( z + (double)vsd->status.zeny > (double)MAX_ZENY && !battle_config.vending_over_max )
+ {
+ clif_buyvending(sd, idx, vsd->vending[j].amount, 4); // too much zeny = overflow
+ return;
+ }
+ } else {
+ int k, loot_count = 0, vsd_w = 0;
+ for(k = 0; k < MAX_INVENTORY; k++)
+ if(sd->status.inventory[k].nameid == vsd->vend_loot)
+ loot_count += sd->status.inventory[k].amount;
+
+ if( z > loot_count || z < 0)
+ {
+ clif_displaymessagecolor(sd,msg_txt(701),VEND_COLOR);
+ return;
+ }
+
+ if(pc_inventoryblank(vsd) <= 0)
+ {
+ clif_displaymessagecolor(sd,msg_txt(702),VEND_COLOR);
+ return;
+ }
+
+ vsd_w += itemdb_weight(vsd->vend_loot) * (int)z;
+
+ if(vsd_w + vsd->weight > vsd->max_weight)
+ {
+ clif_displaymessagecolor(sd,msg_txt(703),VEND_COLOR);
+ return;
+ }
+ }
+ } else {
+ if( z > (double)sd->status.zeny || z < 0. || z > (double)MAX_ZENY )
+ {
+ clif_buyvending(sd, idx, amount, 1); // you don't have enough zeny
+ return;
+ }
+ if( z + (double)vsd->status.zeny > (double)MAX_ZENY && !battle_config.vending_over_max )
+ {
+ clif_buyvending(sd, idx, vsd->vending[j].amount, 4); // too much zeny = overflow
+ return;
+ }
}
w += itemdb_weight(vsd->status.cart[idx].nameid) * amount;
if( w + sd->weight > sd->max_weight )
@@ -167,20 +215,49 @@
}
}

- //Logs (V)ending Zeny [Lupus]
- log_zeny(vsd, LOG_TYPE_VENDING, sd, (int)z);
+ // Extended Vending system
+ if(battle_config.extended_vending){
+ if(vsd->vend_loot == ITEMID_ZENY || !vsd->vend_loot) {
+ //Logs (V)ending Zeny [Lupus]
+ log_zeny(vsd, LOG_TYPE_VENDING, sd, (int)z);
+ pc_payzeny(sd, (int)z);
+ if( battle_config.vending_tax )
+ z -= z * (battle_config.vending_tax/10000.);
+ pc_getzeny(vsd, (int)z);
+ } else {
+ for( i = 0; i < MAX_INVENTORY; i++)
+ if(sd->status.inventory[i].nameid == vsd->vend_loot)
+ {
+ struct item *item;
+ item = &sd->status.inventory[i];
+ pc_additem(vsd,item,(int)z);
+ }
+ pc_delitem(sd,pc_search_inventory(sd, vsd->vend_loot),(int)z,0,6);
+ }
+ } else {
+ //Logs (V)ending Zeny [Lupus]
+ log_zeny(vsd, LOG_TYPE_VENDING, sd, (int)z);
+ pc_payzeny(sd, (int)z);
+ if( battle_config.vending_tax )
+ z -= z * (battle_config.vending_tax/10000.);

- pc_payzeny(sd, (int)z);
- if( battle_config.vending_tax )
- z -= z * (battle_config.vending_tax/10000.);
- pc_getzeny(vsd, (int)z);
+ pc_getzeny(vsd, (int)z);
+ }

for( i = 0; i < count; i++ )
{
short amount = *(uint16*)(data + 4*i + 0);
short idx = *(uint16*)(data + 4*i + 2);
+ const char *item_name;
+
+ double rev = 0.;
idx -= 2;

+ if(battle_config.ex_vending_info){ // Extended Vending system
+ item_name = itemdb_jname(vsd->status.cart[idx].nameid);
+ rev = ((double)vsd->vending[vend_list[i]].value * (double)amount);
+ }
+
//Logs sold (V)ending items [Lupus]
log_pick(&vsd->bl, LOG_TYPE_VENDING, vsd->status.cart[idx].nameid, -amount, &vsd->status.cart[idx]);
log_pick( &sd->bl, LOG_TYPE_VENDING, vsd->status.cart[idx].nameid, amount, &vsd->status.cart[idx]);
@@ -195,11 +272,20 @@
if( battle_config.buyer_name )
{
char temp[256];
- sprintf(temp, msg_txt(265), sd->status.name);
+ if(battle_config.ex_vending_info) // Extended Vending system
+ sprintf(temp, msg_txt(707), sd->status.name, item_name, amount, (int)(rev -= rev * (battle_config.vending_tax/10000.)), vsd->vend_loot?itemdb_jname(vsd->vend_loot):"Zeny");
+ else
+ sprintf(temp, msg_txt(265), sd->status.name);
clif_disp_onlyself(vsd,temp,strlen(temp));
}
}

+ if(battle_config.ex_vending_info){ // Extended Vending system
+ char temp[256];
+ sprintf(temp, msg_txt(708), sd->status.name, (int)z, vsd->vend_loot?itemdb_jname(vsd->vend_loot):"Zeny");
+ clif_disp_onlyself(vsd,temp,strlen(temp));
+ }
+
// compact the vending list
for( i = 0, cursor = 0; i < vsd->vend_num; i++ )
{
[/spoiler]

 

Help me please!!



up

Link to comment
Share on other sites

1 answer to this question

Recommended Posts


  • Group:  Members
  • Topic Count:  60
  • Topics Per Day:  0.01
  • Content Count:  562
  • Reputation:   219
  • Joined:  11/22/11
  • Last Seen:  

as your error said (I don't what is those)

 

go to those line and see what error is

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...