Jump to content
  • 0

Script help once again :)


Question

Posted

Can someone please add Ninja,Taekwon and Gunslinger class on this Class Specialization script by euphy ?? 

 

I know how to add the 

 case 25: Option("Kensei","Final Stike Master",30782,"Tenzou","Element Bender",30783);

 part of the script but I dont know how to allow the jobs mentioned above when the NPC checks if you can specialize or not.

Heres the full script .

//===== eAthena Script =======================================
//= Class Specialization
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
//= 1.2
//===== Description: =========================================
//= A class expansion system allowing characters to
//= "specialize" in a particular aspect of their job.
//============================================================

aretnorp,219,317,4	script	Legend's Quest	588,{
function Option;

// --------------------- Config ---------------------
//  Max: Maximum base level, maximum job level,
//		and maximum job level for Super Novices.
// SReq: Items required to specialize.
//		Format is "ID1,Count1,ID2,Count2,..."
//		If no requirements, use a single 0.
// DReq: Zeny, in MILLIONS, to despecialize.
//		If no requirement, use 0.

	setarray .Max[0],255,120,90;
	setarray .SReq[0],7443,10,30705,15,1009,1500,916,300,954,500,7294,20,969,100,617,50,938,1000,616,25,7211,10,7297,15,7023,30,7017,30,30716,1;
	set .DReq,150;
	set .n$,"[ Krito ]";

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

	mes .n$;
	if (BaseLevel < .Max[0]) {
		mes "Sorry, but I can only speak to the worthy ones..."; close; }
	if (Class != 23 && (Class < 4008 || Class > 4022)) {
		mes "This feature is not available for your class."; close; }
	if ((JobLevel < .Max[1]) || (Class == 23 && JobLevel < .Max[2])) {
		mes "You must master your class before using this feature."; close; }

	mes "Welcome, I see you have mastered your class."; sleep2 500;
	mes "Do you know that the process of being a ^0055ffLegend^000000 can greatly enhance your attributes."; sleep2 750;
	mes "I have been practicing the art of Legend transformation, with hard work and determination"; sleep2 750;
	mes "I perfected it and now I offer Legends transformation to the worthy..."; sleep2 750;
	mes "^ff0000Do you want to be transformed into a Legend?^000000"; sleep2 750;
	next;
	if(select("I want to be a Legend!:I'll think about it.")==2) goto Closing;
	mes .n$;
	for (set .@i,3350; .@i<=3377; set .@i,.@i+1)
		if (countitem(.@i)>0) { sleep2 1000; goto Despecialize; }
	sleep2 500;

	if (getarraysize(.SReq)) {
		mes "The process is not simple."; sleep2 1000;
		mes "I require the following items:"; sleep2 750;
		set .@i,0;
		while (.@i < getarraysize(.SReq)) {
			mes "  ~ ^FF0000"+getitemname(.SReq[.@i])+"^000000 [^0055ff"+countitem(.SReq[.@i])+"^000000/"+.SReq[.@i+1]+"]"; sleep2 100;
			set .@i, .@i+2; }
		next;
		if(select("I've got them all.:I'll come back later.")==2) close;
		set .@i,0;
		while (.@i < getarraysize(.SReq)) {
			if (countitem(.SReq[.@i]) < .SReq[.@i+1]) {
				mes .n$; sleep2 500;
				mes "You're missing some items."; sleep2 500;
				mes "I'll need all the materials";
				mes "for this to work.";
				close; }
		set .@i, .@i+2; }
		mes .n$; }

	switch(Class){
		case 23: Option("Ultra Novice","Heightened magical powers",3372,"Hyper Novice","Insurmountable in strength",3373);
		case 4008: Option("Slayer","Agile sword-bearer",3350,"Lancer","Spear expert",3351);
		case 4009: Option("Cardinal","Divine healer",3354,"Battle Priest","Powerful acolyte-warrior",3355);
		case 4010: Option("Evoker","Bolt-oriented magician",3364,"Sorcerer","Area-oriented spellcaster",3365);
		case 4011: Option("Goldsmith","Master forger",3376,"Battlesmith","Impulsive axeman",3377);
		case 4012: Option("Scout","Swift archer",3368,"Ranger","Dagger-wielder",3369);
		case 4013: Option("Virus","Strength in poison",3362,"Reaver","High-defense killer",3363);
		case 4015: Option("Guardian","Unstoppable tank",3352,"Templar","Holy mercenary",3353);
		case 4016: Option("Brawler","Lethal combos",3356,"Zealot","Fanatic striker",3357);
		case 4017: Option("Geomancer","Single-spell sorcerer",3366,"Enchanter","Melee assaulter",3367);
		case 4018: Option("Raider","Cunning marksman",3374,"Backstabber","Delusive assassin",3375);
		case 4019: Option("Apothecary","Potion-brewer",3370,"Terrorist","Malicious bomber",3371);
		case 4020: Option("Minstrel","Gifted bard",3358,"Jester","Musical killer",3359);
		case 4021: Option("Performer","Gifted dancer",3360,"Siren","Musical killer",3361);
		case 25: Option("Kensei","Final Stike Master",30782,"Tenzou","Element Bender",30783);
		case 
		case 
		default: mes "Something went wrong. Try again."; close; }

