Jump to content

Sour-

Members
  • Posts

    42
  • Joined

  • Last visited

Posts posted by Sour-

  1. 39 minutes ago, Cyro said:

    It depends on how themes coded, 

    Some of them link those in header or footer.php 

    Or you can just login to admin account in fluxcp and can edit pages 

    Its totally depends on theme

     

    I found it in the Header. Thank you! /repup

  2. Is there a common place to edit the Download Button? I am using Gerome's Diabro Theme and Xantara's Flux. When I click the download link, it directs to myRO's download link. I am used to paid flux themes where you will just edit almost everything in the themes/default/main

     

    rathena.jpg

  3. 26 minutes ago, sikiro said:
    
    groups: (
    {
    	id: 0 /* group 0 is the default group for every new account */
    	name: "Player"
    	level: 0
    	inherit: ( /*empty list*/ )
    		commands: true
    		rates: true
    		refresh: true
    		go: true
    		iteminfo: true
    		mobinfo: true
    		whodrops: true
    		whereis: true
    		time: true
    		hominfo: true
    		homstats: true
    		noask: true
    		noks: true
    		autoloot: true
    		alootid: true
    		autoloottype: true
    		autotrade: true
    		breakguild: true{
    		/* no commands by default */
    	}
    	permissions: {
    		/* without this basic permissions regular players could not 
    		trade or party */
    		can_trade: true
    		can_party: true
    		command_enable: true
    
    	}
    },

     

    premissions are a bit diferent than commands. so all commands you want to give to a player must be set under commands. remember to make sure under premission the player has command-enable:true or else even if they have this list they wont be able to execute commands.

     

    What a stupid mistake! I kept searching for the fix at SRC. Lol. Thank you! /repup

  4. How to make these commands work on Group ID 0? It says non-existent permission name.

    groups: (
    {
    	id: 0 /* group 0 is the default group for every new account */
    	name: "Player"
    	level: 0
    	inherit: ( /*empty list*/ )
    	commands: {
    		/* no commands by default */
    	}
    	permissions: {
    		/* without this basic permissions regular players could not 
    		trade or party */
    		can_trade: true
    		can_party: true
    		command_enable: true
    		commands: true
    		rates: true
    		refresh: true
    		go: true
    		iteminfo: true
    		mobinfo: true
    		whodrops: true
    		whereis: true
    		time: true
    		hominfo: true
    		homstats: true
    		noask: true
    		noks: true
    		autoloot: true
    		alootid: true
    		autoloottype: true
    		autotrade: true
    		breakguild: true
    	}
    },

     

    rathena.jpg

  5.     [20132] = {
            unidentifiedDisplayName = "Mouth Mask",
            unidentifiedResourceName = "¸®º»",
            unidentifiedDescriptionName = {
                "Unknown Item, can be identified by using a ^6666CCMagnifier^000000."
            },
            identifiedDisplayName = "Costume Vicious Mind Aura",
            identifiedResourceName = "»ç³äÀÇ¿À¿À¶ó",
            identifiedDescriptionName = {
                "Unknown aura that wrapped your body.",
                "Class:^6666CC Costume^000000",
                "Location:^6666CC Lower^000000",
                "Weight:^009900 0^000000",
                "Level Requirement:^009900 1^000000",
                "Jobs:^6666CC All classes^000000"
            },
            slotCount = 0,
            ClassNum = 1267


    Iteminfo(renewal) to idnum2(pre renewal)

    All 3 idnum2 were edited. I used the same data.grf and rdata.grf for both renewal and pre renewal.

    The sprite worked in the inventory. But when worn, the client crashes. How is this so?
    Also where to place ClassNum in a prerenewal client? Is the missing ClassNum the problem?

  6. Just because of curiosity, I wanted to try making a server. Then I was overwhelmed by tons of information and I did not know where to start. Thanks to Stolao, he guided me what to read and the points where to start.

    rA documents and samples are very good guides. But when you are new, it is just so hard to comprehend the samples. Especially now, no more rA wiki (or yet). It is so hard to find 'what does this and that mean'.

    Maybe someone in the near future could make rA modules with evaluations as to assess if we really understand it. And I think many would be willing to pay for it.

  7. I need help in making shop divisions of the Hunting Mission Shop. So I added on Case 5:

            switch(select("Shop 1:Shop 2")) {
            Case 1:
    			callshop "mission_shop",1;
    			npcshopattach "mission_shop";
    			end;
            Case 2:
                callshop "mission_shop2",1;
    			npcshopattach "mission_shop2";
    			end;
            }

    and

    -	shop	mission_shop2	-1,512:-1

     

    Full script

    //===== rAthena Script =======================================
    //= Hunting Missions
    //===== By: ==================================================
    //= Euphy
    //===== Current Version: =====================================
    //= 1.4
    //===== Compatible With: ===================================== 
    //= rAthena Project
    //===== Description: =========================================
    //= Random hunting missions.
    //= Rewards are based on quest difficulty.
    //= 
    //= NOTE: Requires SQL mob database.
    //===== 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.
    //= 1.3b Function updates.
    //= 1.4 Check for deleted characters, thanks to AnnieRuru.
    //=     Syntax updates and style cleaning.
    //============================================================
    
    prontera,147,173,6	script	Hunting Master	821,{
    function Chk;
    	mes "[Hunting Master]";
    	mes "Hello, " + strcharinfo(0) + "!";
    	if (!#Mission_Delay) {
    		next;
    		mes "[Hunting Master]";
    		mes "I can't find any records...";
    		mes "You must be new here!";
    		emotion e_omg;
    		next;
    		callsub Mission_Info;
    		emotion e_go;
    		#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 " + callfunc("F_InsertPlural",Mission_Total,"mission",0,"^0055FF%d^777777 %s") + ". ~^000000";
    	next;
    	switch(select(
    		((!Mission0) ? " ~ New Mission::" : ": ~ Mission Status: ~ Abandon Mission") +
    		": ~ Information: ~ Mission Shop: ~ View Top Hunters: ~ ^777777Cancel^000000"
    	)) {
    	case 1:
    		mes "[Hunting Master]";
    		if (#Mission_Count) {
    			mes "You've started a mission";
    			mes "on another character.";
    			if (!@hm_char_del_check) {  // check for deleted character
    				query_sql("SELECT 1 FROM `char_reg_num` WHERE `key` = 'Mission0' AND `char_id` IN(SELECT `char_id` FROM `char` WHERE `account_id` = " + getcharid(3) + ")", .@i);
    				if (!.@i) {
    					next;
    					mes "[Hunting Master]";
    					mes "I can't seem to find any records";
    					mes "for that character, though...";
    					mes "One moment, please.";
    					emotion e_hmm;
    					#Mission_Count = 0;
    				}
    				@hm_char_del_check = 1;
    			}
    			close;
    		}
    		if (#Mission_Delay > gettimetick(2) && .Delay) {
    			mes "I'm afraid you'll have to wait " + callfunc("Time2Str",#Mission_Delay) + " 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 (.@i = 0; .@i < .Quests; .@i++) {
    			setd "Mission" + .@i, .@mob[.@i];
    			setd "Mission" + .@i +"_", 0;
    		}
    		#Mission_Count = rand(.Count[0], .Count[1]);
    		callsub Mission_Status;
    		next;
    		mes "[Hunting Master]";
    		mes "Report back when";
    		mes "you've finished.";
    		mes "Good luck!";
    		close;
    	case 2:
    		mes "[Hunting Master]";
    		mes "Mission status:";
    		callsub Mission_Status;
    		close;
    	case 3:
    		mes "[Hunting Master]";
    		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 " + callfunc("F_InsertComma",.Reset) + " Zeny.";
    		next;
    		switch(select(" ~ Abandon...: ~ ^777777Cancel^000000")) {
    		case 1:
    			if (.Reset > 0) {
    				if (Zeny < .Reset) {
    					mes "[Hunting Master]";
    					mes "You don't have enough";
    					mes "Zeny to drop this mission.";
    					emotion e_sry;
    					close;
    				}
    				Zeny -= .Reset;
    				emotion e_cash;
    			}
    			mes "[Hunting Master]";
    			mes "Alright, I've dropped";
    			mes "your current mission.";
    			specialeffect2 EF_STORMKICK4;
    			for (.@i = 0; .@i < .Quests; .@i++) {
    				setd "Mission"+.@i, 0;
    				setd "Mission"+.@i+"_", 0;
    			}
    			#Mission_Count = 0;
    			if (.Reset < 0 && .Delay)
    				#Mission_Delay = gettimetick(2) + (.Delay * 3600);
    			close;
    		case 2:
    			mes "[Hunting Master]";
    			mes "I knew you were kidding!";
    			mes "Keep up the good work.";
    			emotion e_heh;
    			close;
    		}
    	case 4:
    		callsub Mission_Info;
    		close;
    	case 5:
    		mes "[Hunting Master]";
    		mes "You have ^0055FF" + #Mission_Points + "^000000 Mission Points.";
    		mes "Use them well!";
            switch(select("Shop 1:Shop 2")) {
            Case 1:
    			callshop "mission_shop",1;
    			npcshopattach "mission_shop";
    			end;
            Case 2:
                callshop "mission_shop2",1;
    			npcshopattach "mission_shop2";
    			end;
            }
    	case 6:
    		mes "[Hunting Master]";
    		mes "The top hunters are:";
    		query_sql("SELECT char_id AS id, (SELECT `name` FROM `char` WHERE char_id = id),`value` FROM `char_reg_num` WHERE `key` = 'Mission_Total' ORDER BY CAST(`value` AS SIGNED) DESC LIMIT 10", .@id, .@name$, .@val);
    		for (.@i = 0; .@i < 5; .@i++)
    			mes "  [Rank " + (.@i+1) + "]  " + ((.@name$[.@i] == "") ? "^777777none" : "^0055FF" + .@name$[.@i]+"^000000 : ^FF0000" + .@val[.@i] + " pt.") + "^000000";
    		close;
    	case 7:
    		mes "[Hunting Master]";
    		mes "Nothing? Okay...";
    		emotion e_hmm;
    		close;
    	}
    	end;
    
    Mission_Status:
    	@f = 0;
    	deletearray .@j[0], getarraysize(.@j);
    	for (.@i = 0; .@i < .Quests; .@i++) {
    		.@j[.@i] = getd("Mission" + .@i);
    		.@j[.Quests] = .@j[.Quests] + strmobinfo(3,.@j[.@i]);
    		.@j[.Quests+1] = .@j[.Quests+1] + (strmobinfo(6,.@j[.@i]) / (getbattleflag("base_exp_rate") / 100) * .Modifier[0]);
    		.@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:
    	.@Mission_Points = 1;
    	.@Base_Exp = 100000000;
    	.@Job_Exp = 100000000;
    	.@Zeny = 100000;
    
    	next;
    	mes "[Hunting Master]";
    	mes "Mission rewards:";
    	mes " > Mission Points: ^0055FF" + .@Mission_Points + "^000000";
    	mes " > Base Experience: ^0055FF" + callfunc("F_InsertComma",.@Base_Exp) + "^000000";
    	mes " > Job Experience: ^0055FF" + callfunc("F_InsertComma",.@Job_Exp) + "^000000";
    	mes " > Zeny: ^0055FF" + callfunc("F_InsertComma",.@Zeny) + "^000000";
    	if (@f) {
    		@f = 0;
    		return;
    	}
    	next;
    	mes "[Hunting Master]";
    	mes "Oh, you're done!";
    	mes "Good work.";
    	mes "Here's your reward.";
    	emotion e_no1;
    	specialeffect2 EF_ANGEL;
    	specialeffect2 EF_TRUESIGHT;
    	#Mission_Points += .@Mission_Points;
    	BaseExp += .@Base_Exp;
    	JobExp += .@Job_Exp;
    	Zeny += .@Zeny;
    	#Honour += Honour;
    	for (.@i = 0; .@i < .Quests; .@i++) {
    		setd "Mission" + .@i, 0;
    		setd "Mission" + .@i+"_", 0;
    	}
    	#Mission_Count = 0;
    	if (.Delay)
    		#Mission_Delay = gettimetick(2) + (.Delay * 3600);
    	Mission_Total++;
    	if (Mission_Total == 1)
    		query_sql("INSERT INTO `char_reg_num` (`char_id`,`key`,`index`,`value`) VALUES (" + getcharid(0) + ",'Mission_Total','0',1)");
    	else
    		query_sql("UPDATE `char_reg_num` SET `value` = " + Mission_Total + " WHERE `char_id` = " + getcharid(0) + " AND `key` = 'Mission_Total'");
    	close;
    
    Mission_Info:
    	mes "[Hunting Master]";
    	mes "You will be assigned with random hunting quest. Easy or hard, the rewards would be the same.";
    	next;
    	mes "[Hunting Master]";
    	mes "Rewards:";
    	mes "Mission Points: 1";
    	mes "Zeny: 100,000 zeny";
    	mes "Base EXP: 100 million";
    	mes "Job EXP: 100 million";
    	next;
    	mes "[Hunting Master]";
    	mes "Missions points are shared 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 Master]";
    	mes "You can start a quest";
    	mes (.Delay ? "every " + ((.Delay == 1) ? "hour." : .Delay + " hours.") : "whenever you want.");
    	mes "That's everything~";
    	return;
    
    function Chk {
    	if (getarg(0) < getarg(1)) {
    		@f = 1;
    		return "^FF0000";
    	} else
    		return "^00FF00";
    }
    
    OnBuyItem:
    	@cost = 0;
    	for (.@i = 0; .@i < getarraysize(@bought_nameid); .@i++)
    		for (.@j = 0; .@j < getarraysize(.Shop); .@j += 2)
    			if (@bought_nameid[.@i] == .Shop[.@j]) {
    				set @cost, @cost + (.Shop[.@j+1] * @bought_quantity[.@i]);
    				break;
    			}
    	mes "[Hunting Master]";
    	if (@cost > #Mission_Points)
    		mes "You don't have enough Mission Points.";
    	else {
    		for (.@i = 0; .@i < getarraysize(@bought_nameid); .@i++) {
    			getitem @bought_nameid[.@i], @bought_quantity[.@i];
    			dispbottom "Purchased " + @bought_quantity[.@i] + "x " + getitemname(@bought_nameid[.@i]) + ".";
    		}
    		#Mission_Points -= @cost;
    		mes "Deal completed.";
    		emotion e_cash;
    	}
    	@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 (.@i = 0; .@i < .Quests; .@i++) {
    			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) {
    		.@mob = killedrid;
    		getmapxy(.@map1$,.@x1,.@y1,UNITTYPE_PC);
    		getpartymember getcharid(1),1;
    		getpartymember getcharid(1),2;
    		for (.@i = 0; .@i < $@partymembercount; .@i++) {
    			if (isloggedin($@partymemberaid[.@i], $@partymembercid[.@i])) {
    				set .@Mission_Count, getvar(#Mission_Count, $@partymembercid[.@i]);
    				set .@Mission0, getvar(Mission0, $@partymembercid[.@i]);
    				set .@HP, getvar(HP, $@partymembercid[.@i]);
    
    				if (.@Mission_Count && .@Mission0 && .@HP > 0) {
    					getmapxy(.@map2$,.@x2,.@y2,UNITTYPE_PC);
    					if ((.@map1$ == .@map2$ || .Party == 1) && (distance(.@x1,.@y1,.@x2,.@y2) <= 30 || .Party < 3)) {
    						for (.@j = 0; .@j < .Quests; .@j++) {
    							.@my_mob_id = getvar( getd("Mission"+.@j),$@partymembercid[.@i] );
    							.@my_count = getvar( getd("Mission"+.@j+"_"), $@partymembercid[.@i] );
    							if (strmobinfo(1,.@mob) == strmobinfo(1,.@my_mob_id)) {
    								if (.@my_count < .@Mission_Count) {
    									setd "Mission"+.@j+"_", (.@my_count+1), $@partymembercid[.@i];
    									dispbottom "[Hunting Mission] Killed " + (.@my_count+1) + " of " + .@Mission_Count + " " + strmobinfo(1,.@mob) + ".", 0x777777, $@partymembercid[.@i];
    									break;
    								}
    							}
    						}
    					}
    				}
    			}
    		}
    	}
    	end;
    
    OnInit:
    	.Delay = 5;            // Quest delay, in hours (0 to disable).
    	.Quests = 3;            // Number of subquests per mission (increases rewards).
    	.Party = 3;             // Party options: 0 (exclude party kills), 1 (include party kills), 2 (same map only), 3 (screen area only)
    	.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).
    		40,100;
    	setarray .Modifier[0],  // Multipliers for Base Exp, Job Exp, and Zeny rewards.
    		getbattleflag("base_exp_rate")/100,getbattleflag("job_exp_rate")/100,60;
    	.mob_db$ =              // Table name of SQL mob database
    		(checkre(0))?"mob_db_re":"mob_db";
    	setarray .Shop[0],
              501,100;
    
    	.Blacklist$ =           // Blacklisted mob IDs.
    		"1062,1088,1183,1186,1200,1212,1220,1221,1234,1235,";
    
    	npcshopdelitem "mission_shop",512;
    	for (.@i = 0; .@i < getarraysize(.Shop); .@i += 2)
    		npcshopadditem "mission_shop", .Shop[.@i], .Shop[.@i+1];
    	end;
    }
    -	shop	mission_shop	-1,512:-1
    -	shop	mission_shop2	-1,512:-1

    But I cannot understand how to set the shop array for both Shop 1 and Shop 2. 

  8. We encountered a problem with this job changer. Even we already set ExpandedSecond to 0. Still we get the expanded classes.

    //===== rAthena Script =======================================
    //= Job Master
    //===== By: ==================================================
    //= Euphy
    //===== Current Version: =====================================
    //= 1.4
    //===== Compatible With: ===================================== 
    //= rAthena Project
    //===== Description: =========================================
    //= A fully functional job changer.
    //===== Additional Comments: =================================
    //= 1.0 Initial script.
    //= 1.1 Fixed reset on Baby job change.
    //= 1.2 Added Expanded Super Novice support and initial Kagerou/Oboro support.
    //= 1.3 Kagerou/Oboro added.
    //= 1.4 Rebellion added.
    //============================================================
    
    prontera,147,103,6	script	Job Master	402,{
    function Job_Menu;
    
    	mes "[Job Master]";
    	if (Class > Job_Soul_Linker) {
    		mes "No more jobs are available.";
    		close;
    	}
    	if (checkfalcon() || checkcart() || checkriding() || ismounting()) {
    		mes "Please remove your " +
    			((checkfalcon()) ? "falcon" : "") +
    			((checkcart()) ? "cart" : "") +
    			((checkriding()) ? "Peco" : "") +
    			((ismounting()) ? "mount" : "") +
    			" before proceeding.";
    		close;
    	}
    	if (.SkillPointCheck && SkillPoint) {
    		mes "Please use all your skill points before proceeding.";
    		close;
    	}
    
    	.@eac = eaclass();
    	.@i = ((.ThirdClass) ? roclass(.@eac&EAJ_UPPERMASK) : Class);
    	if (.@i >= Job_Knight && .@i <= Job_Crusader2) {
    		if (BaseLevel < .Rebirth[0] || JobLevel < .Rebirth[1]) {
    			.@blvl = .Rebirth[0] - BaseLevel;
    			.@jlvl = .Rebirth[1] - JobLevel;
    			mes "You need " +
    				((.@blvl > 0) ? .@blvl + " more base levels " + ((.@jlvl > 0) ? "/ " : "") : "") +
    				((.@jlvl > 0) ? .@jlvl + " more job levels " : "") + "to continue.";
    			close;
    		}
    		if (Class > Job_Crusader2) {
    			mes "Switch to third class?";
    			next;
    			Job_Menu(roclass(.@eac|EAJL_THIRD));
    			close;
    		}
    		while(1) {
    			mes "Select an option.";
    			next;
    			.@i = select(" ~ ^0055FFRebirth^000000:" + ((.ThirdClass) ? " ~ ^FF0000Third Class^000000" : "") + ": ~ ^777777Cancel^000000");
    			if (.@i == 3)
    				close;
    			mes "[Job Master]";
    			mes "Are you sure?";
    			next;
    			Job_Menu(((.@i == 1) ? Job_Novice_High : roclass(.@eac|EAJL_THIRD)));
    			mes "[Job Master]";
    		}
    	}
    	.@j1 = roclass(.@eac|EAJL_2_1);
    	.@j2 = roclass(.@eac|EAJL_2_2);
    	if ((.@eac&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE)
    		setarray .@exp[0], roclass(.@eac|EAJL_THIRD), 99;
    	if (Class == Job_Ninja || Class == Job_Gunslinger)
    		setarray .@exp[0], .@j1, 70;
    	if (.@exp[0] && .SecondExpanded) {
    		if (BaseLevel < .Rebirth[0] || JobLevel < .@exp[1]) {
    			.@blvl = .Rebirth[0] - BaseLevel;
    			.@jlvl = .@exp[1] - JobLevel;
    			mes "You need " +
    				((.@blvl > 0) ? .@blvl + " more base levels " + ((.@jlvl > 0) ? "/ " : "") : "") +
    				((.@jlvl > 0) ? .@jlvl + " more job levels " : "") + "to continue.";
    			close;
    		}
    		mes "Switch to " + jobname(.@exp[0]) + "?";
    		next;
    		Job_Menu(.@exp[0]);
    		close;
    	}
    	if (.@eac&EAJL_2)
    		if ((.@eac&(EAJL_UPPER|EAJL_BABY)) || roclass(.@eac|EAJL_UPPER) == -1) {
    			mes "No more jobs are available.";
    			close;
    		}
    	if ((.@eac&EAJ_BASEMASK) == EAJ_NOVICE) {
    		if (JobLevel < .JobReq[0])
    			mes "A job level of " + .JobReq[0] + " is required to change into the 1st Class.";
    		else if (Class == Job_Novice_High && .LastJob && lastJob) {
    			mes "Switch classes now?";
    			next;
    			Job_Menu(roclass((eaclass(lastJob)&EAJ_BASEMASK)|EAJL_UPPER));
    		} else {
    			switch(Class) {
    			case Job_Novice:
    				Job_Menu(
    					Job_Swordman,
    					Job_Mage,
    					Job_Archer,
    					Job_Acolyte,
    					Job_Merchant,
    					Job_Thief,
    					Job_Super_Novice,
    					Job_Taekwon,
    					Job_Gunslinger,
    					Job_Ninja,
    					Job_Baby
    				);
    				break;
    			case Job_Novice_High:
    				Job_Menu(
    					Job_Swordman_High,
    					Job_Mage_High,
    					Job_Archer_High,
    					Job_Acolyte_High,
    					Job_Merchant_High,
    					Job_Thief_High
    				);
    				break;
    			case Job_Baby:
    				Job_Menu(
    					Job_Baby_Swordman,
    					Job_Baby_Mage,
    					Job_Baby_Archer,
    					Job_Baby_Acolyte,
    					Job_Baby_Merchant,
    					Job_Baby_Thief,
    					Job_Super_Baby
    				);
    				break;
    			default:
    				mes "An error has occurred.";
    				break;
    			}
    		}
    		close;
    	}
    	if (roclass(.@eac|EAJL_2_1) == -1 || roclass(.@eac|EAJL_2_2) == -1)
    		mes "No more jobs are available.";
    	else if (!(.@eac&EAJL_2) && JobLevel < .JobReq[1])
    		mes "A job level of " + .JobReq[1] + " is required to change into the 2nd Class.";
    	else if (.LastJob && lastJob && (.@eac&EAJL_UPPER)) {
    		mes "Switch classes now?";
    		next;
    		Job_Menu(lastJob + Job_Novice_High);
    	} else
    		Job_Menu(.@j1, .@j2);
    	close;
    
    function Job_Menu {
    	while(1) {
    		if (getargcount() > 1) {
    			mes "Select a job.";
    			.@menu$ = "";
    			for (.@i = 0; .@i < getargcount(); .@i++)
    				.@menu$ = .@menu$ + " ~ " + jobname(getarg(.@i)) + ":";
    			.@menu$ = .@menu$+" ~ ^777777Cancel^000000";
    			next;
    			.@i = getarg(select(.@menu$) - 1, 0);
    			if (!.@i)
    				close;
    			if ((.@i == Job_Super_Novice || .@i == Job_Super_Baby) && BaseLevel < .SNovice) {
    				mes "[Job Master]";
    				mes "A base level of " + .SNovice + " is required to turn into a " + jobname(.@i) + ".";
    				close;
    			}
    			mes "[Job Master]";
    			mes "Are you sure?";
    			next;
    		} else
    			.@i = getarg(0);
    		if (select(" ~ Change into ^0055FF" + jobname(.@i) + "^000000 class: ~ ^777777" + ((getargcount() > 1) ? "Go back" : "Cancel") + "^000000") == 1) {
    			mes "[Job Master]";
    			mes "You are now " + callfunc("F_InsertArticle", jobname(.@i)) + "!";
    			if (.@i == Job_Novice_High && .LastJob)
    				lastJob = Class;
    			jobchange .@i;
    			if (.@i == Job_Novice_High)
    				resetlvl(1);
    			else if (.@i == Job_Baby) {
    				resetstatus;
    				resetskill;
    				set SkillPoint,0;
    			}
    			specialeffect2 EF_ANGEL2;
    			specialeffect2 EF_ELECTRIC;
    			if (.Platinum)
    				callsub Get_Platinum;
    			close;
    		}
    		if (getargcount() == 1)
    			return;
    		mes "[Job Master]";
    	}
    	end;
    }
    
    Get_Platinum:
    	skill "NV_FIRSTAID",1,SKILL_PERM;
    	switch (BaseClass) {
    	case Job_Novice:
    		if (Class != Job_Super_Novice)
    			skill "NV_TRICKDEAD",1,SKILL_PERM;
    		break;
    	case Job_Swordman:
    		skill "SM_MOVINGRECOVERY",1,SKILL_PERM;
    		skill "SM_FATALBLOW",1,SKILL_PERM;
    		skill "SM_AUTOBERSERK",1,SKILL_PERM;
    		break;
    	case Job_Mage:
    		skill "MG_ENERGYCOAT",1,SKILL_PERM;
    		break;
    	case Job_Archer:
    		skill "AC_MAKINGARROW",1,SKILL_PERM;
    		skill "AC_CHARGEARROW",1,SKILL_PERM;
    		break;
    	case Job_Acolyte:
    		skill "AL_HOLYLIGHT",1,SKILL_PERM;
    		break;
    	case Job_Merchant:
    		skill "MC_CARTREVOLUTION",1,SKILL_PERM;
    		skill "MC_CHANGECART",1,SKILL_PERM;
    		skill "MC_LOUD",1,SKILL_PERM;
    		break;
    	case Job_Thief:
    		skill "TF_SPRINKLESAND",1,SKILL_PERM;
    		skill "TF_BACKSLIDING",1,SKILL_PERM;
    		skill "TF_PICKSTONE",1,SKILL_PERM;
    		skill "TF_THROWSTONE",1,SKILL_PERM;
    		break;
    	default:
    		break;
    	}
    	switch (BaseJob) {
    	case Job_Knight:
    		skill "KN_CHARGEATK",1,SKILL_PERM;
    		break;
    	case Job_Priest:
    		skill "PR_REDEMPTIO",1,SKILL_PERM;
    		break;
    	case Job_Wizard:
    		skill "WZ_SIGHTBLASTER",1,SKILL_PERM;
    		break;
    	case Job_Blacksmith:
    		skill "BS_UNFAIRLYTRICK",1,SKILL_PERM;
    		skill "BS_GREED",1,SKILL_PERM;
    		break;
    	case Job_Hunter:
    		skill "HT_PHANTASMIC",1,SKILL_PERM;
    		break;
    	case Job_Assassin:
    		skill "AS_SONICACCEL",1,SKILL_PERM;
    		skill "AS_VENOMKNIFE",1,SKILL_PERM;
    		break;
    	case Job_Crusader:
    		skill "CR_SHRINK",1,SKILL_PERM;
    		break;
    	case Job_Monk:
    		skill "MO_KITRANSLATION",1,SKILL_PERM;
    		skill "MO_BALKYOUNG",1,SKILL_PERM;
    		break;
    	case Job_Sage:
    		skill "SA_CREATECON",1,SKILL_PERM;
    		skill "SA_ELEMENTWATER",1,SKILL_PERM;
    		skill "SA_ELEMENTGROUND",1,SKILL_PERM;
    		skill "SA_ELEMENTFIRE",1,SKILL_PERM;
    		skill "SA_ELEMENTWIND",1,SKILL_PERM;
    		break;
    	case Job_Rogue:
    		skill "RG_CLOSECONFINE",1,SKILL_PERM;
    		break;
    	case Job_Alchemist:
    		skill "AM_BIOETHICS",1,SKILL_PERM;
    		break;
    	case Job_Bard:
    		skill "BA_PANGVOICE",1,SKILL_PERM;
    		break;
    	case Job_Dancer:
    		skill "DC_WINKCHARM",1,SKILL_PERM;
    		break;
    	default:
    		break;
    	}
    	return;
    
    OnInit:
    	setarray .Rebirth[0],99,50;	// Minimum base level, job level to rebirth OR change to third class
    	setarray .JobReq[0],10,40;	// Minimum job level to turn into 1st class, 2nd class
    	.ThirdClass = 0;			// Enable third classes? (1: yes / 0: no)
    	.SecondExpanded = 0;		// Enable new expanded second classes: Ex. Super Novice, Kagerou/Oboro, Rebellion? (1: yes / 0: no)
    	.SNovice = 45;				// Minimum base level to turn into Super Novice
    	.LastJob = 1;				// Enforce linear class changes? (1: yes / 0: no)
    	.SkillPointCheck = 1;		// Force player to use up all skill points? (1: yes / 0: no)
    	.Platinum = 1;				// Get platinum skills automatically? (1: yes / 0: no)
    	end;
    }

     

  9. Hello. How to add buffs to healer? When I try, I always get the stone curse.

    I cannot find Sacrament on db/const. And when I try Chemical Protection, It doesn't work.

    skilleffect 300,0; sc_start SC_CHEMICALPROTECTION,240000,5;

     

  10. 4 minutes ago, Technoken said:

    Try to check themes\default\css\flux.css if you can change the background color from there.

    Some custom themes also have style.css located on the same path. Check if there's something you can modify there.

     

    It's on style.css. You saved me twice today. Thanks /repup

  11. 13 minutes ago, Technoken said:

    Is it default from Fluxcp? Can you send the whole image of the web and pointout which part?

    My theme is not default (thus, the reason I'm asking if there is a common place to find the background color). I bought it from EADev last year. I want to change just the background, so I made the top and bottom background. But there is that middle line (arrowed) that would be more prominent when there would be more contents.

  12. Hello again. There are these top and bottom background image. This middle thing should blend them but I do not know where to change it. Is there a common place/config (whatever it's called) on where to change this background color (if it is a background color)?

     

    flux.jpg

  13. 2 hours ago, Cyro said:

    make sure your access and port deatils of  mysql in fluxcp servers.php
    recheck 3306 port is opened 

    you can try changing the wait_timeout option within your mysql.ini file.

     

     

    15 minutes ago, Technoken said:

    Also check if ports are opened. Try to contact your host and ask them to open port 3306.

    If they tell you that your ports are open, try to execute this command via root on your ro server vps.

    
    setsebool -P httpd_can_network_connect=1

    If the above command doesn't work, try to execute this instead

    
    /usr/sbin/setsebool httpd_can_network_connect 1

     

     

    Thank you! The host opened the port for me. It's now installed. BIG HELP. Really, thank you so much, Technoken and Cyro.

  14. application.php

    <?php
    // This is the application configuration file. All values have been set to
    // the default, and should be changed as needed.
    return array(
        'ServerAddress'                => '19*.**.***.**',                // This value is the hostname:port under which Flux runs. (e.g., example.com or example.com:80)
        'BaseURI'                    => '',                        // The base URI is the base web root on which your application lies.
        'InstallerPassword'            => '****',        // Installer/updater password.
        'RequireOwnership'            => true,                    // Require the executing user to be owner of the FLUX_ROOT/data/ directory tree? (Better for security)
                                                                // WARNING: This will be mostly IGNORED on non-POSIX-compliant OSes (e.g. Windows).
        'DefaultLoginGroup'            => null,
        'DefaultCharMapServer'        => null,
        'DefaultLanguage'            => 'en_us',                    // Specify the default control panel language (see FLUX_ROOT/lang/ directory for available languages.)
        'SiteTitle'                    => 'Flux Control Panel',    // This value is only used if the theme decides to use it.
        'ThemeName'                    => array('default', 'bootstrap'), // Names of the themes you would like list for use in the footer. Themes are in FLUX_ROOT/themes.
        'ScriptTimeLimit'            => 0,                        // Script execution time limit. Specifies (in seconds) how long a page should run before timing out. (0 means forever)
        'MissingEmblemBMP'            => 'empty.bmp',                //
        'ItemIconNameFormat'        => '%d.png',                // The filename format for item icons (defaults to {itemid}.png).
        'ItemImageNameFormat'        => '%d.png',                // The filename format for item images (defaults to {itemid}.png).
        'MonsterImageNameFormat'    => '%d.gif',                // The filename format for monster images (defaults to {monsterid}.gif).
        'JobImageNameFormat'        => '%d.gif',                // The filename format for job images (defaults to {jobid}.gif).
        'ForceEmptyEmblem'            => false,                    // Forcefully display empty guild emblems, helpful when you don't have GD2 installed.
        'EmblemCacheInterval'        => 12,                        // Hourly interval to re-cache guild emblems (set to 0 to disable emblem cache).
        'SessionCookieExpire'        => 48,                        // Duration in hours.
        'AdminMenuGroupLevel'        => AccountLevel::LOWGM,        // The starting group ID for which module actions are moved into the admin menu for display.
        'DateDefaultTimezone'        => 'UTC',                    // The default timezone, consult the PHP manual for valid timezones: http://php.net/timezones (null for defaut system TZ)
        'DateFormat'                => 'Y-m-d',                    // Default DATE format to be displayed in pages.
        'DateTimeFormat'            => 'Y-m-d H:i:s',            // Default DATETIME format to be displayed in pages.
        'ShowSinglePage'            => true,                    // Whether or not to show the page numbers even if there's only one page.
        'ResultsPerPage'            => 20,                        // The number of results to display in a paged set, per page.
        'PagesToShow'                => 10,                        // The number of page numbers to display at once.
        'PageJumpMinimumPages'        => 1,                        // Minimum number of required pages before page jump box is shown. (0 to always show!)
        'ShowPageJump'                => true,                    // Whether or not to show the "Page Jump" box.
        'SingleMatchRedirect'        => true,                    // Whether or not to redirect to view action from index page if only one match is returned (and action is allowed).
        'SingleMatchRedirectItem'    => false,                    // Same as above, for item module.
        'SingleMatchRedirectMobs'    => false,                    // Same as above, for monster module.
        'UsernameAllowedChars'        => 'a-zA-Z0-9_',            // PCRE Format Pattern. default: 'a-zA-Z0-9_' (alphanumeric and underscore)
                                                                // WARNING: This string isn't escaped so be careful which chars you use!
                                                                // PCRE Pattern Ref: http://php.net/manual/en/pcre.pattern.php
        'MinUsernameLength'            => 4,                        // Minimum username length.
        'MaxUsernameLength'            => 23,                        // Maximum username length.
        'MinPasswordLength'            => 8,                        // Minimum password length.
        'MaxPasswordLength'            => 31,                        // Maximum password length.
        'PasswordMinUpper'            => 1,                        // Number of upper-case letters to require in passwords.
        'PasswordMinLower'            => 1,                        // Number of lower-case letters to require in passwords.
        'PasswordMinNumber'            => 1,                        // Number of numbers to require in passwords.
        'PasswordMinSymbol'            => 0,                        // Number of symbols to require in passwords.
        'GMMinPasswordLength'        => 8,                        // Minimum password length for GM accounts.
        'GMPasswordMinUpper'        => 1,                        // Number of upper-case letters to require in passwords for GM accounts.
        'GMPasswordMinLower'        => 1,                        // Number of lower-case letters to require in passwords for GM accounts.
        'GMPasswordMinNumber'        => 1,                        // Number of numbers to require in passwords for GM accounts.
        'GMPasswordMinSymbol'        => 1,                        // Number of symbols to require in passwords for GM accounts.
        'RandomPasswordLength'        => 16,                        // This is the length of the random password generated by the "Reset Password" feature. (NOTE: Hardcoded minimum value of 8)
        'AllowUserInPassword'        => false,                    // Whether or not to allow the password to contain the username. (NOTE: A case-insensitive search is performed)
        'AllowDuplicateEmails'        => false,                    // Whether or not to allow duplicate e-mails to be used in registration. (See Mailer config options)
        'RequireEmailConfirm'        => false,                    // Require e-mail confirmation during registration.
        'RequireChangeConfirm'        => false,                    // Require confirmation when changing e-mail addresses.
        'EmailConfirmExpire'        => 48,                        // E-mail confirmations expire hours. Unconfirmed accounts will expire after this period of time.
        'PincodeEnabled'        => true,                    // Whether or not the pincode system is enabled in your server. (Check your char_athena.conf file. Enabled by default.)
        'MailerFromAddress'            => 'noreply@localhost',        // The e-mail address displayed in the From field.
        'MailerFromName'            => 'MailerName',            // The name displayed with the From e-mail address.
        'MailerUseSMTP'                => false,                    // Whether or not to use a separate SMTP server for sending mail.
        'MailerSMTPUseSSL'            => false,                    // Whether or not mailer should connect using SSL (yes for GMail).
        'MailerSMTPUseTLS'            => false,                    // Same as above SSL setting, but for TLS.  This setting will override the SSL setting.
        'MailerSMTPPort'            => null,                    // When MailerUseSMTP is true: SMTP server port (mailer will default to 25).
        'MailerSMTPHosts'            => null,                    // When MailerUseSMTP is true: A string host or array of hosts (e.g., 'host1' or array('host1', 'backuphost')).
        'MailerSMTPUsername'        => null,                    // When MailerUseSMTP is true: Authorized username for SMTP server.
        'MailerSMTPPassword'        => null,                    // When MailerUseSMTP is true: Authorized password for SMTP server (for above user).
        'ServerStatusCache'            => 2,                        // Store a cached server status and refresh every X minutes.  Default: 2 minutes (value is measured in minutes).
        'ServerStatusTimeout'        => 2,                        // For each server, spend X amount of seconds to determine whether it's up or not.
        'SessionKey'                => 'fluxSessionData',        // Shouldn't be changed, just specifies the session key to be used for session data.
        'DefaultModule'                => 'main',                    // This is the module to execute when none has been specified.
        'DefaultAction'                => 'index',                    // This is the default action for any module, probably should leave this alone. (Deprecated)
        'GzipCompressOutput'        => false,                    // Whether or not to compress output using zlib.
        'GzipCompressionLevel'        => 9,                        // zlib compression level. (1~9)
        'OutputCleanHTML'            => true,                    // Use this if you have Tidy installed to clean your HTML output when serving pages.
        'ShowCopyright'                => true,                    // Whether or not to show the copyright footer.
        'ShowRenderDetails'            => true,                    // Shows the "page rendered in X seconds" and "number of queries executed: X" in the default theme.
        'UseCleanUrls'                => false,                    // Set to true if you're running Apache and it supports mod_rewrite and .htaccess files.
        'DebugMode'                    => false,                    // Set to false to minimize technical details from being output by Flux. WARNING: DO NOT USE THIS OPTION ON A PUBLICALLY-ACCESSIBLE CP.
        'UseCaptcha'                => true,                    // Use CAPTCHA image for account registration to prevent automated account creations. (Requires GD2/FreeType2)
        'UseLoginCaptcha'            => false,                    // Use CAPTCHA image for account logins. (Requires GD2/FreeType2)
        'EnableReCaptcha'            => false,                    // Enables the use of reCAPTCHA instead of Flux's native GD2 library (http://www.google.com/recaptcha)
        'ReCaptchaPublicKey'        => '...',                    // This is your reCAPTCHA public key [REQUIRED FOR RECAPTCHA] (sign up at http://www.google.com/recaptcha)
        'ReCaptchaPrivateKey'        => '...',                    // This is your reCAPTCHA private key [REQUIRED FOR RECAPTCHA] (sign up at http://www.google.com/recaptcha)
        'ReCaptchaTheme'            => 'white',                    // ReCaptcha theme to use (see: http://code.google.com/apis/recaptcha/docs/customization.html#Standard_Themes)
        'DisplaySinglePages'        => true,                    // Whether or not to display paging for single page results.
        'ForwardYears'                => 15,                        // (Visual) The number of years to display ahead of the current year in date inputs.
        'BackwardYears'                => 30,                        // (Visual) The number of years to display behind the current year in date inputs.
        'ColumnSortAscending'        => ' â–²',                    // (Visual) Text displayed for ascending sorted column names.
        'ColumnSortDescending'        => ' â–¼',                    // (Visual) Text displayed for descending sorted column names.
        'CreditExchangeRate'        => 1.0,                        // The rate at which credits are exchanged for dollars.
        'MinDonationAmount'            => 2.0,                        // Minimum donation amount. (NOTE: Actual donations made that are less than this account won't be exchanged)
        'DonationCurrency'            => 'USD',                    // Preferred donation currency. Only donations made in this currency will be processed for credit deposits.
        'MoneyDecimalPlaces'        => 2,                        // (Visual) Number of decimal places to display in amount.
        'MoneyThousandsSymbol'        => ',',                        // (Visual) Thousandths place separator (a period in European currencies).
        'MoneyDecimalSymbol'        => '.',                        // (Visual) Decimal separator (a comma in European currencies).
        'AcceptDonations'            => true,                    // Whether or not to accept donations.
        'PayPalIpnUrl'                => 'www.sandbox.paypal.com',// The URL for PayPal's IPN responses (www.paypal.com for live and www.sandbox.paypal.com for testing)
        'PayPalBusinessEmail'        => 'admin@localhost',        // Enter the e-mail under which you have registered your business account.
        'PayPalReceiverEmails'        => array(                    // These are the receiver e-mail addresses who are allowed to receive payment.
            //'admin2@localhost',                                // -- This array may be empty if you only use one e-mail
            //'admin3@localhost'                                // -- because your Business Email is also checked.
        ),
        'GStorageLeaderOnly'        => false,                    // Only allow guild leader to view guild storage rather than all members?
        'DivorceKeepChild'            => false,                    // Keep child after divorce?
        'DivorceKeepRings'            => false,                    // Keep wedding rings after divorce?
        'IpWhitelistPattern'        =>                            // PCRE Format Pattern. It's recommended you add your gameserver, webserver and server owner's IPs here.
            '(127\.0\.0\.1|0(\.[0\*]){3})',                        // WARNING: This string isn't escaped so be careful which chars you use!
                                                                // By default, whitelists 127.0.0.1 (localhost) and 0.0.0.0 (all interfaces; whitelists all wildcard bans that can achive this too)
        'AllowIpBanLogin'            => false,                    // Allow logging into account from banned IP.
        'AllowTempBanLogin'            => false,                    // Allow logging in of temporarily banned accounts.
        'AllowPermBanLogin'            => false,                    // Allow logging in of permanently banned accounts.
        'AutoRemoveTempBans'        => true,                    // Automatically remove expired temporary bans on certain pages.
        'ItemShopMaxCost'            => 99,                        // Max price an item can be sold for.
        'ItemShopMaxQuantity'        => 99,                        // Max quantity the item may be sold at once for.
        'ItemShopItemPerPage'        => 5,                        // The number of items to display per page in the "Item Shop" page.
        'HideFromWhosOnline'        => AccountLevel::LOWGM,        // Levels greater than or equal to this will be hidden from the "Who's Online" page.
        'HideFromMapStats'            => AccountLevel::LOWGM,        // Levels greater than or equal to this will be hidden from the "Map Stats" page.
        'EnableGMPassSecurity'        => AccountLevel::LOWGM,        // Levels greater than or equal to this will be required to use passwords that meet the earlier GM Password settings.
        'ChargeGenderChange'        => 0,                        // You can specify this as the number of credits to charge for gender change.  Can be 0 for free change.
        'BanPaymentStatuses'        => array(                    // Payment statuses that will automatically ban the account owner if received.
            'Cancelled_Reversal',                                // -- 'Cancelled_Reversal'
            'Reversed',                                            // -- 'Reversed'
        ),
    
        'HoldUntrustedAccount'        => 0,                        // This is the time in hours to hold a donation crediting process for, if the account
                                                                // isn't a trusted account. Specify 0 or false to disable this feature.
    
        'AutoUnholdAccount'            => false,                    // Enable this to auto-unhold an account and credit it if the transaction is still
                                                                // valid.  This only applies if you are using the HoldUnstrustedAccount feature.
                                                                // If you want to run a cron job instead, you can make a request to the '/donate/update'
                                                                // module/action with the InstallerPassword as the password to run the update task.
                                                                // With clean URLs: http://<server>/<baseURI>/donate/update?password=<InstallerPassword>
                                                                // Without clean URLs: http://<server>/<baseURI>?module=donate&action=update&password=<InstallerPassword>
                                                                // NOTE: This option is HIGHLY inefficient, it's recommended to run a cron job instead.
    
        'AutoPruneAccounts'            => false,                    // Enable this to automatically prune expired accounts. Enabling this is a performance
                                                                // performance killer. See 'AutoUnholdAccount' for running this task as a cron job,
                                                                // the module is 'account' and the action is 'prune'.
                                                                // With clean URLs: http://<server>/<baseURI>/account/prune?password=<InstallerPassword>
                                                                // Without clean URLs: http://<server>/<baseURI>?module=account&action=prune&password=<InstallerPassword>
    
        'ShopImageExtensions'        => array(                    // These are the image extensions allowed for uploading in the item shop.
            'png', 'jpg', 'gif', 'bmp', 'jpeg'
        ),
        'NoResetPassGroupLevel'        => AccountLevel::LOWGM,        // Minimum group level of account to prevent password reset using control panel.
    
        'CharRankingLimit'            => 20,                        //
        'GuildRankingLimit'            => 20,                        //
        'ZenyRankingLimit'            => 20,                        //
        'DeathRankingLimit'            => 20,                        //
        'AlchemistRankingLimit'        => 20,                        //
        'BlacksmithRankingLimit'    => 20,                        //
        'HomunRankingLimit'            => 20,                        //
    
        'RankingHideGroupLevel'        => AccountLevel::LOWGM,        //
        'InfoHideZenyGroupLevel'    => AccountLevel::LOWGM,        // Minimum group level of account to hide zeny from in server information page.
    
        'CharRankingThreshold'        => 0,                        // Number of days the character must have logged in within to be listed in character ranking. (0 = disabled)
        'ZenyRankingThreshold'        => 0,                        // Number of days the character must have logged in within to be listed in zeny ranking. (0 = disabled)
        'DeathRankingThreshold'        => 0,                        // Number of days the character must have logged in within to be listed in death ranking. (0 = disabled)
        'AlchemistRankingThreshold'    => 0,                        // Number of days the character must have logged in within to be listed in death ranking. (0 = disabled)
        'HomunRankingThreshold'        => 0,                        // Number of days the character must have logged in within to be listed in homunculus ranking. (0 = disabled)
    
        'HideTempBannedCharRank'    => false,                    // Hide temporarily banned characters from ranking.
        'HidePermBannedCharRank'    => true,                    // Hide permanently banned characters from ranking.
    
        'HideTempBannedZenyRank'    => false,                    // Hide temporarily banned characters from ranking.
        'HidePermBannedZenyRank'    => true,                    // Hide permanently banned characters from ranking.
    
        'HideTempBannedDeathRank'    => false,                    // Hide temporarily banned characters from ranking.
        'HidePermBannedDeathRank'    => true,                    // Hide permanently banned characters from ranking.
    
        'HideTempBannedAlcheRank'    => false,                    // Hide temporarily banned characters from ranking.
        'HidePermBannedAlcheRank'    => true,                    // Hide permanently banned characters from ranking.
    
        'HideTempBannedSmithRank'    => false,                    // Hide temporarily banned characters from ranking.
        'HidePermBannedSmithRank'    => true,                    // Hide permanently banned characters from ranking.
    
        'HideTempBannedStats'        => false,                    // Hide temporarily banned accounts from statistics.
        'HidePermBannedStats'        => true,                    // Hide permanently banned accounts from statistics.
    
        'HideTempBannedHomunRank'    => false,                    // Hide temporarily banned characters from ranking.
        'HidePermBannedHomunRank'    => true,                    // Hide permanently banned characters from ranking.
    
        'SortJobsByAmount'            => false,                    // Sort job class information on statistics page by descending quantity (false = Sort by Job ID).
    
        'CpLoginLogShowPassword'    => false,                    // Show password in CP login log (also see access.php's SeeCpLoginLogPass).
    
        'CpResetLogShowPassword'    => false,                    // Show password in CP "password resets" log (also see access.php's SeeCpResetPass).
    
        'CpChangeLogShowPassword'    => false,                    // Show password in CP "password changes" log (also see access.php's SeeCpChangePass).
    
        'AdminMenuNewStyle'            => true,                    // Use new-style admin menu;  Applies to 'default' theme.
        
    // Contact Form
        'ContactFormEmail'            => '[email protected]',                // This email address is where you want the form submissions to be sent.
        
    // News Options
        'CMSNewsOnHomepage'            => true,                    // Display News on Home Page instead of "You've Just Installed FluxCP" message?
        'CMSNewsType'                => 1,                        // Type = source of news feed:
                                                                //    1 = Built-in news page
                                                                //    2 = RSS Import
    
        'CMSNewsRSS'                => 'http://spriterepository.com/index.php?/rss/forums/1-tsr-news/',        // Use if CMSNewsType = 2
        'CMSNewsLimit'                => 4,                        // Number of news items to display
    
    // Service Desk
        'StaffReplyColour'            =>    'brown',
        'FontResolvedColour'        =>    'green',
        'FontPendingColour'            =>    'orange',
        'FontClosedColour'            =>    'darkgrey',
    
        // Discord Webhooks
        'DiscordUseWebhook'            => false,
        'DiscordWebhookURL'            => 'enter_webhook_url_from_discord_here',
        'DiscordSendOnRegister'            => true,
        'DiscordSendOnNewTicket'        => true,
        'DiscordSendOnWebCommand'        => true,
        'DiscordSendOnMarketing'        => true,
    
        // These are the main menu items that should be displayed by themes.
        // They route to modules and actions.  Whether they are displayed or
        // not at any given time depends on the user's account group level and/or
        // their login status.
        'MenuItems'        => array(
            'MainMenuLabel'        => array(
                'HomeLabel'            => array('module' => 'main'),
                //'ForumLabel'        => array('exturl' => 'http://www.fluxro.com/community'),    // External forum link
                //'ForumLabel'        => array('module' => 'forums'),                         // Built-in forum link
                'NewsLabel'            => array('module' => 'news'),
                // Sample items for pages function.
                'DownloadsLabel'        => array('module' => 'pages','action'=>'content&path=downloads'),
                'RulesLabel'            => array('module' => 'pages','action'=>'content&path=rules'),
                // End sample items for pages function.
                'ContactUsLabel'    => array('module' => 'contactform'),
            ),
            'AccountLabel'        => array(
                'AccountCreateHeading'        => array('module' => 'account', 'action' => 'create'),
                'LoginTitle'            => array('module' => 'account', 'action' => 'login'),
                'MyAccountLabel'    => array('module' => 'account', 'action' => 'view'),
                'HistoryLabel'        => array('module' => 'history'),
                'ServiceDeskLabel'    => array('module' => 'servicedesk'),
                'LogoutTitle'        => array('module' => 'account', 'action' => 'logout'),
            ),
            'DonationsLabel'        => array(
                'PurchaseLabel'        => array('module' => 'purchase'),
                'DonateLabel'        => array('module' => 'donate'),
            ),
            'InformationLabel'    => array(
                'ServerInfoLabel'    => array('module' => 'server', 'action' => 'info'),
                'ServerStatusLabel'    => array('module' => 'server', 'action' => 'status'),
                'WoeHoursLabel'        => array('module' => 'woe'),
                'CastlesLabel'        => array('module' => 'castle'),
                'WhosOnlineLabel'    => array('module' => 'character', 'action' => 'online'),
                'MapStaticsLabel'=> array('module' => 'character', 'action' => 'mapstats'),
                'RankingInfoLabel'    => array('module' => 'ranking', 'action' => 'character'),
                'VendingInfoLabel'    => array('module' => 'vending'),
            ),
            'DatabaseLabel'        => array(
                'ItemDatabaseLabel'    => array('module' => 'item'),
                'MobDatabaseLabel'    => array('module' => 'monster'),
                'Maps Database'     => array('module' => 'map'),
                'NPCs Database'     => array('module' => 'npcs'),
            ),
            'SocialLabel'        => array(
                'JoinUsInFacebookLabel'    => array('exturl' => 'https://www.facebook.com/<change_me>'),
                'RateUsOnRMSLabel'        => array('exturl' => '<link_to_RMS>'),
            ),
            'Service Desk'    => array(
                'ServiceDeskLabel'    => array('module' => 'servicedesk', 'action' => 'staffindex'),
            ),
            'Misc. Stuff'    => array(
                'AccountLabel'        => array('module' => 'account'),
                'CharacterLabel'    => array('module' => 'character'),
                'CPLogsLabel'        => array('module' => 'cplog'),
                'PagesLabel'        => array('module' => 'pages'),
                'NewsLabel'            => array('module' => 'news', 'action' => 'manage'),
                'GuildsLabel'        => array('module' => 'guild'),
                'IPBanListLabel'    => array('module' => 'ipban'),
                'rALogsLabel'        => array('module' => 'logdata'),
                'ReInstallLabel'    => array('module' => 'install', 'action' => 'reinstall'),
                'SendMailLabel'        => array('module' => 'mail'),
                'WCTitleLabel'        => array('module' => 'webcommands'),
                'Map Database Edit' => array('module' => 'admin_spawn'),
                //'Auction'        => array('module' => 'auction'),
                //'Economy'        => array('module' => 'economy')
            )
        ),
        
        // Sub-menu items that are displayed for any action belonging to a
        // particular module. The format it simple.
        'SubMenuItems'    => array(
            'map' => array(
                'index' => 'Map List',
                'view' => 'View Map',
            ),
            'npcs' => array(
                'index' => 'NPC List',
                'view' => 'View NPC',
            ),
            'history'        => array(
                'gamelogin'        => 'Game Logins',
                'cplogin'        => 'CP Logins',
                'emailchange'    => 'E-Mail Changes',
                'passchange'    => 'Password Changes',
                'passreset'        => 'Password Resets'
            ),
            'account'        => array(
                'index'            => 'List Accounts',
                'view'            => 'View Account',
                'changepass'    => 'Change Password',
                'changemail'    => 'Change E-mail',
                'changesex'        => 'Change Gender',
                'transfer'        => 'Transfer Credits',
                'xferlog'        => 'Credit Transfer History',
                'cart'            => 'Go to Shopping Cart',
                'login'            => 'Login',
                'create'        => 'Register',
                'resetpass'        => 'Reset Password',
                'resend'        => 'Resend E-mail Confirmation'
            ),
            'guild'            => array(
                'index'            => 'List Guilds',
                'export'        => 'Export Guild Emblems'
            ),
            'server'        => array(
                'status'        => 'View Status',
                'status-xml'    => 'View Status as XML'
            ),
            'logdata'        => array(
                'branch'        => 'Branches',
                'char'            => 'Characters',
                'chat'            => 'Chat Messages',
                'command'        => 'Commands',
                'inter'            => 'Interactions',
                'pick'            => 'Item Picks',
                'login'            => 'Logins',
                'mvp'            => 'MVP',
                'npc'            => 'NPC',
                'zeny'            => 'Zeny'
            ),
            'cplog'            => array(
                'paypal'        => 'PayPal Transactions',
                'create'        => 'Account Registrations',
                'login'            => 'Logins',
                'resetpass'        => 'Password Resets',
                'changepass'    => 'Password Changes',
                'changemail'    => 'E-mail Changes',
                'ban'            => 'Account Bans',
                'ipban'            => 'IP Bans'
            ),
            'purchase'        => array(
                'index'            => 'Shop',
                'cart'            => 'Go to Cart',
                'checkout'        => 'Checkout',
                'clear'            => 'Empty Cart',
                'pending'        => 'Pending Redemption'
            ),
            'donate'        => array(
                'index'            => 'Make a Donation',
                'history'        => 'Donation History',
                'trusted'        => 'Trusted PayPal E-mails'
            ),
            'ipban'            => array(
                'index'            => 'IP Ban List',
                'add'            => 'Add IP Ban'
            ),
            'ranking'        => array(
                'character'        => 'Characters',
                'death'            => 'Deaths',
                'alchemist'        => 'Alchemists',
                'blacksmith'    => 'Blacksmiths',
                'homunculus'    => 'Homunculus',
                'guild'            => 'Guilds',
                'zeny'            => 'Zeny'
            ),
            'item'            => array(
                'index'            => 'List Items',
                'add'            => 'Add Item',
            ),
            'pages'            => array(
                'index'            => 'Manage Pages',
                'add'            => 'Add New Page',
            ),
            'news'            => array(
                'index'            => 'Latest News',
                'manage'            => 'Manage',
                'add'            => 'Add News',
            ),
            'servicedesk'    => array(
                'staffindex'    => 'View Active',
                'staffviewclosed'=> 'View Closed',
                'staffsettings'    => 'Staff Settings',
                'catcontrol'    => 'Category Control',
            ),
            
            'vending'            => array(
                'index'            => 'Vendors',
            ),
        ),
        
        'AllowMD5PasswordSearch'        => false,
        'ReallyAllowMD5PasswordSearch'    => false, // Are you POSITIVELY sure?
    
        // Specifies which modules and actions should be ignored by Tidy
        // (enabled/disabled by the OutputCleanHTML option).
        'TidyIgnore'    => array(
            array('module' => 'captcha'),
            array('module' => 'guild', 'action' => 'emblem')
        ),
    
        // Job classes, loaded from another file to avoid cluttering this one.
        // There isn't normally a need to modify this file, unless it's been
        // modified in an update. (In English: DON'T TOUCH THIS.)
        'JobClasses'                    => include('jobs.php'),
    
        // Alchemist job classes, mostly used for alchemist rankings.
        // Should be left alone unless new alchemist-related job classes are introduced.
        'AlchemistJobClasses'            => include('jobs_alchemist.php'),
    
        // Blacksmith job classes, mostly used for blacksmith rankings.
        // Should be left alone unless new blacksmith-related job classes are introduced.
        'BlacksmithJobClasses'            => include('jobs_blacksmith.php'),
    
        // Gender-linked Job class IDs and their corresponding names.
        // Should be left alone unless new gender-specific job classes are introduced.
        'GenderLinkedJobClasses'        => include('jobs_gender_linked.php'),
    
        // Homunculus class IDs and their corresponding names.
        // Best not to mess with this either.
        'HomunClasses'                    => include('homunculus.php'),
    
        // Item Types with their corresponding names.
        // Shouldn't touch this either.
        'ItemTypes'                        => include('itemtypes.php'),
    
        // Special Item Types with their corresponding names (For Weapons & Ammo by default).
        // Shouldn't touch this either.
        'ItemTypes2'                    => include('itemtypes2.php'),
    
        // Common Equip Location Combinations with their corresponding names.
        // Shouldn't touch this unless you've added custom combinations.
        'EquipLocationCombinations'        => include('equip_location_combinations.php'),
    
        // Error Code -> Error Type mapping.
        // Shouldn't need touching, however modifying loginerrors.php should be relatively safe.
        'LoginErrors'                    => include('loginerrors.php'),
    
        // rA equip jobs mapping.
        'EquipJobs'                        => include('equip_jobs.php'),
    
        // rA equip locations mapping.
        'EquipLocations'                => include('equip_locations.php'),
    
        // rA equip upper mapping.
        'EquipUpper'                    => include('equip_upper.php'),
    
        // rA monster sizes mapping.
        'MonsterSizes'                    => include('sizes.php'),
    
        // rA monster races mapping.
        'MonsterRaces'                    => include('races.php'),
    
        // rA elements mapping.
        'Elements'                        => include('elements.php'),
    
        // rA attributes mapping.
        'Attributes'                    => include('attributes.php'),
    
        // rA monster modes mapping.
        'MonsterModes'                    => include('monstermode.php'),
    
        // Item shop categories.
        'ShopCategories'                => include('shopcategories.php'),
    
        // Item pick and zeny log types.
        'PickTypes'                        => include('picktypes.php'),
    
        // Castle names.
        'CastleNames'                    => include('castlenames.php'),
    
        // DON'T TOUCH. THIS IS FOR DEVELOPERS.
        'FluxTables'        => array(
            'CreditsTable'            => 'cp_credits',
            'CreditTransferTable'    => 'cp_xferlog',
            'ItemShopTable'            => 'cp_itemshop',
            'TransactionTable'        => 'cp_txnlog',
            'RedemptionTable'        => 'cp_redeemlog',
            'AccountCreateTable'    => 'cp_createlog',
            'AccountBanTable'        => 'cp_banlog',
            'IpBanTable'            => 'cp_ipbanlog',
            'DonationTrustTable'    => 'cp_trusted',
            'AccountPrefsTable'        => 'cp_loginprefs',
            'CharacterPrefsTable'    => 'cp_charprefs',
            'ResetPasswordTable'    => 'cp_resetpass',
            'ChangeEmailTable'        => 'cp_emailchange',
            'LoginLogTable'            => 'cp_loginlog',
            'ChangePasswordTable'    => 'cp_pwchange',
            'OnlinePeak'            => 'cp_onlinepeak',
            'CMSNewsTable'            => 'cp_cmsnews',
            'CMSPagesTable'            => 'cp_cmspages',
            'CMSSettingsTable'        => 'cp_cmssettings',
            'ServiceDeskTable'        => 'cp_servicedesk',
            'ServiceDeskATable'        => 'cp_servicedeska',
            'ServiceDeskCatTable'    => 'cp_servicedeskcat',
            'ServiceDeskSettingsTable'    => 'cp_servicedesksettings',
            'WebCommandsTable'        => 'cp_commands',
        )
    );
    ?>

    servers.php
     

    <?php
    return array(
        // Example server configuration. You may have more arrays like this one to
        // specify multiple server groups (however they should share the same login
        // server whilst they are allowed to have multiple char/map pairs).
        array(
            'ServerName'     => 'FluxRO',
            // Global database configuration (excludes logs database configuration).
            'DbConfig'       => array(
                //'Socket'     => '/tmp/mysql.sock',
                //'Port'       => 3306,
                //'Encoding'   => 'utf8', // Connection encoding -- use whatever here your MySQL tables collation is.
                'Convert'    => 'utf8',
                    // -- 'Convert' option only works when 'Encoding' option is specified and iconv (http://php.net/iconv) is available.
                    // -- It specifies the encoding to convert your MySQL data to on the website (most likely needs to be utf8)
                'Hostname'   => '17*.***.**.***',
                'Username'   => 'root',
                'Password'   => '****',
                'Database'   => 'ragnarok',
                'Persistent' => true,
                'Timezone'   => null // Example: '+0:00' is UTC.
                // The possible values of 'Timezone' is as documented from the MySQL website:
                // "The value can be given as a string indicating an offset from UTC, such as '+10:00' or '-6:00'."
                // "The value can be given as a named time zone, such as 'Europe/Helsinki', 'US/Eastern', or 'MET'." (see below continuation!)
                // **"Named time zones can be used only if the time zone information tables in the mysql database have been created and populated."
            ),
            // This is kept separate because many people choose to have their logs
            // database accessible under different credentials, and often on a
            // different server entirely to ensure the reliability of the log data.
            'LogsDbConfig'   => array(
                //'Socket'     => '/tmp/mysql.sock',
                //'Port'       => 3306,
                //'Encoding'   => null, // Connection encoding -- use whatever here your MySQL tables collation is.
                'Convert'    => 'utf8',
                    // -- 'Convert' option only works when 'Encoding' option is specified and iconv (http://php.net/iconv) is available.
                    // -- It specifies the encoding to convert your MySQL data to on the website (most likely needs to be utf8)
                'Hostname'   => '17*.***.**.***'',
                'Username'   => 'root',
                'Password'   => '****r',
                'Database'   => 'ragnarok',
                'Persistent' => true,
                'Timezone'   => null // Possible values is as described in the comment in DbConfig.
            ),
            // Login server configuration.
            'LoginServer'    => array(
                'Address'  => '17*.***.**.***'',
                'Port'     => 6900,
                'UseMD5'   => false,
                'NoCase'   => true, // rA account case-sensitivity; Default: Case-INsensitive (true).
                'GroupID'  => 0,    // Default account group ID during registration.
                //'Database' => 'ragnarok'
            ),
            'CharMapServers' => array(
                array(
                    'ServerName'      => 'FluxRO',
                    'Renewal'         => true,
                    'MaxCharSlots'    => 9,
                    'DateTimezone'    => null, // Specifies game server's timezone for this char/map pair. (See: http://php.net/timezones)
                    //'ResetDenyMaps'   => 'sec_pri', // Defaults to 'sec_pri'. This value can be an array of map names.
                    //'Database'        => 'ragnarok', // Defaults to DbConfig.Database
                    'ExpRates' => array(
                        'Base'        => 100, // Rate at which (base) exp is given
                        'Job'         => 100, // Rate at which job exp is given
                        'Mvp'         => 100  // MVP bonus exp rate
                    ),
                    'DropRates' => array(
                        // The rate the common items (in the ETC tab, besides card) are dropped
                        'Common'      => 100,
                        'CommonBoss'  => 100,
                        // The rate healing items (that restore HP or SP) are dropped
                        'Heal'        => 100,
                        'HealBoss'    => 100,
                        // The rate usable items (in the item tab other then healing items) are dropped
                        'Useable'     => 100,
                        'UseableBoss' => 100,
                        // The rate at which equipment is dropped
                        'Equip'       => 100,
                        'EquipBoss'   => 100,
                        // The rate at which cards are dropped
                        'Card'        => 100,
                        'CardBoss'    => 100,
                        // The rate adjustment for the MVP items that the MVP gets directly in their inventory
                        'MvpItem'     => 100
                    ),
                    'CharServer'      => array(
                        'Address'     => '17*.***.**.***'',
                        'Port'        => 6121
                    ),
                    'MapServer'       => array(
                        'Address'     => '17*.***.**.***'',
                        'Port'        => 5121
                    ),
                    // -- WoE days and times --
                    // First parameter: Starding day 0=Sunday / 1=Monday / 2=Tuesday / 3=Wednesday / 4=Thursday / 5=Friday / 6=Saturday
                    // Second parameter: Starting hour in 24-hr format.
                    // Third paramter: Ending day (possible value is same as starting day).
                    // Fourth (final) parameter: Ending hour in 24-hr format.
                    // ** (Note, invalid times are ignored silently.)
                    'WoeDayTimes'   => array(
                        //array(0, '12:00', 0, '14:00'), // Example: Starts Sunday 12:00 PM and ends Sunday 2:00 PM
                        //array(3, '14:00', 3, '15:00')  // Example: Starts Wednesday 2:00 PM and ends Wednesday 3:00 PM
                    ),
                    // Modules and/or actions to disallow access to during WoE.
                    'WoeDisallow'   => array(
                        array('module' => 'character', 'action' => 'online'),  // Disallow access to "Who's Online" page during WoE.
                        array('module' => 'character', 'action' => 'mapstats') // Disallow access to "Map Statistics" page during WoE.
                    )
                )
            )
        )
    );
    ?>
    2 hours ago, Cyro said:

    pasting your application.php and servers.php and logs here would be helpful 

     

    2 hours ago, Cyro said:

    make sure your access and port deatils of  mysql in fluxcp servers.php
    recheck 3306 port is opened 

    you can try changing the wait_timeout option within your mysql.ini file.

     
     
     

    I really cannot understand this. I might make it worse if I try this.

  15. 1 hour ago, Technoken said:

    You might need to allow permission for the two database to communicate.

    Check the link I added to my post above. But I suggest to only allow your webhost IP. Not all IP. 

     

    I tried to allow just the webhost IP and all IPs. Still won't work.

    flux.jpg

  16. 10 minutes ago, Technoken said:

    Does your server trunk hosted on the same VPS with the database?
    You can use 127.0.0.1 as the host name if they're on the same vps.

    And try to put your WAN ip in  'ServerAddress' instead of the hostname.

    2

    My Webhost is different from my VPS with the database. I already tried using my Web IP in the  'ServerAddress', still does not work.

  17. Hello. I need help installing the FluxCP. I am having the Error: PDOException.

    application.php

        'ServerAddress'                => 'myservername.com',

    servers.php

    'DbConfig' and 'LogsDbConfig'
                'Hostname'   => '17*.***.**.***' (used VPS IP)
                'Username'   => 'root',
                'Password'   => '****,
                'Database'   => 'ragnarok',
    'LoginServer'
    'CharMapServers'
                'Address'  => ''17*.***.**.***' (used VPS IP)

    flux.jpg

×
×
  • Create New...