Jump to content
  • 0

Question

Posted (edited)

How to merge this script to put Category

This Script for Accessories Reward

- shop acces_shop -1,501:50
prontera,147,173,5, script Reward Token 899,{
set @i,0;
mes "[Reward Token]";
mes "Which item do you wish to obtain?";
mes "Select only one.";
callshop "acces_shop",1;
npcshopattach "acces_shop";
end;

OnBuyItem:
if(.BuildQuest) {
for(set .e,0; !compare(getarg(.e+1),"Zeny"); set .e,.e+2) {}
npcshopadditem "acces_shop",getarg(.e+2),getarg(.e)*compare(""+getarg(.e+1),"SZeny");
setarray .Shop[.i],getarg(.e+2);
set .i,.i+1;
goto Quest_Setup;
}
if(.Shop[@i]!=@bought_nameid) for(set @i,1; 1; set @i,@i+1) if(.Shop[@i]==@bought_nameid) { set .i,@i; callsub Quest_Setup; }
for(set @i,1; !@e; set @i,@i+1) if(.Shop[@i]==@bought_nameid) { set @e,1; set .i,@i; callsub Quest_Setup; }
mes "[Reward Token]";
mes "I require the following:";
for(set @i,0; !compare(getarg(@i+1),"Zeny"); set @i,@i+2) mes "^FF0000" + ((countitem(getarg(@i))>=getarg(@i+1))? "^00FF00":"") + "" + getarg(@i+1) + " " + getitemname(getarg(@i)) + " [" + countitem(getarg(@i)) + "/" + getarg(@i+1) + "]";
if(getarg(@i)) mes "^FF0000" + ((Zeny>=getarg(@i))? "^00FF00":"") + "" + getarg(@i) + " Zeny";
mes "^000000In exchange, I will give you:^0000FF";
for(set @i,@i+2; getarg(@i+1,0); set @i,@i+2) mes getarg(@i+1) + " " + getitemname(getarg(@i));
switch(select("Exchange:" + (((((getiteminfo(@bought_nameid,5) & 1) || (getiteminfo(@bought_nameid,5) & 256) || (getiteminfo(@bought_nameid,5) & 512)) && @equip==0))? "Preview Item":"") + ":No thanks")) {
case 1:
for(set @i,0; !compare(getarg(@i+1),"Zeny"); set @i,@i+2) if(countitem(getarg(@i)) < getarg(@i+1)) {
next;
mes "[Reward Token]";
mes "You have " + countitem(getarg(@i)) + " " + getitemname(getarg(@i)) + ", while I require " + getarg(@i+1) + ".";
mes "Please obtain ^FF0000" + (getarg(@i+1)-countitem(getarg(@i))) + " more " + getitemname(getarg(@i)) + "^000000.";
close;
}
if(Zeny < getarg(@i)) {
next;
mes "[Reward Token]";
mes "You do not have enough Zeny.";
mes "Please obtain ^FF0000" + (getarg(@i)-Zeny) + " more Zeny^000000.";
close;
}
for(set @i,0; !compare(getarg(@i+1),"Zeny"); set @i,@i+2) delitem getarg(@i),getarg(@i+1);
set Zeny,Zeny-getarg(@i);
for(set @i,@i+2; getarg(@i+1,0); set @i,@i+2) getitem getarg(@i),getarg(@i+1);
if (compare(""+getarg(@i,0),"announce")) announce strcharinfo(0) + " has just obtained " + getitemname(@bought_nameid) + "!",bc_all;
close;
case 2:
set @bottomview, getlook(3);
set @topview, getlook(4);
set @midview, getlook(5);
addtimer 1000, strnpcinfo(3)+"::On_Leave";
set @equip,getiteminfo(@bought_nameid, 5);
set @view, getiteminfo(@bought_nameid, 11);
if(@equip != -1 && @view > 0) {
if(@equip & 1) atcommand "@changelook 3 " + @view;
if(@equip & 256) atcommand "@changelook 1 " + @view;
if(@equip & 512) atcommand "@changelook 2 " + @view;
}
next;
goto OnBuyItem;
case 3:
close;
}
On_Leave:
atcommand "@changelook 1 " + @topview;
atcommand "@changelook 2 " + @midview;
atcommand "@changelook 3 " + @bottomview;
set @equip,0;
set @view,0;
set @topview,0;
set @midview,0;
set @bottomview,0;
end;
OnInit:
npcshopitem "acces_shop",0,0;
set .BuildQuest,1;
set .i,1;
Quest_Setup:
switch(.i) {
default: set .BuildQuest,0; set .e,0; set .i,0; end;
case 1: callsub OnBuyItem,30200,7,7,"SZeny",2630,1;
case 2: callsub OnBuyItem,30200,22,22,"SZeny",30150,1;
case 3: callsub OnBuyItem,30200,10,10,"SZeny",2679,1;
case 4: callsub OnBuyItem,30200,10,10,"SZeny",2678,1;
case 5: callsub OnBuyItem,30200,18,18,"SZeny",30350,1;
case 6: callsub OnBuyItem,30200,18,18,"SZeny",30351,1;
case 7: callsub OnBuyItem,30200,18,18,"SZeny",30352,1;
case 8: callsub OnBuyItem,30200,18,18,"SZeny",30353,1;
case 9: callsub OnBuyItem,30200,18,18,"SZeny",30354,1;
case 10: callsub OnBuyItem,30200,18,18,"SZeny",30355,1;
}
}

