* NPC shop buy list received from the client is now validated for scripted shops (OnBuyItem), before the control is transfered to the script, as well (bugreport:3680, since r5841, related r8525).
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14616 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
1e81541e66
commit
d23eafd077
@ -1,6 +1,7 @@
|
|||||||
Date Added
|
Date Added
|
||||||
|
|
||||||
2010/12/22
|
2010/12/22
|
||||||
|
* NPC shop buy list received from the client is now validated for scripted shops (OnBuyItem), before the control is transfered to the script, as well (bugreport:3680, since r5841, related r8525). [Ai4rei]
|
||||||
* Resolved random compiler warnings. [Ai4rei]
|
* Resolved random compiler warnings. [Ai4rei]
|
||||||
- Silenced pointer size mismatch gcc warning for variables passed to script_setarray_pc (bugreport:4661, since r14613).
|
- Silenced pointer size mismatch gcc warning for variables passed to script_setarray_pc (bugreport:4661, since r14613).
|
||||||
* Fixed sql mapreg loading code specifying output buffer size for SqlStmt_BindColumn without zero-terminator, leading to truncations of variable names and/or their values when using the maximum length (bugreport:1939, since r11245). [Ai4rei]
|
* Fixed sql mapreg loading code specifying output buffer size for SqlStmt_BindColumn without zero-terminator, leading to truncations of variable names and/or their values when using the maximum length (bugreport:1939, since r11245). [Ai4rei]
|
||||||
|
@ -1261,8 +1261,6 @@ int npc_buylist(struct map_session_data* sd, int n, unsigned short* item_list)
|
|||||||
nd = npc_checknear(sd,map_id2bl(sd->npc_shopid));
|
nd = npc_checknear(sd,map_id2bl(sd->npc_shopid));
|
||||||
if( nd == NULL )
|
if( nd == NULL )
|
||||||
return 3;
|
return 3;
|
||||||
if( nd->master_nd != NULL ) //Script-based shops.
|
|
||||||
return npc_buylist_sub(sd,n,item_list,nd->master_nd);
|
|
||||||
if( nd->subtype != SHOP )
|
if( nd->subtype != SHOP )
|
||||||
return 3;
|
return 3;
|
||||||
|
|
||||||
@ -1297,6 +1295,11 @@ int npc_buylist(struct map_session_data* sd, int n, unsigned short* item_list)
|
|||||||
amount = item_list[i*2+0] = 1;
|
amount = item_list[i*2+0] = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( nd->master_nd )
|
||||||
|
{// Script-controlled shops decide by themselves, what can be bought and for what price.
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
switch( pc_checkadditem(sd,nameid,amount) )
|
switch( pc_checkadditem(sd,nameid,amount) )
|
||||||
{
|
{
|
||||||
case ADDITEM_EXIST:
|
case ADDITEM_EXIST:
|
||||||
@ -1316,6 +1319,9 @@ int npc_buylist(struct map_session_data* sd, int n, unsigned short* item_list)
|
|||||||
w += itemdb_weight(nameid) * amount;
|
w += itemdb_weight(nameid) * amount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( nd->master_nd != NULL ) //Script-based shops.
|
||||||
|
return npc_buylist_sub(sd,n,item_list,nd->master_nd);
|
||||||
|
|
||||||
if( z > (double)sd->status.zeny )
|
if( z > (double)sd->status.zeny )
|
||||||
return 1; // Not enough Zeny
|
return 1; // Not enough Zeny
|
||||||
if( w + sd->weight > sd->max_weight )
|
if( w + sd->weight > sd->max_weight )
|
||||||
|
Loading…
x
Reference in New Issue
Block a user