Web Vending Database (Standalone and FluxCP Addon)

Brilliant addition, if it supported an item and character based vend history it would be like a private server ragial.
default_smile.png


 
Thank you very much for that information.
default_smile.png


EDIT: What's the difference between your add-on and Yommy's? xD

 
Last edited by a moderator:
Thank you very much for that information.
default_smile.png


EDIT: What's the difference between your add-on and Yommy's? xD
Yommy have addon for web site? I have no information about it.
I thought that's what this is:

IMZKu4c.png


I assumed you and Yommy both had your own source, standalone, and fluxcp plugin. Maybe I am just misunderstanding. =(

EDIT: They all point to different repos on GitHub.

 
Last edited by a moderator:
Thank you very much for that information.
default_smile.png


EDIT: What's the difference between your add-on and Yommy's? xD
Yommy have addon for web site? I have no information about it.
I thought that's what this is:

I assumed you and Yommy both had your own source, standalone, and fluxcp plugin. Maybe I am just misunderstanding. =(

EDIT: They all point to different repos on GitHub.
yes, you get confused
default_biggrin.png


I have my variant of source code for server. And fluxcp addon which work with my sources.

Yommy coded other variant of source, which work different but doing same function. Then i modified my fluxcp addon for compatibility with Yommy sources.

So, yommy's src easier to install coz plugin. Thats why i strongly commend install it(yommy's plugin) and install my fluxcp addon(if you need it on site ofc)

I hope now its clear, coz english not my native
default_biggrin.png


 
Yes, that makes sense I think. So your FlucCP Add-on works backwards compatible with your source patch and Yommy's plugin.

Yommys FluxCP Add-on only works for her plugin, and not your source patch.

So you recommend using your FluxCP Add-on just incase I decide to switch from plugin to patch since it's backwards compatible?

 
Yes, that makes sense I think. So your FlucCP Add-on works backwards compatible with your source patch and Yommy's plugin.

Yommys FluxCP Add-on only works for her plugin, and not your source patch.

So you recommend using your FluxCP Add-on just incase I decide to switch from plugin to patch since it's backwards compatible?
no you wiil need get other addon version.

 
I guess I just don't understand the differences between your Add-on and Yommy's. They have two different links on Github but seem to be the same.

 
How do I add the icons for the images? The one for Flux hercules or vending_he

EDIT: Ignore this, I Found it.

 
Last edited by a moderator:
excuse revive the topic but I am an error and could not solve


ERROR
vending.c: In function ‘vending_closevending’:vending.c:63: error: ‘SQL_ERROR’ undeclared (first use in this function)
vending.c:63: error: (Each undeclared identifier is reported only once
vending.c:63: error: for each function it appears in.)
vending.c:63: error: ‘SQL’ undeclared (first use in this function)
vending.c:64: warning: implicit declaration of function ‘Sql_ShowDebug’
vending.c:64: warning: nested extern declaration of ‘Sql_ShowDebug’
vending.c: In function ‘vending_purchasereq’:
vending.c:205: error: too few arguments to function ‘clif->vendingreport’
vending.c:209: error: ‘SQL_ERROR’ undeclared (first use in this function)
vending.c:209: error: ‘SQL’ undeclared (first use in this function)
vending.c: In function ‘vending_openvending’:
vending.c:336: error: ‘SQL_ERROR’ undeclared (first use in this function)
vending.c:336: error: ‘SQL’ undeclared (first use in this function)

 


I applied in this source

Code:
diff --git a/src/map/unit.c b/src/map/unit.cindex 22c7165..9b0aa6a 100644
--- a/src/map/unit.c
+++ b/src/map/unit.c
@@ -2135,6 +2135,9 @@ int unit_remove_map_(struct block_list *bl, clr_type clrtype, const char* file,
                 chat->leavechat(sd,0);
             if(sd->trade_partner)
                 trade->cancel(sd);
+            //vending to db [Sanasol]
+            vending->close(sd);
+            //vending to db [Sanasol]
             buyingstore->close(sd);
             searchstore->close(sd);
             if(sd->state.storage_flag == 1)
diff --git a/src/map/vending.c b/src/map/vending.c
index 2784d46..0f213a2 100644
--- a/src/map/vending.c
+++ b/src/map/vending.c
@@ -37,6 +37,10 @@ void vending_closevending(struct map_session_data* sd) {
     if( sd->state.vending ) {
         sd->state.vending = false;
         clif->closevendingboard(&sd->bl, 0);
+        //vending to db [Sanasol]
+        if( SQL_ERROR == SQL->Query(map->mysql_handle,"delete from `vending` where `char_id`='%d'", sd->status.char_id) )
+        Sql_ShowDebug(map->mysql_handle);
+        //vending to db [Sanasol]
         idb_remove(vending->db, sd->status.char_id);
     }
 }
@@ -174,7 +178,18 @@ void vending_purchasereq(struct map_session_data* sd, int aid, unsigned int uid,
         vsd->vending[vend_list[i]].amount -= amount;
         pc->cart_delitem(vsd, idx, amount, 0, LOG_TYPE_VENDING);
         clif->vendingreport(vsd, idx, amount);
-
+        //vending to db [Sanasol]
+        if(vsd->vending[vend_list[i]].amount >= 1)
+        {
+            if( SQL_ERROR == SQL->Query(map->mysql_handle,"update `vending` set `amount`='%d' where `char_id`='%d' and `index`='%d'", vsd->vending[vend_list[i]].amount, vsd->status.char_id, vend_list[i]) )
+                Sql_ShowDebug(map->mysql_handle);
+        }
+        else
+        {
+            if( SQL_ERROR == SQL->Query(map->mysql_handle,"delete from `vending` where `char_id`='%d' and `index`='%d'", vsd->status.char_id, vend_list[i]) )
+                Sql_ShowDebug(map->mysql_handle);
+        }
+        //vending to db [Sanasol]
         //print buyer's name
         if( battle_config.buyer_name ) {
             char temp[256];
@@ -281,6 +296,19 @@ void vending_openvending(struct map_session_data* sd, const char* message, const
     safestrncpy(sd->message, message, MESSAGE_SIZE);


     clif->openvending(sd,sd->bl.id,sd->vending);
+     //vending to db [Sanasol]
+    for( j = 0; j < count; j++ )
+    {
+        int index = sd->vending[j].index;
+        struct item_data* data = itemdb->search(sd->status.cart[index].nameid);
+        int nameid = ( data->view_id > 0 ) ? data->view_id : sd->status.cart[index].nameid;
+        int amount = sd->vending[j].amount;
+        int price = cap_value(sd->vending[j].value, 0, (unsigned int)battle_config.vending_max_value);
+        
+        if( SQL_ERROR == SQL->Query(map->mysql_handle,"INSERT INTO `vending` (`char_id`,`name`,`index`,`nameid`,`amount`,`price`,`refine`,`card0`,`card1`,`card2`,`card3`) VALUES (%d, '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d')", sd->status.char_id, message, j, nameid, amount, price, sd->status.cart[index].refine, sd->status.cart[index].card[0], sd->status.cart[index].card[1], sd->status.cart[index].card[2], sd->status.cart[index].card[3]) )
+        Sql_ShowDebug(map->mysql_handle);
+    }
+    //vending to db [Sanasol]
     clif->showvendingboard(&sd->bl,message,0);
     
     idb_put(vending->db, sd->vender_id, sd);

 
 
excuse revive the topic but I am an error and could not solve


ERROR
vending.c: In function ‘vending_closevending’:vending.c:63: error: ‘SQL_ERROR’ undeclared (first use in this function)
vending.c:63: error: (Each undeclared identifier is reported only once
vending.c:63: error: for each function it appears in.)
vending.c:63: error: ‘SQL’ undeclared (first use in this function)
vending.c:64: warning: implicit declaration of function ‘Sql_ShowDebug’
vending.c:64: warning: nested extern declaration of ‘Sql_ShowDebug’
vending.c: In function ‘vending_purchasereq’:
vending.c:205: error: too few arguments to function ‘clif->vendingreport’
vending.c:209: error: ‘SQL_ERROR’ undeclared (first use in this function)
vending.c:209: error: ‘SQL’ undeclared (first use in this function)
vending.c: In function ‘vending_openvending’:
vending.c:336: error: ‘SQL_ERROR’ undeclared (first use in this function)
vending.c:336: error: ‘SQL’ undeclared (first use in this function)

 


I applied in this source

diff --git a/src/map/unit.c b/src/map/unit.cindex 22c7165..9b0aa6a 100644
--- a/src/map/unit.c
+++ b/src/map/unit.c
@@ -2135,6 +2135,9 @@ int unit_remove_map_(struct block_list *bl, clr_type clrtype, const char* file,
                 chat->leavechat(sd,0);
             if(sd->trade_partner)
                 trade->cancel(sd);
+            //vending to db [Sanasol]
+            vending->close(sd);
+            //vending to db [Sanasol]
             buyingstore->close(sd);
             searchstore->close(sd);
             if(sd->state.storage_flag == 1)
diff --git a/src/map/vending.c b/src/map/vending.c
index 2784d46..0f213a2 100644
--- a/src/map/vending.c
+++ b/src/map/vending.c
@@ -37,6 +37,10 @@ void vending_closevending(struct map_session_data* sd) {
     if( sd->state.vending ) {
         sd->state.vending = false;
         clif->closevendingboard(&sd->bl, 0);
+        //vending to db [Sanasol]
+        if( SQL_ERROR == SQL->Query(map->mysql_handle,"delete from `vending` where `char_id`='%d'", sd->status.char_id) )
+        Sql_ShowDebug(map->mysql_handle);
+        //vending to db [Sanasol]
         idb_remove(vending->db, sd->status.char_id);
     }
 }
@@ -174,7 +178,18 @@ void vending_purchasereq(struct map_session_data* sd, int aid, unsigned int uid,
         vsd->vending[vend_list].amount -= amount;
         pc->cart_delitem(vsd, idx, amount, 0, LOG_TYPE_VENDING);
         clif->vendingreport(vsd, idx, amount);
-
+        //vending to db [Sanasol]
+        if(vsd->vending[vend_list].amount >= 1)
+        {
+            if( SQL_ERROR == SQL->Query(map->mysql_handle,"update `vending` set `amount`='%d' where `char_id`='%d' and `index`='%d'", vsd->vending[vend_list].amount, vsd->status.char_id, vend_list) )
+                Sql_ShowDebug(map->mysql_handle);
+        }
+        else
+        {
+            if( SQL_ERROR == SQL->Query(map->mysql_handle,"delete from `vending` where `char_id`='%d' and `index`='%d'", vsd->status.char_id, vend_list) )
+                Sql_ShowDebug(map->mysql_handle);
+        }
+        //vending to db [Sanasol]
         //print buyer's name
         if( battle_config.buyer_name ) {
             char temp[256];
@@ -281,6 +296,19 @@ void vending_openvending(struct map_session_data* sd, const char* message, const
     safestrncpy(sd->message, message, MESSAGE_SIZE);


     clif->openvending(sd,sd->bl.id,sd->vending);
+     //vending to db [Sanasol]
+    for( j = 0; j < count; j++ )
+    {
+        int index = sd->vending[j].index;
+        struct item_data* data = itemdb->search(sd->status.cart[index].nameid);
+        int nameid = ( data->view_id > 0 ) ? data->view_id : sd->status.cart[index].nameid;
+        int amount = sd->vending[j].amount;
+        int price = cap_value(sd->vending[j].value, 0, (unsigned int)battle_config.vending_max_value);
+        
+        if( SQL_ERROR == SQL->Query(map->mysql_handle,"INSERT INTO `vending` (`char_id`,`name`,`index`,`nameid`,`amount`,`price`,`refine`,`card0`,`card1`,`card2`,`card3`) VALUES (%d, '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d')", sd->status.char_id, message, j, nameid, amount, price, sd->status.cart[index].refine, sd->status.cart[index].card[0], sd->status.cart[index].card[1], sd->status.cart[index].card[2], sd->status.cart[index].card[3]) )
+        Sql_ShowDebug(map->mysql_handle);
+    }
+    //vending to db [Sanasol]
     clif->showvendingboard(&sd->bl,message,0);
     
     idb_put(vending->db, sd->vender_id, sd);

 

add:

#include "common/sql.h"

 
I'm having the same error when compiling, I already added #include "common/sql.h" to vending.c

 
Sem_t_tulo.png


 
Back
Top