This Scrip for Cards Reward

-	shop	cards_shop	-1,501:50
prontera,147,173,5,	script	Reward Token	899,{
set @i,0;
mes "[Reward Token]";
mes "Which item do you wish to obtain?";
mes "Select only one.";
callshop "cards_shop",1;
npcshopattach "cards_shop";
end;

OnBuyItem:
if(.BuildQuest) {
	for(set .e,0; !compare(getarg(.e+1),"Zeny"); set .e,.e+2) {}
	npcshopadditem "cards_shop",getarg(.e+2),getarg(.e)*compare(""+getarg(.e+1),"SZeny");
	setarray .Shop[.i],getarg(.e+2);
	set .i,.i+1;
	goto Quest_Setup;
}
if(.Shop[@i]!=@bought_nameid) for(set @i,1; 1; set @i,@i+1) if(.Shop[@i]==@bought_nameid) { set .i,@i; callsub Quest_Setup; }
for(set @i,1; !@e; set @i,@i+1) if(.Shop[@i]==@bought_nameid) { set @e,1; set .i,@i; callsub Quest_Setup; }
mes "[Reward Token]";
mes "I require the following:";
for(set @i,0; !compare(getarg(@i+1),"Zeny"); set @i,@i+2) mes "^FF0000" + ((countitem(getarg(@i))>=getarg(@i+1))? "^00FF00":"") + "" + getarg(@i+1) + " " + getitemname(getarg(@i)) + " [" + countitem(getarg(@i)) + "/" + getarg(@i+1) + "]";
if(getarg(@i)) mes "^FF0000" + ((Zeny>=getarg(@i))? "^00FF00":"") + "" + getarg(@i) + " Zeny";
mes "^000000In exchange, I will give you:^0000FF";
for(set @i,@i+2; getarg(@i+1,0); set @i,@i+2) mes getarg(@i+1) + " " + getitemname(getarg(@i));
switch(select("Exchange:" + (((((getiteminfo(@bought_nameid,5) & 1) || (getiteminfo(@bought_nameid,5) & 256) || (getiteminfo(@bought_nameid,5) & 512)) && @equip==0))? "Preview Item":"") + ":No thanks")) {
	case 1:
		for(set @i,0; !compare(getarg(@i+1),"Zeny"); set @i,@i+2) if(countitem(getarg(@i)) < getarg(@i+1)) {
			next;
			mes "[Reward Token]";
			mes "You have " + countitem(getarg(@i)) + " " + getitemname(getarg(@i)) + ", while I require " + getarg(@i+1) + ".";
			mes "Please obtain ^FF0000" + (getarg(@i+1)-countitem(getarg(@i))) + " more " + getitemname(getarg(@i)) + "^000000.";
			close;
		}
		if(Zeny < getarg(@i)) {
			next;
			mes "[Reward Token]";
			mes "You do not have enough Zeny.";
			mes "Please obtain ^FF0000" + (getarg(@i)-Zeny) + " more Zeny^000000.";
			close;
		}
		for(set @i,0; !compare(getarg(@i+1),"Zeny"); set @i,@i+2) delitem getarg(@i),getarg(@i+1);
		set Zeny,Zeny-getarg(@i);
		for(set @i,@i+2; getarg(@i+1,0); set @i,@i+2) getitem getarg(@i),getarg(@i+1);
		if (compare(""+getarg(@i,0),"announce")) announce strcharinfo(0) + " has just obtained " + getitemname(@bought_nameid) + "!",bc_all;
		close;
	case 2:
		set @bottomview, getlook(3);
		set @topview, getlook(4);
		set @midview, getlook(5);
		addtimer 1000, strnpcinfo(3)+"::On_Leave";
		set @equip,getiteminfo(@bought_nameid, 5);
		set @view, getiteminfo(@bought_nameid, 11);
		if(@equip != -1 && @view > 0) {
			if(@equip & 1) atcommand "@changelook 3 " + @view;
			if(@equip & 256) atcommand "@changelook 1 " + @view;
			if(@equip & 512) atcommand "@changelook 2 " + @view;
		}
		next;
		goto OnBuyItem;
	case 3:
		close;
}
On_Leave:
atcommand "@changelook 1 " + @topview;
atcommand "@changelook 2 " + @midview;
atcommand "@changelook 3 " + @bottomview;
set @equip,0;
set @view,0;
set @topview,0;
set @midview,0;
set @bottomview,0;
end;
OnInit:
npcshopitem "cards_shop",0,0;
set .BuildQuest,1;
set .i,1;
Quest_Setup:
switch(.i) {
	default: set .BuildQuest,0; set .e,0; set .i,0; end;
	case 1: callsub OnBuyItem,30200,10,10,"SZeny",4359,1;
	case 2: callsub OnBuyItem,30200,5,5,"SZeny",4363,1;
	case 3: callsub OnBuyItem,30200,10,10,"SZeny",4365,1;
	case 4: callsub OnBuyItem,30200,10,10,"SZeny",4357,1;
	case 5: callsub OnBuyItem,30200,4,4,"SZeny",4367,1;
	case 6: callsub OnBuyItem,30200,20,20,"SZeny",4361,1;
}
}

