Jump to content
  • 0

Euphy quest shop Script Need Help. :( :(


JoshXp

Question


  • Group:  Members
  • Topic Count:  39
  • Topics Per Day:  0.01
  • Content Count:  124
  • Reputation:   0
  • Joined:  01/21/13
  • Last Seen:  

I want to duplicate NPCnya but how ?

when I tried to duplicate into 2 npc with different items to be weird ...

please help. : (

 

this is my script :

quiz_test,335,64,4    script    HeadGear    452,{
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 "[DarkRO Donation]";
    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 "[DarkRO Donation]";
                    mes "You're missing one or more item requirements.";
                    close; }
                if (!checkweight(.@q[0],.@q[1])) {
                    mes "[DarkRO Donation]";
                    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,0;    // 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$,"n/a";
    // 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!

    Add(1,5377,1,0,0,6153,1);
    Add(1,5597,1,0,0,6153,1);
    Add(1,5463,1,0,0,6153,1);
    Add(1,18507,1,0,0,6153,1);
    Add(1,2202,1,0,0,6153,1);
    Add(1,5800,1,0,0,6153,1);
    Add(1,5421,1,0,0,6153,1);
    Add(1,5417,1,0,0,6153,1);
    Add(1,18059,1,0,0,6153,1);
    Add(1,5314,1,0,0,6153,1);
    
// --------------------------------------------------
    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
-    shop    qshop2    -1,909:-1
-    shop    qshop3    -1,909:-1
                  

 

At the moment I want to divide it into 2 npc with the same script but a different list of items the NPC Such error instead become, well why?


help pleaseeeeeeeeee

Edited by Capuche
Link to comment
Share on other sites

11 answers to this question

Recommended Posts

  • 0

  • Group:  Members
  • Topic Count:  40
  • Topics Per Day:  0.02
  • Content Count:  242
  • Reputation:   37
  • Joined:  02/25/18
  • Last Seen:  

sorry if i replay at this topic but I have a best solution that for me work with the last version 1.6c:

search

prontera,164,203,6	script	Quest Shop#1	998,{ callfunc "qshop"; }

and for example replace with different NPCs/coords, like:

prontera,164,203,6	script	Quest Shop#1	998,{ callfunc "qshop", 1; }
prontera,166,203,6	script	Quest Shop#2	998,{ callfunc "qshop", 2; }
prontera,168,203,6	script	Quest Shop#3	998,{ callfunc "qshop", 3; }

the <shop ID> is the number of the NPC that you want have quests/items, like:

// Quests from NPC 1
	Add(1,5022,1,0,0,7086,1,969,10,999,40,1003,50,984,2);
	Add(1,5032,1,0,0,1059,250,2221,1,2227,1,7063,600);
	Add(1,5027,1,0,0,2252,1,1036,400,7001,50,4052,1);
	Add(1,5045,1,0,0,2252,1,1054,450,943,1200);
// Quests from NPC 2
	Add(2,1224,1,0,0,7297,30,969,10,999,50,714,10);
	Add(2,1225,1,0,0,7292,30,969,10,999,50,714,10);
// Quests from NPC 3
	Add(3,531,1,3,0,512,1,713,1);
	Add(3,532,1,3,0,513,1,713,1);
	Add(3,533,1,3,0,514,1,713,1);
	Add(3,534,1,3,0,515,1,713,1);

someone more experienced can check if I have write errors? I tested it on my server and I do not have any type of console error (ssh)

Edited by CyberDevil
Link to comment
Share on other sites


  • Group:  Developer
  • Topic Count:  10
  • Topics Per Day:  0.00
  • Content Count:  2407
  • Reputation:   613
  • Joined:  07/05/12
  • Last Seen:  

To duplicate a npc in the original script, call the same function in another npc

//===== rAthena Script =======================================
//= Euphy's Quest Shop
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
//= 1.6b
//===== Compatible With: =====================================
//= rAthena SVN r16862+
//===== Description: =========================================
//= A dynamic quest shop based on Lunar's, with easier config.
//= Includes support for multiple shops & cashpoints.
//= Item Preview script by ToastOfDoom.
//===== Additional Comments: =================================
//= 1.0 Initial script.
//= 1.2 Added category support.
//= 1.3 More options and fixes.
//= 1.4 Added debug settings.
//= 1.5 Replaced categories with shop IDs.
//= 1.6 Added support for purchasing stackables.
//= 1.6a Added support for previewing costumes and robes.
//= 1.6b Added 'disable_items' command.
//============================================================

// Shop NPCs -- supplying no argument displays entire menu.
//	callfunc "qshop"{,<shop ID>{,<shop ID>{,...}}};
//============================================================
prontera,164,203,6	script	Quest Shop#1	998,{ callfunc "qshop"; }


// Script Core
//============================================================
-	script	quest_shop	-1,{ 
function Add; function Chk; function Slot; function A_An;
OnInit:
	freeloop(1);

// -----------------------------------------------------------
//  Basic shop settings.
// -----------------------------------------------------------

	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 .ShowID,0;  	// Show item IDs? (1: yes / 0: no)
	set .ShowZeny,0;	// Show Zeny cost, if any? (1: yes / 0: no)
	set .MaxStack,100;	// Max number of quest items purchased at one time.

// -----------------------------------------------------------
//  Points variable -- optional quest requirement.
//	setarray .Points$[0],"<variable name>","<display name>";
// -----------------------------------------------------------

	setarray .Points$[0],"#CASHPOINTS","Cash Points";

// -----------------------------------------------------------
//  Shop IDs -- to add shops, copy dummy data at bottom of file.
//	setarray .Shops$[1],"<Shop 1>","<Shop 2>"{,...};
// -----------------------------------------------------------

	setarray .Shops$[1],"Headgears","Weapons","Other";

// -----------------------------------------------------------
//  Quest items -- do NOT use a reward item more than once!
//	Add(<shop ID>,<reward ID>,<reward amount>,
//	    <Zeny cost>,<point cost>,
//	    <required item ID>,<required item amount>{,...});
// -----------------------------------------------------------

	Add(1,5022,1,0,0,7086,1,969,10,999,40,1003,50,984,2);
	Add(1,5032,1,0,0,1059,250,2221,1,2227,1,7063,600);
	Add(1,5027,1,0,0,2252,1,1036,400,7001,50,4052,1);
	Add(1,5045,1,0,0,2252,1,1054,450,943,1200);

	Add(2,1224,1,0,0,7297,30,969,10,999,50,714,10);
	Add(2,1225,1,0,0,7292,30,969,10,999,50,714,10);

	Add(3,531,1,3,0,512,1,713,1);
	Add(3,532,1,3,0,513,1,713,1);
	Add(3,533,1,3,0,514,1,713,1);
	Add(3,534,1,3,0,515,1,713,1);

// -----------------------------------------------------------

	freeloop(0);
	set .menu$,"";
	for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1) {
		set .menu$, .menu$+.Shops$[.@i]+":";
		npcshopdelitem "qshop"+.@i,909;
	}
	end;

OnMenu:
	set .@size, getarraysize(@i);
	if (!.@size) set .@i, select(.menu$);
	else if (.@size == 1) set .@i, @i[0];
	else {
		for(set .@j,0; .@j<.@size; set .@j,.@j+1)
			set .@menu$, .@menu$+.Shops$[@i[.@j]]+":";
		set .@i, @i[select(.@menu$)-1];
	}
	deletearray @i[0],getarraysize(@i);
	if (.Shops$[.@i] == "") {
		message strcharinfo(0),"An error has occurred.";
		end;
	}
	dispbottom "Select one item at a time.";
	callshop "qshop"+.@i,1;
	npcshopattach "qshop"+.@i;
	end;

OnBuyItem:
	// .@q[] : RewardID, BoughtAmt, RewardAmt, BaseAmt, ReqZeny, ReqPts, { ReqItem, ReqAmt, ... }
	setarray .@q[0],@bought_nameid[0],((@bought_quantity[0] > .MaxStack)?.MaxStack:@bought_quantity[0]);
	copyarray .@q[3],getd(".q_"+.@q[0]+"[0]"),getarraysize(getd(".q_"+.@q[0]));
	set .@q[2],.@q[1]*.@q[3];
	if (!.@q[2] || .@q[2] > 30000) {
		message strcharinfo(0),"You can't purchase that many "+getitemname(.@q[0])+".";
		end;
	}
	mes "[Quest Shop]";
	mes "Reward: ^0055FF"+((.@q[2] > 1)?.@q[2]+"x ":"")+Slot(.@q[0])+"^000000";
	mes "Requirements:";
	disable_items;
	if (.@q[4]) mes " > "+Chk(Zeny,.@q[4]*.@q[1])+(.@q[4]*.@q[1])+" Zeny^000000";
	if (.@q[5]) mes " > "+Chk(getd(.Points$[0]),.@q[5]*.@q[1])+(.@q[5]*.@q[1])+" "+.Points$[1]+" ("+getd(.Points$[0])+"/"+(.@q[5]*.@q[1])+")^000000";
	if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2)
		mes " > "+Chk(countitem(.@q[.@i]),.@q[.@i+1]*.@q[1])+((.ShowID)?"{"+.@q[.@i]+"} ":"")+Slot(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+(.@q[.@i+1]*.@q[1])+")^000000";
	next;
	setarray @qe[1], getiteminfo(.@q[0],5), getiteminfo(.@q[0],11);
	if (@qe[2] > 0 && ((@qe[1] & 1) || (@qe[1] & 256) || (@qe[1] & 512) || (@qe[1] & 1024) || (@qe[1] & 2048) || (@qe[1] & 4096) || (@qe[1] & 4) || (@qe[1] & 8192)))
		set .@preview,1;
	addtimer 1000, strnpcinfo(0)+"::OnEnd";
	while(1) {
		switch(select(" ~ Purchase ^0055FF"+getitemname(.@q[0])+"^000000:"+((.@preview && !@qe[7])?" ~ Preview...":"")+": ~ ^777777Cancel^000000")) {
		case 1:
			if (@qe[0]) { 
				mes "[Quest Shop]";
				mes "You're missing one or more quest requirements.";
				close;
			}
			if (!checkweight(.@q[0],.@q[2])) {
				mes "[Quest Shop]";
				mes "^FF0000You need "+(((.@q[2]*getiteminfo(.@q[0],6))+Weight-MaxWeight)/10)+" additional weight capacity to complete this trade.^000000";
				close;
			}
			if (.@q[4]) set Zeny, Zeny-(.@q[4]*.@q[1]);
			if (.@q[5]) setd .Points$[0], getd(.Points$[0])-(.@q[5]*.@q[1]);
			if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2)
				delitem .@q[.@i],.@q[.@i+1]*.@q[1];
			getitem .@q[0],.@q[2];
			if (.Announce) announce strcharinfo(0)+" has created "+((.@q[2] > 1)?.@q[2]+"x "+getitemname(.@q[0]):A_An(getitemname(.@q[0])))+"!",0;
			specialeffect2 EF_FLOWERLEAF;
			close;
		case 2:
			setarray @qe[3], getlook(LOOK_HEAD_BOTTOM), getlook(LOOK_HEAD_TOP), getlook(LOOK_HEAD_MID), getlook(LOOK_ROBE), 1;
			if ((@qe[1] & 1) || (@qe[1] & 4096)) changelook LOOK_HEAD_BOTTOM, @qe[2];
			else if ((@qe[1] & 256) || (@qe[1] & 1024)) changelook LOOK_HEAD_TOP, @qe[2];
			else if ((@qe[1] & 512) || (@qe[1] & 2048)) changelook LOOK_HEAD_MID, @qe[2];
			else if ((@qe[1] & 4) || (@qe[1] & 8192)) changelook LOOK_ROBE, @qe[2];
			break;
		case 3:
			close;
		}
	}

OnEnd:
	if (@qe[7]) {
		changelook LOOK_HEAD_BOTTOM, @qe[3];
		changelook LOOK_HEAD_TOP, @qe[4];
		changelook LOOK_HEAD_MID, @qe[5];
		changelook LOOK_ROBE, @qe[6];
	}
	deletearray @qe[0],8;
	end;

function Add {
	if (getitemname(getarg(1)) == "null") {
		debugmes "Quest reward #"+getarg(1)+" invalid (skipped).";
		return;
	}
	setarray .@j[0],getarg(2),getarg(3),getarg(4);
	for(set .@i,5; .@i<getargcount(); set .@i,.@i+2) {
		if (getitemname(getarg(.@i)) == "null") {
			debugmes "Quest requirement #"+getarg(.@i)+" invalid (skipped).";
			return;
		} else
			setarray .@j[.@i-2],getarg(.@i),getarg(.@i+1);
	}
	copyarray getd(".q_"+getarg(1)+"[0]"),.@j[0],getarraysize(.@j);
	npcshopadditem "qshop"+getarg(0),getarg(1),((.ShowZeny)?getarg(3):0);
	return;
}

function Chk {
	if (getarg(0) < getarg(1)) {
		set @qe[0],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),2) == 4 || getiteminfo(getarg(0),2) == 5) 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);
}
}

