[Service] NPC Scripts

Joined
Jun 23, 2012
Messages
554
Reaction score
70
My name is Jon, and I've been scripting as a hobby for several years now, starting at AngelMS (down), and then Midnight/TwilightMS(down).​

I'm also looking to script for pay. Skype is jonnguyens

I've seen service threads running around, but I've decided to open one of mine just in case anyone needs help because those have gone inactive. Now I have a pretty busy schedule, but I can most definitely help you out with your scripts if and only if you give me your script first.

I'm looking to script NPCs for a server for pay. If you want to talk, add me on skype: jonnguyens





  • Why do I have to give you a script first? Don't you know how to script?

Yes, yes I do. I basic functions and can create all those fancy scripts (infinite loop, ternaries, etc). It's just I want to see you try first (and maybe because my mind feels more at ease when I have something to fix, and not create). I want to show you any errors you may have created, or what you could have done to make it shorter. I'm not the best NPC scripter in the world, but I can say I'm a pretty good one.







  • Where's some proof of work?
This is an NPC help thread. If I'm not qualified you will most certainly see it within the first few scripts. But hey, if the script works everyone is happy, right?





Make sure to post your script in spoiler format (using spoiler tags). These tags are created by this ....

(spoiler) (php) PUT SCRIPT HERE (/php)(/spoiler)
- Replace the "(" and ")" with "[" and "]"


Also, if you have any special functions (such as cm.gainNX(), cm.getVote(), etc) you must tell me. I can't make you a script in which you don't have the functions for.​

Terms of Serivice:​
This is a declaration that I hold, that I will not code a non-playable character (NPC) for a person unless they post for help here on the thread. If someone contacts me outside this thread for help on an NPC, I will not provide assistance in any form. The only time I will provide my knowledge and help others is if, and only if, they ask for my help and have attempted to script it themselves. To further add to the conditions of my Terms of Service, I also require said person to provide a script they have attempted to write themselves. Also, I can, and will post the script I've completed on this thread so that it is public. I will not script a private NPC for someone's server. It is available for everyone to see and learn from. If you fulfill the conditions I listed above, require help, and post your request for help in the form I have below, then I will provide my services accordingly.



Format:​
  • Small Description
  • Specifics
  • Special Functions (cm.gainNx)
  • Script
 
Last edited:
Haven't scripted in a long time. Tell me the bat error if one comes up. This script includes Cygnus and Explorer advancements. Not Aran.
Code:
var status;
var first = [100, 200, 300, 400, 500];
var cyg = [1100, 1200, 1300, 1400, 1500];

function start() {
status = -1;
action(1, 0, 0);
}

function action(method, type, selection) {
if (mode 0 1) {
	status++;
} else {
	(mode < 0 ? cm.dispose : status--);
}
	if (status == 0) {
		if (cm.getJobId()==0) {
			(cm.getLevel() < 10 ? cm.dispose() : cm.sendSimple("What job do you want?\r\n#L0#Warrior #L1#Magician\r\n#L2#Bowman #L3#Rogue\r\n#L4#Pirate"));
		} else if (cm.getJobId()==100 || cm.getJobId()==200 || cm.getJobId()==300 || cm.getJobId()==400 || cm.getJobId()==500) {
			(cm.getLevel() < 30 ? cm.dispose() : cm.sendSimple("What job do you want?\r\n"+(cm.getJobId()==100 ? "#L0#Fighter #L1#Page #L2#Spearman" : cm.getJobId()==200
			? "#L0#Fire-Poison #L1#Ice Lightning #L2#Cleric" : cm.getJobId()==400 ? "#L0#Assassin #L1#Bandit" : cm.getJobId()==300 ? "#L0#Hunter #L1#Crossbowman" : "#L0#Brawler #L1#Gunslinger")+""));
		} else (cm.getJobId()==110 || cm.getJobId()==120 || cm.getJobId()==130 || cm.getJobId()==210 || cm.getJobId()==220 || cm.getJobId()==230 || 
			cm.getJobId()==310 || cm.getJobId()==320 || cm.getJobId()==410 || cm.getJobId()==420 || cm.getJobId()==510 || cm.getJobId()==520) { 
			(cm.getLevel() < 70 ? cm.sendOk("You are illegible for a job advancement. Please reach level #r70#k before talking to me again.") : cm.changeJobById(cm.getJobId() + 1));
			cm.dispose();
		} else if (cm.getJobId()==111 || cm.getJobId()==121 || cm.getJobId()==131 || cm.getJobId()==211 || cm.getJobId()==221 || cm.getJobId()==231 || cm.getJobId()==311 || cm.getJobId()==321 
		|| cm.getJobId()==411 || cm.getJobId()==421 || cm.getJobId()==511 || cm.getJobId()==521) {
			(cm.getLevel() < 120 ? cm.sendOk("You are illegible for this job. Please talk to me again at level #b120#k.") : cm.changeJobById(cm.getJobId() + 1));
			cm.dispose();
		} else if (cm.getJobId()==1000) {
			(cm.getLevel() < 10 ? cm.dispose() : cm.sendSimple("What job do you want?\r\n\r\n#L0#Dawnbreaker #L1#Blazewizard\r\n#L2#Wind Archer #L3#Nightwalker \r\n#L4#Thunder Breaker"));
		} else if (cm.getJobId()==1100 || cm.getJobId()==1200 || cm.getJobId()==1300 || cm.getJobId()==1400 || cm.getJobId()==1500) {
			(cm.getLevel() < 30 ? cm.sendOk("Come back at level #b30#k") : cm.changeJobById(cm.getJobId() + 10));
			cm.dispose();
		} else if (cm.getJobId()==1110 || cm.getJobId()==1210 || cm.getJobId()==1310 || cm.getJobId()==1410 || cm.getJobId()==1510) {
			(cm.getLevel() < 70 ? cm.sendOk("Come back at level #b70#k") : cm.changeJobById(cm.getJobId() + 1));
			cm.dispose();
	}
	} else if (status == 1) {
		if (cm.getJobId()==0) {
			cm.changeJobById(first[selection]);
			cm.dispose();
		} else if (cm.getJobId()==100 || cm.getJobId()==200 || cm.getJobId()==300 || cm.getJobId()==400 || cm.getJobId()==500) {
			cm.changeJobById(cm.getJobId() + (10 * (selection+1)));
			cm.dispose();
		} else if (cm.getJobId()==1000) {
			cm.changeJobById(cyg[selection]);
			cm.dispose();
		}
	}
}
 