so how can i merge this npc to be like this

[Sample Only Dialogue in game]

[Reward Token]

Which item do you wish to obtain;

Select only one

Accessories

MVP Cards

i want to make Accessories and MVP Cards category thats why im asking how to merge this Script

i tried to use callfunc and callshop but not working

This is the attach files

Accessories NPC

accessories.txt

Cards NPC

cards.txt

Edited by Arcenciel
Codeboxed

16 answers to this question

Recommended Posts

Posted

why not you use those already made by Euphy ? or mine ?

Euphy Script support multiple items..

mine only support 1 items

otherwise...you can just create another simple npc..that call for these 2 npc..

Posted

i mean link them together like this...

put a npc label in both NPC....

-	script	NPC1	-1,{
OnWhatEverLabel:
.........blablabla.............
}

-	script	NPC2	-1,{
OnWhatEverLabel:
.........blablabla.............
}

then the NPC that call for both NPC

prontera,155,181,5	script	MAINNPC	123,{
switch( select("Call NPC 1:Call NPC 2") ){
Case 1: donpcevent "NPC1::OnWhatEverLabel";  break;
Case 2: donpcevent "NPC2::OnWhatEverLabel";  break;
}
close;
}

Posted (edited)

Not Working have a Error !!

[Warning]: NPC event parameter deprecated! Please use 'NPCNAME::OnEVENT' instead
of 'NPC1:OnWhatEverLabel'.
[Debug]: Source (NPC): Token Reward at ra_temsky (97,147)