function	script	qshop	{
	deletearray @i[0],getarraysize(@i);
	for(set .@i,0; .@i<getargcount(); set .@i,.@i+1)
		set @i[.@i],getarg(.@i);
	doevent "quest_shop::OnMenu";
	end;
}


// Dummy shop data -- copy as needed.
//============================================================
-	shop	qshop1	-1,909:-1
-	shop	qshop2	-1,909:-1
-	shop	qshop3	-1,909:-1
-	shop	qshop4	-1,909:-1
-	shop	qshop5	-1,909:-1
prontera,164,203,6	script	Quest Shop#1	998,{ callfunc "qshop"; }
prontera,164,203,6	script	Quest Shop#2	998,{ callfunc "qshop"; }
Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  90
  • Topics Per Day:  0.02
  • Content Count:  361
  • Reputation:   18
  • Joined:  01/09/13
  • Last Seen:  

 

To duplicate a npc in the original script, call the same function in another npc

//===== rAthena Script =======================================
//= Euphy's Quest Shop
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
//= 1.6b
//===== Compatible With: =====================================
//= rAthena SVN r16862+
//===== Description: =========================================
//= A dynamic quest shop based on Lunar's, with easier config.
//= Includes support for multiple shops & cashpoints.
//= Item Preview script by ToastOfDoom.
//===== Additional Comments: =================================
//= 1.0 Initial script.
//= 1.2 Added category support.
//= 1.3 More options and fixes.
//= 1.4 Added debug settings.
//= 1.5 Replaced categories with shop IDs.
//= 1.6 Added support for purchasing stackables.
//= 1.6a Added support for previewing costumes and robes.
//= 1.6b Added 'disable_items' command.
//============================================================

