Get Script Name? (Or cancel FS Load)
#1

Hello, SA-MP forums.

I'm hoping there's some way I can cancel a script from loading while it's in OnFilterscriptInit(). I have tried returning 0, but events still trigger, which is the root of my problem.

Код:
new iniString[30];

public OnFilterScriptInit() {
	if (!fexist(INI_FILE)) {
		print("The .ini file does not exist! Please create it.");
		//Returning 0 does not help, the filterscript still loads, ODR still triggers and crashes the server.
                //Since the .ini file doesn't load, the "iniString" is empty.
	}
}

//Later...

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
	if (!CallRemoteFunction(iniString, "i", playerid)) { //Server crashes here because it couldn't load "iniString", which is usually in the (now nonexistant) .ini file
	    return 0;
	}
	
	//Stuff..
}
I want to stop the script from loading in OnFilterscriptInit() if there is no .ini file so that it doesn't call OnDialogResponse, and therefore doesn't crash the server.

Setting a bool:loaded variable and skipping the CallRemoteFunction call is one solution, but it would still load the filterscript, which is what I'm trying to prevent. I was also thinking of doing this:

Код:
new scriptName[50], command[63];
GetServerVarAsString("filterscripts", scriptName, sizeof(scriptname));
format(command, sizeof(command), "rcon unloadfs %s", scriptName);
SendRconCommand(command);
By exploiting a bug, that would execute "rcon unloadfs [scriptName]", which would unload the FS. But that's a very very bad practice to do, depending on bugs to solve a scripting problem. In addition, the FS would HAVE to be the first one loaded, which I don't want.

Any ideas on how I can get the FS to cancel loading?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)