Edited by zaido78
Posted

Not Working have a Error !!

[Warning]: NPC event parameter deprecated! Please use 'NPCNAME::OnEVENT' instead
of 'NPC1:OnWhatEverLabel'.
[Debug]: Source (NPC): Token Reward at ra_temsky (97,147)

    Case 1: donpcevent "NPC1::OnWhatEverLabel";  break;
    Case 2: donpcevent "NPC2::OnWhatEverLabel";  break;

Posted

Not Working have a Error !!

[Warning]: NPC event parameter deprecated! Please use 'NPCNAME::OnEVENT' instead
of 'NPC1:OnWhatEverLabel'.
[Debug]: Source (NPC): Token Reward at ra_temsky (97,147)

	Case 1: donpcevent "NPC1::OnWhatEverLabel";  break;
	Case 2: donpcevent "NPC2::OnWhatEverLabel";  break;

yup i tried that but error

[Warning]: NPC event parameter deprecated! Please use 'NPCNAME::OnEVENT' instead
of 'NPC1:OnWhatEverLabel'.
[Debug]: Source (NPC): Token Reward at ra_temsky (97,147)

Posted

i dont know whats wrong sorry for my noobie question :( Error

[Error]: script_rid2sd: fatal error ! player not attached!
[Debug]: Function: set (2 parameters):
[Debug]: Data: variable name='@i' index=0
[Debug]: Data: number value=0
[Debug]: Source (NPC): NPC1 (invisible/not on a map)
[Error]: script:set: no player attached for player variable '@i'

Posted (edited)

show your edited script....

The NPC ITEM REWARD

-	script	NPC1	-1,{
OnWhatEverLabel:
set @i,0;
mes "[Reward Token]";
mes "Which item do you wish to obtain?";
mes "Select only one.";
callshop "acces_shop",1;
npcshopattach "acces_shop";
end;

OnBuyItem:
if(.BuildQuest) {
	for(set .e,0; !compare(getarg(.e+1),"Zeny"); set .e,.e+2) {}
	npcshopadditem "acces_shop",getarg(.e+2),getarg(.e)*compare(""+getarg(.e+1),"SZeny");
	setarray .Shop[.i],getarg(.e+2);
	set .i,.i+1;
	goto Quest_Setup;
}
if(.Shop[@i]!=@bought_nameid) for(set @i,1; 1; set @i,@i+1) if(.Shop[@i]==@bought_nameid) { set .i,@i; callsub Quest_Setup; }
for(set @i,1; !@e; set @i,@i+1) if(.Shop[@i]==@bought_nameid) { set @e,1; set .i,@i; callsub Quest_Setup; }
mes "[Reward Token]";
mes "I require the following:";
for(set @i,0; !compare(getarg(@i+1),"Zeny"); set @i,@i+2) mes "^FF0000" + ((countitem(getarg(@i))>=getarg(@i+1))? "^00FF00":"") + "" + getarg(@i+1) + " " + getitemname(getarg(@i)) + " [" + countitem(getarg(@i)) + "/" + getarg(@i+1) + "]";
if(getarg(@i)) mes "^FF0000" + ((Zeny>=getarg(@i))? "^00FF00":"") + "" + getarg(@i) + " Zeny";
mes "^000000In exchange, I will give you:^0000FF";
for(set @i,@i+2; getarg(@i+1,0); set @i,@i+2) mes getarg(@i+1) + " " + getitemname(getarg(@i));
switch(select("Exchange:" + (((((getiteminfo(@bought_nameid,5) & 1) || (getiteminfo(@bought_nameid,5) & 256) || (getiteminfo(@bought_nameid,5) & 512)) && @equip==0))? "Preview Item":"") + ":No thanks")) {
	case 1:
		for(set @i,0; !compare(getarg(@i+1),"Zeny"); set @i,@i+2) if(countitem(getarg(@i)) < getarg(@i+1)) {
			next;
			mes "[Reward Token]";
			mes "You have " + countitem(getarg(@i)) + " " + getitemname(getarg(@i)) + ", while I require " + getarg(@i+1) + ".";
			mes "Please obtain ^FF0000" + (getarg(@i+1)-countitem(getarg(@i))) + " more " + getitemname(getarg(@i)) + "^000000.";
			close;
		}
		if(Zeny < getarg(@i)) {
			next;
			mes "[Reward Token]";
			mes "You do not have enough Zeny.";
			mes "Please obtain ^FF0000" + (getarg(@i)-Zeny) + " more Zeny^000000.";
			close;
		}
		for(set @i,0; !compare(getarg(@i+1),"Zeny"); set @i,@i+2) delitem getarg(@i),getarg(@i+1);
		set Zeny,Zeny-getarg(@i);
		for(set @i,@i+2; getarg(@i+1,0); set @i,@i+2) getitem getarg(@i),getarg(@i+1);
		if (compare(""+getarg(@i,0),"announce")) announce strcharinfo(0) + " has just obtained " + getitemname(@bought_nameid) + "!",bc_all;
		close;
	case 2:
		set @bottomview, getlook(3);
		set @topview, getlook(4);
		set @midview, getlook(5);
		addtimer 1000, strnpcinfo(3)+"::On_Leave";
		set @equip,getiteminfo(@bought_nameid, 5);
		set @view, getiteminfo(@bought_nameid, 11);
		if(@equip != -1 && @view > 0) {
			if(@equip & 1) atcommand "@changelook 3 " + @view;
			if(@equip & 256) atcommand "@changelook 1 " + @view;
			if(@equip & 512) atcommand "@changelook 2 " + @view;
		}
		next;
		goto OnBuyItem;
	case 3:
		close;
}
On_Leave:
atcommand "@changelook 1 " + @topview;
atcommand "@changelook 2 " + @midview;
atcommand "@changelook 3 " + @bottomview;
set @equip,0;
set @view,0;
set @topview,0;
set @midview,0;
set @bottomview,0;
end;
OnInit:
npcshopitem "acces_shop",0,0;
set .BuildQuest,1;
set .i,1;
Quest_Setup:
switch(.i) {
	default: set .BuildQuest,0; set .e,0; set .i,0; end;
	case 1: callsub OnBuyItem,30200,7,7,"SZeny",2630,1;
	case 2: callsub OnBuyItem,30200,22,22,"SZeny",30150,1;
	case 3: callsub OnBuyItem,30200,10,10,"SZeny",2679,1;
	case 4: callsub OnBuyItem,30200,10,10,"SZeny",2678,1;
	case 5: callsub OnBuyItem,30200,18,18,"SZeny",30350,1;
	case 6: callsub OnBuyItem,30200,18,18,"SZeny",30351,1;
	case 7: callsub OnBuyItem,30200,18,18,"SZeny",30352,1;
	case 8: callsub OnBuyItem,30200,18,18,"SZeny",30353,1;
	case 9: callsub OnBuyItem,30200,18,18,"SZeny",30354,1;
	case 10: callsub OnBuyItem,30200,18,18,"SZeny",30355,1;
}
-	shop	acces_shop	-1,501:50
}

ra_temsky,97,147,5	script	Test NPC	757,{
mes	"TestNPC?;
next;
switch(select("Accessories")){
	Case 1: donpcevent "NPC1::OnWhatEverLabel"; break;
	}
	close;
	}

Edited by Arcenciel
Codeboxed
Posted

Thank you Schrwaizer.. but still Error..

[Error]: script_rid2sd: fatal error ! player not attach
[Debug]: Function: mes (1 parameter):
[Debug]: Data: string value="[Donation Item]"
[Debug]: Source (NPC): NPC1 (invisible/not on a map)

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