// Shop NPCs -- supplying no argument displays entire menu.
//	callfunc "qshop"{,<shop ID>{,<shop ID>{,...}}};
//============================================================
prontera,164,203,6	script	Quest Shop#1	998,{ callfunc "qshop"; }


// Script Core
//============================================================
-	script	quest_shop	-1,{ 
function Add; function Chk; function Slot; function A_An;
OnInit:
	freeloop(1);

// -----------------------------------------------------------
//  Basic shop settings.
// -----------------------------------------------------------

	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 .ShowID,0;  	// Show item IDs? (1: yes / 0: no)
	set .ShowZeny,0;	// Show Zeny cost, if any? (1: yes / 0: no)
	set .MaxStack,100;	// Max number of quest items purchased at one time.

// -----------------------------------------------------------
//  Points variable -- optional quest requirement.
//	setarray .Points$[0],"<variable name>","<display name>";
// -----------------------------------------------------------

	setarray .Points$[0],"#CASHPOINTS","Cash Points";

// -----------------------------------------------------------
//  Shop IDs -- to add shops, copy dummy data at bottom of file.
//	setarray .Shops$[1],"<Shop 1>","<Shop 2>"{,...};
// -----------------------------------------------------------

	setarray .Shops$[1],"Headgears","Weapons","Other";

// -----------------------------------------------------------
//  Quest items -- do NOT use a reward item more than once!
//	Add(<shop ID>,<reward ID>,<reward amount>,
//	    <Zeny cost>,<point cost>,
//	    <required item ID>,<required item amount>{,...});
// -----------------------------------------------------------

	Add(1,5022,1,0,0,7086,1,969,10,999,40,1003,50,984,2);
	Add(1,5032,1,0,0,1059,250,2221,1,2227,1,7063,600);
	Add(1,5027,1,0,0,2252,1,1036,400,7001,50,4052,1);
	Add(1,5045,1,0,0,2252,1,1054,450,943,1200);

	Add(2,1224,1,0,0,7297,30,969,10,999,50,714,10);
	Add(2,1225,1,0,0,7292,30,969,10,999,50,714,10);

	Add(3,531,1,3,0,512,1,713,1);
	Add(3,532,1,3,0,513,1,713,1);
	Add(3,533,1,3,0,514,1,713,1);
	Add(3,534,1,3,0,515,1,713,1);

// -----------------------------------------------------------

	freeloop(0);
	set .menu$,"";
	for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1) {
		set .menu$, .menu$+.Shops$[.@i]+":";
		npcshopdelitem "qshop"+.@i,909;
	}
	end;