function Option {
	mes "^0055ff > "+getarg(0);
		sleep2 200;
	mes "^777777 > "+getarg(1)+".";
	mes " ";
		sleep2 200;
	mes "^0055ff > "+getarg(3);
		sleep2 200;
	mes "^777777 > "+getarg(4)+".^000000";
	set @menu$,"^0055ff"+getarg(0)+":"+getarg(3)+":^777777Cancel^000000";
		sleep2 1000;
	next;
	switch(select(@menu$)) {
		case 1: set @sring,getarg(2); set @sclass$,getarg(0); goto SConfirm;
		case 2: set @sring,getarg(5); set @sclass$,getarg(3); goto SConfirm;
		case 3: goto Closing; }
}

SConfirm:
	mes .n$;
	mes "Are you sure you want to specialize as the ^0055ff" + @sclass$ + "^000000 class?"; mes " "; sleep2 500;
	next;
	if(select("I need more time to think.:I am ready.")==1) goto Closing;
	progressbar "",2;
	specialeffect2 248;
	if (getarraysize(.SReq)) {
		set .@i,0;
		while (.@i < getarraysize(.SReq)) {
			delitem .SReq[.@i], .SReq[.@i+1];
			set .@i, .@i+2; }
	}
	mes .n$;
	mes "...finished!"; sleep2 500;
	mes "Here's your ^0055ff" + getitemname(@sring) + "^000000."; sleep2 200;
	getitem @sring,1;
	ResetStatus;
	set StatusPoint, StatusPoint + 2000; sleep2 200;
	set legendok, 1;
	announce ""+ strcharinfo(0) +" has completed the Legends Quest, He is now part of history.",bc_all;   
	nude;
	equip @sring;
	close;

