Jump to content
Sanasol

Web Vending Database (Standalone and FluxCP Addon)

Recommended Posts

  On 4/20/2014 at 5:49 PM, Sanasol said:

 

  On 4/20/2014 at 5:19 PM, evilpuncker said:

 

  On 4/17/2014 at 11:20 AM, Sanasol said:

Today we found critical issue, please update asap your code.

 

https://github.com/S-anasol/sanasol/commit/d3155a1287d5a876575df715c543ab1bfb97f106

 

thanks :D any news on the new structure? :P

35c2109b8428b7c559540fc24cd9ca7b_a14fac19d4e889d7849cbb51eb711f04.jpg

 

Sorry to interrupt but this makes me LOL. hahahaha 

Share this post


Link to post
Share on other sites

Hi mate, this work on my flux cp but the thing is it can only show the vender when on the auto trade, how can I make it to show even those who are not using auto trade?

Edited by thanna

Share this post


Link to post
Share on other sites

Hi, sansol do you have a tutorial on Yommy's src? I tried to used your src but after compiling the server map_server doesnt work. thank you

Share this post


Link to post
Share on other sites
  On 8/24/2015 at 5:35 AM, xcethx said:

Hi, sansol do you have a tutorial on Yommy's src? I tried to used your src but after compiling the server map_server doesnt work. thank you

nope, i havent :(

Share this post


Link to post
Share on other sites
  On 8/24/2015 at 8:00 AM, Sanasol said:

 

  On 8/24/2015 at 5:35 AM, xcethx said:

Hi, sansol do you have a tutorial on Yommy's src? I tried to used your src but after compiling the server map_server doesnt work. thank you

nope, i havent :(

anway thank you. I'm having problem with your src after editing unit.c and vending.c then compiling them. Map_server stop working, i followed your guide.

 

and btw how do i apply the .patch. ? manually or using app?

Edited by xcethx

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
  On 3/3/2016 at 3:49 PM, Lavenblade said:

What's the difference between yours and Yommy's version?

just different src.

 

yommy's src plugin for herc

my src for herc/rathena. and not as plugin

 

better use yommy plugin(easier)

and my addon for site

it also support yommy's src

Yommy src versions: Standalone or FluxCP

Edited by Sanasol

Share this post


Link to post
Share on other sites

Thank you very much for that information. :)

 

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

Edited by Lavenblade

Share this post


Link to post
Share on other sites
  On 3/4/2016 at 1:18 AM, Lavenblade said:

Thank you very much for that information. :)

 

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.

Share this post


Link to post
Share on other sites
  On 3/4/2016 at 9:40 AM, Sanasol said:

 

  On 3/4/2016 at 1:18 AM, Lavenblade said:

Thank you very much for that information. :)

 

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.

Edited by Lavenblade

Share this post


Link to post
Share on other sites
  On 3/4/2016 at 4:32 PM, Lavenblade said:

 

  On 3/4/2016 at 9:40 AM, Sanasol said:

 

  On 3/4/2016 at 1:18 AM, Lavenblade said:

Thank you very much for that information. :)

 

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 :D

 

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 :D

Share this post


Link to post
Share on other sites

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?

Share this post


Link to post
Share on other sites
  On 3/4/2016 at 8:13 PM, Lavenblade said:

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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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



EDIT: Ignore this, I Found it.

Edited by canditw

Share this post


Link to post
Share on other sites

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[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);

 

Share this post


Link to post
Share on other sites
  On 10/7/2016 at 9:17 PM, joaolipinski said:

 

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[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);

 

 

add:

#include "common/sql.h"

Share this post


Link to post
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
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  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...

Important Information

By using this site, you agree to our Terms of Use.