OnMenu:
	set .@size, getarraysize(@i);
	if (!.@size) set .@i, select(.menu$);
	else if (.@size == 1) set .@i, @i[0];
	else {
		for(set .@j,0; .@j<.@size; set .@j,.@j+1)
			set .@menu$, .@menu$+.Shops$[@i[.@j]]+":";
		set .@i, @i[select(.@menu$)-1];
	}
	deletearray @i[0],getarraysize(@i);
	if (.Shops$[.@i] == "") {
		message strcharinfo(0),"An error has occurred.";
		end;
	}
	dispbottom "Select one item at a time.";
	callshop "qshop"+.@i,1;
	npcshopattach "qshop"+.@i;
	end;

OnBuyItem:
	// .@q[] : RewardID, BoughtAmt, RewardAmt, BaseAmt, ReqZeny, ReqPts, { ReqItem, ReqAmt, ... }
	setarray .@q[0],@bought_nameid[0],((@bought_quantity[0] > .MaxStack)?.MaxStack:@bought_quantity[0]);
	copyarray .@q[3],getd(".q_"+.@q[0]+"[0]"),getarraysize(getd(".q_"+.@q[0]));
	set .@q[2],.@q[1]*.@q[3];
	if (!.@q[2] || .@q[2] > 30000) {
		message strcharinfo(0),"You can't purchase that many "+getitemname(.@q[0])+".";
		end;
	}
	mes "[Quest Shop]";
	mes "Reward: ^0055FF"+((.@q[2] > 1)?.@q[2]+"x ":"")+Slot(.@q[0])+"^000000";
	mes "Requirements:";
	disable_items;
	if (.@q[4]) mes " > "+Chk(Zeny,.@q[4]*.@q[1])+(.@q[4]*.@q[1])+" Zeny^000000";
	if (.@q[5]) mes " > "+Chk(getd(.Points$[0]),.@q[5]*.@q[1])+(.@q[5]*.@q[1])+" "+.Points$[1]+" ("+getd(.Points$[0])+"/"+(.@q[5]*.@q[1])+")^000000";
	if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2)
		mes " > "+Chk(countitem(.@q[.@i]),.@q[.@i+1]*.@q[1])+((.ShowID)?"{"+.@q[.@i]+"} ":"")+Slot(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+(.@q[.@i+1]*.@q[1])+")^000000";
	next;
	setarray @qe[1], getiteminfo(.@q[0],5), getiteminfo(.@q[0],11);
	if (@qe[2] > 0 && ((@qe[1] & 1) || (@qe[1] & 256) || (@qe[1] & 512) || (@qe[1] & 1024) || (@qe[1] & 2048) || (@qe[1] & 4096) || (@qe[1] & 4) || (@qe[1] & 8192)))
		set .@preview,1;
	addtimer 1000, strnpcinfo(0)+"::OnEnd";
	while(1) {
		switch(select(" ~ Purchase ^0055FF"+getitemname(.@q[0])+"^000000:"+((.@preview && !@qe[7])?" ~ Preview...":"")+": ~ ^777777Cancel^000000")) {
		case 1:
			if (@qe[0]) { 
				mes "[Quest Shop]";
				mes "You're missing one or more quest requirements.";
				close;
			}
			if (!checkweight(.@q[0],.@q[2])) {
				mes "[Quest Shop]";
				mes "^FF0000You need "+(((.@q[2]*getiteminfo(.@q[0],6))+Weight-MaxWeight)/10)+" additional weight capacity to complete this trade.^000000";
				close;
			}
			if (.@q[4]) set Zeny, Zeny-(.@q[4]*.@q[1]);
			if (.@q[5]) setd .Points$[0], getd(.Points$[0])-(.@q[5]*.@q[1]);
			if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2)
				delitem .@q[.@i],.@q[.@i+1]*.@q[1];
			getitem .@q[0],.@q[2];
			if (.Announce) announce strcharinfo(0)+" has created "+((.@q[2] > 1)?.@q[2]+"x "+getitemname(.@q[0]):A_An(getitemname(.@q[0])))+"!",0;
			specialeffect2 EF_FLOWERLEAF;
			close;
		case 2:
			setarray @qe[3], getlook(LOOK_HEAD_BOTTOM), getlook(LOOK_HEAD_TOP), getlook(LOOK_HEAD_MID), getlook(LOOK_ROBE), 1;
			if ((@qe[1] & 1) || (@qe[1] & 4096)) changelook LOOK_HEAD_BOTTOM, @qe[2];
			else if ((@qe[1] & 256) || (@qe[1] & 1024)) changelook LOOK_HEAD_TOP, @qe[2];
			else if ((@qe[1] & 512) || (@qe[1] & 2048)) changelook LOOK_HEAD_MID, @qe[2];
			else if ((@qe[1] & 4) || (@qe[1] & 8192)) changelook LOOK_ROBE, @qe[2];
			break;
		case 3:
			close;
		}
	}

