Web Vending Database (Standalone and FluxCP Addon)

Sanasol

New member
Messages
43
Points
0
Age
33
Location
St. Petersburg
Github
s-anasol
Source inserting shop info into database.
Few source lines and a little bit of magic php + js
Decorated with new Twitter Bootstrap
 
Remake of this http://www.eathena.ws/board/index.php?showtopic=255406  /oops 
 
Installation

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.cindex 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(mmysql_handle,"delete from `vending` where `char_id`='%d'", sd->status.char_id) )+ Sql_ShowDebug(mmysql_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(mmysql_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(mmysql_handle);+ }+ else+ {+ if( SQL_ERROR == SQL->Query(mmysql_handle,"delete from `vending` where `char_id`='%d' and `index`='%d'", vsd->status.char_id, vend_list) )+ Sql_ShowDebug(mmysql_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(mmysql_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(mmysql_handle);+ }+ //vending to db [Sanasol] clif->showvendingboard(&sd->bl,message,0); idb_put(vending->db, sd->vender_id, sd);
 


Create table

CREATE TABLE IF NOT EXISTS `vending` ( `char_id` int(11) unsigned NOT NULL DEFAULT '0', `name` varchar(50) DEFAULT NULL, `index` tinyint(3) unsigned NOT NULL DEFAULT '0', `nameid` int(11) unsigned NOT NULL DEFAULT '0', `amount` int(11) unsigned NOT NULL DEFAULT '0', `price` bigint(20) unsigned NOT NULL DEFAULT '0', `refine` tinyint(3) unsigned NOT NULL DEFAULT '0', `card0` smallint(11) NOT NULL DEFAULT '0', `card1` smallint(11) NOT NULL DEFAULT '0', `card2` smallint(11) NOT NULL DEFAULT '0', `card3` smallint(11) NOT NULL DEFAULT '0', PRIMARY KEY (`char_id`,`index`), KEY `char_id` (`char_id`), KEY `nameid` (`nameid`)) ENGINE=MyISAM;


Screenshots

Main page​
69e9a99f1f02c192e3e2cef9562b.png
 ​
 ​
Map position tooltip​
84c4ecf6c00cc0f01c182bdff472.png
For map showing need *.gat files​
Approximate position, accurate display at map could not to achieve
default_sad.png
 ​
And Search​
1fb870736fd032484e2452df9f50.png

 ​
Item images very old, you need to add the new items​
 ​
 ​
FluxCP Screens

e56669e30bf1f420c9484f948e1d.png
d21beacb490bc2f4415285fee024.png
399cb907803a06ce3e009b5f97d5.png
 
Demo
FluxCP Demo
 
Sources

github.png
 ​
 ​
My src versions: Hercules SRC Patch + web Standalone or FluxCP​
 ​
Yommy src versions: Standalone or FluxCP​
 ​
[NEW 04.20.14] Hercules src version: FluxCP
 ​
Sources is absolutely free, but if you want you can do donation​
ba074bc683178eb863ef108f820a.png
 
Last edited by a moderator:
please make it compatible with hercules
default_smile.png
(for newbies)

 
Notice: Undefined offset: 0 in C:Xampphtdocshervendorconfig.php on line 21Notice: Trying to get property of non-object in C:Xampphtdocshervendorconfig.php on line 21Notice: Undefined offset: 0 in C:Xampphtdocshervendorconfig.php on line 22Notice: Trying to get property of non-object in C:Xampphtdocshervendorconfig.php on line 22Notice: Undefined offset: 0 in C:Xampphtdocshervendorconfig.php on line 21Notice: Trying to get property of non-object in C:Xampphtdocshervendorconfig.php on line 21Notice: Undefined offset: 0 in C:Xampphtdocshervendorconfig.php on line 22Notice: Trying to get property of non-object in C:Xampphtdocshervendorconfig.php on line 22Notice: Undefined offset: 0 in C:Xampphtdocshervendorconfig.php on line 21Notice: Trying to get property of non-object in C:Xampphtdocshervendorconfig.php on line 21Notice: Undefined offset: 0 in C:Xampphtdocshervendorconfig.php on line 22Notice: Trying to get property of non-object in C:Xampphtdocshervendorconfig.php on line 22

this appears when trying to vend named item.

@edit

typo: line 13 of config.php

$refine = array(0 =>"-", "+1", "+2", "+3", "+4", "+5", "+5", "+6", "+7","+8","+9","+10");

I think it should be:

$refine = array(0 =>"-", "+1", "+2", "+3", "+4", "+5", "+6", "+7","+8","+9","+10");

@TS

Good job
default_smile.png


 
Last edited by a moderator:
Oops typo
default_wink.png


Notice: Undefined offset: 0 in C:Xampphtdocshervendorconfig.php on line 21Notice: Trying to get property of non-object in C:Xampphtdocshervendorconfig.php on line 21Notice: Undefined offset: 0 in C:Xampphtdocshervendorconfig.php on line 22Notice: Trying to get property of non-object in C:Xampphtdocshervendorconfig.php on line 22 

 
That means "item"(card id from slot) not found, need add some check

 
Last edited by a moderator:
Last edited by a moderator:
Yommy's is a plugin and doesn't require any source edit and once compiled can activated/deactivated with just a conf change and a server restart, but has no web counterpart. This one's just a source edit that needs compilation both for adding and removing it, but has a web counterpart.

In case of Yommy's you just would need to make the web part yourself.

 
Last edited by a moderator:
Sir sanasol, I'll just ask if your web vending database is compatible with extended vending system or is there a way to make it compatible

 
looked extended vending code, i think it should work. Just on the site will show that the price zeny, but in the name of the store kind of like to show the correct currency

 
Back
Top