Jump to content

tathanngudong

Members
  • Posts

    64
  • Joined

  • Last visited

Posts posted by tathanngudong

  1. Fix this script run with Rathena:

    -	script	Wheel_of_Fortune	FAKE_NPC ,{
    
    OnInit:
    	disablenpc("Wheel of Fortune#Main");
    	disablenpc("Hussein#WOF");
    	.EventName$ = "[Wheel Of Fortune]";
    	end;
    
    
    OnClock0800:
    OnClock1200:
    OnClock1800:
    OnClock2000:
    OnClock2200:
    OnStart:
    	.Start = true;
    	announce(sprintf("%s : The event will begin in 1 minute, near the center of Prontera.", .EventName$), bc_blue | bc_all);
    	initnpctimer();
    	end;
    
    OnTimer60000: // 1 min
    	enablenpc("Wheel of Fortune#Main");
    	enablenpc("Hussein#WOF");
    	announce(sprintf("%s : Come to Prontera and test your luck", .EventName$), bc_blue | bc_all);
    	end;
    
    OnTimer1800000: // 30 mins
    	announce(sprintf("%s : One more minute, do your last spin!", .EventName$), bc_blue | bc_all);
    	end;
    
    OnTimer1860000: // 31 mins
    OnStop:
    	.Start = false;
    	stopnpctimer();
    	disablenpc("Wheel of Fortune#Main");
    	disablenpc("Hussein#WOF");
    	end;
    
    OnCommand:
    	if (.@atcmd_numparameters != 1) {
    		dispbottom(sprintf("Usage: %s <start/end>", .@atcmd_command$), 0x00FF00);
    		dispbottom(sprintf("%s failed.", .@atcmd_command$), 0x00FF00);
    		end;
    	}
    
    	if (.@atcmd_parameters$[0] == "start") {
    		if (!.Start)
    			donpcevent(sprintf("%s::OnStart", strnpcinfo(NPC_NAME)));
    		else {
    			dispbottom("The Wheel of Fortune has already started.", 0x00FF00);
    			dispbottom(sprintf("%s failed.", .@atcmd_command$), 0x00FF00);
    		}
    	} else if (.@atcmd_parameters$[0] == "end") {
    		if (.Start)
    			donpcevent(sprintf("%s::OnEnd", strnpcinfo(NPC_NAME)));
    		else {
    			dispbottom("The Wheel of Fortune is not active.", 0x00FF00);
    			dispbottom(sprintf("%s failed.", .@atcmd_command$), 0x00FF00);
    		}
    	} else {
    		dispbottom(sprintf("Usage: %s <start/end>", .@atcmd_command$), 0x00FF00);
    		dispbottom(sprintf("%s failed.", .@atcmd_command$), 0x00FF00);
    	}
    	end;
    }
    
    prontera,155,176,3	script	Wheel of Fortune#Main	2_SLOT_MACHINE,{
    	
    OnTalk:
    	if (Zeny < .Zeny_Cost && #freewheelfortunespin < 0) {
    		mesf("[^0055FF%s^000000]", .EventName$);
    		mes("You are out of Zeny");
    		mes("and have no more");
    		mes("free spins. Come back");
    		mes("next time for more!");
    		close();
    	}
    
    	.@mes$ = (#freewheelfortunespin > 0) ? sprintf(", but you, my friend, have %d free spin%s!", #freewheelfortunespin, (#freewheelfortunespin == 1) ? "" : "s") : ".";
    	cutin("aca_salim02", 2);
    	addtimer(1, sprintf("%s::OnEnd", strnpcinfo(NPC_NAME)));
    	mesf("[^0055FF%s^000000]", .EventName$);
    	mes("Do you want to spin the wheel?");
    	mesf("It costs ^FF0000%d Zeny^000000 to play%s", .Zeny_Cost, .@mes$);
    	next();
    
    	while (true) {
    		if (Zeny < .Zeny_Cost && #freewheelfortunespin < 0)
    			callsub(S_End);
    		switch (select(
    			(#freewheelfortunespin > 0) ? sprintf("Yes! Use free spin! (%d left)", #freewheelfortunespin) : "",
    			(Zeny >= .Zeny_Cost ) ? sprintf("Yes! Use Zeny. (costs %dz)", .Zeny_Cost) : "",
    			"No (Leave)"
    		)) {
    		// pay with free spin
    		case 1:
    			if (#freewheelfortunespin > 0) {
    				if ((#freewheelfortunespin -= 1) < 0)
    					#freewheelfortunespin = 0;
    				callsub(S_Spin);
    			} else
    				callsub(S_End);
    			break;
    
    		// Pay with zeny
    		case 2:
    			if (Zeny >= .Zeny_Cost) {
    			    Zeny -= .Zeny_Cost;
    				callsub(S_Spin);
    			} else {
    				cutin("aca_salim02", 2);
    				mesf("[^0055FF%s^000000]", .EventName$);
    				mes("Awww, you don't have enough to gamble...");
    				mes(" ");
    				mes("Have you ever heard?");
    				mes("'Money isn't all that matters' Got it?");
    				mes("Byeeeeeeeeeeeeee ;)");
    				callsub(S_End);
    			}
    			break;
    
    		default:
    			callsub(S_End);
    		}
    	}
    
    // Wheel spin animation
    S_Spin:
    	.@Sector = rand(.Sector_Range[0], .Sector_Range[1]);
    	.@Display = .@Sector * 2 - 1;
    	.@Speed = .Spin_Speed;
    	
    	for (.@i = 0; .@i < .nbTurns; .@i++) {
    		.@b = .Cutin_Range[0];
    		while (.@b <= .Cutin_Range[1]) {
    			cutin(sprintf("%s%d", .Cutin$, .@b), 4);
    			sleep2(.@Speed);
    			.@b++;
    			.@Speed += 1; // not ++, because  you may want to adjust the stopping +1 +2 +3
    		}
    	}
    	
    	.@b = .Cutin_Range[0];
    	while (.@b < .@Display) {
    		cutin(sprintf("%s%d", .Cutin$, .@b), 4);
    		sleep2(.@Speed);
    		.@b++;
    	}
    
    	cutin(sprintf("%s%d", .Cutin$, .@b), 4);
    
    	if (.Prize_ID[.@Sector] == -1) {
    		// Free spin
    		if (.Sound_Effects)
    			soundeffect("wheel_jackpot.wav", 0);
    		announce(sprintf("[%s] : Wow, %dx more Free spins!!!", .EventName$, .Prize_Qty[.@Sector]), bc_blue | bc_self);
    		#freewheelfortunespin = #freewheelfortunespin == 0 ? .Prize_Qty[.@Sector] : #freewheelfortunespin + .Prize_Qty[.@Sector];
    	} else if (.Prize_ID[.@Sector] == 0) {
    		// Nothing
    		if (.Sound_Effects)
    			soundeffect("wheel_lost.wav", 0);
    		announce(sprintf("[%s] : Awwww, no luck in your gamble, more luck in love...", .EventName$), bc_blue | bc_self);
    	} else { 
    		// Item
    		if (.Sound_Effects)
    			soundeffect("wheel_won.wav", 0);
    		announce(sprintf("[%s] : %dx %s - enjoy your prize!", .EventName$, .Prize_Qty[.@Sector], getitemname(.Prize_ID[.@Sector])), bc_blue | bc_self);
    		getitem(.Prize_ID[.@Sector], .Prize_Qty[.@Sector]);
    	}
    
    	sleep2(1000);
    	if (Zeny < .Zeny_Cost && #freewheelfortunespin < 0) {
    		mesf("[^0055FF%s^000000]", .EventName$);
    		mes("You are out of Zeny");
    		mes("and have no more");
    		mes("free spins. Come back");
    		mes("next time for more!");
    		close();
    	}
    	return;
    	
    S_End:
    	close2();
    OnEnd:
    	cutin("", 255);
    	end;
    	
    OnInit:
    	.EventName$ = "Wheel Of Fortune";
    	bindatcmd("wheel_of_fortune", "Wheel_of_Fortune::OnCommand", 98, 98, false);
    	.Spin_Speed = 50; // What is the base spin speed? (ms)
    	.nbTurns = 2; // How many times the arrow makes a complete turn, before entering the stopping routine
    	.Zeny_Cost = 10000; // How much zeny does it cost for a spin?
    	.Sound_Effects = true; // Enable sound effects? (true/false)
    
    	// You must have a total of 10 prizes. DO NOT remove 0 or -1 from the array and do not
    	// change their order.
    	setarray(.Prize_ID[1], -1, 12103, 13277, 12187,   617,   607, 12186,   604, 0,  7040);
    	setarray(.Prize_Qty[1], 2,     1,     1,     1,     3,     3,     1,     3, 0,     3);
    
    	// Don't touch below
    	.Cutin$ = "WheelOfFortune_";
    	setarray(.Sector_Range, 1, 10); // Sector range
    	setarray(.Cutin_Range, 0, 19); // Cutin range
    	end;
    }
    
    prontera,159,178,3	script	Hussein#WOF	1_M_MERCHANT,{
    	.@name$ = "[Hussein]";
    	cutin("aca_salim02", 2);
    	mes(.@name$);
    	mes("I command you to spin");
    	mes("the Wheel of Fortune!");
    	next();
    	getmapxy(.@map$, .@x, .@y, UNITTYPE_NPC, "Wheel of Fortune#Main");
    	warp(.@map$, .@x - 1, .@y - 2, 0);
    	doevent("Wheel of Fortune#Main::OnTalk");
    	end;
    }

    How?

    • MVP 1
  2. 45 minutes ago, Balfear said:

    Hi!
    By default new client support only next language:

    • LuaFiles514\Lua Files\service_korea\zero_server\ExternalSettings_kr
    • LuaFiles514\Lua Files\service_usa\ExternalSettings_usa
    • LuaFiles514\Lua Files\service_japan\ExternalSettings_jp
    • LuaFiles514\Lua Files\service_china\ExternalSettings_ch
    • LuaFiles514\Lua Files\service_taiwan\ExternalSettings_tw
    • LuaFiles514\Lua Files\service_thailand\ExternalSettings_th
    • LuaFiles514\Lua Files\service_indonesia\ExternalSettings_id
    • LuaFiles514\Lua Files\service_philippine\ExternalSettings_ph
    • LuaFiles514\Lua Files\service_brazil\ExternalSettings_br
    • LuaFiles514\Lua Files\service_france\ExternalSettings_fr

    Try use this Nemo: https://gitlab.com/4144/Nemo
    and use patch "AlwaysReadKrExtSettings"

    Uhm...it's not work!! But thanks...

  3. I want used langtype vietnam but it's problem,

    http://z213.png

    i don't know how to fix it...please help...

    My SclientInfo.xml:

    <?xml version="1.0" encoding="euc-kr" ?>
    <clientinfo>
    	<servicetype>vietnam</servicetype>
    	<servertype>primary</servertype>
    	<connection>
    		<display>UltraBeastRO</display>
          		<address>192.168.1.5</address>
          		<port>6900</port>
          		<langtype>15</langtype>
    		<loading>
    			<image>loading00.jpg</image>
    			<image>loading01.jpg</image>
    			<image>loading02.jpg</image>
    			<image>loading03.jpg</image>
    			<image>loading05.jpg</image>
    			<image>loading06.jpg</image>
    			<image>loading07.jpg</image>
    			<image>loading08.jpg</image>
    			<image>loading09.jpg</image>
    			<image>loading10.jpg</image>
    			<image>loading11.jpg</image>
    			<image>loading12.jpg</image>
    			<image>loading13.jpg</image>
    			<image>loading14.jpg</image>
    			<image>loading15.jpg</image>
    			<image>loading16.jpg</image>
    			<image>loading17.jpg</image>
    			<image>loading18.jpg</image>
    			<image>loading19.jpg</image>
    			<image>loading20.jpg</image>
    			<image>loading21.jpg</image>
    			<image>loading21.jpg</image>
    		</loading>
       	</connection>
    </clientinfo>

    My lua file:

    Quote

    G:\...\Ultra BeastRO\A.UBRO\luafiles514\lua files\service_vietnam\ExternalSettings_vn.lub

    G:\...\Ultra BeastRO\A.UBRO\luafiles514\lua files\service_vietnam\externalsettings_vn_sak.lub

     

  4. 5 hours ago, calaluis said:

     

    Hello,

    What you have to do is the following:

    1.- Download the Notepad ++ program
    2.- Open the TXT file with the program.
    3.- Convert the file to UTF-8 only, without the BOM. I leave an illustrative image.

    image.png.3a3c57bf6d775a2cf77b3bc5f92a9863.png

     

    Save the changes of the TXT file and holy remedy.

     

     

     

     

    it's work!! thanks

  5. 9 minutes ago, hendra814 said:

    if you have script file, put on npc\custom folder

    and then go to script_custom.conf

    put the npc path inside and then start the server.

    that's for add scripts NPC,right? that's not i mean... i want to add new Custom NPC for Rathena Sever

    I worked with jobname.lub and npcidentity.lub, i need to know  next step what should i do?

  6. On 9/8/2017 at 2:18 PM, GodKnows Jhomz said:

    Just add another line in both quest_db and questid2display then add additional mob and item id then add the setquest and erasequest.
    Sample:
    add in db/import/quest_db.txt

    
    100008,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Monster Hunter Mission"
    

    add in data/questid2display.txt

    
    100008#Monster Hunter Mission#SG_FEEL#QUE_NOIMAGE#
    Kill Poring and bring Jellopy 50 EA together with 50,000 Zeny#
    #

    In Line 39 edit : //Change the total number (7)

    
    .@mob = rand(1,8);
    

    In Line 45 replace from:

    
    else {.@mob$ = "Anolian"; mhmid = 7003; setquest 100007;}                //Anolian Skin
    

    to :

    
    else if(.@mob == 7){.@mob$ = "Anolian"; mhmid = 7003; setquest 100007;}                //Anolian Skin
    

    then add after :

    
    else if(.@mob == 8){.@mob$ = "Poring"; mhmid = 909; setquest 100008;}                //Jellopy
    

    After that, if you want to add more rewards, go to the rewards section. //Change the total number (11)
    find : 

    
    .@r = rand(1,12);
    

    after : 

    
    if(.@r == 11){.@reward = 5579; .@rewardamt = 1;}    //Wanderer's Sakkat
    

    add :

    
    if(.@r == 12){.@reward = 5035; .@rewardamt = 1;}    //Poring Hat
    

    Then erase the quest after getting rewards.
    after:

    
    if(checkquest(100007) == 1){
        erasequest 100007;
    }
    

    add : 

    
    if(checkquest(100008) == 1){
        erasequest 100008;
    }

    And its done. ( Sorry if the code is so messy XD )

    Sorry...The quest not unlimited levels? ?

  7. i very like this system,but i don't know how to make this script work with Rathena sever

    //== Function F_CoolDown ====================================
    // Cooldown check
    //callfunc("F_CoolDown", 5); = 5 seconds cooldown
    function	script	F_CoolDown	{
    	if (.@cd + getarg(0) > gettimetick(2))
    		end;
    	@cd = gettimetick(2);
    	return;
    }
    
    //== Spawn - Char creation ==========================================
    new_reborn,203,195,0	script	startpoint#new_reborn	HIDDEN_WARP_NPC,1,1,{
    OnTouch:
    	if (!newrebornchar && Class != Job_Summoner) { // spawn for non summoner classes
    		specialeffect2(EF_ANGEL3);
    		newrebornchar = 1;
    	}
    	callfunc("F_CoolDown", 60);
    	sc_start SC_INCREASEAGI, 60000, 10; // apply increase agi +10 with 60 sec cooldown, buff lasts 60 secs
    	end;
    }
    
    //== Job Master ==========================================
    //== Main
    new_reborn,1,2,0	script	Ascension#Main	FAKE_NPC,{
    OnTalk:
    	function Job_Menu; function A_An;
    
    	if (Class > Job_Soul_Linker) {
    		message strcharinfo(PC_NAME), "No more jobs are available.";
    		end;
    	}
    	if (checkhomcall() == 0|| checkfalcon() || checkcart() || checkmount() || hascashmount()) {
    		message strcharinfo(PC_NAME), "Please remove your "+((checkhomcall() == 0)?"homunculus ":"")+((checkfalcon())?"falcon ":"")+((checkcart())?"cart ":"")+((checkmount() || hascashmount())?"mount ":"") +"before proceeding.";
    		end;
    	}
    	if (.skill_point_check && SkillPoint > 0) {
    		message strcharinfo(PC_NAME), "Please use all your skill points before proceeding.";
    		end;
    	}
    	.@eac = eaclass();
    	.@base = .third_classes ? roclass(.@eac&EAJ_UPPERMASK) : Class;
    	if (.@base >= Job_Knight && .@base <= Job_Crusader2) {
    		if (BaseLevel < .rebirth_blevel || JobLevel < .rebirth_jlevel) {
    			.@blvl = .rebirth_blevel - BaseLevel;
    			.@jlvl = .rebirth_jlevel - JobLevel;
    			message strcharinfo(PC_NAME), "You need "
    			    + (BaseLevel < .rebirth_blevel ? ((.rebirth_blevel - BaseLevel) +" more base levels "+ (JobLevel < .rebirth_jlevel ? "and " : "")) : "")
    			    + (JobLevel < .rebirth_jlevel ? (.rebirth_jlevel - JobLevel) +" more job levels " : "")
    			    + "to continue.";
    			end;
    		}
    		if (Class > Job_Crusader2) {
    			mes "[Ascension Dimension]";
    			mes "Switch to third class?";
    			next;
    			mes "[Ascension Dimension]";
    			mes "^FF0000Reminder: Opting for the Official Job Change quest will allow you to get class specific headgears.^000000";
    			next;
    			Job_Menu(roclass(.@eac|EAJL_THIRD));
    			close;
    		}
    		while (true) {
    			mes "[Ascension Dimension]";
    			mes "Select an option.";
    			next;
    			.@choice = select(" ~ ^0055FFRebirth^000000:"+": ~ ^777777Cancel^000000");
    			if (.@choice == 3)
    				close;
    			mes "[Ascension Dimension]";
    			mes "Are you sure?";
    			next;
    			if (.@choice == 1)
    				Job_Menu(Job_Novice_High);
    		}
    	}
    	.@job1 = roclass(.@eac|EAJL_2_1);
    	.@job2 = roclass(.@eac|EAJL_2_2);
    	if ((.@eac&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE) {
    		.@newclass = roclass(.@eac|EAJL_THIRD);
    		.@required_jlevel = 99;
    	} else if (Class == Job_Ninja) {
    		.@newclass = .@job1;
    		.@required_jlevel = 70;
    	} else if (Class == Job_Gunslinger) {
    		.@newclass = .@job1;
    		.@required_jlevel = 70;
    	}
    	if (.@newclass && .third_classes) {
    		if (BaseLevel < .rebirth_blevel || JobLevel < .@required_jlevel) {
    			message strcharinfo(PC_NAME), "You need "
    			    + (BaseLevel < .rebirth_blevel ? ((.rebirth_blevel - BaseLevel) +" more base levels "+ (JobLevel < .@required_jlevel ? "and " : "")) : "")
    			    + (JobLevel < .@required_jlevel ? (.@required_jlevel - JobLevel) +" more job levels " : "")
    			    + "to continue.";
    			end;
    		}
    		mes "[Ascension Dimension]";
    		mes "Switch to "+jobname(.@newclass)+"?";
    		next;
    		Job_Menu(.@newclass);
    		close;
    	}
    	if (.@eac&EAJL_2)
    		if (.@eac&(EAJL_UPPER|EAJL_BABY) || roclass(.@eac|EAJL_UPPER) == -1) {
    			message strcharinfo(PC_NAME), "No more jobs are available.";
    			end;
    		}
    	if ((.@eac&EAJ_BASEMASK) == EAJ_NOVICE) {
    		if (JobLevel < .jobchange_first) {
    			message strcharinfo(PC_NAME), "A job level of "+.jobchange_first+" is required to change into the 1st Class.";
    			end;
    		} else if (Class == Job_Novice_High && .linear_jobchange && lastJob) {
    			mes "[Ascension Dimension]";
    			mes "Switch classes now?";
    			next;
    			Job_Menu(roclass((eaclass(lastJob)&EAJ_BASEMASK)|EAJL_UPPER));
    		} else if (Class == Job_Novice) {
    			switch(@newborn) {
    			case 1:
    				Job_Menu(Job_Swordman);
    				break;
    			case 2:
    				Job_Menu(Job_Mage);
    				break;
    			case 3:
    				Job_Menu(Job_Archer);
    				break;
    			case 4:
    				Job_Menu(Job_Acolyte);
    				break;
    			case 5:
    				Job_Menu(Job_Merchant);
    				break;
    			case 6:
    				Job_Menu(Job_Thief);
    				break;
    			case 7:
    				Job_Menu(Job_SuperNovice, Job_Taekwon, Job_Gunslinger, Job_Ninja, Job_Baby);
    				break;
    			}
    		} else if (Class == Job_Novice_High) {
    			switch(@newborn) {
    			case 1:
    				Job_Menu(Job_Swordman_High);
    				break;
    			case 2:
    				Job_Menu(Job_Mage_High);
    				break;
    			case 3:
    				Job_Menu(Job_Archer_High);
    				break;
    			case 4:
    				Job_Menu(Job_Acolyte_High);
    				break;
    			case 5:
    				Job_Menu(Job_Merchant_High);
    				break;
    			case 6:
    				Job_Menu(Job_Thief_High);
    				break;
    			}
    		} else if (Class == Job_Baby) {
    			if (@newborn != 7) {
    				message strcharinfo(PC_NAME), "You are not supposed to be here, young adventurer..";
    				warp "new_reborn", 207, 202;
    				end;
    			}
    			Job_Menu(Job_Baby_Swordman, Job_Baby_Mage, Job_Baby_Archer, Job_Baby_Acolyte, Job_Baby_Merchant, Job_Baby_Thief, Job_Super_Baby);
    		} else {
    			message strcharinfo(PC_NAME), "An error has occurred.";
    			end;
    		}
    		close;
    	}
    	if (roclass(.@eac|EAJL_2_1) == -1 || roclass(.@eac|EAJL_2_2) == -1) {
    		message strcharinfo(PC_NAME),  "No more jobs are available.";
    		end;
    	} else if (!(.@eac&EAJL_2) && JobLevel < .jobchange_second) {
    		message strcharinfo(PC_NAME), "A job level of "+.jobchange_second+" is required to change into the 2nd Class.";
    		end;
    	} else if (.linear_jobchange && lastJob && (.@eac&EAJL_UPPER)) {
    		mes "[Ascension Dimension]";
    		mes "Switch classes now?";
    		next;
    		Job_Menu(lastJob+Job_Novice_High);
    	} else {
    		Job_Menu(.@job1, .@job2);
    	}
    	close;
    
    function Job_Menu {
    	while (true) {
    		if (getargcount() > 1) {
    			mes "Select a job.";
    			.@menu$ = "";
    			for (.@i = 0; .@i < getargcount(); ++.@i)
    				.@menu$ += " ~ "+jobname(getarg(.@i))+":";
    			.@menu$ += " ~ ^777777Cancel^000000";
    			next;
    			.@newjob = getarg(select(.@menu$)-1, 0);
    			if (!.@newjob)
    				close;
    			if ((.@newjob == Job_SuperNovice || .@newjob == Job_Super_Baby) && BaseLevel < .supernovice_level) {
    				mes "[Extended Master]";
    				mes "A base level of "+.supernovice_level+" is required to turn into a "+jobname(.@newjob)+".";
    				close;
    			}
    			mes "[Ascension Dimension]";
    			mes "Are you sure?";
    			next;
    		} else {
    			.@newjob = getarg(0);
    		}
    		if (select(" ~ Change into ^0055FF"+jobname(.@newjob)+"^000000 class: ~ ^777777"+(getargcount() > 1 ? "Go back" : "Cancel")+"^000000") == 1) {
    			mes "[Ascension Dimension]";
    			mes "You now become "+A_An(jobname(.@newjob))+"!";
    			close2;
    			specialeffect2 EF_MAPPILLAR;
    			progressbar "FFFF00",7;
    			specialeffect2 EF_LORD;
    			sc_start SC_INC_AGI, 60000, 10;
    			if (.@newjob == Job_Novice_High && .linear_jobchange)
    				lastJob = Class; // Note: This is incompatible with the Valkyrie rebirth script.
    			jobchange .@newjob;
    			mapannounce "new_reborn","Ascension Dimension: "+strcharinfo(PC_NAME)+" has become "+A_An(jobname(.@newjob))+"!",bc_map;
    			if (.@newjob == Job_Novice_High)
    				resetlvl(1);
    			if (.@newjob == Job_Baby) {
    				resetlvl(4);
    				SkillPoint = 0;
    			}
    			callsub Get_Novice_Equip;
    			if (.platinum)
    				callsub Get_Platinum;
    			end;
    		}
    		if (getargcount() == 1)
    			return;
    		mes "[Ascension Dimension]";
    	}
    	end;
    }
    
    function A_An {
    	setarray .@vowels$, "a", "e", "i", "o", "u";
    	.@firstletter$ = strtolower(charat(getarg(0), 0));
    	for (.@i = 0; .@i < getarraysize(.@vowels); ++.@i) {
    		if (.@vowels$[.@i] == .@firstletter$)
    			return "an "+getarg(0);
    	}
    	return "a "+getarg(0);
    }
    
    Get_Platinum:
    	skill NV_FIRSTAID, 1, 0;
    	if (BaseClass == Job_Novice) {
    		if (Class != Job_SuperNovice)
    			skill NV_TRICKDEAD, 1, 0;
    	} else if (BaseClass == Job_Swordman) {
    		skill SM_MOVINGRECOVERY, 1, 0;
    		skill SM_FATALBLOW, 1, 0;
    		skill SM_AUTOBERSERK, 1, 0;
    	} else if (BaseClass == Job_Mage) {
    		skill MG_ENERGYCOAT, 1, 0;
    	} else if (BaseClass == Job_Archer) {
    		skill AC_MAKINGARROW, 1, 0;
    		skill AC_CHARGEARROW, 1, 0;
    	} else if (BaseClass == Job_Acolyte) {
    		skill AL_HOLYLIGHT, 1, 0;
    	} else if (BaseClass == Job_Merchant) {
    		skill MC_CARTREVOLUTION, 1, 0;
    		skill MC_CHANGECART, 1, 0;
    		skill MC_LOUD, 1, 0;
    		skill MC_CARTDECORATE, 1, 0;
    	} else if (BaseClass == Job_Thief) {
    		skill TF_SPRINKLESAND, 1, 0;
    		skill TF_BACKSLIDING, 1, 0;
    		skill TF_PICKSTONE, 1, 0;
    		skill TF_THROWSTONE, 1, 0;
    	}
    
    	if (BaseJob == Job_Knight) {
    		skill KN_CHARGEATK, 1, 0;
    	} else if (BaseJob == Job_Priest) {
    		skill PR_REDEMPTIO, 1, 0;
    	} else if (BaseJob == Job_Wizard) {
    		skill WZ_SIGHTBLASTER, 1, 0;
    	} else if (BaseJob == Job_Blacksmith) {
    		skill BS_UNFAIRLYTRICK, 1, 0;
    		skill BS_GREED, 1, 0;
    	} else if (BaseJob == Job_Hunter) {
    		skill HT_PHANTASMIC, 1, 0;
    	} else if (BaseJob == Job_Assassin) {
    		skill AS_SONICACCEL, 1, 0;
    		skill AS_VENOMKNIFE, 1, 0;
    	} else if (BaseJob == Job_Crusader) {
    		skill CR_SHRINK, 1, 0;
    	} else if (BaseJob == Job_Monk) {
    		skill MO_KITRANSLATION, 1, 0;
    		skill MO_BALKYOUNG, 1, 0;
    	} else if (BaseJob == Job_Sage) {
    		skill SA_CREATECON, 1, 0;
    		skill SA_ELEMENTWATER, 1, 0;
    		skill SA_ELEMENTGROUND, 1, 0;
    		skill SA_ELEMENTFIRE, 1, 0;
    		skill SA_ELEMENTWIND, 1, 0;
    	} else if (BaseJob == Job_Rogue) {
    		skill RG_CLOSECONFINE, 1, 0;
    	} else if (BaseJob == Job_Alchemist) {
    		skill AM_BIOETHICS, 1, 0;
    	} else if (BaseJob == Job_Bard) {
    		skill BA_PANGVOICE, 1, 0;
    	} else if (BaseJob == Job_Dancer) {
    		skill DC_WINKCHARM, 1, 0;
    	}
    	return;
    
    Get_Novice_Equip:
    	if (Class <= Job_Thief || Class == Job_Ninja || Class == Job_Gunslinger || Class == Job_Taekwon) { // for all standard jobs **I set it here to give +7 novi equips
    		getitem2(N_Adventurers_Suit, 1, 1, 7, 0, 0, 0 ,0, 0); // +7 novi equips and 2 battle manual 25
    		getitem2(Shoes, 1, 1, 7, 0, 0, 0 ,0, 0);
    		getitem2(Muffler, 1, 1, 7, 0, 0, 0 ,0, 0);
    		getitem(Battle_Manual25, 2);
    		if (Class != Job_Archer) {
    			getitem2(Guard_, 1, 1, 7, 0, 0, 0 ,0, 0);
    		}
    	}
    	if (Class == Job_Swordman || Class == Job_Baby_Swordman) {
    		getitem2(N_Falchion, 1, 1, 7, 0, 0, 0 ,0, 0); // +7 novi falchion
    	}
    	if (Class == Job_Mage || Class == Job_Baby_Mage) {
    		getitem2(N_Rod, 1, 1, 7, 0, 0, 0 ,0, 0); // +7 novi rod
    	}
    	if (Class == Job_Archer || Class == Job_Baby_Archer) {
    		getitem2(N_Composite_Bow, 1, 1, 7, 0, 0, 0 ,0, 0); // and so on
    		getitem Arrow_Container, 1;
    		getitem Fire_Arrow_Container, 1;
    		getitem Silver_Arrow_Container, 1;
    	}
    	if (Class == Job_Acolyte || Class == Job_Baby_Acolyte) {
    		getitem2(N_Mace, 1, 1, 7, 0, 0, 0 ,0, 0);
    	}
    	if (Class == Job_Merchant || Class == Job_Baby_Merchant) {
    		getitem2(N_Battle_Axe, 1, 1, 7, 0, 0, 0 ,0, 0);
    	}
    	if (Class == Job_Thief || Class == Job_Baby_Thief || Class == Job_Ninja) {
    		getitem2(N_Main_Gauche, 1, 1, 7, 0, 0, 0 ,0, 0);
    	}
    	if (Class == Job_Gunslinger) {
    		getitem2(Novice_Revolver, 1, 1, 7, 0, 0, 0 ,0, 0);
    		getitem Bullet_Case, 1;
    		getitem Bullet_Case_Silver, 1;
    	}
    	return;
    end;
    
    OnInit:
    	.rebirth_blevel = 99;    // Minimum base level to reborn OR change to third class
    	.rebirth_jlevel = 50;    // Minimum base job level to reborn OR change to third class
    	.jobchange_first = 10;   // Minimum job level to turn into 1st class
    	.jobchange_second = 40;  // Minimum job level to turn into 2nd class
    	.third_classes = 1;      // Enable third classes? (1: yes / 0: no)
    	.supernovice_level = 45; // Minimum base level to turn into Super Novice
    	.linear_jobchange = 1;   // Enforce linear class changes? (1: yes / 0: no)
    	.skill_point_check = 1;  // Force player to use up all skill points? (1: yes / 0: no)
    	.platinum = 1;           // Get platinum skills automatically? (1: yes / 0: no)
    	end;
    }
    
    //== Swordsman (South-West) 137 158
    new_reborn,137,158,0	script	Ascension#1	HIDDEN_WARP_NPC,2,2,{
    	if (atoi(strnpcinfo(NPC_NAME_HIDDEN)) == 7) {
    		if (BaseClass == Job_Novice || BaseClass == Job_Baby || BaseClass == Job_Ninja || BaseClass == Job_Gunslinger || BaseClass == Job_Taekwon) {
    			@newborn = atoi(strnpcinfo(NPC_NAME_HIDDEN));
    			doevent "Ascension#Main::OnTalk";
    			end;
    		}
    	}
    	callfunc("F_CoolDown", 4); // 4 sec cooldown
    	npctalk "Only Novices, Ninjas, Gunslinger and Babies can use my services.";
    	end;
    
    OnTouch:
    	callfunc("F_CoolDown", 5); // 5 sec cooldown
    	@newborn = atoi(strnpcinfo(NPC_NAME_HIDDEN));
    	if (atoi(strnpcinfo(NPC_NAME_HIDDEN)) != BaseClass && BaseClass != Job_Novice) {
    		message strcharinfo(PC_NAME), "You are not supposed to be here, young adventurer..";
    		switch(BaseClass) { // warp players depending on their job
    		case 0:
    			break;
    		case 1:
    			warp "new_reborn", 187, 186;
    			end;
    		case 2:
    			warp "new_reborn", 218, 205;
    			end;
    		case 3:
    			warp "new_reborn", 220, 185;
    			end;
    		case 4:
    			warp "new_reborn", 203, 215;
    			end;
    		case 5:
    			warp "new_reborn", 187, 204;
    			end;
    		case 6:
    			warp "new_reborn", 203, 175;
    			end;
    		case 23:
    		case 24:
    		case 25:
    		case 4023:
    		case 4024:
    		case 4025:
    		case 4026:
    		case 4027:
    		case 4028:
    		case 4029:
    		case 4045:
    		case 4046:
    			warp "new_reborn", 207, 202;
    			end;
    		}
    	}
    	doevent "Ascension#Main::OnTalk";
    	end;
    }
    
    //== Magician (North-East) 268 234
    new_reborn,268,234,0	duplicate(Ascension#1)	Ascension#2	HIDDEN_WARP_NPC,2,2
    //== Archer (South-East) 268 157
    new_reborn,268,157,0	duplicate(Ascension#1)	Ascension#3	HIDDEN_WARP_NPC,2,2
    //== Acolyte (North) 202 271
    new_reborn,202,271,3	duplicate(Ascension#1)	Ascension#4	HIDDEN_WARP_NPC,2,2
    //== Merchant (Notrh-West) 137 232
    new_reborn,137,232,0	duplicate(Ascension#1)	Ascension#5	HIDDEN_WARP_NPC,2,2
    //==Thief (South) 202 119
    new_reborn,202,119,0	duplicate(Ascension#1)	Ascension#6	HIDDEN_WARP_NPC,2,2
    //== Expanded Classes + Baby
    new_reborn,209,206,3	duplicate(Ascension#1)	Expanded Master#7	4_F_KHALITZBURG
    
    
    //== Waitingrooms ========================================
    new_reborn,203,209,4	script	#Acolyte	4_F_ACOLYTE,{
    	mes("Follow this path for all "+strnpcinfo(NPC_NAME_HIDDEN)+" related class changes.");
    	close();
    
    OnInit:
        waitingroom strnpcinfo(NPC_NAME_HIDDEN), 0;
    	end;
    }
    
    new_reborn,215,202,3	duplicate(#Acolyte)	#Magician	4_M_ARUNA_NFM1
    new_reborn,215,188,3	duplicate(#Acolyte)	#Archer	4_M_ARCHER
    new_reborn,203,183,0	duplicate(#Acolyte)	#Thief	2_M_THIEFMASTER
    new_reborn,191,189,5	duplicate(#Acolyte)	#Swordsman	2_M_SWORDMASTER
    new_reborn,191,201,5	duplicate(#Acolyte)	#Merchant	1_F_MERCHANT_01
    
    //== Warps ===============================================
    //== To Pront
    new_reborn,196,206,4	script	Exit#nr1	1_SHADOW_NPC,1,1,{
    	end;
    
    OnInit:
        .rotate = 1; // rotate? 1 = yes, 0 = no **Attention, this is an infinite loop
    	.message$ = "Exit"; // text for rotating waitingroom
    	if (.rotate) {
    		while (true) {
    			.message$ = delchar(.message$ + charat(.message$, 0), 0);
    			delwaitingroom;
    			waitingroom .message$, 0;
    			sleep 500; // reduce or increase for rotation speed. The lower the faster the more ressource eating.
    		}
    	} else {
    		waitingroom "Exit", 0; // else name for chatroom,
    	}
    	end;
    
    OnTouch:
    	specialeffect2 EF_AGIUP2;
    	specialeffect2 EF_JUMPBODY;
    	sleep2 1000;
    	warp "prontera", 156, 176;
    	end;
    }
    
    //== To Ascending Dimension
    prontera,149,175,0	script	Novi Area#novi2	1_SHADOW_NPC,1,1,{
    	end;
    
    
    OnInit:
    	.rotate = 1; // rotate? 1 = yes, 0 = no **Attention, this is an infinite loop
    	.message$ = "Ascending Dimension - Job Master "; // text for rotating waitingroom
    	if (.rotate) {
    		while (true) {
    			.message$ = delchar(.message$ + charat(.message$, 0), 0);
    			delwaitingroom;
    			waitingroom .message$, 0;
    			sleep 500; // reduce or increase for rotation speed. The lower the faster the more ressource eating.
    		}
    	} else {
    		waitingroom "Job Master", 0; // else name for chatroom,
    	}
    	end;
    
    OnTouch:
    	specialeffect2 EF_AGIUP2;
    	specialeffect2 EF_JUMPBODY;
    	sleep2 1000;
    	warp "new_reborn", 203, 195;
    	end;
    }
    
    //== Mobs ================================================
    new_reborn,203,195,8,8	monster	Failed Ascendant	1002,2,5000,0,0 // spawn some mobs in the center
    new_reborn,203,195,8,8	monster	Failed Ascendant	1007,2,5000,0,0
    new_reborn,203,195,8,8	monster	Failed Ascendant	1063,2,5000,0,0
    
    //== Mapflags ============================================
    new_reborn	mapflag	noskill
    new_reborn	mapflag	nomemo
    new_reborn	mapflag	noteleport
    new_reborn	mapflag	novending
    new_reborn	mapflag	nowarpto
    new_reborn	mapflag	nobranch
    new_reborn	mapflag	town
    //new_reborn	mapflag	noafk

    i want rebirth when job 2nd class max base/job... and change job when high novice and high 1st class max lv base/job... 
     

  8. 1 hour ago, pajodex said:

    Hi,

    Here you go, feel free to edit this at your needs.

    
    //============= by pajodex ======================//
    prontera,150,180,4	script	Skill Points giver	100,{
    	If(SkillPoint_r == 1) {
    		mes "You have received your extra skill points";
    		close2;
    		end;
    	}
    	mes "Hi, I can give you extra skill points";
    	If(select("Yes:No") == 1 ) {
    		next;
    		mes "Here you go!";
    		set SkillPoint,SkillPoint+100; // gives 100 extra skill points
    		SkillPoint_r = 1;
    		close;
    	}
    	else { mes "Come back at any time"; close; }
    }

    @tathanngudong

    thanks you about npc... but that not i means... 
    i mean... Max level of that skill is 10... Although my skill points are redundant...i can't increase max skill point for that skill... 

    i don't know how to do that! please...show me what i should to do...
     

×
×
  • Create New...