OnEnd:
	if (@qe[7]) {
		changelook LOOK_HEAD_BOTTOM, @qe[3];
		changelook LOOK_HEAD_TOP, @qe[4];
		changelook LOOK_HEAD_MID, @qe[5];
		changelook LOOK_ROBE, @qe[6];
	}
	deletearray @qe[0],8;
	end;

function Add {
	if (getitemname(getarg(1)) == "null") {
		debugmes "Quest reward #"+getarg(1)+" invalid (skipped).";
		return;
	}
	setarray .@j[0],getarg(2),getarg(3),getarg(4);
	for(set .@i,5; .@i<getargcount(); set .@i,.@i+2) {
		if (getitemname(getarg(.@i)) == "null") {
			debugmes "Quest requirement #"+getarg(.@i)+" invalid (skipped).";
			return;
		} else
			setarray .@j[.@i-2],getarg(.@i),getarg(.@i+1);
	}
	copyarray getd(".q_"+getarg(1)+"[0]"),.@j[0],getarraysize(.@j);
	npcshopadditem "qshop"+getarg(0),getarg(1),((.ShowZeny)?getarg(3):0);
	return;
}

function Chk {
	if (getarg(0) < getarg(1)) {
		set @qe[0],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),2) == 4 || getiteminfo(getarg(0),2) == 5) 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);
}
}

function	script	qshop	{
	deletearray @i[0],getarraysize(@i);
	for(set .@i,0; .@i<getargcount(); set .@i,.@i+1)
		set @i[.@i],getarg(.@i);
	doevent "quest_shop::OnMenu";
	end;
}


// Dummy shop data -- copy as needed.
//============================================================
-	shop	qshop1	-1,909:-1
-	shop	qshop2	-1,909:-1
-	shop	qshop3	-1,909:-1
-	shop	qshop4	-1,909:-1
-	shop	qshop5	-1,909:-1
prontera,164,203,6	script	Quest Shop#1	998,{ callfunc "qshop"; }
prontera,164,203,6	script	Quest Shop#2	998,{ callfunc "qshop"; }

THANKS FOR THIS NOW :))

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  39
  • Topics Per Day:  0.01
  • Content Count:  124
  • Reputation:   0
  • Joined:  01/21/13
  • Last Seen:  

 

To duplicate a npc in the original script, call the same function in another npc

