Jump to content

AinsLord

Members
  • Posts

    794
  • Joined

  • Last visited

  • Days Won

    3

Posts posted by AinsLord

  1. So im planning to add new NPC for this script

    this is the 1st NPC script :

    //===== 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>{,...}}};
    //============================================================
    prt_in,32,114,5	script	Tier 1 Quest#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,1;  	// 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[T1]","Mid HG[T1]","Lower[T1]","Accessory[T1]","Commander Set[T1]","Defender Set[T1]";
    
    // -----------------------------------------------------------
    //  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,32000,1,0,100,7086,1,969,10,999,40,1003,50,984,2);
    	Add(1,32001,1,0,0,1059,250,2221,1,2227,1,7063,600);
    	Add(1,32002,1,0,0,2252,1,1036,400,7001,50,4052,1);
    	Add(1,32003,1,0,0,2252,1,1054,450,943,1200);
    	Add(1,32004,1,0,0,2252,1,1054,450,943,1200);
    	Add(1,32005,1,0,0,2252,1,1054,450,943,1200);
    
    	Add(2,32006,1,0,0,7297,30,969,10,999,50,714,10);
    	Add(2,32007,1,0,0,7292,30,969,10,999,50,714,10);
    	Add(2,32009,1,0,0,7292,30,969,10,999,50,714,10);
    	Add(2,32011,1,0,0,7292,30,969,10,999,50,714,10);
    	Add(2,32008,1,0,0,7297,30,969,10,999,50,714,10);
    	Add(2,32012,1,0,0,7292,30,969,10,999,50,714,10);
    
    	Add(3,32014,1,0,0,7292,30,969,10,999,50,714,10);
    	Add(3,32015,1,0,0,7297,30,969,10,999,50,714,10);
    	Add(3,32021,1,0,0,7292,30,969,10,999,50,714,10);
    	Add(3,32018,1,0,0,7292,30,969,10,999,50,714,10);
    	Add(3,32020,1,0,0,7292,30,969,10,999,50,714,10);
    	Add(3,32019,1,0,0,7292,30,969,10,999,50,714,10);
    
    	Add(4,34000,1,0,0,7292,30,969,10,999,50,714,10);
    	Add(4,34001,1,0,0,7297,30,969,10,999,50,714,10);
    	Add(4,34005,1,0,0,7292,30,969,10,999,50,714,10);
    	Add(4,34003,1,0,0,7292,30,969,10,999,50,714,10);
    	Add(4,34002,1,0,0,7292,30,969,10,999,50,714,10);
    	Add(4,34004,1,0,0,7292,30,969,10,999,50,714,10);
    
    	Add(5,35000,1,0,0,7292,30,969,10,999,50,714,10);
    	Add(5,35001,1,0,0,7297,30,969,10,999,50,714,10);
    	Add(5,35002,1,0,0,7292,30,969,10,999,50,714,10);
    	Add(5,35003,1,0,0,7292,30,969,10,999,50,714,10);
    
    	Add(6,35004,1,0,0,7292,30,969,10,999,50,714,10);
    	Add(6,35005,1,0,0,7297,30,969,10,999,50,714,10);
    	Add(6,35006,1,0,0,7292,30,969,10,999,50,714,10);
    	Add(6,35007,1,0,0,7292,30,969,10,999,50,714,10);
    
    
    
    
    
    
    
    // -----------------------------------------------------------
    
    	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
    -	shop	qshop6	-1,909:-1

    and im plannig to create another NPC using the same script but the 2nd NPC keep on showing whats on the 1st NPC anyone can help me with this

    Heres the 2nd NPC script :

    //===== 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>{,...}}};
    //============================================================
    prt_in,34,114,5	script	Quest Mats#1	998,{ callfunc "qshop"; }
    
    
    // Script Core
    //============================================================
    -	script	quest_shop1	-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,1;  	// 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],"Figures";
    
    // -----------------------------------------------------------
    //  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(7,2767,1,0,0,7086,1,969,10,999,40,1003,50,984,2);
    	Add(7,2769,1,0,0,1059,250,2221,1,2227,1,7063,600);
    	Add(7,2768,1,0,0,2252,1,1036,400,7001,50,4052,1);
    	Add(7,2771,1,0,0,2252,1,1054,450,943,1200);
    	Add(7,2766,1,0,0,2252,1,1036,400,7001,50,4052,1);
    	Add(7,2770,1,0,0,2252,1,1054,450,943,1200);
    
    
    // -----------------------------------------------------------
    
    	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_shop1::OnMenu";
    	end;
    }
    
    
    // Dummy shop data -- copy as needed.
    //============================================================
    -	shop	qshop7	-1,909:-1
    -	shop	qshop8	-1,909:-1
    -	shop	qshop9	-1,909:-1
    -	shop	qshop10	-1,909:-1
    -	shop	qshop11	-1,909:-1

    i actually did it before wayback 2016 hahaha and i forgot how to do it again

    thanks in advance it was @Euphy script credit to this person

  2. Hi i just wanted to know how to make this like 5TCGS = 10Statpoints??

    	set .@SellStatPOD, 30;		//Stat Points per 1 POD
    	set .@SellStatTCG, 10;		//Stat Points per 1 TCG
    	set .@PODid, 7179;			//POD item id
    	set .@TCGid, 7227;			//TCG item id
    	set .@MaxStat, 2000;		//Maximum Stat Points allowed to sell
    
    	mes "Hi ^FF0000"+strcharinfo(0)+"^000000!";
    	mes "Do you wish to buy Stat points?";
    	mes "1 POD = "+.@SellStatPOD+" stat points";
    	mes "5 TCG = "+.@SellStatTCG+" stat points"; // for this line
    	mes "Maximum stat points can be purchase is "+.@MaxStat+".";
    	switch(select(" ~ Yes, using PODs: ~ Yes, using TCGs: ~ No")) {
    		case 1:
    			mes "How many PODs do you wish to exchange for stat points?";
    			input .@amount;
    			if (countitem(.@PODid) < .@amount) {
    				mes "Sorry, but don't have enough PODs in your inventory.";
    				mes " Please come back when you have enough.";
    				close;
    			}
    			else {
    				set .@StatToBe, StatBought+(.@amount*.@SellStatPOD);
    				if (.@MaxStat < .@StatToBe) {
    					mes "Sorry, but you're about to reach the max stat points that can be bought.";
    					mes "You have already purchase "+StatBought+" stat points.";
    					close;
    				}
    				else {
    					mes "Here you go!";
    					mes "Please use your stat point wisely.";
    					set StatusPoint, StatusPoint+(.@amount*.@SellStatPOD);
    					set StatBought, StatBought+(.@amount*.@SellStatPOD);
    					delitem .@PODid[.@StatBought],.@amount;
    					close;
    				}
    			}
    		case 2:
    			mes "How many TCGs do you wish to exchange for stat points?";
    			input .@amount;
    			if (countitem(.@TCGid) < .@amount) {
    				mes "Sorry, but don't have enough TCGs in your inventory.";
    				mes " Please come back when you have enough.";
    				close;
    			}
    			else {
    				set .@StatToBe, StatBought+(.@amount*.@SellStatTCG);
    				if (.@MaxStat < .@StatToBe) {
    					mes "Sorry, but you're about to reach the max stat points that can be bought.";
    					mes "You have already purchase "+StatBought+" stat points.";
    					close;
    				}
    				else {
    					mes "Here you go!";
    					mes "Please use your stat point wisely.";
    					set StatusPoint, StatusPoint+(.@amount*.@SellStatTCG);
    					set StatBought, StatBought+(.@amount*.@SellStatTCG);
    					delitem .@TCGid[.@StatBought],.@amount;
    					close;
    				}
    			}
    		case 3:
    			mes "I understand, Please come back to me whenever you change your mind.";
    			close;
    	}
    OnInit:
    waitingroom " Stat Seller",0;
    end;
    }

    thanks in advance ❤️

  3. prontera,155,181,5	script	YmirCoin	757,{
    
    	mes "[Ymir Coin Exchanger]";
    	mes "Just give me the required items and ill give you Coin of Ymir";
     	next;
    
    // What Item you want to Make ?
    set .GiveItem,7539;
    // Item Requirements + Amounts
    setarray .Item[0],
      607,1,
      608,1,
      512,1;
    
    for( set .@i,0; .@i < getarraysize( .Item ) - 1; set .@i,.@i + 2 )
    if( countitem( .Item[.@i] ) < .Item[.@i + 1] ){
     for( set .@i,0; .@i < getarraysize( .Item ) - 1; set .@i,.@i + 2 )
      mes "Need "+.Item[.@i + 1]+" x "+getitemname( .Item[.@i] );
     close;
    }
    if( select("Make ^FF0000"+getitemname( .GiveItem )+"^000000:Cancel") == 2 ) close;
    for( set .@i,0; .@i < getarraysize( .Item ) - 1; set .@i,.@i + 2 )
    delitem .Item[ .@i ],.Item[ .@i + 1 ];
    getitem .GiveItem,1;
    mes "You have Make ^FF0000"+getitemname( .GiveItem )+"^000000";
    announce "["+strcharinfo(0)+"] has made ["+getitemname( .GiveItem )+"]",0;
    close;
    }

    its like need to set how many to craft coz this one is crafted 1 by 1

    #TIA

  4. On 11/10/2019 at 11:21 AM, Gladius said:

    I had this same problem lol
    The error is because of sleep2 and mapwarp
    why? do not know

    
    prontera,173,176,4	script	Emperium Breaker	743,{
    
    // What Map will be used
    set .Map$,"job3_arch01";
    // How many Top Breaker will be Recorded
    set .TopRank,10;
    // Message to Inform Players while inside the Room
    setarray .Instruction$[0],
    			"Please Listen here carefully.",
    			"This is Emperium Breaker Test Room , which is use to test your Breaking Time.",
    			"Prepare youself...and do your best to Break it...",
    			"Okay that's All i want to say , get Ready yourself and it will Start Soon.";
    			
    			
    while( 1 ){
    mes "This is Emperium Breaker test Room. ";
    mes "You are able to calculate your Emperium Breaking Speed in this Room.";
    next;
    switch( select( ( getmapusers( .Map$ ) )?"^FF0000NOT Available":"^0000FFAvailable^000000",
    				"Top ^FF0000"+.TopRank+"^000000 Breaker Ladder",
    				( getgmlevel() < 90 )?"":"^FF0000[GM]^000000 Reset Room",
    				( getgmlevel() < 90 )?"":"^FF0000[GM]^000000 Reset Ladder" )){
    Case 1:
    	if( getmapusers( .Map$ ) ){
    		mes "There is another player inside it now.";
    		next;
    		break;
    		}
    	warp .Map$,0,0;
    	killmonster .Map$,"All";
    //	removemapflag .Map$,mf_noskill;
    	donpcevent strnpcinfo(0)+"::OnReady";
    	end;
    Case 2:
    	mes "^ED1ADCLatest Record^000000 : "+LatestRecord/1000+"."+LatestRecord%1000+" Seconds.";
    	for( set .@i,0; .@i < .TopRank; set .@i,.@i + 1 ){
    		if( !$TopRankTime[.@i] ) break;
    		mes "^FF0000Top "+( .@i + 1 )+" : ^0000FF"+$TopName$[.@i]+" ";
    		mes "^FF0000Time Taken : ^ED1ADC[ "+$TopRankTime[.@i]/1000+"."+$TopRankTime[.@i]%1000+" Sec. ]^000000 ";
    	}
    	next;
    	break;
    
    Case 3:
    	mapannounce .Map$,"A GM has RESET the Breaker Test Room.",0,0x00FF00;
    	killmonster .Map$,"All";
    	sleep 3000;
    	mapwarp .map$,"SavePoint",0,0;
    	mes "Done Reset. and Player who are inside are warped out.";
    	next;
    	break;
    Case 4:	
    	switch( select( "^0000FFAll Player^000000:^FF0000One Player^000000" ) ){
    		Case 1:
    			deletearray $TopRankTime[0],getarraysize( $TopRankTime );
    			deletearray $TopName$[0],getarraysize( $TopName$ );
    			mes "RESETED WHOLE LADDER.";
    			break;
    		Case 2:
    			mes "Please input the ^FF0000EXACT NAME^000000 of player you want to delete.";
    			input .Name$;
    			for( set .@i,0; .@i < .TopRank; set .@i,.@i + 1 ){
    				if( .Name$ == $TopName$[.@i] ){
    					deletearray $TopName$[.@i],1;
    					deletearray $TopRankTime[.@i],1;
    					mes "Removed ^FF0000"+.Name$+"^000000 from the List.";
    				}
    			}
    		}
    	next;
    	break;
    	}
    }
    
    OnReady:
    sleep 3000;
    for( set .@i,0; .@i < getarraysize( .Instruction$ ); set .@i,.@i + 1 ){
    	mapannounce .Map$,.Instruction$[.@i],0,0x00FF00;
    	sleep 2500;
    	}
    for( set .@i,5; .@i > 0; set .@i,.@i - 1 ){
    	mapannounce .Map$,"Count Down : "+.@i+" Seconds.",0,0x00FF00;
    	sleep 1000;
    	}
    //mapannounce .Map$,"Hit the Emperium Now and Skills Disabled.",0,0x00FF00;
    setmapflag .Map$,mf_noskill;
    monster .Map$,29,27,"Breaker Test",1288,1,strnpcinfo(0)+"::OnBreaked";
    set .Record,0;
    sleep 500;
    initnpctimer;
    end;
    
    OnTimer600000:
    if( !mobcount( .Map$,strnpcinfo(0)+"::OnBreaked" ) ) end;
    	mapannounce .Map$,"You spent too much time. i think you are AFK , so you are out.",0,0xED1ADC;
    	sleep 3000;
    	mapwarp .map$,"SavePoint",0,0;
    	stopnpctimer;
    end;
    
    OnBreaked:
    	set .Time,getnpctimer(0);
    	copyarray .@tempName$[0],$TopName$[0],getarraysize( $TopName$ );
    	copyarray .@tempRecord[0],$TopRankTime[0],getarraysize( $TopRankTime[0] );
    	set LatestRecord,.Time;
    	for( set .@i,0; .@i < .TopRank; set .@i,.@i + 1 ){
    		if( .Time < $TopRankTime[.@i] || !$TopRankTime[.@i] ){
    				set $TopRankTime[.@i],.Time;
    				set $TopName$[.@i],strcharinfo(0);
    				copyarray $TopRankTime[.@i + 1],.@tempRecord[0],getarraysize( .@tempRecord );
    				copyarray $TopName$[.@i + 1],.@tempName$[0],getarraysize( .@tempName$ );
    			announce "[ "+strcharinfo(0)+" ] Achieved Top "+( .@i + 1 )+" in Emperium Breaking with "+.Time/1000+"."+.Time%1000+" Seconds !!!",bc_all,0xED1ADC;
    			break;
    			}
    		}
    	stopnpctimer;
    	announce "Current Time Taken : "+.Time/1000+"."+.Time%1000+" Seconds. ",bc_self,0xED1ADC;
    //	removemapflag .Map$,mf_noskill;
    	sleep 5000;
    	mapwarp .map$,"SavePoint",0,0;
    	end;
    }
    	
    job3_arch01	mapflag	nocommand	50
    job3_arch01	mapflag	gvg	on
    job3_arch01	mapflag	gvg_castle
    job3_arch01	mapflag	monster_noteleport
    job3_arch01	mapflag	nosave	SavePoint

    I solved mine like this...
    test and tell me if it worked ?

    thnx

    now got this i already added the map on castle_db

    [Error]: status_calc_mob: No castle set at map job3_arch01

    still have it

     

  5. im having this on my console

    [Debug]: Source (NPC): Breaker Ladder at prontera (171,179)
    [Error]: buildin_sleep2: no unit is attached
    [Debug]: Source (NPC): Emperium Breaker at prontera (173,176)
    [Error]: buildin_sleep2: no unit is attached

    here is the script i used

    prontera,173,176,4	script	Emperium Breaker	743,{
    
    // What Map will be used
    set .Map$,"job3_arch01";
    // How many Top Breaker will be Recorded
    set .TopRank,10;
    // Message to Inform Players while inside the Room
    setarray .Instruction$[0],
    			"Please Listen here carefully.",
    			"This is Emperium Breaker Test Room , which is use to test your Breaking Time.",
    			"Prepare youself...and do your best to Break it...",
    			"Okay that's All i want to say , get Ready yourself and it will Start Soon.";
    			
    			
    while( 1 ){
    mes "This is Emperium Breaker test Room. ";
    mes "You are able to calculate your Emperium Breaking Speed in this Room.";
    next;
    switch( select( ( getmapusers( .Map$ ) )?"^FF0000NOT Available":"^0000FFAvailable^000000",
    				"Top ^FF0000"+.TopRank+"^000000 Breaker Ladder",
    				( getgmlevel() < 90 )?"":"^FF0000[GM]^000000 Reset Room",
    				( getgmlevel() < 90 )?"":"^FF0000[GM]^000000 Reset Ladder" )){
    Case 1:
    	if( getmapusers( .Map$ ) ){
    		mes "There is another player inside it now.";
    		next;
    		break;
    		}
    	warp .Map$,0,0;
    	killmonster .Map$,"All";
    //	removemapflag .Map$,mf_noskill;
    	donpcevent strnpcinfo(0)+"::OnReady";
    	end;
    Case 2:
    	mes "^ED1ADCLatest Record^000000 : "+LatestRecord/1000+"."+LatestRecord%1000+" Seconds.";
    	for( set .@i,0; .@i < .TopRank; set .@i,.@i + 1 ){
    		if( !$TopRankTime[.@i] ) break;
    		mes "^FF0000Top "+( .@i + 1 )+" : ^0000FF"+$TopName$[.@i]+" ";
    		mes "^FF0000Time Taken : ^ED1ADC[ "+$TopRankTime[.@i]/1000+"."+$TopRankTime[.@i]%1000+" Sec. ]^000000 ";
    	}
    	next;
    	break;
    
    Case 3:
    	mapannounce .Map$,"A GM has RESET the Breaker Test Room.",0,0x00FF00;
    	killmonster .Map$,"All";
    	sleep2 3000;
    	mapwarp .Map$,"prontera",156,175;
    	mes "Done Reset. and Player who are inside are warped out.";
    	next;
    	break;
    Case 4:	
    	switch( select( "^0000FFAll Player^000000:^FF0000One Player^000000" ) ){
    		Case 1:
    			deletearray $TopRankTime[0],getarraysize( $TopRankTime );
    			deletearray $TopName$[0],getarraysize( $TopName$ );
    			mes "RESETED WHOLE LADDER.";
    			break;
    		Case 2:
    			mes "Please input the ^FF0000EXACT NAME^000000 of player you want to delete.";
    			input .Name$;
    			for( set .@i,0; .@i < .TopRank; set .@i,.@i + 1 ){
    				if( .Name$ == $TopName$[.@i] ){
    					deletearray $TopName$[.@i],1;
    					deletearray $TopRankTime[.@i],1;
    					mes "Removed ^FF0000"+.Name$+"^000000 from the List.";
    				}
    			}
    		}
    	next;
    	break;
    	}
    }
    
    OnReady:
    sleep2 3000;
    for( set .@i,0; .@i < getarraysize( .Instruction$ ); set .@i,.@i + 1 ){
    	mapannounce .Map$,.Instruction$[.@i],0,0x00FF00;
    	sleep2 2500;
    	}
    for( set .@i,5; .@i > 0; set .@i,.@i - 1 ){
    	mapannounce .Map$,"Count Down : "+.@i+" Seconds.",0,0x00FF00;
    	sleep2 1000;
    	}
    //mapannounce .Map$,"Hit the Emperium Now and Skills Disabled.",0,0x00FF00;
    setmapflag .Map$,mf_noskill;
    monster .Map$,29,27,"Breaker Test",1288,1,strnpcinfo(0)+"::OnBreaked";
    set .Record,0;
    sleep2 500;
    initnpctimer;
    end;
    
    OnTimer600000:
    if( !mobcount( .Map$,strnpcinfo(0)+"::OnBreaked" ) ) end;
    	mapannounce .Map$,"You spent too much time. i think you are AFK , so you are out.",0,0xED1ADC;
    	sleep2 3000;
    	mapwarp .Map$,"prontera",156,175;
    	stopnpctimer;
    end;
    
    OnBreaked:
    	set .Time,getnpctimer(0);
    	copyarray .@tempName$[0],$TopName$[0],getarraysize( $TopName$ );
    	copyarray .@tempRecord[0],$TopRankTime[0],getarraysize( $TopRankTime[0] );
    	set LatestRecord,.Time;
    	for( set .@i,0; .@i < .TopRank; set .@i,.@i + 1 ){
    		if( .Time < $TopRankTime[.@i] || !$TopRankTime[.@i] ){
    				set $TopRankTime[.@i],.Time;
    				set $TopName$[.@i],strcharinfo(0);
    				copyarray $TopRankTime[.@i + 1],.@tempRecord[0],getarraysize( .@tempRecord );
    				copyarray $TopName$[.@i + 1],.@tempName$[0],getarraysize( .@tempName$ );
    			announce "[ "+strcharinfo(0)+" ] Achieved Top "+( .@i + 1 )+" in Emperium Breaking with "+.Time/1000+"."+.Time%1000+" Seconds !!!",bc_all,0xED1ADC;
    			break;
    			}
    		}
    	stopnpctimer;
    	announce "Current Time Taken : "+.Time/1000+"."+.Time%1000+" Seconds. ",bc_self,0xED1ADC;
    //	removemapflag .Map$,mf_noskill;
    	sleep2 5000;
    	mapwarp .Map$,"prontera",156,175;
    	end;
    }
    	
    job3_arch01	mapflag	nocommand	50
    job3_arch01	mapflag	gvg	on
    job3_arch01	mapflag	gvg_castle
    job3_arch01	mapflag	monster_noteleport
    job3_arch01	mapflag	nosave	SavePoint

    im trying to figure out whats wrong but i cant

    #TIA

  6. Im figuring out my self how to add pub but it seems i cant do it

    anyone can help me with this

    here is the code

    //================= Freebies NPC ================//
    // by : pajodex
    prontera,159,193,4	script	Freebies NPC	100,{
    
    
    If(GetFree) { 
    		npctalk "Sorry yo! No more freebies available for yo!";
    		end;
    		 }
    	else {
    	mes "[ ^FF0000System^000000 ]";
    	mes "Welcome ^FF0000"+strcharinfo(0)+"^000000 !";
    	next;
    	mes "[ ^FF0000System^000000 ]";
    	mes "Let me help you start your adventure!";
    	next;
    	mes "[ ^FF0000System^000000 ]";
    	mes "Here you go!";
    	if(.char_bound) {
    	for(.@i = 0; .@i<getarraysize(.char_reward); .@i++)
    		getitem .char_reward[.@i],.char_reward_amt[.@i];
    		}
    	GetFree = 1;
    	if(#freebies == 0 && .account_bound == 1) {
    	next;
    	mes "[ ^FF0000System^000000 ]";
    	mes "It seems to be your first, here!";
    	mes "~ Special Freebies from the [ ^FF0000GM Team^000000 ]";
    	for(.@i = 0; .@i<getarraysize(.acc_reward); .@i++)
    		getitem .acc_reward[.@i],.acc_reward_amt[.@i];
    	#freebies = 1;
    	}
    	next;
    	mes "[ ^FF0000System^000000 ]";
    	mes "Goodluck! Enjoy your Adventure ~";
    	close;
    	}
    	
    OnInit:
    	// settings
    	.char_bound = 1; // enable character bound rewards (1 = on || 0 = off)
    	.account_bound = 1; // enable account bound rewards (1 = on || 0 = off)
    	// set item (char bound)
    	setarray .char_reward, 501, 502, 503; // item
    	setarray .char_reward_amt, 1, 2, 4; // amount
    	// set item (acc bound)
    	setarray .acc_reward, 501, 502, 503; // item
    	setarray .acc_reward_amt, 1, 2, 4; // amount
    	end;
    }
    
    

    i duuno where to add the

    OnInit:
    waitingroom " Feebies NPC ",0;
    end;

    #TIA

    EDIT: Figured it Out ?

  7. On 4/11/2019 at 11:24 AM, BugsLIFE said:

    update pls.... i also experience this

    i think restarting the server won't fix it

    try to re-compile your server since it was a src configuration its actually working fine

    my only problem is everytime i reset my server items can be bought using zeny

    coz mainly @at command leaves the character online even reset of the server

  8. 4 hours ago, Lelouch vi Britannia said:

    Add "Ignore Resource Errors" and "Skip License Screen" patch.

    This is my patchlist

    
    257 Use Default Web Browser for <URL>
    1 Use Tilde for Matk
    263 Set Achievement Button
    264 Set Tip Button
    9 Disable 1rag1 type parameters (Recommended)
    267 Set Attendance Button
    268 Restore chat focus
    269 Change default BGM file
    13 Disable Ragexe Filename Check (Recommended)
    16 Disable Swear Filter
    19 Enable Title Bar Menu
    279 Fix item description bug
    23 Enable /who command (Recommended)
    24 Fix Camera Angles (Recommended)
    28 Increase Headgear ViewID
    285 Fix act delay for act files with many frames
    286 Hide zero date (1969-01-01) in guild members window
    31 Increase Zoom Out 75%
    289 Fix Homunculus attack AI
    290 Hide build info in client (Recommended)
    34 Enable /showname (Recommended)
    291 Hide packets from peek (Recommended)
    36 Read msgstringtable.txt (Recommended)
    38 Remove Gravity Ads (Recommended)
    39 Remove Gravity Logo (Recommended)
    40 Restore Login Window (Recommended)
    41 Disable Nagle Algorithm (Recommended)
    43 Always Use Email for Char Deletion
    44 Translate Client (Recommended)
    45 Use Custom Aura Sprites
    46 Use Normal Guild Brackets (Recommended)
    47 Use Ragnarok Icon
    48 Use Plain Text Descriptions (Recommended)
    49 Enable Multiple GRFs (Recommended)
    50 Skip License Screen
    53 Use Ascii on All LangTypes (Recommended)
    61 Disable Packet Encryption
    64 @ Bug Fix (Recommended)
    65 Load Custom lua file instead of iteminfo*.lub (Recommended)
    71 Ignore Resource Errors
    72 Ignore Missing Palette Error
    73 Remove Hourly Announce (Recommended)
    74 Increase Screenshot Quality
    75 Enable Flag Emoticons
    84 Remove Serial Display (Recommended)
    85 Show Cancel To Service Select
    86 Only First Login Background
    88 Allow space in guild name
    90 Enable DNS Support (Recommended)
    91 Disconnect to Login Window
    97 Cancel to Login Window (Recommended)
    101 Skip Friend list Cheat Check
    102 Skip Guild Member Cheat Check
    110 Hide Achievements Button
    204 Increase Attack Display
    207 Resize Font
    208 Restore Cash Shop Icon
    213 Disable Help Message on Login (Recommended)
    215 Increase Map Quality
    219 Always Show Resurrection Button
    222 Show Replay Button
    225 Show Register Button
    230 Always load Korea ExternalSettings lua file
    233 Hide SNS Button
    234 Ignore Lua Errors
    239 Ignore /account: command line argument
    243 Change Quick Switch Delay
    247 Change new char name field height
    248 Remove wrong chars from cash shop
    253 Skip some hidden menu icon buttons
    256 Use Default Web Browser In Cashshop

     

    i tried your patchlist after i clicked the exe file it wont open

    nothing shows not even log in screen

    i've tried several times to do this but i can't ?

    it kills my brain cells to run / create a 2018 client hahaha

    EDIT: 

    so i used the client file on this one its 2018-04-18bRagexeRE and its patched already it works fine but the item/descriptions are in korean characters

    like what you can see on the image i already used @zackdreaver translated files but still

     

    screenrAthena000.thumb.jpg.f15ec0687868ae2644d2624f8822a179.jpg

     

  9. so every time i tick on "Enable Multiple GRFs" it give me this error

    asdfasd.png.75674fac32f4f54d5750a0d32b1d393e.png

    but if i dont select that

    this will happen

    screen000.thumb.jpg.ca05db9c3683df2e6cc5f4becdc7f797.jpg

    this is my diff selection

    1 Use Tilde for Matk
    
    2 Chat Flood Allow
    
    9 Disable 1rag1 type parameters (Recommended)
    
    19 Enable Title Bar Menu
    24 Fix Camera Angles (Recommended)
    
    28 Increase Headgear ViewID
    32 Increase Zoom Out Max
    
    290 Hide build info in client (Recommended)
    
    291 Hide packets from peek (Recommended)
    
    38 Remove Gravity Ads (Recommended)
    
    39 Remove Gravity Logo (Recommended)
    
    40 Restore Login Window (Recommended)
    
    44 Translate Client (Recommended)
    
    46 Use Normal Guild Brackets (Recommended)
    
    48 Use Plain Text Descriptions (Recommended)
    
    53 Use Ascii on All LangTypes (Recommended)
    
    64 @ Bug Fix (Recommended)
    
    67 Disable Quake skill effect
    
    73 Remove Hourly Announce (Recommended)
    
    75 Enable Flag Emoticons
    
    84 Remove Serial Display (Recommended)
    
    88 Allow space in guild name
    
    90 Enable DNS Support (Recommended)
    
    96 Remove GM Sprites
    
    105 Hide Nav Button
    
    106 Hide BG Button
    
    108 Hide Booking Button
    
    110 Hide Achievements Button
    
    111 Hide Rec Button
    
    113 Hide Quest Button
    
    114 Change Vending Limit [Experimental]
    
    204 Increase Attack Display
    
    213 Disable Help Message on Login (Recommended)
    
    233 Hide SNS Button
    
    244 Disable Cheat Defender Game Guard (Recommended)
    
    246 Increase hair style limit in game
    
    251 Allow close cutin by pressing esc key
    
    254 Change Max Items in inventory

     

    can anyone help me with this

    #TIA

    image.png

     

    EDIT: im using the latest data.grf and the translation by @zackdreaver

    i want to create a Pre-Re server

×
×
  • Create New...