Jump to content
  • 0

Cashpoints + Item Quest Npc


Question

Posted (edited)

I want to have a NPC script that requires a certain Cashpoints and a required Item to make the quest and announce:

Just like this, To make a TCG Card you need the following:

100 Cashpoints

50 Jellopies

I tried to search but i cant find this NPC

prontera,155,155,4 cashshop Cash Shop 116,7227:1000,20107:1000,20108:1000,20108:1000,20109:1000,20110:1000,20111:1000,20112:1000,20113:1000,20114:1000,20115:1000,20116:1000,20702:1000

Or if im using Euphys Dynamic NPC, How to edit the variables?

//===== eAthena Script =======================================
//= Euphy's Quest Shop
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
//= 1.4a - eAthena
//===== Description: =========================================
//= A dynamic quest shop based on Lunar's, with easier config.
//= Includes support for multiple shops & cashpoints.
//= Item Preview script by ToastOfDoom.
//============================================================

prontera,164,165,4 script Quest Shop 998,{
function Add; function Chk; function Slot; function A_An;
if(.Shops$ != "") set .@i,1;
else {
 set .@menu$,"";
 for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1)
  set .@menu$, .@menu$+.Shops$[.@i]+":";
 set .@i, select(.@menu$); }
dispbottom "Select one item at a time.";
callshop "qshop"+.@i,1;
npcshopattach "qshop"+.@i;
end;
function Add {
if (getitemname(getarg(1))=="null") {
 debugmes "Quest reward #"+getarg(1)+" invalid (skipped)."; return; }
for(set .@n,5; .@n<127; set .@n,.@n+2) {
 if (!getarg(.@n,0)) break;
 if (getitemname(getarg(.@n))=="null") {
  debugmes "Quest requirement #"+getarg(.@n)+" invalid (skipped)."; return; } }
for(set .@i,2; .@i<.@n; set .@i,.@i+1)
 set getd(".q_"+getarg(1)+"["+(.@i-2)+"]"), getarg(.@i);
npcshopadditem "qshop"+getarg(0),getarg(1),((.ShowZeny)?getarg(3):0);
sleep 1;
return; }
function Chk {
if (getarg(0)<getarg(1)) { set @qe0,1; return "^FF0000"; }
else return "^00FF00"; }
function Slot {
set .@s$,getitemname(getarg(0));
switch(.ShowSlot){
 case 1: if (!getitemslots(getarg(0))) return .@s$;
 case 2: if (getiteminfo(getarg(0),11)>0) return .@s$+" ["+getitemslots(getarg(0))+"]";
 default: return .@s$; } }