//===== rAthena Script =======================================
//= Euphy's Quest Shop
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
//= 1.6b
//===== Compatible With: =====================================
//= rAthena SVN r16862+
//===== Description: =========================================
//= A dynamic quest shop based on Lunar's, with easier config.
//= Includes support for multiple shops & cashpoints.
//= Item Preview script by ToastOfDoom.
//===== Additional Comments: =================================
//= 1.0 Initial script.
//= 1.2 Added category support.
//= 1.3 More options and fixes.
//= 1.4 Added debug settings.
//= 1.5 Replaced categories with shop IDs.
//= 1.6 Added support for purchasing stackables.
//= 1.6a Added support for previewing costumes and robes.
//= 1.6b Added 'disable_items' command.
//============================================================

// Shop NPCs -- supplying no argument displays entire menu.
//	callfunc "qshop"{,<shop ID>{,<shop ID>{,...}}};
//============================================================
prontera,164,203,6	script	Quest Shop#1	998,{ callfunc "qshop"; }


// Script Core
//============================================================
-	script	quest_shop	-1,{ 
function Add; function Chk; function Slot; function A_An;
OnInit:
	freeloop(1);

// -----------------------------------------------------------
//  Basic shop settings.
// -----------------------------------------------------------

	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 .ShowID,0;  	// Show item IDs? (1: yes / 0: no)
	set .ShowZeny,0;	// Show Zeny cost, if any? (1: yes / 0: no)
	set .MaxStack,100;	// Max number of quest items purchased at one time.

// -----------------------------------------------------------
//  Points variable -- optional quest requirement.
//	setarray .Points$[0],"<variable name>","<display name>";
// -----------------------------------------------------------

	setarray .Points$[0],"#CASHPOINTS","Cash Points";

// -----------------------------------------------------------
//  Shop IDs -- to add shops, copy dummy data at bottom of file.
//	setarray .Shops$[1],"<Shop 1>","<Shop 2>"{,...};
// -----------------------------------------------------------

	setarray .Shops$[1],"Headgears","Weapons","Other";

// -----------------------------------------------------------
//  Quest items -- do NOT use a reward item more than once!
//	Add(<shop ID>,<reward ID>,<reward amount>,
//	    <Zeny cost>,<point cost>,
//	    <required item ID>,<required item amount>{,...});
// -----------------------------------------------------------

	Add(1,5022,1,0,0,7086,1,969,10,999,40,1003,50,984,2);
	Add(1,5032,1,0,0,1059,250,2221,1,2227,1,7063,600);
	Add(1,5027,1,0,0,2252,1,1036,400,7001,50,4052,1);
	Add(1,5045,1,0,0,2252,1,1054,450,943,1200);

	Add(2,1224,1,0,0,7297,30,969,10,999,50,714,10);
	Add(2,1225,1,0,0,7292,30,969,10,999,50,714,10);

	Add(3,531,1,3,0,512,1,713,1);
	Add(3,532,1,3,0,513,1,713,1);
	Add(3,533,1,3,0,514,1,713,1);
	Add(3,534,1,3,0,515,1,713,1);

// -----------------------------------------------------------

	freeloop(0);
	set .menu$,"";
	for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1) {
		set .menu$, .menu$+.Shops$[.@i]+":";
		npcshopdelitem "qshop"+.@i,909;
	}
	end;

OnMenu:
	set .@size, getarraysize(@i);
	if (!.@size) set .@i, select(.menu$);
	else if (.@size == 1) set .@i, @i[0];
	else {
		for(set .@j,0; .@j<.@size; set .@j,.@j+1)
			set .@menu$, .@menu$+.Shops$[@i[.@j]]+":";
		set .@i, @i[select(.@menu$)-1];
	}
	deletearray @i[0],getarraysize(@i);
	if (.Shops$[.@i] == "") {
		message strcharinfo(0),"An error has occurred.";
		end;
	}
	dispbottom "Select one item at a time.";
	callshop "qshop"+.@i,1;
	npcshopattach "qshop"+.@i;
	end;

