Jump to content

Dogpatch

Members
  • Content Count

    78
  • Joined

  • Last visited

  • Days Won

    2

Posts posted by Dogpatch


  1. Just use this. It's easier to config.

     

     

    //===== Hercules Script ======================================//= Euphy's Quest Shop//===== By: ==================================================//= Euphy//===== Current Version: =====================================//= 1.6a//===== 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.//============================================================// Shop NPCs -- supplying no argument displays entire menu.//	callfunc "qshop"{,<shop ID>{,<shop ID>{,...}}};//============================================================prontera,164,203,6	script	Quest Shop#1	4_M_MOCASS2,{ 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:";	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]) 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

     

     

    Add(<shop ID>,<reward ID>,<reward amount>,<Zeny cost>,<point cost>, <required item ID>,<required item amount>{,...});

     

    To be more specific
    Add (<shop ID>,13416,1,0,0,7211,50,7451,30,1020,300,7915,10);


  2. I understand the 1st part but I don't quite get the 2nd part.

     

    Or if I do understand it correctly, I don't think there's a way to floor an item longer than the duration in the conf files.


  3. Try this.

     

    prontera,150,150,5	script	Stylist	878,{set .@n$,"[Stylist]";query_sql("SELECT `char_id`,`name`,`hair`,`hair_color`,`clothes_color` FROM `char` WHERE `char_id` = '"+getcharid(0)+"'",@charid$,@name$,@hair$,@haircolor$,@clothcolor$);mes .@n$;mes "You are currently wearing:";mes "Cloth Color: "+@clothcolor$+"";mes "Hair Color: "+@haircolor$+"";mes "Hair Style: "+@hair$+"";next;mes .@n$;mes "What would you like to change?";next;switch(select("Clothes Color:Hair Color:Hair Style:Saved Dyes:Randomize")) {	case 1:	clothcolor:		mes .@n$;		mes "Choose a style to begin from between 0 to 699.";		input (.@clothcolor);		switch(select("Next:Previous:I Like it!:[Save Clothes]")) {			case 1: // will show the next clothcolor			case 2: // will show the previous clothcolor			case 3:				next;				mes .@n$;				mes "Perfect ! I am glad you found a style that fits you!";				close;			case 4:				switch(select("Set 1:Set 2:Set3")) {					case 1: // will save the clothcolor that you want to this set						mes .@n$;						mes "Your style has been saved.";						goto clothcolor;					case 2: // will save the clothcolor that you want to this set						mes .@n$;						mes "Your style has been saved.";						goto clothcolor;					case 3: // will save the clothcolor that you want to this set						mes .@n$;						mes "Your style has been saved.";						goto clothcolor;					} 			}	case 2:	haircolor:		mes .@n$;		mes "Choose a style to begin from between 0 to 126.";		input (.@haircolor);		switch(select("Next:Previous:I Like it!:[Save Clothes]")) {			case 1: // will show the next hair color			case 2: // will show the previous hair color			case 3:				next;				mes .@n$;				mes "Perfect ! I am glad you found a style that fits you!";				close;			case 4:				switch(select("Set 1:Set 2:Set3")) {					case 1: // will save the haircolor that you want to this set						mes .@n$;						mes "Your style has been saved.";						goto haircolor;					case 2: // will save the haircolor that you want to this set						mes .@n$;						mes "Your style has been saved.";						goto haircolor;					case 3: // will save the haircolor that you want to this set						mes .@n$;						mes "Your style has been saved.";						goto haircolor;					}			}	case 3:		mes .@n$;		mes "Choose a style to begin from between 0 to 27.";		input (.@hairstyle);		switch(select("Next:Previous:I Like it!")) {			case 1: // will show the next hairstyle			case 2: // will show the previous hairstyle			case 3:				next;				mes .@n$;				mes "Perfect ! I am glad you found a style that fits you!";				close;			}	case 4:		mes .@n$;		mes "Here are the color sets you saved:";		mes "Which one do you want to wear ?";		mes "Slot 1 : <clothcolor>,<haircolor>";		mes "Slot 2 : <clothcolor>,<haircolor>";		mes "Slot 3 : <clothcolor>,<haircolor>";		next;		switch(select("Set 1:Set2:Set3")) {			case 1:				// it will automatically wear the cloth color and hair color that you have saved before in this set.				mes .@n$;				mes "Here is the set you like! See you later.";				close;			case 2:				// it will automatically wear the cloth color and hair color that you have saved before in this set.				mes .@n$;				mes "Here is the set you like! See you later.";				close;			case 3:				// it will automatically wear the cloth color and hair color that you have saved before in this set.				mes .@n$;				mes "Here is the set you like! See you later.";				close;			}	case 5:		mes .@n$;		mes "What would you like to change?";		next;		switch(select("Next:I Like It!")) {			case 1:				// it will going to give you a random cloth color, hair color and hair style.			case 2:				next;				mes .@n$;				mes "Perfect ! I am glad you found a style that fits you!";				close;		}	}}

  4. Which forum do you guys prefer?

     

    IPB Board is also really good but it's a paid forum.

     

    I can name over 20 active servers that use nulled IPB.

     

    For free ones, SMF is the best I've used. For Paid ones, vBulletin and IPB.

     

    IPB is easy to customize and has a lot of hooks. 

    vBulletin is pretty much "change the theme" and you're good to go. All depends on what you prefer.


  5. Please avoid bumping topics within a 24 hour period. 

     

    As to your request, more details would be more helpful. More details help us actually understand what you want to achieve. 

     

    *side note*

    Can a mod please move this to the proper section. I don't see this being accomplished as a script.


  6. Like mentioned above check ALL custom scripts. Since you say no warnings come up when compiling, then most likely it's a custom script or a glitch. 

    I would also like to add. @mail or the mail system in general actually does have an exploit. I've disabled it on all my servers. 


  7.  

     

    Good script very unique idea :) i'm curios on this part:

    .job_rebirth = EAJL_2;								//EAJL_THIRD = Third Job, EAJL_2 = Second Job, (EAJL_2&EAJL_THIRD) = Second and Third job can rebirth. 														//More Options [EAJL_2_1,EAJL_2_2,EAJL_UPPER,EAJL_BABY]
    @@Dastgir already set the .job_rebirth = EAJL_2; but i still can't rebirth although i'm already a Paladin (Trans Class)

    I'm using Pre-Re :D

     

    Thank you for the script.

    I will have to check it, and this script really needs some optimization. Which will fix some job checking issue.

     

    Okay thank you in advance :)

     

    I had the same problem so I improvised. A little work but since I already made it, you can just copy paste it.

     

    Replace 

    .job_rebirth = EAJL_2;

    With

    .job_rebirth = 	4060 | 4008 | 4061 | 4010 | 4063 | 4009 | 4062 | 4012 | 4064 | 4011 | 4065 | 4013 | 4073 | 4015 | 4074 | 4017 | 4077 | 4016 | 4075 | 4020 | 4076 | 4021 | 4078 | 4019 | 4079 | 4018 | 23 | 4030 | 4031 | 4032 | 4033 | 4034 | 4035 | 4037 | 4038 | 4039 | 4040 | 4041 | 4042 | 4043 | Job_Gunslinger | Job_Soul_Linker | Job_Star_Gladiator | Job_Ninja | Job_Taekwon;

    Then find 

    setarray .add_jobs[0]

    And replace with

    setarray .add_jobs[0], 4060,						   4008,						   4061,						   4010,						   4063,						   4009,						   4062,						   4012,						   4064,						   4011,						   4065,						   4013,						   4073,						   4015,						   4074,						   4017,						   4077,						   4016,						   4075,						   4020,						   4076,						   4021,						   4078,						   4019,						   4079,						   4018,						   23,						   4030,						   4031,						   4032,						   4033,						   4034,						   4035,						   4037,						   4038,						   4039,						   4040,						   4041,						   4042,						   4043,						   Job_Gunslinger,						   Job_Soul_Linker,						   Job_Star_Gladiator,						   Job_Ninja,						   Job_Taekwon;

     Only 3rd jobs and Baby 3rd Jobs are missing there.

     

    Hope that helps. You can just remove or add the JobID as needed.


  8. Well I know it just replaced the edited files. I guess the "git pull" should not be encouraged anymore if this is what happens when you use it.

    Other than that, any other solutions to fix this? All the files pretty much got messed up.

     

    About the HP/SP,

    Makes sense but that just completely f***** up servers that have a max level over 150. 

     

    Is there a way to get the prior Herc files that didn't mess up anything?


  9. So I'll put this in General as like the title says, git pull messed up almost everything on my server.

     

    - Reduction (race,elemental,size) doesn't work -again

     

    - HP Pool got reduced to 1/3 of the original HP (before git pull HP of Baby Sin 98000, after update 32000) 

     

    - Almost ALL the src/common files have "<<<<<<<HEAD" and ">>>>>>> 5d83253484c92116580fd400eb77b8fe65f1b1f3" embedded somewhere in the codes

     

    - Same with scripts have "<<<<<<<<HEAD" and ">>>>>>> 5d83253484c92116580fd400eb77b8fe65f1b1f3" all over the scripts. Both custom and official ones from the SVN

     

    - After git pull, I can't even upload files to my own host? O_O Permission Denied? As a root user? LOL! So I need to delete the file on the trunk and replace it manually?

     

     

    I've updated through git pull before (total of 4 times all in all) but this is the first time this has happened.

    Now I got a bunch of pissed off players on the server who will most likely leave very very soon.

     

     

    What happened? It wasn't like this before. 


  10. What's the file above it, in npc/vroevents/ ? Might be missing a right curly at the end of that file.

     

    Right curly? In the scripts_custom.conf?

     

    If you mean the actual scripts inside the folder, the other scripts are 100% working. I also don't see why a script above it would affect the following script if they are separate files. Or do you know something I don't about that? :P


  11. Do they load if you delete contents of already created script, write something of your own and save that somewhere as copy?

     

    Yeah even if I load a new super basic script, it doesn't show up in game as well even with the "Script Loaded" message via @loadnpc

     

    As for your new line comment *facepalms* You lost me LOL

    Can you elaborate more on that. Sorry, I can't quite understand it.


  12. it needs to be utf-8 without bom

     

     

    Sorry, I forgot to add that to the prior post. Yes I tried without BOM too.

    And it's not just with this script. Any new script I add doesn't show. 

     

    The scripts only work if I embed them with scripts that are already loaded. 

    If they are loaded separately on their own path and script. They don't show.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.