Despecialize:
	mes "You've already specialized!"; sleep2 1000;
	if (.DReq) {
		mes " ";
		mes "^777777There is a way to switch, if you really want to... but it's costly.^000000"; sleep2 1000;
		next;
		if(select("Okay, never mind.:I still want to switch!")==1) close;
		mes .n$; sleep2 1000;
		mes "...okay."; sleep2 800;
		mes "To undo the specialization process, I'll need ^ff0000" + .DReq + " million Zeny^000000 to";
		mes "obtain all the materials I need."; mes " "; sleep2 1000;
		mes "Are you sure?"; sleep2 1000;
		next;
		if(select("What? No way!:Yes.")==1) goto Closing;
		mes .n$;
		if (Zeny < (.DReq*1000000)) {
			sleep2 500;
			mes "You don't have enough Zeny."; sleep2 500;
			mes "It's an expensive procedure, so please reconsider.";
			close; }
	} else {
		mes "Your ring will be deleted if you despecialize."; sleep2 1000;
		next;
		if(select("Oh, never mind then.:Let me despecialize!")==1) close;
		mes .n$; sleep2 1000;
		mes "Do you really want to despecialize?"; sleep2 500;
		next;
		if(select("No, I've changed my mind.:Yes.")==1) close;
		mes .n$; }
	progressbar "", 2;
	specialeffect2 338;
	set Zeny, Zeny - (.DReq*1000000);
	for (set .@i,3350; .@i<=3377; set .@i,.@i+1)
		if (countitem(.@i)>0) delitem .@i,1;
	mes "...finished!"; sleep2 1000;
	mes "^777777(I hope you don't regret this...)^000000"; sleep2 1000;
	close;

Closing:
	mes .n$;
	mes "Come back when you've";
	mes "made your decision.";
	close;
}

function	script	SpecEffect	{
	function dd	{
		while(.@j<=getarg(2)){
			set .@j, .@j+1;
			specialeffect2 getarg(0);
			sleep2(getarg(1)); }
		return; }
	if(@effectdelay < gettimetick(2)) {
		set @effectdelay, gettimetick(2)+5;
		dd(54,10,2); dd(55,10,2); dd(668,10,2); dd(58,10,2); dd(377,10,2); dd(500,20,2); }
}

TIA :) 

4 answers to this question

Recommended Posts

Posted

for the class check change this
(25 is ninjas job ID, find other classes in const.txt)

    if (Class != 23 && (Class < 4008 || Class > 4022)) {
        mes "This feature is not available for your class."; close; }

to

    if (Class != 23 && Class != 25 && (Class < 4008 || Class > 4022)) {
        mes "This feature is not available for your class."; close; }

and

for the item check for despecialize change this

( set 1st .@i to your custom ring base ID and set the .@i<= to your highest ring ID )
 

    for (set .@i,3350; .@i<=3377; set .@i,.@i+1)
        if (countitem(.@i)>0) { sleep2 1000; goto Despecialize; }

to

    for (set .@i,30782; .@i<=30783; set .@i,.@i+1)
        if (countitem(.@i)>0) { sleep2 1000; goto Despecialize; }

and of course the part you already did looks fine,

just repeat the process for  each class and item


Anyone?

here you are

  • Upvote 1
Posted

for the class check change this

(25 is ninjas job ID, find other classes in const.txt)

    if (Class != 23 && (Class < 4008 || Class > 4022)) {
        mes "This feature is not available for your class."; close; }

to

    if (Class != 23 && Class != 25 && (Class < 4008 || Class > 4022)) {
        mes "This feature is not available for your class."; close; }

and

for the item check for despecialize change this

( set 1st .@i to your custom ring base ID and set the .@i<= to your highest ring ID )

 

    for (set .@i,3350; .@i<=3377; set .@i,.@i+1)
        if (countitem(.@i)>0) { sleep2 1000; goto Despecialize; }

to

    for (set .@i,30782; .@i<=30783; set .@i,.@i+1)
        if (countitem(.@i)>0) { sleep2 1000; goto Despecialize; }

and of course the part you already did looks fine,

just repeat the process for  each class and item

Anyone?

here you are

Thankyou very much, you really helping me a lot.

Posted

Anyone?

 

i noticed a mistake in my fix

 

should be change

    for (set .@i,3350; .@i<=3377; set .@i,.@i+1)
        if (countitem(.@i)>0) { sleep2 1000; goto Despecialize; }

to

    for (set .@i,3350; .@i<=3377; set .@i,.@i+1)
        if (countitem(.@i)>0) { sleep2 1000; goto Despecialize; }
    for (set .@i,30782; .@i<=30783; set .@i,.@i+1)
        if (countitem(.@i)>0) { sleep2 1000; goto Despecialize; }

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