function A_An {
setarray .@A$[0],"a","e","i","o","u";
set .@B$, "_"+getarg(0);
for(set .@i,0; .@i<5; set .@i,.@i+1)
 if (compare(.@B$,"_"+.@A$[.@i])) return "an "+getarg(0);
return "a "+getarg(0); }
OnBuyItem:
set .@q[0],@bought_nameid;
copyarray .@q[1],getd(".q_"+@bought_nameid+"[0]"),getarraysize(getd(".q_"+@bought_nameid+"[0]"));
if (!.@q[1]) { message strcharinfo(0),"An error has occurred."; end; }
mes "[Quest Shop]";
mes "Reward: ^0055FF"+((.@q[1]>1)?.@q[1]+"x ":"")+Slot(.@q[0])+"^000000";
mes "Requirements:";
if (.@q[2]) mes " > "+Chk(Zeny,.@q[2])+.@q[2]+" Zeny^000000";
if (.@q[3]) mes " > "+Chk(getd(.Points$[0]),.@q[3])+.@q[3]+" "+.Points$[1]+" ("+getd(.Points$[0])+"/"+.@q[3]+")^000000";
if (.@q[4]) for(set .@i,4; .@i<getarraysize(.@q); set .@i,.@i+2)
 mes " > "+Chk(countitem(.@q[.@i]),.@q[.@i+1])+((.DisplayID)?"{"+.@q[.@i]+"} ":"")+Slot(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+.@q[.@i+1]+")^000000";
next;
set @qe1, getiteminfo(.@q[0],5); set @qe2, getiteminfo(.@q[0],11);
addtimer 1000, strnpcinfo(1)+"::OnEnd";
while(1){
 switch(select(" ~ Purchase ^0055FF"+getitemname(.@q[0])+"^000000:"+((((@qe1&1) || (@qe1&256) || (@qe1&512)) && @qe2>0 && !@qe6)?" ~ Preview...":"")+": ~ ^777777Cancel^000000")) {
  case 1:
if (@qe0) {
 mes "[Quest Shop]";
 mes "You're missing one or more quest requirements.";
 close; }
if (!checkweight(.@q[0],.@q[1])) {
 mes "[Quest Shop]";
 mes "^FF0000You need "+(((.@q[1]*getiteminfo(.@q[0],6))+Weight-MaxWeight)/10)+" additional weight capacity to complete this trade.^000000";
 close; }
if (.@q[2]) set Zeny, Zeny-.@q[2];
if (.@q[3]) setd .Points$[0], getd(.Points$[0])-.@q[3];
if (.@q[4]) for(set .@i,4; .@i<getarraysize(.@q); set .@i,.@i+2)
 delitem .@q[.@i],.@q[.@i+1];
getitem .@q[0],.@q[1];
if (.Announce) announce strcharinfo(0)+" has created "+A_An(getitemname(.@q[0]))+"!",0;
specialeffect2 699;
close;
  case 2:
set @qe3, getlook(3); set @qe4, getlook(4); set @qe5, getlook(5);
if (@qe1&1) atcommand "@changelook 3 "+@qe2;
if (@qe1&256) atcommand "@changelook 1 "+@qe2;
if (@qe1&512) atcommand "@changelook 2 "+@qe2;
set @qe6,1;
break;
  case 3:
close; } }
OnEnd:
if (@qe6) { atcommand "@changelook 3 "+@qe3; atcommand "@changelook 1 "+@qe4; atcommand "@changelook 2 "+@qe5; }
for(set .@i,0; .@i<7; set .@i,.@i+1) setd "@qe"+.@i,0;
end;
OnInit:
// --------------------- Config ---------------------
// Custom points, if needed: "<variable>","<name to display>"
setarray .Points$[0],"#CASHPOINTS","Cash Points";
set .Announce,1; // Announce quest completion? (1: yes / 0: no)
set .ShowSlot,1; // Show item slots? (2: all equipment / 1: if slots > 0 / 0: never)
set .DisplayID,0; // Show item IDs? (1: yes / 0: no)
set .ShowZeny,0; // Show Zeny cost, if any? (1: yes / 0: no)
// Shop categories, if needed: "<Shop 1>","<Shop 2>"{,...};
// Duplicate dummy data for any additional shops (bottom of script).
// If no categories, use the second line instead (remove //).
setarray .Shops$[1],"Upper/Middle Headgear","Lower Headgear","Other Quests","Valkyrie Helm";
// set .Shops$,"n/a";
// Add(<shop number>,<reward ID>,<reward amount>,<Zeny cost>,<point cost>,
//	 <required item ID>,<required item amount>{,...});
// Shop number corresponds with order above (default is 1).
// Note: Do NOT use a reward item more than once!

//upper
Add(1,7227,1,0,0,7066,300,929,200,928,200,709,50);

// --------------------------------------------------
for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1)
 npcshopdelitem "qshop"+.@i,909;
end;
}
// -------- Dummy data (duplicate as needed) --------
- shop qshop1 -1,909:-1

Edited by Emistry
Please use [CODEBOX] or Attachments for long contents.

9 answers to this question

Recommended Posts

Posted

this script require 50 jellopy and 10 large jellopy for a tcg card. U can try it and edit it.Just typed it 5 mins ago :P, n not test yet tell me if got error

prontera,164,165,4 script Quest Shop 998,{
mes "Do you need TCG Card?";
menu "Yes",T_top,"No",T_cancel;

T_top:
next;
mes "To get a TCG Card";
mes "You will need the require items";
mes "50 Jellopies";
mes "10 Large Jellopy";
mes "Are you sure?";
menu "Ok",T_t,"No",T_cancel;

T_t:
if(countitem(909)<50 || countitem(7126)<10)
goto T_i;
delitem 909,50;
delitem 7126,10;
getitem 7227,1;
goto T_end;

T_i:
next;
mes "Sorry, you don't have enough required items";
mes "come back when you got them";
close;

T_cancel:
close;

T_end:
next;
mes "Thank you. Come again";
close;

}

Posted

PM'ed you Fai :) Im just starting to learn one step at a time and hopefully soon can help other people also. I think Emistry / Euphy can help with this

Posted

mentioned inside Euphy script...

// Custom points, if needed: "<variable>","<name to display>"
setarray .Points$[0],"#CASHPOINTS","Cash Points";

Hi sir Emistry,

Thats exactly what my questions is, because there is no example on how to add the requirements of CASHPOINTS. So i guess we need to know how.

Posted

First of all, if you are using rAthena, please upgrade the script to the latest one (v 1.6)

Then just add the following line into your script, just follow the example that Euphy gave in the default script.

Add(1,7227,1,5,100,909,10);

It means, add a quest to Shop #1, that will give TCG (7227) 1 ea.

It requires 5 zeny + 100 #Cashpoints + 10 Jellopy (909).

Join the conversation

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

Guest
Answer this question...

×   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...