From 74a30ea8d414cec9fba211298c72b2a686b0582a Mon Sep 17 00:00:00 2001 From: Lance Date: Sat, 1 Apr 2006 09:37:50 +0000 Subject: Fixed the dynamic shop system memory allocation and id_db problem. Added sample script. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5842 54d463be-8e91-2dee-dedb-b68131a5f0ec --- npc/sample/npc_dynamic_shop.txt | 84 +++++++++++++++++++++++++++++++++++++++++ npc/scripts_custom.conf | 1 + 2 files changed, 85 insertions(+) create mode 100644 npc/sample/npc_dynamic_shop.txt (limited to 'npc') diff --git a/npc/sample/npc_dynamic_shop.txt b/npc/sample/npc_dynamic_shop.txt new file mode 100644 index 000000000..59e76c72c --- /dev/null +++ b/npc/sample/npc_dynamic_shop.txt @@ -0,0 +1,84 @@ +- shop dyn_shop1 -1,501:50 + +prontera.gat,181,200,4 script Dynamic Shop 123,{ +callshop "dyn_shop1",0; +end; + +OnSellItem: +for(set @i, 0; @i < getarraysize(@sold_nameid); set @i, @i + 1){ + if(countitem(@sold_nameid[@i]) < @sold_quantity[@i] || @sold_quantity[@i] <= 0){ + mes "omgh4x!"; + end; + } + if(@sold_nameid[@i] == 501){ + set $@rpotsleft, $@rpotsleft + @sold_quantity[@i]; + set Zeny, Zeny + @sold_quantity[@i]*20; + delitem 501, @sold_quantity[@i]; + } else { + if(@sold_nameid[@i] == 502){ + set $@opotsleft, $@opotsleft + @sold_quantity[@i]; + set Zeny, Zeny + @sold_quantity[@i]*100; + delitem 502, @sold_quantity[@i]; + } else { + mes "Sorry, I don't need your items."; + } + } +} +deletearray @sold_quantity, getarraysize(@sold_quantity); +deletearray @sold_nameid, getarraysize(@sold_nameid); +mes "Deal completed."; +close; + +OnBuyItem: +for(set @i, 0; @i < getarraysize(@bought_nameid); set @i, @i + 1){ + if(@bought_quantity[@i] <= 0){ + mes "omgh4x!"; + end; + } + if(@bought_nameid[@i] == 501){ + if(@bought_quantity[@i] > $@rpotsleft){ + if($@rpotsleft > 0){ + set @bought_quantity[@i], $@rpotsleft; + } else { + mes "We are out of red potions!"; + close; + } + } + if(Zeny >= 40*@bought_quantity[@i]){ + set Zeny, Zeny - 40*@bought_quantity[@i]; + getitem 501, @bought_quantity[@i]; + set $@rpotsleft, $@rpotsleft - @bought_quantity[@i]; + } else { + mes "You have insufficient cash."; + close; + } + } else { + if(@bought_quantity[@i] > $@opotsleft){ + if($@opotsleft > 0){ + set @bought_quantity[@i], $@opotsleft; + } else { + mes "We are out of orange potions!"; + close; + } + } + if(Zeny >= 200*@bought_quantity[@i]){ + set Zeny, Zeny - 200*@bought_quantity[@i]; + getitem 502, @bought_quantity[@i]; + set $@opotsleft, $@opotsleft - @bought_quantity[@i]; + } else { + mes "You have insufficient cash."; + close; + } + } +} +deletearray @bought_quantity, getarraysize(@bought_quantity); +deletearray @bought_nameid, getarraysize(@bought_nameid); +mes "Trade done."; +close; + +OnInit: +npcshopitem "dyn_shop1", 501,40,502,200; +set $@rpotsleft, 10; +set $@opotsleft, 10; +end; +} \ No newline at end of file diff --git a/npc/scripts_custom.conf b/npc/scripts_custom.conf index 083d50fb8..2bcecceb6 100644 --- a/npc/scripts_custom.conf +++ b/npc/scripts_custom.conf @@ -89,6 +89,7 @@ npc: npc/custom/adoption.txt //npc: npc/custom/Lance/FR_HallOfFame.c //npc: npc/custom/Lance/FR_WeatherController.c //npc: npc/custom/Lance/FR_MailSystem.c +//npc: npc/custom/sample/npc_dynamic_shop.txt // -------------------------------------------------------------- // -------------------------------------------------------------- -- cgit v1.2.3-70-g09d2