OnBuyItem:
	// .@q[] : RewardID, BoughtAmt, RewardAmt, BaseAmt, ReqZeny, ReqPts, { ReqItem, ReqAmt, ... }
	setarray .@q[0],@bought_nameid[0],((@bought_quantity[0] > .MaxStack)?.MaxStack:@bought_quantity[0]);
	copyarray .@q[3],getd(".q_"+.@q[0]+"[0]"),getarraysize(getd(".q_"+.@q[0]));
	set .@q[2],.@q[1]*.@q[3];
	if (!.@q[2] || .@q[2] > 30000) {
		message strcharinfo(0),"You can't purchase that many "+getitemname(.@q[0])+".";
		end;
	}
	mes "[Quest Shop]";
	mes "Reward: ^0055FF"+((.@q[2] > 1)?.@q[2]+"x ":"")+Slot(.@q[0])+"^000000";
	mes "Requirements:";
	disable_items;
	if (.@q[4]) mes " > "+Chk(Zeny,.@q[4]*.@q[1])+(.@q[4]*.@q[1])+" Zeny^000000";
	if (.@q[5]) mes " > "+Chk(getd(.Points$[0]),.@q[5]*.@q[1])+(.@q[5]*.@q[1])+" "+.Points$[1]+" ("+getd(.Points$[0])+"/"+(.@q[5]*.@q[1])+")^000000";
	if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2)
		mes " > "+Chk(countitem(.@q[.@i]),.@q[.@i+1]*.@q[1])+((.ShowID)?"{"+.@q[.@i]+"} ":"")+Slot(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+(.@q[.@i+1]*.@q[1])+")^000000";
	next;
	setarray @qe[1], getiteminfo(.@q[0],5), getiteminfo(.@q[0],11);
	if (@qe[2] > 0 && ((@qe[1] & 1) || (@qe[1] & 256) || (@qe[1] & 512) || (@qe[1] & 1024) || (@qe[1] & 2048) || (@qe[1] & 4096) || (@qe[1] & 4) || (@qe[1] & 8192)))
		set .@preview,1;
	addtimer 1000, strnpcinfo(0)+"::OnEnd";
	while(1) {
		switch(select(" ~ Purchase ^0055FF"+getitemname(.@q[0])+"^000000:"+((.@preview && !@qe[7])?" ~ Preview...":"")+": ~ ^777777Cancel^000000")) {
		case 1:
			if (@qe[0]) { 
				mes "[Quest Shop]";
				mes "You're missing one or more quest requirements.";
				close;
			}
			if (!checkweight(.@q[0],.@q[2])) {
				mes "[Quest Shop]";
				mes "^FF0000You need "+(((.@q[2]*getiteminfo(.@q[0],6))+Weight-MaxWeight)/10)+" additional weight capacity to complete this trade.^000000";
				close;
			}
			if (.@q[4]) set Zeny, Zeny-(.@q[4]*.@q[1]);
			if (.@q[5]) setd .Points$[0], getd(.Points$[0])-(.@q[5]*.@q[1]);
			if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2)
				delitem .@q[.@i],.@q[.@i+1]*.@q[1];
			getitem .@q[0],.@q[2];
			if (.Announce) announce strcharinfo(0)+" has created "+((.@q[2] > 1)?.@q[2]+"x "+getitemname(.@q[0]):A_An(getitemname(.@q[0])))+"!",0;
			specialeffect2 EF_FLOWERLEAF;
			close;
		case 2:
			setarray @qe[3], getlook(LOOK_HEAD_BOTTOM), getlook(LOOK_HEAD_TOP), getlook(LOOK_HEAD_MID), getlook(LOOK_ROBE), 1;
			if ((@qe[1] & 1) || (@qe[1] & 4096)) changelook LOOK_HEAD_BOTTOM, @qe[2];
			else if ((@qe[1] & 256) || (@qe[1] & 1024)) changelook LOOK_HEAD_TOP, @qe[2];
			else if ((@qe[1] & 512) || (@qe[1] & 2048)) changelook LOOK_HEAD_MID, @qe[2];
			else if ((@qe[1] & 4) || (@qe[1] & 8192)) changelook LOOK_ROBE, @qe[2];
			break;
		case 3:
			close;
		}
	}

OnEnd:
	if (@qe[7]) {
		changelook LOOK_HEAD_BOTTOM, @qe[3];
		changelook LOOK_HEAD_TOP, @qe[4];
		changelook LOOK_HEAD_MID, @qe[5];
		changelook LOOK_ROBE, @qe[6];
	}
	deletearray @qe[0],8;
	end;

function Add {
	if (getitemname(getarg(1)) == "null") {
		debugmes "Quest reward #"+getarg(1)+" invalid (skipped).";
		return;
	}
	setarray .@j[0],getarg(2),getarg(3),getarg(4);
	for(set .@i,5; .@i<getargcount(); set .@i,.@i+2) {
		if (getitemname(getarg(.@i)) == "null") {
			debugmes "Quest requirement #"+getarg(.@i)+" invalid (skipped).";
			return;
		} else
			setarray .@j[.@i-2],getarg(.@i),getarg(.@i+1);
	}
	copyarray getd(".q_"+getarg(1)+"[0]"),.@j[0],getarraysize(.@j);
	npcshopadditem "qshop"+getarg(0),getarg(1),((.ShowZeny)?getarg(3):0);
	return;
}

function Chk {
	if (getarg(0) < getarg(1)) {
		set @qe[0],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),2) == 4 || getiteminfo(getarg(0),2) == 5) 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);
}
}

function	script	qshop	{
	deletearray @i[0],getarraysize(@i);
	for(set .@i,0; .@i<getargcount(); set .@i,.@i+1)
		set @i[.@i],getarg(.@i);
	doevent "quest_shop::OnMenu";
	end;
}


// Dummy shop data -- copy as needed.
//============================================================
-	shop	qshop1	-1,909:-1
-	shop	qshop2	-1,909:-1
-	shop	qshop3	-1,909:-1
-	shop	qshop4	-1,909:-1
-	shop	qshop5	-1,909:-1
prontera,164,203,6	script	Quest Shop#1	998,{ callfunc "qshop"; }
prontera,164,203,6	script	Quest Shop#2	998,{ callfunc "qshop"; }

 

