Jump to content

Recommended Posts

Posted

Hi All,

Here is a rather simple quest template based on arrays. It will tell users what they're missing among other things, and makes for a good way to quickly get a quest in game.

//===== eAthena Script =======================================
//= Super Awesome Quest Template
//===== By: ==================================================
//= CalciumKid
//= & Okira
//===== Current Version: =====================================
//= 2.0
//===== Compatible With: =====================================
//= eAthena 1.0 Final +
//===== Description: =========================================
//= Quest Template
//============================================================
<map>,<x>,<y>,<facing> script <npcname> <npcsprite>,{
 //===== Config: ==============================================
 set .npcname$,"[^FF0000 <npcname> ^000000]"; //Change to whatever you want the NPC name to be
 setarray .reqid[1],<id>,<id>,<id>; //Item IDs for the items, required for item checks
 setarray .reqn$[1],"<name>","<name>","<name>"; //These are names of the required items, for the dialogue
 setarray .reqa[1],<amount>,<amount>,<amount>; //These are how many of each item is required
 set .prize,<rewardid>; //Change this to the Item ID of the item reward
 set .prizen$,"<rewardname>"; //Change this to the name of your reward
 set .prizea,<rewardamount>; //Change this to the amount of the prize item
 set .zeny,20000000; //Amount of zeny for quest (set to 0 to disable)

L_QUEST:
mes .npcname$;
mes "Hah! Hello there "+strcharinfo(0);
next;
mes .npcname$;
mes "I don't get many visitors, so I assume you're after my legendary ^FF0000"+.prizen$+"^000000?";
menu "Of course",-,"No way",L_EXIT;
next;
mes .npcname$;
mes "Great! I love business. I can make you a ^FF0000"+.prizen$+"^000000, but only if you bring me the materials required.";
next;
mes .npcname$;
mes "Would you like me to make one for you?";
menu "Yes",-,"No",L_EXIT;
 next;
 mes .npcname$;
 mes "I'll need the following:";
 for (set .@x,1; .@x < getarraysize(.reqid); set .@x,.@x + 1) {
mes .reqa[.@x]+" ^FF0000"+.reqn$[.@x]+"^000000";
 }
 if (.zeny > 0) {
mes .zeny+" ^FF0000Zeny^000000";
 }
 next;
 mes .npcname$;
 mes "Do you have those items?";
 menu "Yes",-,"No",L_EXIT;
  next;
  mes .npcname$;
  for (set .@x,1; .@x < getarraysize(.reqid); set .@x,.@x + 1) {
if(countitem(.reqid[.@x]) >= .reqa[.@x]) {mes "You've got enough ^00FF00"+.reqn$[.@x]+"^000000";} else {mes "You need more ^FF0000"+.reqn$[.@x]+"^000000";}
  }
  if (.zeny > 0) {
if (Zeny < .zeny) {mes "You're missing ^FF0000Zeny^000000";}
else {mes "You've got enough ^00FF00Zeny^000000";}
  }
  next;
  mes .npcname$;
  mes "Would you like to complete the quest?";
  menu "Yes please!",-,"No Thanks",L_EXIT;
  next;
  for (set .@x,1; .@x < getarraysize(.reqid); set .@x,.@x + 1) {
if(countitem(.reqid[.@x]) < .reqa[.@x]) goto L_EXIT2;
  }
  if (.zeny > 0) {
if (Zeny < .zeny) goto L_EXIT2;
  }
  mes .npcname$;
  mes "Brilliant! Fantastic! Here you go.";
  for (set .@x,1; .@x < getarraysize(.reqid); set .@x,.@x + 1) {
delitem .reqid[.@x],.reqa[.@x];
  }
  if (.zeny > 0) {
set Zeny, Zeny - .zeny;
  }
  goto L_FINAL2;
  close;
L_EXIT:
  next;
  mes .npcname$;
  mes "Eh. I don't need you either. Bah!";
  close;
L_EXIT2:
  next;
  mes .npcname$;
  mes "I'm sorry, you don't have enough!";
  close;
L_FINAL2:
  next;
  mes .npcname$;
  mes "Brilliant! Fantastic! Here you go.";
  getitem .prize,1;
  close;
}

Just edit everywhere it has placeholders wrapped in <>.

You can expand the NPC to contain as many required items as you wish, just keep adding entries to the arrays.

I also have a version that doesn't require the input of item names. This version however I don't have laying around because the servers I have used this template on often have strange names for items in their item_dbs. I can recode release this version if requested.

If you like my work, please rate the topic and give reputation! Thanks!

  • Upvote 13
Posted (edited)

instead of using

 setarray .reqn$[1],"<name>","<name>","<name>"; //These are names of the required items, for the dialogue 

how about change to this ???

this could save uo alot work for users....unless they want a custom name for the item lists..xD

getitemname( itemID ) 

LOL...i missed this part... >.< Sorry ~

I also have a version that doesn't require the input of item names. This version however I don't have laying around because the servers I have used this template on often have strange names for items in their item_dbs. I can recode release this version if requested.

Edited by Emistry
Posted

instead of using

 setarray .reqn$[1],"<name>","<name>","<name>"; //These are names of the required items, for the dialogue 

how about change to this ???

this could save uo alot work for users....unless they want a custom name for the item lists..xD

getitemname( itemID ) 

I also have a version that doesn't require the input of item names. This version however I don't have laying around because the servers I have used this template on often have strange names for items in their item_dbs. I can recode release this version if requested.

Would you like me to release that version?

Posted

Just add more mes lines where you feel they're needed.

mes "rahrahrah";

*Adds mes "rahrahrah";*

*I did what u said but when i open the npc it says "rahrahrah"* ;)

LOL Just kidding ;)

Thanks heaps man works great.

  • 4 weeks later...
  • 1 month later...
  • 3 months later...
  • 4 months later...
  • 3 weeks later...
Posted

Yes you are.. you need to get rid < > sign...

I wonder if i can make 5 or more quest on this script... Because it can save space for NPC on my RO town...

(Sorry broken english) /hmm

  • 1 month later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...