Upvote 0
It doesn't work, the NPC says Hi, I'm an uncoded npc and my id is "XXXXX"

That is not a .bat error. That's just what the NPC is supposed to say if it isn't working. The .bat file you start to open up the server should have a wall of text specifying what's wrong with the NPC which is what he needs. Usually it's something like "unable to find method x in line 38"
 
Upvote 0
PHP:
if (mode 0 1) {
That's your error. Just change it to this.
PHP:
if (mode == 1) {
And change method to mode in your function action


Holy crap, I can't believe I wrote that error. Thanks for pointing it out.




@nempoguy
This should work unless I missed some errors.
PHP:
var status;
var first = [100, 200, 300, 400, 500];
var cyg = [1100, 1200, 1300, 1400, 1500];

function start() {
status = -1;
action(1, 0, 0);
}

function action(method, type, selection) {
if (mode==1) {
	status++;
} else {
	(mode < 0 ? cm.dispose : status--);
}
	if (status == 0) {
		if (cm.getJobId()==0) {
			(cm.getLevel() < 10 ? cm.dispose() : cm.sendSimple("What job do you want?\r\n#L0#Warrior #L1#Magician\r\n#L2#Bowman #L3#Rogue\r\n#L4#Pirate"));
		} else if (cm.getJobId()==100 || cm.getJobId()==200 || cm.getJobId()==300 || cm.getJobId()==400 || cm.getJobId()==500) {
			(cm.getLevel() < 30 ? cm.dispose() : cm.sendSimple("What job do you want?\r\n"+(cm.getJobId()==100 ? "#L0#Fighter #L1#Page #L2#Spearman" : cm.getJobId()==200
			? "#L0#Fire-Poison #L1#Ice Lightning #L2#Cleric" : cm.getJobId()==400 ? "#L0#Assassin #L1#Bandit" : cm.getJobId()==300 ? "#L0#Hunter #L1#Crossbowman" : "#L0#Brawler #L1#Gunslinger")+""));
		} else if (cm.getJobId()==110 || cm.getJobId()==120 || cm.getJobId()==130 || cm.getJobId()==210 || cm.getJobId()==220 || cm.getJobId()==230 || 
			cm.getJobId()==310 || cm.getJobId()==320 || cm.getJobId()==410 || cm.getJobId()==420 || cm.getJobId()==510 || cm.getJobId()==520) { 
			(cm.getLevel() < 70 ? cm.sendOk("You are illegible for a job advancement. Please reach level #r70#k before talking to me again.") : cm.changeJobById(cm.getJobId() + 1));
			cm.dispose();
		} else if (cm.getJobId()==111 || cm.getJobId()==121 || cm.getJobId()==131 || cm.getJobId()==211 || cm.getJobId()==221 || cm.getJobId()==231 || cm.getJobId()==311 || cm.getJobId()==321 
		|| cm.getJobId()==411 || cm.getJobId()==421 || cm.getJobId()==511 || cm.getJobId()==521) {
			(cm.getLevel() < 120 ? cm.sendOk("You are illegible for this job. Please talk to me again at level #b120#k.") : cm.changeJobById(cm.getJobId() + 1));
			cm.dispose();
		} else if (cm.getJobId()==1000) {
			(cm.getLevel() < 10 ? cm.dispose() : cm.sendSimple("What job do you want?\r\n\r\n#L0#Dawnbreaker #L1#Blazewizard\r\n#L2#Wind Archer #L3#Nightwalker \r\n#L4#Thunder Breaker"));
		} else if (cm.getJobId()==1100 || cm.getJobId()==1200 || cm.getJobId()==1300 || cm.getJobId()==1400 || cm.getJobId()==1500) {
			(cm.getLevel() < 30 ? cm.sendOk("Come back at level #b30#k") : cm.changeJobById(cm.getJobId() + 10));
			cm.dispose();
		} else if (cm.getJobId()==1110 || cm.getJobId()==1210 || cm.getJobId()==1310 || cm.getJobId()==1410 || cm.getJobId()==1510) {
			(cm.getLevel() < 70 ? cm.sendOk("Come back at level #b70#k") : cm.changeJobById(cm.getJobId() + 1));
			cm.dispose();
	}
	} else if (status == 1) {
		if (cm.getJobId()==0) {
			cm.changeJobById(first[selection]);
			cm.dispose();
		} else if (cm.getJobId()==100 || cm.getJobId()==200 || cm.getJobId()==300 || cm.getJobId()==400 || cm.getJobId()==500) {
			cm.changeJobById(cm.getJobId() + (10 * (selection+1)));
			cm.dispose();
		} else if (cm.getJobId()==1000) {
			cm.changeJobById(cyg[selection]);
			cm.dispose();
		}
	}
}
 
Upvote 0
PHP:
function action(method, type, selection) {
Should be this since you're using variable mode throughout the script
PHP:
function action(mode, type, selection) {
Also you forgot to close your cm.dispose under your else statement for modes
 
Upvote 0
Back