diff options
Diffstat (limited to 'npc/custom/stock_market.txt')
-rw-r--r-- | npc/custom/stock_market.txt | 1584 |
1 files changed, 792 insertions, 792 deletions
diff --git a/npc/custom/stock_market.txt b/npc/custom/stock_market.txt index a4a4f7919..7da3c5244 100644 --- a/npc/custom/stock_market.txt +++ b/npc/custom/stock_market.txt @@ -1,793 +1,793 @@ -//===== eAthena Script =======================================
-//= Stock Market Game
-//===== By: ==================================================
-//= acky (acky@bigpond.net.au)
-//===== Current Version: =====================================
-//= 1.3.1
-//===== Compatible With: =====================================
-//= Any eAthena Version
-//===== Description: =========================================
-//= NPC for a stock market game.
-//===== Additional Comments: =================================
-//= GM Must activate the NPC before use.
-//= Fixed MAJOR exploit. - players could buy for free
-//= Low prices likely to rise, High prices likely to drop
-//= Small fix by Galeon
-//= Lupus: This script lets players make 40,000,000z a day
-//= so use it on your own risk
-//============================================================
-
-prontera.gat,140,181,5 script sharenames -1,{
-end;
-OnInit:
-// Sets the names of the shares //
-set $S1N$,"JIN";
-set $S2N$,"VNG";
-set $S3N$,"SHA";
-set $S4N$,"RGC";
-set $S5N$,"PSC";
-set $S6N$,"GNG";
-set $S7N$,"XRO";
-set $S8N$,"GRM";
-set $S9N$,"DOP";
-set $S10N$,"POR";
-
-// Transaction fee //
-set $S_Trans,1500;
-
-// Min & Max buyable //
-set $S_BuyMin,1;
-set $S_BuyMax,1000000;
-end;
-
-// Average Price (Your start prices) //
-set $S_Avg,100;
-
-// Set times of fluctuation //
-OnClock1100:
-set $S_LastUpd$,"12:00";
-goto S_Fluc;
-end;
-
-OnClock0000:
-set $S_LastUpd$,"00:00";
-goto S_Fluc;
-end;
-
-OnClock0600:
-set $S_LastUpd$,"06:00";
-goto S_Fluc;
-end;
-
-OnClock1800:
-set $S_LastUpd$,"18:00";
-goto S_Fluc;
-end;
-
-OnClock2100:
-set $S_LastUpd$,"21:00";
-goto S_Fluc;
-end;
-
-OnClock0900:
-set $S_LastUpd$,"09:00";
-goto S_Fluc;
-end;
-
-OnClock1500:
-set $S_LastUpd$,"15:00";
-goto S_Fluc;
-end;
-
-S_Fluc:
-set $fluc,rand (-6,6);
-set $S1B,$S1;
-set $S1,$S1+$fluc;
-if ($S1 < 25) set $S1,$S1+3;
-if ($S1 < 50) set $S1,$S1+2;
-if ($S1 > 150) set $S1,$S1-2;
-if ($S1 > 175) set $S1,$S1-3;
-if ($S1 < 1) set $S1,1;
-
-set $fluc,rand (-6,6);
-set $S2B,$S2;
-set $S2,$S2+$fluc;
-if ($S2 < 25) set $S2,$S2+3;
-if ($S2 < 50) set $S2,$S2+2;
-if ($S2 > 150) set $S2,$S2-2;
-if ($S2 > 175) set $S2,$S2-3;
-if ($S2 < 1) set $S2,1;
-
-set $fluc,rand (-6,6);
-set $S3B,$S3;
-set $S3,$S3+$fluc;
-if ($S3 < 25) set $S3,$S3+3;
-if ($S3 < 50) set $S3,$S3+2;
-if ($S3 > 150) set $S3,$S3-2;
-if ($S3 > 175) set $S3,$S3-3;
-if ($S3 < 1) set $S3,1;
-
-set $fluc,rand (-6,6);
-set $S4B,$S4;
-set $S4,$S4+$fluc;
-if ($S4 < 25) set $S4,$S4+3;
-if ($S4 < 50) set $S4,$S4+2;
-if ($S4 > 150) set $S4,$S4-2;
-if ($S4 > 175) set $S4,$S4-3;
-if ($S4 < 1) set $S4,1;
-
-set $fluc,rand (-6,6);
-set $S5B,$S5;
-set $S5,$S5+$fluc;
-if ($S5 < 25) set $S5,$S5+3;
-if ($S5 < 50) set $S5,$S5+2;
-if ($S5 > 150) set $S5,$S5-2;
-if ($S5 > 175) set $S5,$S5-3;
-if ($S5 < 1) set $S5,1;
-
-set $fluc,rand (-6,6);
-set $S6B,$S6;
-set $S6,$S6+$fluc;
-if ($S6 < 25) set $S6,$S6+3;
-if ($S6 < 50) set $S6,$S6+2;
-if ($S6 > 150) set $S6,$S6-2;
-if ($S6 > 175) set $S6,$S6-3;
-if ($S6 < 1) set $S6,1;
-
-set $fluc,rand (-6,6);
-set $S7B,$S7;
-set $S7,$S7+$fluc;
-if ($S7 < 25) set $S7,$S7+3;
-if ($S7 < 50) set $S7,$S7+2;
-if ($S7 > 150) set $S7,$S7-2;
-if ($S7 > 175) set $S7,$S7-3;
-if ($S7 < 1) set $S7,1;
-
-set $fluc,rand (-6,6);
-set $S8B,$S8;
-set $S8,$S8+$fluc;
-if ($S8 < 25) set $S8,$S8+3;
-if ($S8 < 50) set $S8,$S8+2;
-if ($S8 > 150) set $S8,$S8-2;
-if ($S8 > 175) set $S8,$S8-3;
-if ($S8 < 1) set $S8,1;
-
-set $fluc,rand (-6,6);
-set $S9B,$S9;
-set $S9,$S9+$fluc;
-if ($S9 < 25) set $S9,$S9+3;
-if ($S9 < 50) set $S9,$S9+2;
-if ($S9 > 150) set $S9,$S9-2;
-if ($S9 > 175) set $S9,$S9-3;
-if ($S9 < 1) set $S9,1;
-
-set $fluc,rand (-6,6);
-set $S10B,$S10;
-set $S10,$S10+$fluc;
-if ($S10 < 25) set $S10,$S10+3;
-if ($S10 < 50) set $S10,$S10+2;
-if ($S10 > 150) set $S10,$S10-2;
-if ($S10 > 175) set $S10,$S10-3;
-if ($S10 < 1) set $S10,1;
-end;
-}
-
-- script Stock Market::stockmarket 109,{
-// Ensures no trading when default prices have not been set //
-set @stotal,$S1+$S2+$S3+$S4+$S5+$S6+$S7+$S8+$S9+$S10;
-if (@stotal > 0) goto S_Start;
-mes "[Stock Market]";
-mes "Trading is currently closed.";
-if (getgmlevel(3) > 90) goto GM_Open;
-close;
-
-// Begining of interface //
-S_Start:
-mes "[Stock Market]";
-mes "Last fluctuation: " + $S_LastUpd$;
-
-// Loss/Gain in price //
-set @S1Update,$S1-$S1B;
-set @S2Update,$S2-$S2B;
-set @S3Update,$S3-$S3B;
-set @S4Update,$S4-$S4B;
-set @S5Update,$S5-$S5B;
-set @S6Update,$S6-$S6B;
-set @S7Update,$S7-$S7B;
-set @S8Update,$S8-$S8B;
-set @S9Update,$S9-$S9B;
-set @S10Update,$S10-$S10B;
-
-// Makes Loss/Gain Red/Green //
-if (@S1Update < 0) set @S1Update$,"^FF0000"+@S1Update+"^000000";
-if (@S1Update > 0) set @S1Update$,"^00FF00+"+@S1Update+"^000000";
-if (@S1Update == 0) set @S1Update$,@S1Update;
-
-if (@S2Update < 0) set @S2Update$,"^FF0000"+@S2Update+"^000000";
-if (@S2Update > 0) set @S2Update$,"^00FF00+"+@S2Update+"^000000";
-if (@S2Update == 0) set @S2Update$,@S2Update;
-
-if (@S3Update < 0) set @S3Update$,"^FF0000"+@S3Update+"^000000";
-if (@S3Update > 0) set @S3Update$,"^00FF00+"+@S3Update+"^000000";
-if (@S3Update == 0) set @S3Update$,@S3Update;
-
-if (@S4Update < 0) set @S4Update$,"^FF0000"+@S4Update+"^000000";
-if (@S4Update > 0) set @S4Update$,"^00FF00+"+@S4Update+"^000000";
-if (@S4Update == 0) set @S4Update$,@S4Update;
-
-if (@S5Update < 0) set @S5Update$,"^FF0000"+@S5Update+"^000000";
-if (@S5Update > 0) set @S5Update$,"^00FF00+"+@S5Update+"^000000";
-if (@S5Update == 0) set @S5Update$,@S5Update;
-
-if (@S6Update < 0) set @S6Update$,"^FF0000"+@S6Update+"^000000";
-if (@S6Update > 0) set @S6Update$,"^00FF00+"+@S6Update+"^000000";
-if (@S6Update == 0) set @S6Update$,@S6Update;
-
-if (@S7Update < 0) set @S7Update$,"^FF0000"+@S7Update+"^000000";
-if (@S7Update > 0) set @S7Update$,"^00FF00+"+@S7Update+"^000000";
-if (@S7Update == 0) set @S7Update$,@S7Update;
-
-if (@S8Update < 0) set @S8Update$,"^FF0000"+@S8Update+"^000000";
-if (@S8Update > 0) set @S8Update$,"^00FF00+"+@S8Update+"^000000";
-if (@S8Update == 0) set @S8Update$,@S8Update;
-
-if (@S9Update < 0) set @S9Update$,"^FF0000"+@S9Update+"^000000";
-if (@S9Update > 0) set @S9Update$,"^00FF00+"+@S9Update+"^000000";
-if (@S9Update == 0) set @S9Update$,@S9Update;
-
-if (@S10Update < 0) set @S10Update$,"^FF0000"+@S10Update+"^000000";
-if (@S10Update > 0) set @S10Update$,"^00FF00+"+@S10Update+"^000000";
-if (@S10Update == 0) set @S10Update$,@S10Update;
-
-// Displays shares & prices //
-mes "^21698F"+$S1N$+"^000000" + " " + $S1 + "z (" + @S1Update$ + ")";
-mes "^21698F"+$S2N$+"^000000" + " " + $S2 + "z (" + @S2Update$ + ")";
-mes "^21698F"+$S3N$+"^000000" + " " + $S3 + "z (" + @S3Update$ + ")";
-mes "^21698F"+$S4N$+"^000000" + " " + $S4 + "z (" + @S4Update$ + ")";
-mes "^21698F"+$S5N$+"^000000" + " " + $S5 + "z (" + @S5Update$ + ")";
-mes "^21698F"+$S6N$+"^000000" + " " + $S6 + "z (" + @S6Update$ + ")";
-mes "^21698F"+$S7N$+"^000000" + " " + $S7 + "z (" + @S7Update$ + ")";
-mes "^21698F"+$S8N$+"^000000" + " " + $S8 + "z (" + @S8Update$ + ")";
-mes "^21698F"+$S9N$+"^000000" + " " + $S9 + "z (" + @S9Update$ + ")";
-mes "^21698F"+$S10N$+"^000000" + " " + $S10 + "z (" + @S10Update$ + ")";
-next;
-
-// GM Menu link //
-if (getgmlevel(3) > 90) goto GM_subMenu;
-menu "Portfolio",S_Port,"Buy Shares",S_Buy,"Sell Shares",S_Sell,"Cancel",S_Quit;
-
-GM_subMenu:
-menu "Portfolio",S_Port,"Buy Shares",S_Buy,"Sell Shares",S_Sell,"GM Menu",GM_Menu,"Cancel",S_Quit;
-
-// Selling Shares //
-S_Sell:
- mes "[Stock Market]";
- mes "Enter the name of the share you wish to sell.";
- mes "Transaction fee of ^FF0000" + $S_Trans + "z^000000 will apply.";
- if (#S1 > 0) mes "^0000FF"+$S1N$+"^FF0000" + " x " + #S1 + " [" + $S1 + "z]";
- if (#S2 > 0) mes "^0000FF"+$S2N$+"^FF0000" + " x " + #S2 + " [" + $S2 + "z]";
- if (#S3 > 0) mes "^0000FF"+$S3N$+"^FF0000" + " x " + #S3 + " [" + $S3 + "z]";
- if (#S4 > 0) mes "^0000FF"+$S4N$+"^FF0000" + " x " + #S4 + " [" + $S4 + "z]";
- if (#S5 > 0) mes "^0000FF"+$S5N$+"^FF0000" + " x " + #S5 + " [" + $S5 + "z]";
- if (#S6 > 0) mes "^0000FF"+$S6N$+"^FF0000" + " x " + #S6 + " [" + $S6 + "z]";
- if (#S7 > 0) mes "^0000FF"+$S7N$+"^FF0000" + " x " + #S7 + " [" + $S7 + "z]";
- if (#S8 > 0) mes "^0000FF"+$S8N$+"^FF0000" + " x " + #S8 + " [" + $S8 + "z]";
- if (#S9 > 0) mes "^0000FF"+$S9N$+"^FF0000" + " x " + #S9 + " [" + $S9 + "z]";
- if (#S10 > 0) mes "^0000FF"+$S10N$+"^FF0000" + " x " + #S10 + " [" + $S10 + "z]";
- set @sellname$,"0";
- input @sellname$;
- set @sellamount,0;
- input @sellamount;
- if (@sellamount < 1) goto S_SellInv;
- if (zeny < $S_Trans) goto S_NoZeny;
- set zeny,zeny-$S_Trans;
-
- SELLS1:
- if (@sellname$ != $S1N$) goto SELLS2;
- if (@sellamount > #S1) goto S_SellTooHigh;
- set @price,@sellamount*$S1;
- set #S1,#S1-@sellamount;
- set zeny,zeny+@price;
- next;
- mes "Sold " + @sellamount + " " + $S1N$ + " shares.";
- mes "Earned ^0000FF"+@price+"z^000000.";
- next;
- goto S_Start;
-
- SELLS2:
- if (@sellname$ != $S2N$) goto SELLS3;
- if (@sellamount > #S2) goto S_SellTooHigh;
- set @price,@sellamount*$S2;
- set #S2,#S2-@sellamount;
- set zeny,zeny+@price;
- next;
- mes "Sold " + @sellamount + " " + $S2N$ + " shares.";
- mes "Earned ^0000FF"+@price+"z^000000.";
- next;
- goto S_Start;
-
- SELLS3:
- if (@sellname$ != $S3N$) goto SELLS4;
- if (@sellamount > #S3) goto S_SellTooHigh;
- set @price,@sellamount*$S3;
- set #S3,#S3-@sellamount;
- set zeny,zeny+@price;
- next;
- mes "Sold " + @sellamount + " " + $S3N$ + " shares.";
- mes "Earned ^0000FF"+@price+"z^000000.";
- next;
- goto S_Start;
-
- SELLS4:
- if (@sellname$ != $S4N$) goto SELLS5;
- if (@sellamount > #S4) goto S_SellTooHigh;
- set @price,@sellamount*$S4;
- set #S4,#S4-@sellamount;
- set zeny,zeny+@price;
- next;
- mes "Sold " + @sellamount + " " + $S4N$ + " shares.";
- mes "Earned ^0000FF"+@price+"z^000000.";
- next;
- goto S_Start;
-
- SELLS5:
- if (@sellname$ != $S5N$) goto SELLS6;
- if (@sellamount > #S5) goto S_SellTooHigh;
- set @price,@sellamount*$S5;
- set #S5,#S5-@sellamount;
- set zeny,zeny+@price;
- next;
- mes "Sold " + @sellamount + " " + $S5N$ + " shares.";
- mes "Earned ^0000FF"+@price+"z^000000.";
- next;
- goto S_Start;
-
- SELLS6:
- if (@sellname$ != $S6N$) goto SELLS7;
- if (@sellamount > #S6) goto S_SellTooHigh;
- set @price,@sellamount*$S6;
- set #S6,#S6-@sellamount;
- set zeny,zeny+@price;
- next;
- mes "Sold " + @sellamount + " " + $S6N$ + " shares.";
- mes "Earned ^0000FF"+@price+"z^000000.";
- next;
- goto S_Start;
-
- SELLS7:
- if (@sellname$ != $S7N$) goto SELLS8;
- if (@sellamount > #S7) goto S_SellTooHigh;
- set @price,@sellamount*$S7;
- set #S7,#S7-@sellamount;
- set zeny,zeny+@price;
- next;
- mes "Sold " + @sellamount + " " + $S7N$ + " shares.";
- mes "Earned ^0000FF"+@price+"z^000000.";
- next;
- goto S_Start;
-
- SELLS8:
- if (@sellname$ != $S8N$) goto SELLS9;
- if (@sellamount > #S8) goto S_SellTooHigh;
- set @price,@sellamount*$S8;
- set #S8,#S8-@sellamount;
- set zeny,zeny+@price;
- next;
- mes "Sold " + @sellamount + " " + $S8N$ + " shares.";
- mes "Earned ^0000FF"+@price+"z^000000.";
- next;
- goto S_Start;
-
- SELLS9:
- if (@sellname$ != $S9N$) goto SELLS10;
- if (@sellamount > #S9) goto S_SellTooHigh;
- set @price,@sellamount*$S9;
- set #S9,#S9-@sellamount;
- set zeny,zeny+@price;
- next;
- mes "Sold " + @sellamount + " " + $S9N$ + " shares.";
- mes "Earned ^0000FF"+@price+"z^000000.";
- next;
- goto S_Start;
-
- SELLS10:
- if (@sellname$ != $S10N$) goto SELLS11;
- if (@sellamount > #S10) goto S_SellTooHigh;
- set @price,@sellamount*$S10;
- set #S10,#S10-@sellamount;
- set zeny,zeny+@price;
- next;
- mes "Sold " + @sellamount + " " + $S10N$ + " shares.";
- mes "Earned ^0000FF"+@price+"z^000000.";
- next;
- goto S_Start;
-
- SELLS11:
- mes "^FF0000Invalid Share Name.^000000";
- next;
- goto S_Start;
-
- S_SellTooHigh:
- mes "^FF0000You don't have that many shares.^000000";
- next;
- goto S_Start;
-
- S_SellInv:
- mes "^FF0000Invalid integer.^000000";
- next;
- goto S_Start;
-
-// Buying Shares //
-S_Buy:
- mes "[Stock Market]";
- mes "Available shares:";
- mes $S1N$;
- mes $S2N$;
- mes $S3N$;
- mes $S4N$;
- mes $S5N$;
- mes $S6N$;
- mes $S7N$;
- mes $S8N$;
- mes $S9N$;
- mes $S10N$;
- next;
- menu "Continue",-,"Cancel",S_Start;
-
- mes "Enter the name of the share company";
- mes "Transaction fee of ^FF0000" + $S_Trans + "z^000000 will apply.";
- set @buyname$,"0";
- input @buyname$;
-
- set @buyamount,0;
- input @buyamount;
- // Checks valid number //
- if (@buyamount < $S_BuyMin) goto S_TooLow;
- if (@buyamount > $S_BuyMax) goto S_TooHigh;
- if (zeny < $S_Trans) goto S_NoZeny;
- set zeny,zeny-$S_Trans;
-
- // Purchases the shares //
-
- PURS1:
- if (@buyname$ != $S1N$) goto PURS2;
- set @price,@buyamount*$S1;
- if (zeny < @price) goto S_NoZeny;
- set #S1,#S1+@buyamount;
- set @price,@buyamount*$S1;
- set zeny,zeny-@price;
- mes "Bought " + @buyamount + " " + $S1N$ + " shares.";
- mes "Lost ^0000FF"+@price+"z^000000.";
- next;
- goto S_Start;
-
- PURS2:
- if (@buyname$ != $S2N$) goto PURS3;
- set @price,@buyamount*$S2;
- if (zeny < @price) goto S_NoZeny;
- set #S2,#S2+@buyamount;
- set zeny,zeny-@price;
- mes "Bought " + @buyamount + " " + $S2N$ + " shares.";
- mes "Lost ^0000FF"+@price+"z^000000.";
- next;
- goto S_Start;
-
- PURS3:
- if (@buyname$ != $S3N$) goto PURS4;
- set @price,@buyamount*$S3;
- if (zeny < @price) goto S_NoZeny;
- set #S3,#S3+@buyamount;
- set zeny,zeny-@price;
- mes "Bought " + @buyamount + " " + $S3N$ + " shares.";
- mes "Lost ^0000FF"+@price+"z^000000.";
- next;
- goto S_Start;
-
- PURS4:
- if (@buyname$ != $S4N$) goto PURS5;
- set @price,@buyamount*$S4;
- if (zeny < @price) goto S_NoZeny;
- set #S4,#S4+@buyamount;
- set zeny,zeny-@price;
- mes "Bought " + @buyamount + " " + $S4N$ + " shares.";
- mes "Lost ^0000FF"+@price+"z^000000.";
- next;
- goto S_Start;
-
- PURS5:
- if (@buyname$ != $S5N$) goto PURS6;
- set @price,@buyamount*$S5;
- if (zeny < @price) goto S_NoZeny;
- set #S5,#S5+@buyamount;
- set zeny,zeny-@price;
- mes "Bought " + @buyamount + " " + $S5N$ + " shares.";
- mes "Lost ^0000FF"+@price+"z^000000.";
- next;
- goto S_Start;
-
- PURS6:
- if (@buyname$ != $S6N$) goto PURS7;
- set @price,@buyamount*$S6;
- if (zeny < @price) goto S_NoZeny;
- set #S6,#S6+@buyamount;
- set zeny,zeny-@price;
- mes "Bought " + @buyamount + " " + $S6N$ + " shares.";
- mes "Lost ^0000FF"+@price+"z^000000.";
- next;
- goto S_Start;
-
- PURS7:
- if (@buyname$ != $S7N$) goto PURS8;
- set @price,@buyamount*$S7;
- if (zeny < @price) goto S_NoZeny;
- set #S7,#S7+@buyamount;
- set zeny,zeny-@price;
- mes "Bought " + @buyamount + " " + $S7N$ + " shares.";
- mes "Lost ^0000FF"+@price+"z^000000.";
- next;
- goto S_Start;
-
- PURS8:
- if (@buyname$ != $S8N$) goto PURS9;
- set @price,@buyamount*$S8;
- if (zeny < @price) goto S_NoZeny;
- set #S8,#S8+@buyamount;
- set zeny,zeny-@price;
- mes "Bought " + @buyamount + " " + $S8N$ + " shares.";
- mes "Lost ^0000FF"+@price+"z^000000.";
- next;
- goto S_Start;
-
- PURS9:
- if (@buyname$ != $S9N$) goto PURS10;
- set @price,@buyamount*$S9;
- if (zeny < @price) goto S_NoZeny;
- set #S9,#S9+@buyamount;
- set zeny,zeny-@price;
- mes "Bought " + @buyamount + " " + $S9N$ + " shares.";
- mes "Lost ^0000FF"+@price+"z^000000.";
- next;
- goto S_Start;
-
- PURS10:
- if (@buyname$ != $S10N$) goto PURS11;
- set @price,@buyamount*$S10;
- if (zeny < @price) goto S_NoZeny;
- set #S10,#S10+@buyamount;
- set zeny,zeny-@price;
- mes "Bought " + @buyamount + " " + $S10N$ + " shares.";
- mes "Lost ^0000FF"+@price+"z^000000.";
- next;
- goto S_Start;
-
- PURS11:
- goto S_InvName;
-
- // Number too low //
- S_TooLow:
- mes "^FF0000Minimum of " + $S_BuyMin + " shares can be bought at a time.^000000";
- next;
- goto S_Start;
-
- // Number too high //
- S_TooHigh:
- mes "^FF0000Maximum number of " + $S_BuyMax + " shares can be bought at a time.^000000";
- next;
- goto S_Start;
-
- S_NoZeny:
- mes "^FF0000You do not have enough zeny.^000000";
- next;
- goto S_Start;
-
- // Sends user to start if name invalid //
- S_InvName:
- mes "^FF0000Invalid share name.^000000";
- next;
- goto S_Start;
-
-// Displays your total amount //
-S_Port:
-mes "[Stock Market]";
-
- ACCS1:
- if (#S1 < 1) goto ACCS2;
- set @S1,#S1*$S1;
- mes $S1N$ + ": " + #S1 + " x " + $S1 + "z = " + @S1 + "z";
-
- ACCS2:
- if (#S2 < 1) goto ACCS3;
- set @S2,#S2*$S2;
- mes $S2N$ + ": " + #S2 + " x " + $S2 + "z = " + @S2 + "z";
-
- ACCS3:
- if (#S3 < 1) goto ACCS4;
- set @S3,#S3*$S3;
- mes $S3N$ + ": " + #S3 + " x " + $S3 + "z = " + @S3 + "z";
-
- ACCS4:
- if (#S4 < 1) goto ACCS5;
- set @S4,#S4*$S4;
- mes $S4N$ + ": " + #S4 + " x " + $S4 + "z = " + @S4 + "z";
-
- ACCS5:
- if (#S5 < 1) goto ACCS6;
- set @S5,#S5*$S5;
- mes $S5N$ + ": " + #S5 + " x " + $S5 + "z = " + @S5 + "z";
-
- ACCS6:
- if (#S6 < 1) goto ACCS7;
- set @S6,#S6*$S6;
- mes $S6N$ + ": " + #S6 + " x " + $S6 + "z = " + @S6 + "z";
-
- ACCS7:
- if (#S7 < 1) goto ACCS8;
- set @S7,#S7*$S7;
- mes $S7N$ + ": " + #S7 + " x " + $S7 + "z = " + @S7 + "z";
-
- ACCS8:
- if (#S8 < 1) goto ACCS9;
- set @S8,#S8*$S8;
- mes $S8N$ + ": " + #S8 + " x " + $S8 + "z = " + @S8 + "z";
-
- ACCS9:
- if (#S9 < 1) goto ACCS10;
- set @S9,#S9*$S9;
- mes $S9N$ + ": " + #S9 + " x " + $S9 + "z = " + @S9 + "z";
-
- ACCS10:
- if (#S10 < 1) goto ACCS11;
- set @S10,#S10*$S10;
- mes $S10N$ + ": " + #S10 + " x " + $S10 + "z = " + @S10 + "z";
-
- // Total //
- ACCS11:
- set @total,@S1 + @S2 + @S3 + @S4 + @S5 + @S6 + @S7 + @S8 + @S9 + @S10;
- mes "Total value: "+@total+"z";
- next;
- goto S_Start;
-
-
-// GM MENU //
-GM_Menu:
-mes "[Stock Market]";
-mes "Master, do you require anything?";
-menu "Fluctuate Market",S_Fluc,"Reset Prices",GM_Open,"Nothing",S_Start;
-
-S_Fluc:
-set $fluc,rand (-6,6);
-set $S1B,$S1;
-set $S1,$S1+$fluc;
-if ($S1 < 25) set $S1,$S1+3;
-if ($S1 < 50) set $S1,$S1+2;
-if ($S1 > 150) set $S1,$S1-2;
-if ($S1 > 175) set $S1,$S1-3;
-if ($S1 < 1) set $S1,1;
-
-set $fluc,rand (-6,6);
-set $S2B,$S2;
-set $S2,$S2+$fluc;
-if ($S2 < 25) set $S2,$S2+3;
-if ($S2 < 50) set $S2,$S2+2;
-if ($S2 > 150) set $S2,$S2-2;
-if ($S2 > 175) set $S2,$S2-3;
-if ($S2 < 2) set $S2,1;
-
-set $fluc,rand (-6,6);
-set $S3B,$S3;
-set $S3,$S3+$fluc;
-if ($S3 < 25) set $S3,$S3+3;
-if ($S3 < 50) set $S3,$S3+2;
-if ($S3 > 150) set $S3,$S3-2;
-if ($S3 > 175) set $S3,$S3-3;
-if ($S3 < 1) set $S3,1;
-
-set $fluc,rand (-6,6);
-set $S4B,$S4;
-set $S4,$S4+$fluc;
-if ($S4 < 25) set $S4,$S4+3;
-if ($S4 < 50) set $S4,$S4+2;
-if ($S4 > 150) set $S4,$S4-2;
-if ($S4 > 175) set $S4,$S4-3;
-if ($S4 < 1) set $S4,1;
-
-set $fluc,rand (-6,6);
-set $S5B,$S5;
-set $S5,$S5+$fluc;
-if ($S5 < 25) set $S5,$S5+3;
-if ($S5 < 50) set $S5,$S5+2;
-if ($S5 > 150) set $S5,$S5-2;
-if ($S5 > 175) set $S5,$S5-3;
-if ($S5 < 1) set $S5,1;
-
-set $fluc,rand (-6,6);
-set $S6B,$S6;
-set $S6,$S6+$fluc;
-if ($S6 < 25) set $S6,$S6+3;
-if ($S6 < 50) set $S6,$S6+2;
-if ($S6 > 150) set $S6,$S6-2;
-if ($S6 > 175) set $S6,$S6-3;
-if ($S6 < 1) set $S6,1;
-
-set $fluc,rand (-6,6);
-set $S7B,$S7;
-set $S7,$S7+$fluc;
-if ($S7 < 25) set $S7,$S7+3;
-if ($S7 < 50) set $S7,$S7+2;
-if ($S7 > 150) set $S7,$S7-2;
-if ($S7 > 175) set $S7,$S7-3;
-if ($S7 < 1) set $S7,1;
-
-set $fluc,rand (-6,6);
-set $S8B,$S8;
-set $S8,$S8+$fluc;
-if ($S8 < 25) set $S8,$S8+3;
-if ($S8 < 50) set $S8,$S8+2;
-if ($S8 > 150) set $S8,$S8-2;
-if ($S8 > 175) set $S8,$S8-3;
-if ($S8 < 1) set $S8,1;
-
-set $fluc,rand (-6,6);
-set $S9B,$S9;
-set $S9,$S9+$fluc;
-if ($S9 < 25) set $S9,$S9+3;
-if ($S9 < 50) set $S9,$S9+2;
-if ($S9 > 150) set $S9,$S9-2;
-if ($S9 > 175) set $S9,$S9-3;
-if ($S9 < 1) set $S9,1;
-
-set $fluc,rand (-6,6);
-set $S10B,$S10;
-set $S10,$S10+$fluc;
-if ($S10 < 25) set $S10,$S10+3;
-if ($S10 < 50) set $S10,$S10+2;
-if ($S10 > 150) set $S10,$S10-2;
-if ($S10 > 175) set $S10,$S10-3;
-if ($S10 < 1) set $S10,1;
-
-set $S_LastUpd$,"GM Fluctuation";
-mes "Market fluctuated.";
-close;
-
-GM_Open:
-menu "Set prices to...",GM_Set,"Cancel",-;
-mes "Farewell.";
-close;
-
-GM_Set:
-mes "Are you sure you want to reset?";
-mes "^FF0000All share values will become the same.^000000";
-next;
-menu "Yes",-,"No",GM_Menu;
-set @gmset,0;
-input @gmset;
-set $S1,@gmset;
-set $S2,@gmset;
-set $S3,@gmset;
-set $S4,@gmset;
-set $S5,@gmset;
-set $S6,@gmset;
-set $S7,@gmset;
-set $S8,@gmset;
-set $S9,@gmset;
-set $S10,@gmset;
-set $S1B,@gmset;
-set $S2B,@gmset;
-set $S3B,@gmset;
-set $S4B,@gmset;
-set $S5B,@gmset;
-set $S6B,@gmset;
-set $S7B,@gmset;
-set $S8B,@gmset;
-set $S9B,@gmset;
-set $S10B,@gmset;
-mes "All prices changed to " + @gmset + "z.";
-close;
-
-S_Quit:
-mes "[Stock Market]";
-mes "Goodbye.";
-close;
-}
-
+//===== eAthena Script ======================================= +//= Stock Market Game +//===== By: ================================================== +//= acky (acky@bigpond.net.au) +//===== Current Version: ===================================== +//= 1.3.1 +//===== Compatible With: ===================================== +//= Any eAthena Version +//===== Description: ========================================= +//= NPC for a stock market game. +//===== Additional Comments: ================================= +//= GM Must activate the NPC before use. +//= Fixed MAJOR exploit. - players could buy for free +//= Low prices likely to rise, High prices likely to drop +//= Small fix by Galeon +//= Lupus: This script lets players make 40,000,000z a day +//= so use it on your own risk +//============================================================ + +prontera.gat,140,181,5 script sharenames -1,{ +end; +OnInit: +// Sets the names of the shares // +set $S1N$,"JIN"; +set $S2N$,"VNG"; +set $S3N$,"SHA"; +set $S4N$,"RGC"; +set $S5N$,"PSC"; +set $S6N$,"GNG"; +set $S7N$,"XRO"; +set $S8N$,"GRM"; +set $S9N$,"DOP"; +set $S10N$,"POR"; + +// Transaction fee // +set $S_Trans,1500; + +// Min & Max buyable // +set $S_BuyMin,1; +set $S_BuyMax,1000000; +end; + +// Average Price (Your start prices) // +set $S_Avg,100; + +// Set times of fluctuation // +OnClock1100: +set $S_LastUpd$,"12:00"; +goto S_Fluc; +end; + +OnClock0000: +set $S_LastUpd$,"00:00"; +goto S_Fluc; +end; + +OnClock0600: +set $S_LastUpd$,"06:00"; +goto S_Fluc; +end; + +OnClock1800: +set $S_LastUpd$,"18:00"; +goto S_Fluc; +end; + +OnClock2100: +set $S_LastUpd$,"21:00"; +goto S_Fluc; +end; + +OnClock0900: +set $S_LastUpd$,"09:00"; +goto S_Fluc; +end; + +OnClock1500: +set $S_LastUpd$,"15:00"; +goto S_Fluc; +end; + +S_Fluc: +set $fluc,rand (-6,6); +set $S1B,$S1; +set $S1,$S1+$fluc; +if ($S1 < 25) set $S1,$S1+3; +if ($S1 < 50) set $S1,$S1+2; +if ($S1 > 150) set $S1,$S1-2; +if ($S1 > 175) set $S1,$S1-3; +if ($S1 < 1) set $S1,1; + +set $fluc,rand (-6,6); +set $S2B,$S2; +set $S2,$S2+$fluc; +if ($S2 < 25) set $S2,$S2+3; +if ($S2 < 50) set $S2,$S2+2; +if ($S2 > 150) set $S2,$S2-2; +if ($S2 > 175) set $S2,$S2-3; +if ($S2 < 1) set $S2,1; + +set $fluc,rand (-6,6); +set $S3B,$S3; +set $S3,$S3+$fluc; +if ($S3 < 25) set $S3,$S3+3; +if ($S3 < 50) set $S3,$S3+2; +if ($S3 > 150) set $S3,$S3-2; +if ($S3 > 175) set $S3,$S3-3; +if ($S3 < 1) set $S3,1; + +set $fluc,rand (-6,6); +set $S4B,$S4; +set $S4,$S4+$fluc; +if ($S4 < 25) set $S4,$S4+3; +if ($S4 < 50) set $S4,$S4+2; +if ($S4 > 150) set $S4,$S4-2; +if ($S4 > 175) set $S4,$S4-3; +if ($S4 < 1) set $S4,1; + +set $fluc,rand (-6,6); +set $S5B,$S5; +set $S5,$S5+$fluc; +if ($S5 < 25) set $S5,$S5+3; +if ($S5 < 50) set $S5,$S5+2; +if ($S5 > 150) set $S5,$S5-2; +if ($S5 > 175) set $S5,$S5-3; +if ($S5 < 1) set $S5,1; + +set $fluc,rand (-6,6); +set $S6B,$S6; +set $S6,$S6+$fluc; +if ($S6 < 25) set $S6,$S6+3; +if ($S6 < 50) set $S6,$S6+2; +if ($S6 > 150) set $S6,$S6-2; +if ($S6 > 175) set $S6,$S6-3; +if ($S6 < 1) set $S6,1; + +set $fluc,rand (-6,6); +set $S7B,$S7; +set $S7,$S7+$fluc; +if ($S7 < 25) set $S7,$S7+3; +if ($S7 < 50) set $S7,$S7+2; +if ($S7 > 150) set $S7,$S7-2; +if ($S7 > 175) set $S7,$S7-3; +if ($S7 < 1) set $S7,1; + +set $fluc,rand (-6,6); +set $S8B,$S8; +set $S8,$S8+$fluc; +if ($S8 < 25) set $S8,$S8+3; +if ($S8 < 50) set $S8,$S8+2; +if ($S8 > 150) set $S8,$S8-2; +if ($S8 > 175) set $S8,$S8-3; +if ($S8 < 1) set $S8,1; + +set $fluc,rand (-6,6); +set $S9B,$S9; +set $S9,$S9+$fluc; +if ($S9 < 25) set $S9,$S9+3; +if ($S9 < 50) set $S9,$S9+2; +if ($S9 > 150) set $S9,$S9-2; +if ($S9 > 175) set $S9,$S9-3; +if ($S9 < 1) set $S9,1; + +set $fluc,rand (-6,6); +set $S10B,$S10; +set $S10,$S10+$fluc; +if ($S10 < 25) set $S10,$S10+3; +if ($S10 < 50) set $S10,$S10+2; +if ($S10 > 150) set $S10,$S10-2; +if ($S10 > 175) set $S10,$S10-3; +if ($S10 < 1) set $S10,1; +end; +} + +- script Stock Market::stockmarket 109,{ +// Ensures no trading when default prices have not been set // +set @stotal,$S1+$S2+$S3+$S4+$S5+$S6+$S7+$S8+$S9+$S10; +if (@stotal > 0) goto S_Start; +mes "[Stock Market]"; +mes "Trading is currently closed."; +if (getgmlevel(3) > 90) goto GM_Open; +close; + +// Begining of interface // +S_Start: +mes "[Stock Market]"; +mes "Last fluctuation: " + $S_LastUpd$; + +// Loss/Gain in price // +set @S1Update,$S1-$S1B; +set @S2Update,$S2-$S2B; +set @S3Update,$S3-$S3B; +set @S4Update,$S4-$S4B; +set @S5Update,$S5-$S5B; +set @S6Update,$S6-$S6B; +set @S7Update,$S7-$S7B; +set @S8Update,$S8-$S8B; +set @S9Update,$S9-$S9B; +set @S10Update,$S10-$S10B; + +// Makes Loss/Gain Red/Green // +if (@S1Update < 0) set @S1Update$,"^FF0000"+@S1Update+"^000000"; +if (@S1Update > 0) set @S1Update$,"^00FF00+"+@S1Update+"^000000"; +if (@S1Update == 0) set @S1Update$,@S1Update; + +if (@S2Update < 0) set @S2Update$,"^FF0000"+@S2Update+"^000000"; +if (@S2Update > 0) set @S2Update$,"^00FF00+"+@S2Update+"^000000"; +if (@S2Update == 0) set @S2Update$,@S2Update; + +if (@S3Update < 0) set @S3Update$,"^FF0000"+@S3Update+"^000000"; +if (@S3Update > 0) set @S3Update$,"^00FF00+"+@S3Update+"^000000"; +if (@S3Update == 0) set @S3Update$,@S3Update; + +if (@S4Update < 0) set @S4Update$,"^FF0000"+@S4Update+"^000000"; +if (@S4Update > 0) set @S4Update$,"^00FF00+"+@S4Update+"^000000"; +if (@S4Update == 0) set @S4Update$,@S4Update; + +if (@S5Update < 0) set @S5Update$,"^FF0000"+@S5Update+"^000000"; +if (@S5Update > 0) set @S5Update$,"^00FF00+"+@S5Update+"^000000"; +if (@S5Update == 0) set @S5Update$,@S5Update; + +if (@S6Update < 0) set @S6Update$,"^FF0000"+@S6Update+"^000000"; +if (@S6Update > 0) set @S6Update$,"^00FF00+"+@S6Update+"^000000"; +if (@S6Update == 0) set @S6Update$,@S6Update; + +if (@S7Update < 0) set @S7Update$,"^FF0000"+@S7Update+"^000000"; +if (@S7Update > 0) set @S7Update$,"^00FF00+"+@S7Update+"^000000"; +if (@S7Update == 0) set @S7Update$,@S7Update; + +if (@S8Update < 0) set @S8Update$,"^FF0000"+@S8Update+"^000000"; +if (@S8Update > 0) set @S8Update$,"^00FF00+"+@S8Update+"^000000"; +if (@S8Update == 0) set @S8Update$,@S8Update; + +if (@S9Update < 0) set @S9Update$,"^FF0000"+@S9Update+"^000000"; +if (@S9Update > 0) set @S9Update$,"^00FF00+"+@S9Update+"^000000"; +if (@S9Update == 0) set @S9Update$,@S9Update; + +if (@S10Update < 0) set @S10Update$,"^FF0000"+@S10Update+"^000000"; +if (@S10Update > 0) set @S10Update$,"^00FF00+"+@S10Update+"^000000"; +if (@S10Update == 0) set @S10Update$,@S10Update; + +// Displays shares & prices // +mes "^21698F"+$S1N$+"^000000" + " " + $S1 + "z (" + @S1Update$ + ")"; +mes "^21698F"+$S2N$+"^000000" + " " + $S2 + "z (" + @S2Update$ + ")"; +mes "^21698F"+$S3N$+"^000000" + " " + $S3 + "z (" + @S3Update$ + ")"; +mes "^21698F"+$S4N$+"^000000" + " " + $S4 + "z (" + @S4Update$ + ")"; +mes "^21698F"+$S5N$+"^000000" + " " + $S5 + "z (" + @S5Update$ + ")"; +mes "^21698F"+$S6N$+"^000000" + " " + $S6 + "z (" + @S6Update$ + ")"; +mes "^21698F"+$S7N$+"^000000" + " " + $S7 + "z (" + @S7Update$ + ")"; +mes "^21698F"+$S8N$+"^000000" + " " + $S8 + "z (" + @S8Update$ + ")"; +mes "^21698F"+$S9N$+"^000000" + " " + $S9 + "z (" + @S9Update$ + ")"; +mes "^21698F"+$S10N$+"^000000" + " " + $S10 + "z (" + @S10Update$ + ")"; +next; + +// GM Menu link // +if (getgmlevel(3) > 90) goto GM_subMenu; +menu "Portfolio",S_Port,"Buy Shares",S_Buy,"Sell Shares",S_Sell,"Cancel",S_Quit; + +GM_subMenu: +menu "Portfolio",S_Port,"Buy Shares",S_Buy,"Sell Shares",S_Sell,"GM Menu",GM_Menu,"Cancel",S_Quit; + +// Selling Shares // +S_Sell: + mes "[Stock Market]"; + mes "Enter the name of the share you wish to sell."; + mes "Transaction fee of ^FF0000" + $S_Trans + "z^000000 will apply."; + if (#S1 > 0) mes "^0000FF"+$S1N$+"^FF0000" + " x " + #S1 + " [" + $S1 + "z]"; + if (#S2 > 0) mes "^0000FF"+$S2N$+"^FF0000" + " x " + #S2 + " [" + $S2 + "z]"; + if (#S3 > 0) mes "^0000FF"+$S3N$+"^FF0000" + " x " + #S3 + " [" + $S3 + "z]"; + if (#S4 > 0) mes "^0000FF"+$S4N$+"^FF0000" + " x " + #S4 + " [" + $S4 + "z]"; + if (#S5 > 0) mes "^0000FF"+$S5N$+"^FF0000" + " x " + #S5 + " [" + $S5 + "z]"; + if (#S6 > 0) mes "^0000FF"+$S6N$+"^FF0000" + " x " + #S6 + " [" + $S6 + "z]"; + if (#S7 > 0) mes "^0000FF"+$S7N$+"^FF0000" + " x " + #S7 + " [" + $S7 + "z]"; + if (#S8 > 0) mes "^0000FF"+$S8N$+"^FF0000" + " x " + #S8 + " [" + $S8 + "z]"; + if (#S9 > 0) mes "^0000FF"+$S9N$+"^FF0000" + " x " + #S9 + " [" + $S9 + "z]"; + if (#S10 > 0) mes "^0000FF"+$S10N$+"^FF0000" + " x " + #S10 + " [" + $S10 + "z]"; + set @sellname$,"0"; + input @sellname$; + set @sellamount,0; + input @sellamount; + if (@sellamount < 1) goto S_SellInv; + if (zeny < $S_Trans) goto S_NoZeny; + set zeny,zeny-$S_Trans; + + SELLS1: + if (@sellname$ != $S1N$) goto SELLS2; + if (@sellamount > #S1) goto S_SellTooHigh; + set @price,@sellamount*$S1; + set #S1,#S1-@sellamount; + set zeny,zeny+@price; + next; + mes "Sold " + @sellamount + " " + $S1N$ + " shares."; + mes "Earned ^0000FF"+@price+"z^000000."; + next; + goto S_Start; + + SELLS2: + if (@sellname$ != $S2N$) goto SELLS3; + if (@sellamount > #S2) goto S_SellTooHigh; + set @price,@sellamount*$S2; + set #S2,#S2-@sellamount; + set zeny,zeny+@price; + next; + mes "Sold " + @sellamount + " " + $S2N$ + " shares."; + mes "Earned ^0000FF"+@price+"z^000000."; + next; + goto S_Start; + + SELLS3: + if (@sellname$ != $S3N$) goto SELLS4; + if (@sellamount > #S3) goto S_SellTooHigh; + set @price,@sellamount*$S3; + set #S3,#S3-@sellamount; + set zeny,zeny+@price; + next; + mes "Sold " + @sellamount + " " + $S3N$ + " shares."; + mes "Earned ^0000FF"+@price+"z^000000."; + next; + goto S_Start; + + SELLS4: + if (@sellname$ != $S4N$) goto SELLS5; + if (@sellamount > #S4) goto S_SellTooHigh; + set @price,@sellamount*$S4; + set #S4,#S4-@sellamount; + set zeny,zeny+@price; + next; + mes "Sold " + @sellamount + " " + $S4N$ + " shares."; + mes "Earned ^0000FF"+@price+"z^000000."; + next; + goto S_Start; + + SELLS5: + if (@sellname$ != $S5N$) goto SELLS6; + if (@sellamount > #S5) goto S_SellTooHigh; + set @price,@sellamount*$S5; + set #S5,#S5-@sellamount; + set zeny,zeny+@price; + next; + mes "Sold " + @sellamount + " " + $S5N$ + " shares."; + mes "Earned ^0000FF"+@price+"z^000000."; + next; + goto S_Start; + + SELLS6: + if (@sellname$ != $S6N$) goto SELLS7; + if (@sellamount > #S6) goto S_SellTooHigh; + set @price,@sellamount*$S6; + set #S6,#S6-@sellamount; + set zeny,zeny+@price; + next; + mes "Sold " + @sellamount + " " + $S6N$ + " shares."; + mes "Earned ^0000FF"+@price+"z^000000."; + next; + goto S_Start; + + SELLS7: + if (@sellname$ != $S7N$) goto SELLS8; + if (@sellamount > #S7) goto S_SellTooHigh; + set @price,@sellamount*$S7; + set #S7,#S7-@sellamount; + set zeny,zeny+@price; + next; + mes "Sold " + @sellamount + " " + $S7N$ + " shares."; + mes "Earned ^0000FF"+@price+"z^000000."; + next; + goto S_Start; + + SELLS8: + if (@sellname$ != $S8N$) goto SELLS9; + if (@sellamount > #S8) goto S_SellTooHigh; + set @price,@sellamount*$S8; + set #S8,#S8-@sellamount; + set zeny,zeny+@price; + next; + mes "Sold " + @sellamount + " " + $S8N$ + " shares."; + mes "Earned ^0000FF"+@price+"z^000000."; + next; + goto S_Start; + + SELLS9: + if (@sellname$ != $S9N$) goto SELLS10; + if (@sellamount > #S9) goto S_SellTooHigh; + set @price,@sellamount*$S9; + set #S9,#S9-@sellamount; + set zeny,zeny+@price; + next; + mes "Sold " + @sellamount + " " + $S9N$ + " shares."; + mes "Earned ^0000FF"+@price+"z^000000."; + next; + goto S_Start; + + SELLS10: + if (@sellname$ != $S10N$) goto SELLS11; + if (@sellamount > #S10) goto S_SellTooHigh; + set @price,@sellamount*$S10; + set #S10,#S10-@sellamount; + set zeny,zeny+@price; + next; + mes "Sold " + @sellamount + " " + $S10N$ + " shares."; + mes "Earned ^0000FF"+@price+"z^000000."; + next; + goto S_Start; + + SELLS11: + mes "^FF0000Invalid Share Name.^000000"; + next; + goto S_Start; + + S_SellTooHigh: + mes "^FF0000You don't have that many shares.^000000"; + next; + goto S_Start; + + S_SellInv: + mes "^FF0000Invalid integer.^000000"; + next; + goto S_Start; + +// Buying Shares // +S_Buy: + mes "[Stock Market]"; + mes "Available shares:"; + mes $S1N$; + mes $S2N$; + mes $S3N$; + mes $S4N$; + mes $S5N$; + mes $S6N$; + mes $S7N$; + mes $S8N$; + mes $S9N$; + mes $S10N$; + next; + menu "Continue",-,"Cancel",S_Start; + + mes "Enter the name of the share company"; + mes "Transaction fee of ^FF0000" + $S_Trans + "z^000000 will apply."; + set @buyname$,"0"; + input @buyname$; + + set @buyamount,0; + input @buyamount; + // Checks valid number // + if (@buyamount < $S_BuyMin) goto S_TooLow; + if (@buyamount > $S_BuyMax) goto S_TooHigh; + if (zeny < $S_Trans) goto S_NoZeny; + set zeny,zeny-$S_Trans; + + // Purchases the shares // + + PURS1: + if (@buyname$ != $S1N$) goto PURS2; + set @price,@buyamount*$S1; + if (zeny < @price) goto S_NoZeny; + set #S1,#S1+@buyamount; + set @price,@buyamount*$S1; + set zeny,zeny-@price; + mes "Bought " + @buyamount + " " + $S1N$ + " shares."; + mes "Lost ^0000FF"+@price+"z^000000."; + next; + goto S_Start; + + PURS2: + if (@buyname$ != $S2N$) goto PURS3; + set @price,@buyamount*$S2; + if (zeny < @price) goto S_NoZeny; + set #S2,#S2+@buyamount; + set zeny,zeny-@price; + mes "Bought " + @buyamount + " " + $S2N$ + " shares."; + mes "Lost ^0000FF"+@price+"z^000000."; + next; + goto S_Start; + + PURS3: + if (@buyname$ != $S3N$) goto PURS4; + set @price,@buyamount*$S3; + if (zeny < @price) goto S_NoZeny; + set #S3,#S3+@buyamount; + set zeny,zeny-@price; + mes "Bought " + @buyamount + " " + $S3N$ + " shares."; + mes "Lost ^0000FF"+@price+"z^000000."; + next; + goto S_Start; + + PURS4: + if (@buyname$ != $S4N$) goto PURS5; + set @price,@buyamount*$S4; + if (zeny < @price) goto S_NoZeny; + set #S4,#S4+@buyamount; + set zeny,zeny-@price; + mes "Bought " + @buyamount + " " + $S4N$ + " shares."; + mes "Lost ^0000FF"+@price+"z^000000."; + next; + goto S_Start; + + PURS5: + if (@buyname$ != $S5N$) goto PURS6; + set @price,@buyamount*$S5; + if (zeny < @price) goto S_NoZeny; + set #S5,#S5+@buyamount; + set zeny,zeny-@price; + mes "Bought " + @buyamount + " " + $S5N$ + " shares."; + mes "Lost ^0000FF"+@price+"z^000000."; + next; + goto S_Start; + + PURS6: + if (@buyname$ != $S6N$) goto PURS7; + set @price,@buyamount*$S6; + if (zeny < @price) goto S_NoZeny; + set #S6,#S6+@buyamount; + set zeny,zeny-@price; + mes "Bought " + @buyamount + " " + $S6N$ + " shares."; + mes "Lost ^0000FF"+@price+"z^000000."; + next; + goto S_Start; + + PURS7: + if (@buyname$ != $S7N$) goto PURS8; + set @price,@buyamount*$S7; + if (zeny < @price) goto S_NoZeny; + set #S7,#S7+@buyamount; + set zeny,zeny-@price; + mes "Bought " + @buyamount + " " + $S7N$ + " shares."; + mes "Lost ^0000FF"+@price+"z^000000."; + next; + goto S_Start; + + PURS8: + if (@buyname$ != $S8N$) goto PURS9; + set @price,@buyamount*$S8; + if (zeny < @price) goto S_NoZeny; + set #S8,#S8+@buyamount; + set zeny,zeny-@price; + mes "Bought " + @buyamount + " " + $S8N$ + " shares."; + mes "Lost ^0000FF"+@price+"z^000000."; + next; + goto S_Start; + + PURS9: + if (@buyname$ != $S9N$) goto PURS10; + set @price,@buyamount*$S9; + if (zeny < @price) goto S_NoZeny; + set #S9,#S9+@buyamount; + set zeny,zeny-@price; + mes "Bought " + @buyamount + " " + $S9N$ + " shares."; + mes "Lost ^0000FF"+@price+"z^000000."; + next; + goto S_Start; + + PURS10: + if (@buyname$ != $S10N$) goto PURS11; + set @price,@buyamount*$S10; + if (zeny < @price) goto S_NoZeny; + set #S10,#S10+@buyamount; + set zeny,zeny-@price; + mes "Bought " + @buyamount + " " + $S10N$ + " shares."; + mes "Lost ^0000FF"+@price+"z^000000."; + next; + goto S_Start; + + PURS11: + goto S_InvName; + + // Number too low // + S_TooLow: + mes "^FF0000Minimum of " + $S_BuyMin + " shares can be bought at a time.^000000"; + next; + goto S_Start; + + // Number too high // + S_TooHigh: + mes "^FF0000Maximum number of " + $S_BuyMax + " shares can be bought at a time.^000000"; + next; + goto S_Start; + + S_NoZeny: + mes "^FF0000You do not have enough zeny.^000000"; + next; + goto S_Start; + + // Sends user to start if name invalid // + S_InvName: + mes "^FF0000Invalid share name.^000000"; + next; + goto S_Start; + +// Displays your total amount // +S_Port: +mes "[Stock Market]"; + + ACCS1: + if (#S1 < 1) goto ACCS2; + set @S1,#S1*$S1; + mes $S1N$ + ": " + #S1 + " x " + $S1 + "z = " + @S1 + "z"; + + ACCS2: + if (#S2 < 1) goto ACCS3; + set @S2,#S2*$S2; + mes $S2N$ + ": " + #S2 + " x " + $S2 + "z = " + @S2 + "z"; + + ACCS3: + if (#S3 < 1) goto ACCS4; + set @S3,#S3*$S3; + mes $S3N$ + ": " + #S3 + " x " + $S3 + "z = " + @S3 + "z"; + + ACCS4: + if (#S4 < 1) goto ACCS5; + set @S4,#S4*$S4; + mes $S4N$ + ": " + #S4 + " x " + $S4 + "z = " + @S4 + "z"; + + ACCS5: + if (#S5 < 1) goto ACCS6; + set @S5,#S5*$S5; + mes $S5N$ + ": " + #S5 + " x " + $S5 + "z = " + @S5 + "z"; + + ACCS6: + if (#S6 < 1) goto ACCS7; + set @S6,#S6*$S6; + mes $S6N$ + ": " + #S6 + " x " + $S6 + "z = " + @S6 + "z"; + + ACCS7: + if (#S7 < 1) goto ACCS8; + set @S7,#S7*$S7; + mes $S7N$ + ": " + #S7 + " x " + $S7 + "z = " + @S7 + "z"; + + ACCS8: + if (#S8 < 1) goto ACCS9; + set @S8,#S8*$S8; + mes $S8N$ + ": " + #S8 + " x " + $S8 + "z = " + @S8 + "z"; + + ACCS9: + if (#S9 < 1) goto ACCS10; + set @S9,#S9*$S9; + mes $S9N$ + ": " + #S9 + " x " + $S9 + "z = " + @S9 + "z"; + + ACCS10: + if (#S10 < 1) goto ACCS11; + set @S10,#S10*$S10; + mes $S10N$ + ": " + #S10 + " x " + $S10 + "z = " + @S10 + "z"; + + // Total // + ACCS11: + set @total,@S1 + @S2 + @S3 + @S4 + @S5 + @S6 + @S7 + @S8 + @S9 + @S10; + mes "Total value: "+@total+"z"; + next; + goto S_Start; + + +// GM MENU // +GM_Menu: +mes "[Stock Market]"; +mes "Master, do you require anything?"; +menu "Fluctuate Market",S_Fluc,"Reset Prices",GM_Open,"Nothing",S_Start; + +S_Fluc: +set $fluc,rand (-6,6); +set $S1B,$S1; +set $S1,$S1+$fluc; +if ($S1 < 25) set $S1,$S1+3; +if ($S1 < 50) set $S1,$S1+2; +if ($S1 > 150) set $S1,$S1-2; +if ($S1 > 175) set $S1,$S1-3; +if ($S1 < 1) set $S1,1; + +set $fluc,rand (-6,6); +set $S2B,$S2; +set $S2,$S2+$fluc; +if ($S2 < 25) set $S2,$S2+3; +if ($S2 < 50) set $S2,$S2+2; +if ($S2 > 150) set $S2,$S2-2; +if ($S2 > 175) set $S2,$S2-3; +if ($S2 < 2) set $S2,1; + +set $fluc,rand (-6,6); +set $S3B,$S3; +set $S3,$S3+$fluc; +if ($S3 < 25) set $S3,$S3+3; +if ($S3 < 50) set $S3,$S3+2; +if ($S3 > 150) set $S3,$S3-2; +if ($S3 > 175) set $S3,$S3-3; +if ($S3 < 1) set $S3,1; + +set $fluc,rand (-6,6); +set $S4B,$S4; +set $S4,$S4+$fluc; +if ($S4 < 25) set $S4,$S4+3; +if ($S4 < 50) set $S4,$S4+2; +if ($S4 > 150) set $S4,$S4-2; +if ($S4 > 175) set $S4,$S4-3; +if ($S4 < 1) set $S4,1; + +set $fluc,rand (-6,6); +set $S5B,$S5; +set $S5,$S5+$fluc; +if ($S5 < 25) set $S5,$S5+3; +if ($S5 < 50) set $S5,$S5+2; +if ($S5 > 150) set $S5,$S5-2; +if ($S5 > 175) set $S5,$S5-3; +if ($S5 < 1) set $S5,1; + +set $fluc,rand (-6,6); +set $S6B,$S6; +set $S6,$S6+$fluc; +if ($S6 < 25) set $S6,$S6+3; +if ($S6 < 50) set $S6,$S6+2; +if ($S6 > 150) set $S6,$S6-2; +if ($S6 > 175) set $S6,$S6-3; +if ($S6 < 1) set $S6,1; + +set $fluc,rand (-6,6); +set $S7B,$S7; +set $S7,$S7+$fluc; +if ($S7 < 25) set $S7,$S7+3; +if ($S7 < 50) set $S7,$S7+2; +if ($S7 > 150) set $S7,$S7-2; +if ($S7 > 175) set $S7,$S7-3; +if ($S7 < 1) set $S7,1; + +set $fluc,rand (-6,6); +set $S8B,$S8; +set $S8,$S8+$fluc; +if ($S8 < 25) set $S8,$S8+3; +if ($S8 < 50) set $S8,$S8+2; +if ($S8 > 150) set $S8,$S8-2; +if ($S8 > 175) set $S8,$S8-3; +if ($S8 < 1) set $S8,1; + +set $fluc,rand (-6,6); +set $S9B,$S9; +set $S9,$S9+$fluc; +if ($S9 < 25) set $S9,$S9+3; +if ($S9 < 50) set $S9,$S9+2; +if ($S9 > 150) set $S9,$S9-2; +if ($S9 > 175) set $S9,$S9-3; +if ($S9 < 1) set $S9,1; + +set $fluc,rand (-6,6); +set $S10B,$S10; +set $S10,$S10+$fluc; +if ($S10 < 25) set $S10,$S10+3; +if ($S10 < 50) set $S10,$S10+2; +if ($S10 > 150) set $S10,$S10-2; +if ($S10 > 175) set $S10,$S10-3; +if ($S10 < 1) set $S10,1; + +set $S_LastUpd$,"GM Fluctuation"; +mes "Market fluctuated."; +close; + +GM_Open: +menu "Set prices to...",GM_Set,"Cancel",-; +mes "Farewell."; +close; + +GM_Set: +mes "Are you sure you want to reset?"; +mes "^FF0000All share values will become the same.^000000"; +next; +menu "Yes",-,"No",GM_Menu; +set @gmset,0; +input @gmset; +set $S1,@gmset; +set $S2,@gmset; +set $S3,@gmset; +set $S4,@gmset; +set $S5,@gmset; +set $S6,@gmset; +set $S7,@gmset; +set $S8,@gmset; +set $S9,@gmset; +set $S10,@gmset; +set $S1B,@gmset; +set $S2B,@gmset; +set $S3B,@gmset; +set $S4B,@gmset; +set $S5B,@gmset; +set $S6B,@gmset; +set $S7B,@gmset; +set $S8B,@gmset; +set $S9B,@gmset; +set $S10B,@gmset; +mes "All prices changed to " + @gmset + "z."; +close; + +S_Quit: +mes "[Stock Market]"; +mes "Goodbye."; +close; +} + prontera.gat,140,181,5 duplicate(stockmarket) Stock Market 109
\ No newline at end of file |