diff options
author | FlavioJS <FlavioJS@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2006-12-05 13:23:07 +0000 |
---|---|---|
committer | FlavioJS <FlavioJS@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2006-12-05 13:23:07 +0000 |
commit | 288490094a7fe9167747dc78d416940759a31197 (patch) | |
tree | 53dc4f5c2375f4b688b53ca8841630ddec5e1f88 /npc/custom/Auctioneer.txt | |
parent | 8ec1c47aed09c90343949d57c92760ba84738a46 (diff) | |
download | hercules-288490094a7fe9167747dc78d416940759a31197.tar.gz hercules-288490094a7fe9167747dc78d416940759a31197.tar.bz2 hercules-288490094a7fe9167747dc78d416940759a31197.tar.xz hercules-288490094a7fe9167747dc78d416940759a31197.zip |
- Massive EOL normalization & 'svn:eol-style native' flag setting for all txt/conf/h/c files.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@9410 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'npc/custom/Auctioneer.txt')
-rw-r--r-- | npc/custom/Auctioneer.txt | 1126 |
1 files changed, 563 insertions, 563 deletions
diff --git a/npc/custom/Auctioneer.txt b/npc/custom/Auctioneer.txt index 9a36bc268..14ca7d331 100644 --- a/npc/custom/Auctioneer.txt +++ b/npc/custom/Auctioneer.txt @@ -1,563 +1,563 @@ -//===== eAthena Script ======================================================================
-//= 1. Auctioneer
-//= 2. Auction Helping (Gives info only, but still good to have in)
-//===== Original By =========================================================================
-//= Fredzilla
-//===== Helped By ===========================================================================
-//= Not one quite yet, but you never know ;)
-//===== Current Version: ====================================================================
-//= 1.0 (Beta) < Thats means it is in testing
-//===== Compatible With: ====================================================================
-//= Any eAthena, that also has a script_athena.conf
-//===== Description: ========================================================================
-//= Lets a people place items into an auction, max of 10 items per round
-//= People can bid on them item
-//= Then buy the items, and sellers pickup there money
-//===== Comments and Credits ===========================================================
-//= This script would not have been made possible if it was not for "Maeki Rika"
-//= My praise goes out to her for finding out all the things we can do with the
-//= current system that eAthena uses
-//=
-//= More comments are listed down the page, in a attempt to explain what is going on in each
-//= section of the script
-//=
-//= This script is currently in testing, and any loss of items will, not only need to be
-//= reported inside the thread I made for this script, but be replaced by GM if proof was given :D
-//===========================================================================================
-
-prontera.gat,153,193,5 script Auctioneer 807,{
- mes "[Auctioneer]";
- set @num,0;
-// These few line below are to recover item that would be lost due to a new auction starting
-L_RNameLoop:
- if(strcharinfo(0)==$ANamesB$[@num] && $paidB[@num]==0) goto L_RBackup;
- set @num,@num+1;
- if(@num<10) goto L_RNameLoop;
- if($Auction==1) goto L_Register;
- if($Auction==2) goto L_Bid;
- if($Auction==3) goto L_PayPickup;
-
-// After a server restart, and no auction value is set, it will run this
-// People who placed items in there before the restart should still be to retrieve there items
-
- mes "You are able to sell and buy things inside the auction, unfortunately nothing has been started, you need to wait for the auction to start";
- mes "No items lost will be given back, please remember you used this at your own risk";
- next;
- mes "[Auctioneer]";
- mes "I am very sorry if you have lost items";
- close;
-
-// If the Auction has started, it will run this, during this time items can be registerd and registerd items retrieved
-
-L_Register:
- mes "Welcome to the auction, you may register you items at this time";
- next;
- set @num,0;
-L_NameLoop:
- if(strcharinfo(0)==$ANames$[@num]) goto L_Already;
- set @num,@num+1;
- if(@num<10) goto L_NameLoop;
- if(getarraysize($AItems)==10) goto L_AFull;
- menu "I want to register an item now",L_IRegister,"I dont want to leave an item",-;
-L_End:
- mes "[Auctioneer]";
- mes "Ok, come back whenever";
- close;
-L_IRegister:
- mes "[Auctioneer]";
- mes "Listed below is the first 10 items you have on you now";
- mes "What do you want to register?";
- next;
- set @array,0;
- set @item,500;
-// set @loopcount,0;
-L_ILoop:
-// set @loopcount,@loopcount+1;
-// debugmes @loopcount;
- set @item,@item+1;
- if(@item>=13005) goto L_Menu;
- if(countitem(@item)>0) set @item2[@array],@item;
- if(countitem(@item)>0) set @array,@array+1;
- if(@array==10) goto L_Menu;
- set @item,@item+1;
- if(countitem(@item)>0) set @item2[@array],@item;
- if(countitem(@item)>0) set @array,@array+1;
- if(@array==10) goto L_Menu;
- set @item,@item+1;
- if(countitem(@item)>0) set @item2[@array],@item;
- if(countitem(@item)>0) set @array,@array+1;
- if(@array==10) goto L_Menu;
- set @item,@item+1;
- if(countitem(@item)>0) set @item2[@array],@item;
- if(countitem(@item)>0) set @array,@array+1;
- if(@array==10) goto L_Menu;
- set @item,@item+1;
- if(countitem(@item)>0) set @item2[@array],@item;
- if(countitem(@item)>0) set @array,@array+1;
- if(@array==10) goto L_Menu;
- set @item,@item+1;
- if(countitem(@item)>0) set @item2[@array],@item;
- if(countitem(@item)>0) set @array,@array+1;
- if(@array==10) goto L_Menu;
- set @item,@item+1;
- if(countitem(@item)>0) set @item2[@array],@item;
- if(countitem(@item)>0) set @array,@array+1;
- if(@array==10) goto L_Menu;
- set @item,@item+1;
- if(countitem(@item)>0) set @item2[@array],@item;
- if(countitem(@item)>0) set @array,@array+1;
- if(@array==10) goto L_Menu;
- set @item,@item+1;
- if(countitem(@item)>0) set @item2[@array],@item;
- if(countitem(@item)>0) set @array,@array+1;
- if(@array==10) goto L_Menu;
- set @item,@item+1;
- if(countitem(@item)>0) set @item2[@array],@item;
- if(countitem(@item)>0) set @array,@array+1;
- if(@array==10) goto L_Menu;
- goto L_ILoop;
-L_Menu:
- menu getitemname(@item2[0]),-,getitemname(@item2[1]),-,getitemname(@item2[2]),-,getitemname(@item2[3]),-,getitemname(@item2[4]),-,getitemname(@item2[5]),-,getitemname(@item2[6]),-,getitemname(@item2[7]),-,getitemname(@item2[8]),-,getitemname(@item2[9]),-,"Next Page",L_WipeLoop;
- set @setitem,@item2[@menu-1];
- set @num,0;
-L_SorryLoop:
- set @num,@num+1;
- if(@menu==@num && @setitem == 0) goto L_Sorry;
- if(@num==10) goto L_FinalReg;
- goto L_SorryLoop;
-L_FinalReg:
- mes "[Auctioneer]";
- mes "Please remember that if this item does contain cards, or is crafted, these distinctions will be lost when it is put into the auction";
- mes "This also means if you get the item back, that this applies to, you will have lost out";
- mes " ";
- mes "So you want to register your "+getitemname(@setitem);
- next;
- menu "Yes please",-,"No",L_End;
- mes "[Auctioneer]";
- mes "Ok I will register this item now";
- next;
- set @amount,1;
- if(countitem(@setitem)==1) goto L_FinalInput;
- mes "[Auctioneer]";
- mes "Wait a minute it seems you have more than one of that item, please enter the ammount you want to put in the aution";
- next;
- input @amount;
- if(countitem(@setitem)<@amount) goto L_NotEnough;
-L_FinalInput:
- set $AItems[$array],@setitem;
- set $ANames$[$array],strcharinfo(0);
- set $AAmount[$array],@amount;
- set $array,$array+1;
- delitem @setitem,@amount;
- mes "[Auctioneer]";
- mes "You item has been taken into storage, ready for sale, the auction will begin soon, watch for the announcment";
- close;
-L_AFull:
- mes "[Auctioneer]";
- mes "Oh, sorry, it seems my auction is full this time round, please try in the next one";
- close;
-L_WipeLoop:
- deletearray @item2[0],10;
- set @array,0;
- goto L_ILoop;
-L_Sorry:
- mes "[Auctioneer]";
- mes "It seems that is all you have to offer me, come back when you know what you want to sell";
- close;
-L_Already:
- mes "[Auctioneer]";
- mes "It seems you already have have an item registerd here, would you like to retrieve your item?";
- next;
- menu "Yes",-,"No",L_End;
- getitem $AItems[@num],$AAmount[@num];
-L_AItemsLoop:
- set $AItems[@num],$AItems[@num+1];
- set $ANames$[@num],$ANames$[@num+1];
- set $AAmount[@num],$AAmount[@num+1];
- set @num,@num+1;
- if(@num<10) goto L_AItemsLoop;
- set $array,$array-1;
- set @num,0;
- mes "[Auctioneer]";
- mes "Ok, all items present and acounted for, have a nice day";
- close;
-L_NotEnough:
- mes "[Auctioneer]";
- mes "Seems you dont have that much "+getitemname(@setitem)+"'s";
- close;
-// If the Auction has enterd phase 2, it will run this, during this time items you can bid on registerd
-// No items can be retrieved during this time, they are now stuck
-
-L_Bid:
- mes "What would you like to bid on?";
- next;
- set @num,0;
-L_MenuLoop:
- set @menu$[@num],$AAmount[@num]+" x "+getitemname($AItems[@num])+" "+$bid[@num]+"z";
- set @num,@num+1;
- if($AItems[@num]!=0) goto L_MenuLoop;
- menu
- @menu$[0],-,
- @menu$[1],-,
- @menu$[2],-,
- @menu$[3],-,
- @menu$[4],-,
- @menu$[5],-,
- @menu$[6],-,
- @menu$[7],-,
- @menu$[8],-,
- @menu$[9],-;
- mes "[Auctioneer]";
- set @num,@menu-1;
- if(strcharinfo(0)==$ANames$[@num]) goto L_CantBid;
-L_ReBid:
- mes "You are currently bidding on "+$AAmount[@num]+" x "+getitemname($AItems[@num]);
- mes "The current bid is at "+$bid[@num]+"z";
- mes "This was made by "+$bidders$[@num];
- if($bidders$[@num]==strcharinfo(0)) goto L_AlreadyBid;
- mes "How much do you want to bid yourself";
- mes "(Use 0 to cancel at this point)";
- next;
- input @bid;
- if(@bid<=0) goto L_End;
- if(zeny<@bid) goto L_LowZeny;
- if(@bid<$bid[@num]) goto L_LowBid;
- mes "[Auctioneer]";
- mes "You are about to bid "+@bid+"z for "+$AAmount[@num]+" x "+getitemname($AItems[@num]);
- mes "Are you sure?";
- next;
- menu "Yes",-,"No",L_End;
- set $bid[@num],@bid;
- set $bidders$[@num],strcharinfo(0);
- mes "[Auctioneer]";
- mes "Your bid has been entered";
- close;
-L_LowZeny:
- mes "[Auctioneer]";
- mes "Sorry you need to show me that amount as proof you could pay, if you do win";
- mes "Please either get more money, or bid lower";
- close;
-L_CantBid:
- mes "Sorry, you cant bid on your own lots";
- close;
-L_LowBid:
- mes "[Auctioneer]";
- mes "Your bid seems lower than the current one, try entering a higher ammount of zeny";
- next;
- mes "[Auctioneer]";
- goto L_ReBid;
-L_AlreadyBid:
- mes "Hey wait, that is you, you can't bid again";
- close;
-// If the Auction has entered phase 3, it will run this
-// During this time, items that have been bid on can be bought
-// Items not bid on can be picked back up by the seller
-// And if any of the items have been bought, and are paid for, seller can pick up their money
-
-L_PayPickup:
- mes "The auction has now ended";
- mes "What would you like to do?";
- next;
- menu "Check for items I have sold",-,"Check for items I have won",L_Won,"Nothing",L_End;
-
-// Check starts here for if you have sold anything during this auction
-
- set @num,0;
-L_SoldLoop:
- if($ANames$[@num]==strcharinfo(0)) goto L_Sold;
- set @num,@num+1;
- if(@num<10) goto L_SoldLoop;
- mes "[Auctioneer]";
- mes "Sorry it seems you have either picked up all you items, money";
- mes "or you didnt register any items in this auction";
- close;
-L_Sold:
- mes "[Auctioneer]";
- if($paid[@num]==3) goto L_Returned;
- mes "Ah I see here, you sold your "+$AAmount[@num]+" x "+getitemname($AItems[@num]);
- mes "Lets see here it sold for";
- next;
- if($bid[@num]==0) goto L_GiveBack;
- if($paid[@num]==2) goto L_AlreadyPaid;
- mes "[Auctioneer]";
- mes $bid[@num]+"z and "+$bidders$[@num]+" bought it from you";
- if($paid[@num]!=1) goto L_NoMoney;
- mes "They have fully paid for it, so here is your money";
- next;
- set zeny,zeny+$bid[@num];
- set $paid[@num],2;
- goto L_End;
-L_AlreadyPaid:
- mes "[Auctioneer]";
- mes "Hmm, seems you already have you money for this lot, not trying to con me are you?";
- close;
-L_Returned:
- mes "[Auctioneer]";
- mes "Seems we returned you item already";
- close;
-L_GiveBack:
- mes "[Auctioneer]";
- mes "Seems no-one wanted your item(s)";
- mes "So you can have them back now";
- getitem $AItems[@num],$AAmount[@num];
- set $paid[@num],3;
- close;
-L_NoMoney:
- mes "Sorry to say this but they havent paid this yet";
- mes "You can go and talk to them now, or you can wait";
- mes "If they havent paid by the time the next Auction starts come back to me to retrieve your item(s)";
- close;
-
-// Check starts here for if you won any items during this auction, futher options follow
-
-L_Won:
- set @num,0;
- mes "[Auctioneer]";
-L_WonLoop:
- if($bidders$[@num]==strcharinfo(0)) goto L_Winner;
-L_CarryOn:
- set @num,@num+1;
- if(@num<10) goto L_WonLoop;
- mes "Sorry you didnt win any of the lots, please try again next time";
- close;
-L_Winner:
- if($paid[@num]>0) goto L_CarryOn;
- mes "Well it does seem you have won an item";
- mes "You won "+$AAmount[@num]+" x "+getitemname($AItems[@num]);
- mes "And you bid "+$bid[@num]+"z for this lot";
- mes "What do you want to do now?";
- next;
-
-// At this point they can choose from 3 options, to Buy the current lot
-// see the next one they might have won, or give up that lot
-
- menu "Buy this lot",-,"See Next Lot you won",L_CarryOn,"Relinquish this lot",L_Back;
- if(zeny<$bid[@num]) goto L_2lowzeny;
- set zeny,zeny-$bid[@num];
- getitem $AItems[@num],$AAmount[@num];
- set $paid[@num],1;
- mes "[Auctioneer]";
- mes "Our transaction is completed";
- mes "See you again soon";
- close;
-L_2lowzeny:
- mes "[Auctioneer]";
- mes "Sorry it seems you dont have enough zeny on you, please acquire more";
- close;
-L_Back:
- mes "[Auctioneer]";
- mes "Are you sure you want to give up this lot?";
- next;
- menu "Yes",-,"No",L_End;
- set $bid[@num],0;
- set $bidders$[@num],"no-one";
- mes "[Auctioneer]";
- mes "It is done, you might want to tell "+$ANames$[@num]+" they can come and pickup his item(s)";
- close;
-
-// All the times that will start the Auction
-
-OnClock0100:
-OnClock0400:
-OnClock0700:
-OnClock1000:
-OnClock1300:
-OnClock1600:
-OnClock1900:
-OnClock2200:
-// Starting Backup
- copyarray $AItemsB[0],$AItems[0],10;
- copyarray $ANamesB$[0],$ANames$[0],10;
- copyarray $AAmountB[0],$AAmount[0],10;
- copyarray $paidB[0],$paid[0],10;
-// End backup - Start Wiping
- deletearray $paid[0],10;
- deletearray $bid[0],10;
- deletearray $bidders$[0],10;
- deletearray $AItems[0],10;
- deletearray $ANames$[0],10;
- deletearray $AAmount[0],10;
- set $array,0;
-// End Wiping - Begin Announce + Phase setting
- announce "Registration time has begun, see the Auctioneer to register your items",0;
- cleararray $bidders$[0],"no-one",10;
- set $Auction,1;
- end;
-
-// All the times that will start the bidding section
-
-OnClock0200:
-OnClock0500:
-OnClock0800:
-OnClock1100:
-OnClock1400:
-OnClock1700:
-OnClock2000:
-OnClock2300:
- if($Auction==0) end;
- announce "Registration time has ended, time for the biding to begin",0;
- set $Auction,2;
- initnpctimer;
- end;
-
-// All the times that will start the last phase, buying and seller, and item retrieval
-
-OnClock0300:
-OnClock0600:
-OnClock0900:
-OnClock1200:
-OnClock1500:
-OnClock1800:
-OnClock2100:
-OnClock0000:
- if($Auction==0) end;
- announce "Bidding time has ended, see the Auctioneer to get your items, or money",0;
- set $Auction,3;
- end;
-
-// On the start of the server it will reset the Auction state, but not the items it contains
-// so people still have have a chance to retrieve there lost items
-
-OnInit:
- copyarray $AItemsB[0],$AItems[0],10;
- copyarray $ANamesB$[0],$ANames$[0],10;
- copyarray $AAmountB[0],$AAmount[0],10;
- copyarray $paidB[0],$paid[0],10;
- deletearray $paid[0],10;
- deletearray $bid[0],10;
- deletearray $bidders$[0],10;
- deletearray $AItems[0],10;
- deletearray $ANames$[0],10;
- deletearray $AAmount[0],10;
- set $array,0;
- set $Auction,0;
- end;
-
-// All below is for anouncing the items in this auction, if there are none it will say so
-// and if there are none in there at the start of phase 2 it will reset the auctions state
-// This is to stop the auction ending message, and will only start again when it reachs phase 1 again
-
-OnTimer5000:
- announce "Today in our auction we have",0;
- end;
-OnTimer7000:
- if($AItems[0]==0) setnpctimer 25001;
- if($AAmount[0]==1) announce "A lovely "+getitemname($AItems[0])+" left by "+$ANames$[0],0;
- if($AAmount[0]>1) announce $AAmount[0]+" lovely "+getitemname($AItems[0])+" left by "+$ANames$[0],0;
- end;
-OnTimer9000:
- if($AItems[1]==0) setnpctimer 25001;
- if($AAmount[1]==1) announce "A great "+getitemname($AItems[1])+" left by "+$ANames$[1],0;
- if($AAmount[1]>1) announce $AAmount[1]+" great "+getitemname($AItems[1])+" left by "+$ANames$[1],0;
- end;
-OnTimer11000:
- if($AItems[2]==0) setnpctimer 25001;
- if($AAmount[2]==1) announce "A excellent "+getitemname($AItems[2])+" left by "+$ANames$[2],0;
- if($AAmount[2]>1) announce $AAmount[2]+" excellent "+getitemname($AItems[2])+" left by "+$ANames$[2],0;
- end;
-OnTimer13000:
- if($AItems[3]==0) setnpctimer 25001;
- if($AAmount[3]==1) announce "A superb "+getitemname($AItems[3])+" left by "+$ANames$[3],0;
- if($AAmount[3]>1) announce $AAmount[3]+" superb "+getitemname($AItems[3])+" left by "+$ANames$[3],0;
- end;
-OnTimer15000:
- if($AItems[4]==0) setnpctimer 25001;
- if($AAmount[4]==1) announce "A terrific "+getitemname($AItems[4])+" left by "+$ANames$[4],0;
- if($AAmount[4]>1) announce $AAmount[4]+" terrific "+getitemname($AItems[4])+" left by "+$ANames$[4],0;
- end;
-OnTimer17000:
- if($AItems[5]==0) setnpctimer 25001;
- if($AAmount[5]==1) announce "A wonderful "+getitemname($AItems[5])+" left by "+$ANames$[5],0;
- if($AAmount[5]>1) announce $AAmount[5]+" wonderful "+getitemname($AItems[5])+" left by "+$ANames$[5],0;
- end;
-OnTimer19000:
- if($AItems[6]==0) setnpctimer 25001;
- if($AAmount[6]==1) announce "A pretty "+getitemname($AItems[6])+" left by "+$ANames$[6],0;
- if($AAmount[6]>1) announce $AAmount[6]+" pretty "+getitemname($AItems[6])+" left by "+$ANames$[6],0;
- end;
-OnTimer21000:
- if($AItems[7]==0) setnpctimer 25001;
- if($AAmount[7]==1) announce "A sweet "+getitemname($AItems[7])+" left by "+$ANames$[7],0;
- if($AAmount[7]>1) announce $AAmount[7]+" sweet "+getitemname($AItems[7])+" left by "+$ANames$[7],0;
- end;
-OnTimer23000:
- if($AItems[8]==0) setnpctimer 25001;
- if($AAmount[8]==1) announce "A stunning "+getitemname($AItems[8])+" left by "+$ANames$[8],0;
- if($AAmount[8]>1) announce $AAmount[8]+" stunning "+getitemname($AItems[8])+" left by "+$ANames$[8],0;
- end;
-OnTimer25000:
- if($AItems[9]==0) end;
- if($AAmount[9]==1) announce "A fine "+getitemname($AItems[9])+" left by "+$ANames$[9],0;
- if($AAmount[9]>1) announce $AAmount[9]+" fine "+getitemname($AItems[9])+" left by "+$ANames$[9],0;
-OnTimer27000:
- if($AItems[0]!=0) announce "That is all the items we have this time round, so get bidding",0;
- if($AItems[0]==0) announce "Seems there are no items this time round",0;
- if($AItems[0]==0) set $Auction,0;
- stopnpctimer;
- setnpctimer 0;
- end;
-
-// this is only be run if you own any items left over, not paid for, from the last auction, or the server failed, and items are left over
-
-L_RBackup:
- mes "You seem to have items left over from the last auction, here you go, have it back";
- next;
- getitem $AItemsB[@num],$AAmountB[@num];
-L_BItemsLoop:
- set $AItemsB[@num],$AItemsB[@num+1];
- set $ANamesB$[@num],$ANamesB$[@num+1];
- set $AAmountB[@num],$AAmountB[@num+1];
- set @num,@num+1;
- if(@num<10) goto L_BItemsLoop;
- mes "[Auctioneer]";
- mes "Have a nice day";
- close;
-}
-
-// Only for display purposes, and telling people info about the auction
-// Can also be used for finding out what phase the auction is in
-
-prontera.gat,158,193,3 script Auction Helper 833,{
- mes "[Auction Helper]";
- set @num,0;
- if($Auction==0 && $AItemsB[@num]!=0) goto L_ItemRecover;
- if(($Auction==1 || $Auction ==2) && $AItems[@num]!=0) goto L_LLoop;
- if($Auction==3 && $AItems[@num]!=0) goto L_Win;
- mes "Ok Currently we have nothing in the auction.";
- mes "Please return at the correct time.";
- close;
-L_LLoop:
- mes "Ok Currently we have :-";
-L_Loop:
- mes $ANames$[@num]+" with "+$AAmount[@num]+" x "+getitemname($AItems[@num])+"('s)";
- set @num,@num+1;
- if($AItems[@num]==0) close;
- if(@num<10) goto L_Loop;
- close;
-L_ItemRecover:
- mes "Seems there was a problem, and the auction ended prematurely.";
- mes "This means we still have :-";
-L_BLoop:
- if($paid[@num]==0) mes $ANamesB$[@num]+" with "+$AAmountB[@num]+" x "+getitemname($AItemsB[@num])+"('s)";
- set @num,@num+1;
- if($AItems[@num]==0) close;
- if(@num<10) goto L_BLoop;
- close;
-L_Win:
- mes "The Auction is in the last stage, at this point you can :-";
- mes " * buy your items";
- mes " * Pick-up you money";
- mes "(or if you were unlucky)";
- mes " * Pick-up unsold items";
- next;
- mes "[Auction Helper]";
- mes "Here is a list of Sellers and Winners";
- set @num,0;
-L_Loop2:
- mes $ANames$[@num]+" with "+$AAmount[@num]+" "+getitemname($AItems[@num])+"('s), won by "+$bidders$[@num]+" for "+$bid[@num]+"z";
- set @num,@num+1;
- if($AItems[@num]==0) close;
- if(@num<10) goto L_Loop2;
- close;
-
-}
+//===== eAthena Script ====================================================================== +//= 1. Auctioneer +//= 2. Auction Helping (Gives info only, but still good to have in) +//===== Original By ========================================================================= +//= Fredzilla +//===== Helped By =========================================================================== +//= Not one quite yet, but you never know ;) +//===== Current Version: ==================================================================== +//= 1.0 (Beta) < Thats means it is in testing +//===== Compatible With: ==================================================================== +//= Any eAthena, that also has a script_athena.conf +//===== Description: ======================================================================== +//= Lets a people place items into an auction, max of 10 items per round +//= People can bid on them item +//= Then buy the items, and sellers pickup there money +//===== Comments and Credits =========================================================== +//= This script would not have been made possible if it was not for "Maeki Rika" +//= My praise goes out to her for finding out all the things we can do with the +//= current system that eAthena uses +//= +//= More comments are listed down the page, in a attempt to explain what is going on in each +//= section of the script +//= +//= This script is currently in testing, and any loss of items will, not only need to be +//= reported inside the thread I made for this script, but be replaced by GM if proof was given :D +//=========================================================================================== + +prontera.gat,153,193,5 script Auctioneer 807,{ + mes "[Auctioneer]"; + set @num,0; +// These few line below are to recover item that would be lost due to a new auction starting +L_RNameLoop: + if(strcharinfo(0)==$ANamesB$[@num] && $paidB[@num]==0) goto L_RBackup; + set @num,@num+1; + if(@num<10) goto L_RNameLoop; + if($Auction==1) goto L_Register; + if($Auction==2) goto L_Bid; + if($Auction==3) goto L_PayPickup; + +// After a server restart, and no auction value is set, it will run this +// People who placed items in there before the restart should still be to retrieve there items + + mes "You are able to sell and buy things inside the auction, unfortunately nothing has been started, you need to wait for the auction to start"; + mes "No items lost will be given back, please remember you used this at your own risk"; + next; + mes "[Auctioneer]"; + mes "I am very sorry if you have lost items"; + close; + +// If the Auction has started, it will run this, during this time items can be registerd and registerd items retrieved + +L_Register: + mes "Welcome to the auction, you may register you items at this time"; + next; + set @num,0; +L_NameLoop: + if(strcharinfo(0)==$ANames$[@num]) goto L_Already; + set @num,@num+1; + if(@num<10) goto L_NameLoop; + if(getarraysize($AItems)==10) goto L_AFull; + menu "I want to register an item now",L_IRegister,"I dont want to leave an item",-; +L_End: + mes "[Auctioneer]"; + mes "Ok, come back whenever"; + close; +L_IRegister: + mes "[Auctioneer]"; + mes "Listed below is the first 10 items you have on you now"; + mes "What do you want to register?"; + next; + set @array,0; + set @item,500; +// set @loopcount,0; +L_ILoop: +// set @loopcount,@loopcount+1; +// debugmes @loopcount; + set @item,@item+1; + if(@item>=13005) goto L_Menu; + if(countitem(@item)>0) set @item2[@array],@item; + if(countitem(@item)>0) set @array,@array+1; + if(@array==10) goto L_Menu; + set @item,@item+1; + if(countitem(@item)>0) set @item2[@array],@item; + if(countitem(@item)>0) set @array,@array+1; + if(@array==10) goto L_Menu; + set @item,@item+1; + if(countitem(@item)>0) set @item2[@array],@item; + if(countitem(@item)>0) set @array,@array+1; + if(@array==10) goto L_Menu; + set @item,@item+1; + if(countitem(@item)>0) set @item2[@array],@item; + if(countitem(@item)>0) set @array,@array+1; + if(@array==10) goto L_Menu; + set @item,@item+1; + if(countitem(@item)>0) set @item2[@array],@item; + if(countitem(@item)>0) set @array,@array+1; + if(@array==10) goto L_Menu; + set @item,@item+1; + if(countitem(@item)>0) set @item2[@array],@item; + if(countitem(@item)>0) set @array,@array+1; + if(@array==10) goto L_Menu; + set @item,@item+1; + if(countitem(@item)>0) set @item2[@array],@item; + if(countitem(@item)>0) set @array,@array+1; + if(@array==10) goto L_Menu; + set @item,@item+1; + if(countitem(@item)>0) set @item2[@array],@item; + if(countitem(@item)>0) set @array,@array+1; + if(@array==10) goto L_Menu; + set @item,@item+1; + if(countitem(@item)>0) set @item2[@array],@item; + if(countitem(@item)>0) set @array,@array+1; + if(@array==10) goto L_Menu; + set @item,@item+1; + if(countitem(@item)>0) set @item2[@array],@item; + if(countitem(@item)>0) set @array,@array+1; + if(@array==10) goto L_Menu; + goto L_ILoop; +L_Menu: + menu getitemname(@item2[0]),-,getitemname(@item2[1]),-,getitemname(@item2[2]),-,getitemname(@item2[3]),-,getitemname(@item2[4]),-,getitemname(@item2[5]),-,getitemname(@item2[6]),-,getitemname(@item2[7]),-,getitemname(@item2[8]),-,getitemname(@item2[9]),-,"Next Page",L_WipeLoop; + set @setitem,@item2[@menu-1]; + set @num,0; +L_SorryLoop: + set @num,@num+1; + if(@menu==@num && @setitem == 0) goto L_Sorry; + if(@num==10) goto L_FinalReg; + goto L_SorryLoop; +L_FinalReg: + mes "[Auctioneer]"; + mes "Please remember that if this item does contain cards, or is crafted, these distinctions will be lost when it is put into the auction"; + mes "This also means if you get the item back, that this applies to, you will have lost out"; + mes " "; + mes "So you want to register your "+getitemname(@setitem); + next; + menu "Yes please",-,"No",L_End; + mes "[Auctioneer]"; + mes "Ok I will register this item now"; + next; + set @amount,1; + if(countitem(@setitem)==1) goto L_FinalInput; + mes "[Auctioneer]"; + mes "Wait a minute it seems you have more than one of that item, please enter the ammount you want to put in the aution"; + next; + input @amount; + if(countitem(@setitem)<@amount) goto L_NotEnough; +L_FinalInput: + set $AItems[$array],@setitem; + set $ANames$[$array],strcharinfo(0); + set $AAmount[$array],@amount; + set $array,$array+1; + delitem @setitem,@amount; + mes "[Auctioneer]"; + mes "You item has been taken into storage, ready for sale, the auction will begin soon, watch for the announcment"; + close; +L_AFull: + mes "[Auctioneer]"; + mes "Oh, sorry, it seems my auction is full this time round, please try in the next one"; + close; +L_WipeLoop: + deletearray @item2[0],10; + set @array,0; + goto L_ILoop; +L_Sorry: + mes "[Auctioneer]"; + mes "It seems that is all you have to offer me, come back when you know what you want to sell"; + close; +L_Already: + mes "[Auctioneer]"; + mes "It seems you already have have an item registerd here, would you like to retrieve your item?"; + next; + menu "Yes",-,"No",L_End; + getitem $AItems[@num],$AAmount[@num]; +L_AItemsLoop: + set $AItems[@num],$AItems[@num+1]; + set $ANames$[@num],$ANames$[@num+1]; + set $AAmount[@num],$AAmount[@num+1]; + set @num,@num+1; + if(@num<10) goto L_AItemsLoop; + set $array,$array-1; + set @num,0; + mes "[Auctioneer]"; + mes "Ok, all items present and acounted for, have a nice day"; + close; +L_NotEnough: + mes "[Auctioneer]"; + mes "Seems you dont have that much "+getitemname(@setitem)+"'s"; + close; +// If the Auction has enterd phase 2, it will run this, during this time items you can bid on registerd +// No items can be retrieved during this time, they are now stuck + +L_Bid: + mes "What would you like to bid on?"; + next; + set @num,0; +L_MenuLoop: + set @menu$[@num],$AAmount[@num]+" x "+getitemname($AItems[@num])+" "+$bid[@num]+"z"; + set @num,@num+1; + if($AItems[@num]!=0) goto L_MenuLoop; + menu + @menu$[0],-, + @menu$[1],-, + @menu$[2],-, + @menu$[3],-, + @menu$[4],-, + @menu$[5],-, + @menu$[6],-, + @menu$[7],-, + @menu$[8],-, + @menu$[9],-; + mes "[Auctioneer]"; + set @num,@menu-1; + if(strcharinfo(0)==$ANames$[@num]) goto L_CantBid; +L_ReBid: + mes "You are currently bidding on "+$AAmount[@num]+" x "+getitemname($AItems[@num]); + mes "The current bid is at "+$bid[@num]+"z"; + mes "This was made by "+$bidders$[@num]; + if($bidders$[@num]==strcharinfo(0)) goto L_AlreadyBid; + mes "How much do you want to bid yourself"; + mes "(Use 0 to cancel at this point)"; + next; + input @bid; + if(@bid<=0) goto L_End; + if(zeny<@bid) goto L_LowZeny; + if(@bid<$bid[@num]) goto L_LowBid; + mes "[Auctioneer]"; + mes "You are about to bid "+@bid+"z for "+$AAmount[@num]+" x "+getitemname($AItems[@num]); + mes "Are you sure?"; + next; + menu "Yes",-,"No",L_End; + set $bid[@num],@bid; + set $bidders$[@num],strcharinfo(0); + mes "[Auctioneer]"; + mes "Your bid has been entered"; + close; +L_LowZeny: + mes "[Auctioneer]"; + mes "Sorry you need to show me that amount as proof you could pay, if you do win"; + mes "Please either get more money, or bid lower"; + close; +L_CantBid: + mes "Sorry, you cant bid on your own lots"; + close; +L_LowBid: + mes "[Auctioneer]"; + mes "Your bid seems lower than the current one, try entering a higher ammount of zeny"; + next; + mes "[Auctioneer]"; + goto L_ReBid; +L_AlreadyBid: + mes "Hey wait, that is you, you can't bid again"; + close; +// If the Auction has entered phase 3, it will run this +// During this time, items that have been bid on can be bought +// Items not bid on can be picked back up by the seller +// And if any of the items have been bought, and are paid for, seller can pick up their money + +L_PayPickup: + mes "The auction has now ended"; + mes "What would you like to do?"; + next; + menu "Check for items I have sold",-,"Check for items I have won",L_Won,"Nothing",L_End; + +// Check starts here for if you have sold anything during this auction + + set @num,0; +L_SoldLoop: + if($ANames$[@num]==strcharinfo(0)) goto L_Sold; + set @num,@num+1; + if(@num<10) goto L_SoldLoop; + mes "[Auctioneer]"; + mes "Sorry it seems you have either picked up all you items, money"; + mes "or you didnt register any items in this auction"; + close; +L_Sold: + mes "[Auctioneer]"; + if($paid[@num]==3) goto L_Returned; + mes "Ah I see here, you sold your "+$AAmount[@num]+" x "+getitemname($AItems[@num]); + mes "Lets see here it sold for"; + next; + if($bid[@num]==0) goto L_GiveBack; + if($paid[@num]==2) goto L_AlreadyPaid; + mes "[Auctioneer]"; + mes $bid[@num]+"z and "+$bidders$[@num]+" bought it from you"; + if($paid[@num]!=1) goto L_NoMoney; + mes "They have fully paid for it, so here is your money"; + next; + set zeny,zeny+$bid[@num]; + set $paid[@num],2; + goto L_End; +L_AlreadyPaid: + mes "[Auctioneer]"; + mes "Hmm, seems you already have you money for this lot, not trying to con me are you?"; + close; +L_Returned: + mes "[Auctioneer]"; + mes "Seems we returned you item already"; + close; +L_GiveBack: + mes "[Auctioneer]"; + mes "Seems no-one wanted your item(s)"; + mes "So you can have them back now"; + getitem $AItems[@num],$AAmount[@num]; + set $paid[@num],3; + close; +L_NoMoney: + mes "Sorry to say this but they havent paid this yet"; + mes "You can go and talk to them now, or you can wait"; + mes "If they havent paid by the time the next Auction starts come back to me to retrieve your item(s)"; + close; + +// Check starts here for if you won any items during this auction, futher options follow + +L_Won: + set @num,0; + mes "[Auctioneer]"; +L_WonLoop: + if($bidders$[@num]==strcharinfo(0)) goto L_Winner; +L_CarryOn: + set @num,@num+1; + if(@num<10) goto L_WonLoop; + mes "Sorry you didnt win any of the lots, please try again next time"; + close; +L_Winner: + if($paid[@num]>0) goto L_CarryOn; + mes "Well it does seem you have won an item"; + mes "You won "+$AAmount[@num]+" x "+getitemname($AItems[@num]); + mes "And you bid "+$bid[@num]+"z for this lot"; + mes "What do you want to do now?"; + next; + +// At this point they can choose from 3 options, to Buy the current lot +// see the next one they might have won, or give up that lot + + menu "Buy this lot",-,"See Next Lot you won",L_CarryOn,"Relinquish this lot",L_Back; + if(zeny<$bid[@num]) goto L_2lowzeny; + set zeny,zeny-$bid[@num]; + getitem $AItems[@num],$AAmount[@num]; + set $paid[@num],1; + mes "[Auctioneer]"; + mes "Our transaction is completed"; + mes "See you again soon"; + close; +L_2lowzeny: + mes "[Auctioneer]"; + mes "Sorry it seems you dont have enough zeny on you, please acquire more"; + close; +L_Back: + mes "[Auctioneer]"; + mes "Are you sure you want to give up this lot?"; + next; + menu "Yes",-,"No",L_End; + set $bid[@num],0; + set $bidders$[@num],"no-one"; + mes "[Auctioneer]"; + mes "It is done, you might want to tell "+$ANames$[@num]+" they can come and pickup his item(s)"; + close; + +// All the times that will start the Auction + +OnClock0100: +OnClock0400: +OnClock0700: +OnClock1000: +OnClock1300: +OnClock1600: +OnClock1900: +OnClock2200: +// Starting Backup + copyarray $AItemsB[0],$AItems[0],10; + copyarray $ANamesB$[0],$ANames$[0],10; + copyarray $AAmountB[0],$AAmount[0],10; + copyarray $paidB[0],$paid[0],10; +// End backup - Start Wiping + deletearray $paid[0],10; + deletearray $bid[0],10; + deletearray $bidders$[0],10; + deletearray $AItems[0],10; + deletearray $ANames$[0],10; + deletearray $AAmount[0],10; + set $array,0; +// End Wiping - Begin Announce + Phase setting + announce "Registration time has begun, see the Auctioneer to register your items",0; + cleararray $bidders$[0],"no-one",10; + set $Auction,1; + end; + +// All the times that will start the bidding section + +OnClock0200: +OnClock0500: +OnClock0800: +OnClock1100: +OnClock1400: +OnClock1700: +OnClock2000: +OnClock2300: + if($Auction==0) end; + announce "Registration time has ended, time for the biding to begin",0; + set $Auction,2; + initnpctimer; + end; + +// All the times that will start the last phase, buying and seller, and item retrieval + +OnClock0300: +OnClock0600: +OnClock0900: +OnClock1200: +OnClock1500: +OnClock1800: +OnClock2100: +OnClock0000: + if($Auction==0) end; + announce "Bidding time has ended, see the Auctioneer to get your items, or money",0; + set $Auction,3; + end; + +// On the start of the server it will reset the Auction state, but not the items it contains +// so people still have have a chance to retrieve there lost items + +OnInit: + copyarray $AItemsB[0],$AItems[0],10; + copyarray $ANamesB$[0],$ANames$[0],10; + copyarray $AAmountB[0],$AAmount[0],10; + copyarray $paidB[0],$paid[0],10; + deletearray $paid[0],10; + deletearray $bid[0],10; + deletearray $bidders$[0],10; + deletearray $AItems[0],10; + deletearray $ANames$[0],10; + deletearray $AAmount[0],10; + set $array,0; + set $Auction,0; + end; + +// All below is for anouncing the items in this auction, if there are none it will say so +// and if there are none in there at the start of phase 2 it will reset the auctions state +// This is to stop the auction ending message, and will only start again when it reachs phase 1 again + +OnTimer5000: + announce "Today in our auction we have",0; + end; +OnTimer7000: + if($AItems[0]==0) setnpctimer 25001; + if($AAmount[0]==1) announce "A lovely "+getitemname($AItems[0])+" left by "+$ANames$[0],0; + if($AAmount[0]>1) announce $AAmount[0]+" lovely "+getitemname($AItems[0])+" left by "+$ANames$[0],0; + end; +OnTimer9000: + if($AItems[1]==0) setnpctimer 25001; + if($AAmount[1]==1) announce "A great "+getitemname($AItems[1])+" left by "+$ANames$[1],0; + if($AAmount[1]>1) announce $AAmount[1]+" great "+getitemname($AItems[1])+" left by "+$ANames$[1],0; + end; +OnTimer11000: + if($AItems[2]==0) setnpctimer 25001; + if($AAmount[2]==1) announce "A excellent "+getitemname($AItems[2])+" left by "+$ANames$[2],0; + if($AAmount[2]>1) announce $AAmount[2]+" excellent "+getitemname($AItems[2])+" left by "+$ANames$[2],0; + end; +OnTimer13000: + if($AItems[3]==0) setnpctimer 25001; + if($AAmount[3]==1) announce "A superb "+getitemname($AItems[3])+" left by "+$ANames$[3],0; + if($AAmount[3]>1) announce $AAmount[3]+" superb "+getitemname($AItems[3])+" left by "+$ANames$[3],0; + end; +OnTimer15000: + if($AItems[4]==0) setnpctimer 25001; + if($AAmount[4]==1) announce "A terrific "+getitemname($AItems[4])+" left by "+$ANames$[4],0; + if($AAmount[4]>1) announce $AAmount[4]+" terrific "+getitemname($AItems[4])+" left by "+$ANames$[4],0; + end; +OnTimer17000: + if($AItems[5]==0) setnpctimer 25001; + if($AAmount[5]==1) announce "A wonderful "+getitemname($AItems[5])+" left by "+$ANames$[5],0; + if($AAmount[5]>1) announce $AAmount[5]+" wonderful "+getitemname($AItems[5])+" left by "+$ANames$[5],0; + end; +OnTimer19000: + if($AItems[6]==0) setnpctimer 25001; + if($AAmount[6]==1) announce "A pretty "+getitemname($AItems[6])+" left by "+$ANames$[6],0; + if($AAmount[6]>1) announce $AAmount[6]+" pretty "+getitemname($AItems[6])+" left by "+$ANames$[6],0; + end; +OnTimer21000: + if($AItems[7]==0) setnpctimer 25001; + if($AAmount[7]==1) announce "A sweet "+getitemname($AItems[7])+" left by "+$ANames$[7],0; + if($AAmount[7]>1) announce $AAmount[7]+" sweet "+getitemname($AItems[7])+" left by "+$ANames$[7],0; + end; +OnTimer23000: + if($AItems[8]==0) setnpctimer 25001; + if($AAmount[8]==1) announce "A stunning "+getitemname($AItems[8])+" left by "+$ANames$[8],0; + if($AAmount[8]>1) announce $AAmount[8]+" stunning "+getitemname($AItems[8])+" left by "+$ANames$[8],0; + end; +OnTimer25000: + if($AItems[9]==0) end; + if($AAmount[9]==1) announce "A fine "+getitemname($AItems[9])+" left by "+$ANames$[9],0; + if($AAmount[9]>1) announce $AAmount[9]+" fine "+getitemname($AItems[9])+" left by "+$ANames$[9],0; +OnTimer27000: + if($AItems[0]!=0) announce "That is all the items we have this time round, so get bidding",0; + if($AItems[0]==0) announce "Seems there are no items this time round",0; + if($AItems[0]==0) set $Auction,0; + stopnpctimer; + setnpctimer 0; + end; + +// this is only be run if you own any items left over, not paid for, from the last auction, or the server failed, and items are left over + +L_RBackup: + mes "You seem to have items left over from the last auction, here you go, have it back"; + next; + getitem $AItemsB[@num],$AAmountB[@num]; +L_BItemsLoop: + set $AItemsB[@num],$AItemsB[@num+1]; + set $ANamesB$[@num],$ANamesB$[@num+1]; + set $AAmountB[@num],$AAmountB[@num+1]; + set @num,@num+1; + if(@num<10) goto L_BItemsLoop; + mes "[Auctioneer]"; + mes "Have a nice day"; + close; +} + +// Only for display purposes, and telling people info about the auction +// Can also be used for finding out what phase the auction is in + +prontera.gat,158,193,3 script Auction Helper 833,{ + mes "[Auction Helper]"; + set @num,0; + if($Auction==0 && $AItemsB[@num]!=0) goto L_ItemRecover; + if(($Auction==1 || $Auction ==2) && $AItems[@num]!=0) goto L_LLoop; + if($Auction==3 && $AItems[@num]!=0) goto L_Win; + mes "Ok Currently we have nothing in the auction."; + mes "Please return at the correct time."; + close; +L_LLoop: + mes "Ok Currently we have :-"; +L_Loop: + mes $ANames$[@num]+" with "+$AAmount[@num]+" x "+getitemname($AItems[@num])+"('s)"; + set @num,@num+1; + if($AItems[@num]==0) close; + if(@num<10) goto L_Loop; + close; +L_ItemRecover: + mes "Seems there was a problem, and the auction ended prematurely."; + mes "This means we still have :-"; +L_BLoop: + if($paid[@num]==0) mes $ANamesB$[@num]+" with "+$AAmountB[@num]+" x "+getitemname($AItemsB[@num])+"('s)"; + set @num,@num+1; + if($AItems[@num]==0) close; + if(@num<10) goto L_BLoop; + close; +L_Win: + mes "The Auction is in the last stage, at this point you can :-"; + mes " * buy your items"; + mes " * Pick-up you money"; + mes "(or if you were unlucky)"; + mes " * Pick-up unsold items"; + next; + mes "[Auction Helper]"; + mes "Here is a list of Sellers and Winners"; + set @num,0; +L_Loop2: + mes $ANames$[@num]+" with "+$AAmount[@num]+" "+getitemname($AItems[@num])+"('s), won by "+$bidders$[@num]+" for "+$bid[@num]+"z"; + set @num,@num+1; + if($AItems[@num]==0) close; + if(@num<10) goto L_Loop2; + close; + +} |