summaryrefslogtreecommitdiff
path: root/npc
diff options
context:
space:
mode:
authorLance <Lance@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-04-01 09:37:50 +0000
committerLance <Lance@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-04-01 09:37:50 +0000
commit74a30ea8d414cec9fba211298c72b2a686b0582a (patch)
treec8c111060aad9e80949fd07d77104c1c6747a299 /npc
parenta41884fbb032359e4f0bfcdaee50acb749ed8862 (diff)
downloadhercules-74a30ea8d414cec9fba211298c72b2a686b0582a.tar.gz
hercules-74a30ea8d414cec9fba211298c72b2a686b0582a.tar.bz2
hercules-74a30ea8d414cec9fba211298c72b2a686b0582a.tar.xz
hercules-74a30ea8d414cec9fba211298c72b2a686b0582a.zip
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
Diffstat (limited to 'npc')
-rw-r--r--npc/sample/npc_dynamic_shop.txt84
-rw-r--r--npc/scripts_custom.conf1
2 files changed, 85 insertions, 0 deletions
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
// --------------------------------------------------------------
// --------------------------------------------------------------