Sorry if I'm wrong place to ask ....

how to eAthena Version ??

roughly script like this:

 

//===== 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.

//============================================================

quiz_test,335,64,4    script    HeadGear    452,{

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 "[DarkRO Donation]";

    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 "[DarkRO Donation]";

                    mes "You're missing one or more item requirements.";

                    close; }

                if (!checkweight(.@q[0],.@q[1])) {

                    mes "[DarkRO Donation]";

                    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,0;    // 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$,"n/a";

    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!

    Add(1,5377,1,0,0,6153,1);

    Add(1,5597,1,0,0,6153,1);

    Add(1,5463,1,0,0,6153,1);

    Add(1,18507,1,0,0,6153,1);

    Add(1,2202,1,0,0,6153,1);

    Add(1,5800,1,0,0,6153,1);

    Add(1,5421,1,0,0,6153,1);

    Add(1,5417,1,0,0,6153,1);

    Add(1,18059,1,0,0,6153,1);

    Add(1,5314,1,0,0,6153,1);

    

// --------------------------------------------------

    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

-    shop    qshop2    -1,909:-1

-    shop    qshop3    -1,909:-1

-    shop    qshop4    -1,909:-1

Link to comment
Share on other sites


  • Group:  Developer
  • Topic Count:  10
  • Topics Per Day:  0.00
  • Content Count:  2407
  • Reputation:   613
  • Joined:  07/05/12
  • Last Seen:  

 

At the moment I want to divide it into 2 npc with the same script but a different list of items the NPC Such error instead become, well why?

  • Dup the main npc (don't dup the dummy shop at the end of the script)
  • call your new shop with another shop number

   Add(2,5377,1,0,0,6153,1);// new shop number

 

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  39
  • Topics Per Day:  0.01
  • Content Count:  124
  • Reputation:   0
  • Joined:  01/21/13
  • Last Seen:  

 

 

At the moment I want to divide it into 2 npc with the same script but a different list of items the NPC Such error instead become, well why?

  • Dup the main npc (don't dup the dummy shop at the end of the script)
  • call your new shop with another shop number

   Add(2,5377,1,0,0,6153,1);// new shop number

 

 

 

and then how do I get into 2 npc with a list of different items?

Sorry if I asked a lot: (

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  127
  • Topics Per Day:  0.03
  • Content Count:  1445
  • Reputation:   163
  • Joined:  08/17/13
  • Last Seen:  

you just copy the .txt script, just remember to change the name, cordenates and the "qshop"

 

then you add the items and its requeriments (:

 

you can follow my little guide at the end of this post

 

http://rathena.org/board/topic/87478-problem-at-euphy-quest-shop/

 

it's just a find/replace in notepad++ (or any text editor) for a quick npc shop duplicate

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  39
  • Topics Per Day:  0.01
  • Content Count:  124
  • Reputation:   0
  • Joined:  01/21/13
  • Last Seen:  

you just copy the .txt script, just remember to change the name, cordenates and the "qshop"

 

then you add the items and its requeriments (:

 

you can follow my little guide at the end of this post

 

http://rathena.org/board/topic/87478-problem-at-euphy-quest-shop/

 

it's just a find/replace in notepad++ (or any text editor) for a quick npc shop duplicate

 

I understand.

but what I want is one script with different npc, coordinate, name of the npc and also list different without:

 

 

setarray .Shops$[1],"Votacion-Objetos Quest","Votacion-Consumibles utiles","Votacion-Hats coleccionables","Votacion-Cartas MvP basicas";

 

how about that ?? /?/?

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  127
  • Topics Per Day:  0.03
  • Content Count:  1445
  • Reputation:   163
  • Joined:  08/17/13
  • Last Seen:  

It's pretty easy :)

 

you just copy the text file

 

in the new copy of the text file

 

you edit the map and cordenates

 

the list

 

the items and so on 

 

then you just rename it so you can see the difference

 

then you just load it after you add it to the new script/npc list

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  39
  • Topics Per Day:  0.01
  • Content Count:  124
  • Reputation:   0
  • Joined:  01/21/13
  • Last Seen:  

It's pretty easy :)

 

you just copy the text file

 

in the new copy of the text file

 

you edit the map and cordenates

 

the list

 

the items and so on 

 

then you just rename it so you can see the difference

 

then you just load it after you add it to the new script/npc list

 

I've tried it like it.

but I find the issue of whether to script 1 and script 2 there should be no "qshop" again?

is an example: Script 1 = "qshop" and for 2 = script "NEWqshop" like that?

Link to comment
Share on other sites


  • Group:  Members
  • Topic Count:  127
  • Topics Per Day:  0.03
  • Content Count:  1445
  • Reputation:   163
  • Joined:  08/17/13
  • Last Seen:  

éxactly, change al the "qshop" to another name, just use Find and replace to make it easym then you edit the lists, the items and so on (:

Link to comment
Share on other sites

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.

×
×
  • Create New...