Jump to content
  • 0

Hunting Missions


Ukiram

Question


  • Group:  Members
  • Topic Count:  45
  • Topics Per Day:  0.02
  • Content Count:  291
  • Reputation:   26
  • Joined:  12/16/17
  • Last Seen:  

Hi, How to set this Hunting Missions to Normal Mobs only, How to Black all MvP / Boss / Mini-Boss / I want to just a normal monster only?

//===== rAthena Script =======================================
//= Hunting Missions
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
//= 1.3a
//===== Compatible With: ===================================== 
//= rAthena SVN
//===== Description: =========================================
//= Random hunting missions.
//= Rewards are based on quest difficulty.
//===== Additional Comments: =================================
//= 1.0 Initial script.
//= 1.1 Small improvements and fixes.
//= 1.2 Added party support and replaced blacklists with an
//=     SQL query, both thanks to AnnieRuru.
//= 1.3 Re-added a blacklist adapted for the SQL query.
//= 1.3a Added mission reset options.
//============================================================

prontera,150,153,5	script	Hunting Missions	951,{
function Chk; function Cm;
	mes "[Hunting Missions]";
	mes "Hello, "+strcharinfo(0)+"!";
	if (!#Mission_Delay) {
		next;
		mes "[Hunting Missions]";
		mes "I can't find any records...";
		mes "You must be new here!";
		emotion e_omg;
		next;
		callsub Mission_Info;
		emotion e_go;
		set #Mission_Delay,1;
		close;
	}
	mes rand(2)?"Working hard, as always...":"Not slacking, I hope...";
	mes "Is there anything I can help";
	mes "you with?";
	mes " ";
	mes "^777777~ You've completed ^0055FF"+Mission_Total+"^777777 mission"+((Mission_Total == 1)?"":"s")+". ~^000000";
	next;
	switch(select(((!Mission0)?" ~ New Mission::":": ~ Mission Status: ~ Abandon Mission")+": ~ Information:  ~ View Top Hunters: ~ ^777777Cancel^000000")) {
	case 1:
		mes "[Hunting Missions]";
		if (#Mission_Count) {
			mes "You've started a mission";
			mes "on another character.";
			close;
		}
		if (#Mission_Delay > gettimetick(2) && .Delay) {
			set .@i, #Mission_Delay-gettimetick(2);
			if (.@i > 3600) set .@j$, (.@i/3600)+" hour"+(((.@i/3600) == 1)?"":"s");
			else if (.@i > 60) set .@j$, (.@i/60)+" minute"+(((.@i/60) == 1)?"":"s");
			else set .@j$, (.@i)+" second"+((.@i == 1)?"":"s");
			mes "I'm afraid you'll have to wait "+.@j$+" before taking another mission.";
			close;
		}
		mes "You must hunt:";
		query_sql("SELECT ID FROM `mob_db` WHERE left(Sprite, 4) != 'meta' AND left(Sprite, 2) != 'E_' AND ~Mode & 32 AND EXP > 0 AND MVP1id = 0 AND DropCardid > 4000 AND DropCardid < 5000 AND ID < 2000 AND instr('"+.Blacklist$+"',ID) = 0 ORDER BY rand() LIMIT "+.Quests, .@mob);
		for (set .@i,0; .@i<.Quests; set .@i,.@i+1) {
			setd "Mission"+.@i, .@mob[.@i];
			setd "Mission"+.@i +"_",0;
		}
		set #Mission_Count, rand(.Count[0],.Count[1]);
		callsub Mission_Status;
		next;
		mes "[Hunting Missions]";
		mes "Report back when";
		mes "you've finished.";
		mes "Good luck!";
		close;
	case 2:
		mes "[Hunting Missions]";
		mes "Mission status:";
		callsub Mission_Status;
		close;
	case 3:
		mes "[Hunting Missions]";
		mes "Do you really want to";
		mes "abandon your mission?";
		if (.Reset < 0 && .Delay)
			mes "Your delay time will not be reset.";
		else if (.Reset > 0)
			mes "It will cost "+Cm(.Reset)+" Zeny.";
		next;
		switch(select(" ~ Abandon...: ~ ^777777Cancel^000000")) {
		case 1:
			if (.Reset > 0) {
				if (Zeny < .Reset) {
					mes "[Hunting Missions]";
					mes "You don't have enough";
					mes "Zeny to drop this mission.";
					emotion e_sry;
					close;
				}
				set Zeny, Zeny-.Reset;
				emotion e_cash;
			}
			mes "[Hunting Missions]";
			mes "Alright, I've dropped";
			mes "your current mission.";
			specialeffect2 EF_STORMKICK4;
			for(set .@i,0; .@i<.Quests; set .@i,.@i+1) {
				setd "Mission"+.@i,0;
				setd "Mission"+.@i+"_",0;
			}
			set #Mission_Count,0;
			if (.Reset < 0 && .Delay) set #Mission_Delay, gettimetick(2)+(.Delay*3600);
			close;
		case 2:
			mes "[Hunting Missions]";
			mes "I knew you were kidding!";
			mes "Keep up the good work.";
			emotion e_heh;
			close;
		}
	case 4:
		callsub Mission_Info;
		close;
	case 7:
		mes "[Hunting Missions]";
		mes "You have ^0055FF"+#Activity_Points+"^000000 Activity Points.";
		mes "Use them well!";
		callshop "mission_shop",1;
		npcshopattach "mission_shop";
		end;
	case 5:
		mes "[Hunting Missions]";
		mes "The top hunters are:";
		query_sql("SELECT char_id AS id, (SELECT `name` FROM `char` WHERE char_id = id),`value` FROM `global_reg_value` WHERE str = 'Mission_Total' ORDER BY CAST(`value` AS SIGNED) DESC LIMIT 5",.@id,.@name$,.@val);
		for(set .@i,0; .@i<5; set .@i,.@i+1)
			mes "  [Rank "+(.@i+1)+"]  "+((.@name$[.@i] == "")?"^777777none":"^0055FF"+.@name$[.@i]+"^000000 : ^FF0000"+.@val[.@i]+" pt.")+"^000000";
		close;
	case 6:
		mes "[Hunting Missions]";
		mes "Nothing? Okay...";
		emotion e_hmm;
		close;
	}

OnAtcommand:
Mission_Status:
	set @f,0;
	deletearray .@j[0], getarraysize(.@j);
	for(set .@i,0; .@i<.Quests; set .@i,.@i+1) {
		set .@j[.@i], getd("Mission"+.@i);
		set .@j[.Quests], .@j[.Quests]+strmobinfo(3,.@j[.@i]);
		set .@j[.Quests+1], .@j[.Quests+1]+(strmobinfo(6,.@j[.@i])/(getbattleflag("base_exp_rate")/100)*.Modifier[0]);
		set .@j[.Quests+2], .@j[.Quests+2]+(strmobinfo(7,.@j[.@i])/(getbattleflag("job_exp_rate")/100)*.Modifier[1]);
		mes " > "+Chk(getd("Mission"+.@i+"_"),#Mission_Count)+strmobinfo(1,.@j[.@i])+" ("+getd("Mission"+.@i+"_")+"/"+#Mission_Count+")^000000";
	}

	// Reward formulas:
	set .@Activity_Points, 3+(.@j[.Quests]/.Quests/6);
	set .@Base_Exp, #Mission_Count*.@j[.Quests+1]/5;
	set .@Job_Exp, #Mission_Count*.@j[.Quests+2]/5;
	set .@Zeny, #Mission_Count*.Quests*.@j[.@i]*.Modifier[2];

	next;
	mes "[Hunting Missions]";
	mes "Mission rewards:";
	mes " > Activity Points: ^0055FF"+.@Activity_Points+"^000000";
	mes " > Base Experience: ^0055FF"+Cm(.@Base_Exp)+"^000000";
	mes " > Job Experience: ^0055FF"+Cm(.@Job_Exp)+"^000000";
	mes " > Zeny: ^0055FF"+Cm(.@Zeny)+"^000000";
	if (@f) { set @f,0; return; }
	next;
	mes "[Hunting Missions]";
	mes "Oh, you're done!";
	mes "Good work.";
	mes "Here's your reward.";
	emotion e_no1;
	specialeffect2 EF_ANGEL;
	specialeffect2 EF_TRUESIGHT;
	set #Activity_Points, #Activity_Points+.@Activity_Points;
	set BaseExp, BaseExp+.@Base_Exp;
	set JobExp, JobExp+.@Job_Exp;
	set Zeny, Zeny+.@Zeny;
	for(set .@i,0; .@i<.Quests; set .@i,.@i+1) {
		setd "Mission"+.@i,0;
		setd "Mission"+.@i+"_",0;
	}
	set #Mission_Count,0;
	if (.Delay) set #Mission_Delay, gettimetick(2)+(.Delay*3600);
	set Mission_Total, Mission_Total+1;
	if (Mission_Total == 1) query_sql("INSERT INTO `global_reg_value` (`char_id`,`str`,`value`,`type`,`account_id`) VALUES ("+getcharid(0)+",'Mission_Total','1',3,0)");
	else query_sql("UPDATE `global_reg_value` SET `value` = "+Mission_Total+" WHERE char_id = "+getcharid(0)+" AND `str` = 'Mission_Total'");
	close;

Mission_Info:
	mes "[Hunting Missions]";
	mes "If you so choose, I can assign";
	mes "you a random hunting quest.";
	mes "Some are easier than others, but";
	mes "the rewards increase with difficulty.";
	next;
	mes "[Hunting Missions]";
	mes "Missions points are shared";
	mes "amongst all your characters.";
	if (.Delay) mes "Delay time is, too.";
	mes "You can't take missions on";
	mes "multiple characters at once.";
	next;
	mes "[Hunting Missions]";
	mes "You can start a quest";
	if (.Delay) mes "every "+((.Delay == 1)?"hour.":.Delay+" hours.");
	else mes "whenever you want.";
	mes "That's everything~";
	return;

function Chk {
	if (getarg(0) < getarg(1)) { set @f,1; return "^FF0000"; }
	else return "^00FF00"; }

function Cm {
	set .@str$, getarg(0);
	for(set .@i,getstrlen(.@str$)-3; .@i>0; set .@i,.@i-3)
		set .@str$, insertchar(.@str$,",",.@i);
	return .@str$; }

OnBuyItem:
	set @cost,0;
	for(set .@i,0; .@i<getarraysize(@bought_nameid); set .@i,.@i+1)
		for(set .@j,0; .@j<getarraysize(.Shop); set .@j,.@j+2)
			if (@bought_nameid[.@i] == .Shop[.@j]) {
				set @cost, @cost+(.Shop[.@j+1]*@bought_quantity[.@i]);
				break;
			}
	mes "[Hunting Missions]";
	if (@cost > #Activity_Points) mes "You don't have enough Activity Points.";
	else {
		for(set .@i,0; .@i<getarraysize(@bought_nameid); set .@i,.@i+1) {
			getitem @bought_nameid[.@i], @bought_quantity[.@i];
			dispbottom "Purchased "+@bought_quantity[.@i]+"x "+getitemname(@bought_nameid[.@i])+".";
		}
		set #Activity_Points, #Activity_Points-@cost;
		mes "Deal completed.";
		emotion e_cash;
	}
	set @cost,0;
	deletearray @bought_nameid[0], getarraysize(@bought_nameid);
	deletearray @bought_quantity[0], getarraysize(@bought_quantity);
	close;

OnNPCKillEvent:
	if (!getcharid(1) || !.Party) {
		if (!#Mission_Count || !Mission0) end;
		for (set .@i, 0; .@i<.Quests; set .@i,.@i+1) {
			if (strmobinfo(1,killedrid) == strmobinfo(1,getd("Mission"+.@i))) {
				if (getd("Mission"+.@i+"_") < #Mission_Count) {
					dispbottom "[Hunting Mission] Killed "+(set(getd("Mission"+.@i+"_"),getd("Mission"+.@i+"_")+1))+" of "+#Mission_Count+" "+strmobinfo(1,killedrid)+".";
					end;
				}
			}
		}
	} else if (.Party) {
		set .@mob, killedrid;
		getmapxy(.@map1$,.@x1,.@y1,0);
		getpartymember getcharid(1),1;
		getpartymember getcharid(1),2;
		for(set .@i,0; .@i<$@partymembercount; set .@i,.@i+1) {
			if (isloggedin($@partymemberaid[.@i], $@partymembercid[.@i])) {
				attachrid $@partymemberaid[.@i];
				if (#Mission_Count && Mission0 && HP > 0) {
					getmapxy(.@map2$,.@x2,.@y2,0);
					if ((.@map1$ == .@map2$ || .Party == 1) && (distance(.@x1,.@y1,.@x2,.@y2) <= 30 || .Party < 3)) {
						for(set .@j,0; .@j<.Quests; set .@j,.@j+1) {
							if (strmobinfo(1,.@mob) == strmobinfo(1,getd("Mission"+.@j))) {
								if (getd("Mission"+.@j+"_") < #Mission_Count) {
									dispbottom "[Hunting Mission] Killed "+(set(getd("Mission"+.@j+"_"),getd("Mission"+.@j+"_")+1))+" of "+#Mission_Count+" "+strmobinfo(1,.@mob)+".";
									break;
								}
							}
						}
					}
				}
			}
		}
	}
	end;

OnInit:
bindatcmd "mission",strnpcinfo(3)+"::OnAtcommand",0,40;
	set .Delay,0;		// Quest delay, in hours (0 to disable).
	set .Quests,5;		// Number of subquests per mission (increases rewards).
	set .Party,2;		// Party options: 0 (exclude party kills), 1 (include party kills), 2 (same map only), 3 (screen area only)
	set .Reset,-1;		// Reset options: -1 (abandoning mission sets delay time), 0 (no delay time), [Zeny] (cost to abandon mission, no delay time)
	setarray .Count[0],	// Min and max monsters per subquest (increases rewards).
		50,100;
	setarray .Modifier[0],	// Multipliers for Base Exp, Job Exp, and Zeny rewards.
		getbattleflag("base_exp_rate")/100,getbattleflag("job_exp_rate")/100,60;
	setarray .Shop[0],	// Reward items: <ID>,<point cost> (about 10~20 points per hunt).
		512,1,513,1,514,1,538,5,539,5,558,10,561,10;
	set .Blacklist$,	// Blacklisted mob IDs.
		"1062,1088,1183,1186,1200,1212,1220,1221,1234,1235,"+
		"1244,1245,1250,1268,1290,1293,1294,1296,1298,1299,"+
		"1300,1301,1303,1304,1305,1306,1308,1309,1311,1313,"+
		"1515,1588,1618,1676,1677,1678,1679,1796,1797,1974,"+
		"1975,1976,1977,1978,1979,1092";

	npcshopdelitem "mission_shop",512;
	for(set .@i,0; .@i<getarraysize(.Shop); set .@i,.@i+2)
		npcshopadditem "mission_shop", .Shop[.@i], .Shop[.@i+1];
	end;
}
-	shop	mission_shop	-1,512:-1

 

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

  • Group:  Members
  • Topic Count:  140
  • Topics Per Day:  0.03
  • Content Count:  562
  • Reputation:   108
  • Joined:  10/05/12
  • Last Seen:  

You have to add them 1 by one 1 to the blacklist ID, This is the only way, since the script need the mob_db sql, 

set .Blacklist$,	// Blacklisted mob IDs.
		"1062,1088,1183,1186,1200,1212,1220,1221,1234,1235,"+
		"1244,1245,1250,1268,1290,1293,1294,1296,1298,1299,"+
		"1300,1301,1303,1304,1305,1306,1308,1309,1311,1313,"+
		"1515,1588,1618,1676,1677,1678,1679,1796,1797,1974,"+
		"1975,1976,1977,1978,1979,1092";

 

This is my blacklist, and still working on it:

	.Blacklist$ =           // Blacklisted mob IDs.
		"1062,1088,1183,1186,1120,1200,1212,1220,1221,1234,1235,1302,1634,1289,1638,1720,"+
		"1244,1245,1250,1262,1268,1290,1293,1294,1296,1298,1299,1203,1204,1205,1259,1090,"+
		"1300,1301,1303,1304,1305,1306,1308,1309,1311,1313,1705,1707,1712,1710,1633,1975,"+
		"1515,1588,1618,1676,1677,1678,1679,1796,1797,1703,1291,1566,1704,1681,1861,1636,1709,1839,1830,1974,"+
		"1975,1976,1977,1978,1979,2017,1388,1582,1992,";

 

I recomend you, to disable the delay time, and start and abandon missions in order to filter the mobs you want exclude, doing this I managed to exclude monsters like Dark Illusion, Deviaces, literally all monster that are only 1 per map with 10 minuts respawn. etc 

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  257
  • Topics Per Day:  0.08
  • Content Count:  737
  • Reputation:   18
  • Joined:  11/21/15
  • Last Seen:  

On 4/14/2020 at 2:42 PM, iraciz said:

You have to add them 1 by one 1 to the blacklist ID, This is the only way, since the script need the mob_db sql, 


set .Blacklist$,	// Blacklisted mob IDs.
		"1062,1088,1183,1186,1200,1212,1220,1221,1234,1235,"+
		"1244,1245,1250,1268,1290,1293,1294,1296,1298,1299,"+
		"1300,1301,1303,1304,1305,1306,1308,1309,1311,1313,"+
		"1515,1588,1618,1676,1677,1678,1679,1796,1797,1974,"+
		"1975,1976,1977,1978,1979,1092";

 

This is my blacklist, and still working on it:


	.Blacklist$ =           // Blacklisted mob IDs.
		"1062,1088,1183,1186,1120,1200,1212,1220,1221,1234,1235,1302,1634,1289,1638,1720,"+
		"1244,1245,1250,1262,1268,1290,1293,1294,1296,1298,1299,1203,1204,1205,1259,1090,"+
		"1300,1301,1303,1304,1305,1306,1308,1309,1311,1313,1705,1707,1712,1710,1633,1975,"+
		"1515,1588,1618,1676,1677,1678,1679,1796,1797,1703,1291,1566,1704,1681,1861,1636,1709,1839,1830,1974,"+
		"1975,1976,1977,1978,1979,2017,1388,1582,1992,";

 

I recomend you, to disable the delay time, and start and abandon missions in order to filter the mobs you want exclude, doing this I managed to exclude monsters like Dark Illusion, Deviaces, literally all monster that are only 1 per map with 10 minuts respawn. etc 

update to this heres mine with most of mini are listed im still trying to add the monsters that are not normally spawned

.Blacklist$ =           // Blacklisted mob IDs.
		"1062,1088,1183,1186,1200,1212,1220,1221,1234,1235,"+
		"1244,1245,1250,1268,1290,1293,1294,1296,1298,1299,"+
		"1300,1301,1303,1304,1305,1306,1308,1309,1311,1313,"+
		"1515,1588,1618,1676,1677,1678,1679,1796,1797,1974,"+
		"1975,1976,1977,1978,1979,1089,1096,1388,1641,1830,"+
		"1839,1307,1283,1302,1582,1091,1093,1205,1783,1681,"+
		"1120,1929,1259,1990,1626,1643,1645,1720,1919,1921,"+
		"1918,1920,1640,1090,1289,1262,1203,1956,1700,1295,"+
		"1320,1894,1702,1701,1754,1755,1644,1703,1829,1991,"+
		"1705,1710,1707,1712,1706,1711,1704,1709,1960,1961,"+
		"1959,1958,1204,1092,1765,1642";

 

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  6
  • Topics Per Day:  0.01
  • Content Count:  17
  • Reputation:   0
  • Joined:  04/01/22
  • Last Seen:  

On 5/12/2021 at 12:43 AM, AinsLord said:

update to this heres mine with most of mini are listed im still trying to add the monsters that are not normally spawned

.Blacklist$ =           // Blacklisted mob IDs.
		"1062,1088,1183,1186,1200,1212,1220,1221,1234,1235,"+
		"1244,1245,1250,1268,1290,1293,1294,1296,1298,1299,"+
		"1300,1301,1303,1304,1305,1306,1308,1309,1311,1313,"+
		"1515,1588,1618,1676,1677,1678,1679,1796,1797,1974,"+
		"1975,1976,1977,1978,1979,1089,1096,1388,1641,1830,"+
		"1839,1307,1283,1302,1582,1091,1093,1205,1783,1681,"+
		"1120,1929,1259,1990,1626,1643,1645,1720,1919,1921,"+
		"1918,1920,1640,1090,1289,1262,1203,1956,1700,1295,"+
		"1320,1894,1702,1701,1754,1755,1644,1703,1829,1991,"+
		"1705,1710,1707,1712,1706,1711,1704,1709,1960,1961,"+
		"1959,1958,1204,1092,1765,1642";

 

are you still updating your blacklist? if so can you share it? I have copied your blacklist as of now, if you don't mind.

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  257
  • Topics Per Day:  0.08
  • Content Count:  737
  • Reputation:   18
  • Joined:  11/21/15
  • Last Seen:  

On 4/10/2022 at 3:55 PM, monody0093 said:

are you still updating your blacklist? if so can you share it? I have copied your blacklist as of now, if you don't mind.

ill check

thats my most recent since then but ill try to check if theres new mini/mvp 

Link to comment
Share on other sites

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.

×
×
  • Create New...