Reloading filterscript does not have effect
#1

Hi, I have a little problem.
When I reload a filterscript in-game, RCON says it's been reloaded.
However, it does not have effect until I restart the server.
But other filterscripts do have effect when I reload them.
What's up?
Reply
#2

Well, we need to see your filterscript code... god wont just talk to us to tell you to do X then Y...
Reply
#3

Here it is...

Код:
// Player commands filterscript by Superthijs.
// Contains the /ADMINMSG, /CMDLIST, /GETDISTANCE, /SETCOLORS, /PAY, /PM,
// /SUICIDE, /REPAIR and /RQPAY commands.

#define FILTERSCRIPT

#include <a_samp>
#include "../include/sscanf.inc"

public OnPlayerCommandText(playerid, cmdtext[])
{
	new cmd[256], params[256];
	sscanf(cmdtext, "ss", cmd, params);

	// Send a message to all admin players
	if(!strcmp(cmd, "/ADMINMSG", true))
	{
	    new Message[256];
	    if(sscanf(params, "s", Message)) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/ADMINMSG{FFFF00}: Usage: {FF4040}/ADMINMSG [message]");
	    new SenderName[MAX_PLAYER_NAME];
	    GetPlayerName(playerid, SenderName, sizeof(SenderName));
	    new String[1024];
	    format(String, sizeof(String), "{00BBFF}Message from {FF40FF}%s {00BBFF}to all admin players: {FFFFFF}%s", SenderName, Message);
	    for(new i; i < MAX_PLAYERS; i = i + 1)
	    {
	        if(IsPlayerConnected(i) == 0) continue;
	        if(IsPlayerAdmin(i) == 0) continue;
	    	// if(i == playerid) continue;
	    	SendClientMessage(i, 0xFFFFFFFF, String);
	    }
	    format(String, sizeof(String), "{FF0000}/ADMINMSG{FFFF00}: Message sent to all admins: {FFFFFF}%s", Message);
	    SendClientMessage(playerid, 0xFFFFFFFF, String);
	    return 1;
	}

	// Retrieve a list of commands
	if(!strcmp(cmdtext, "/FF0000LIST", true))
	{
	    SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/FF0000LIST /GETDISTANCE /PAY /PM /REPAIR /RQPAY /SETCOLORS /SUICIDE");
	    return 1;
	}

	// Get the distance (in meters) between the current player and another one
	if(!strcmp(cmd, "/GETDISTANCE", true))
	{
	    new TargetID;
	    if(sscanf(params, "d", TargetID)) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/GETDISTANCE{FFFF00}: Usage: {FF4040}/GETDISTANCE [player ID]");
	    if(IsPlayerConnected(TargetID) == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/GETDISTANCE{FFFF00}: Invalid player ID.");
	    if(TargetID == playerid) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/GETDISTANCE{FFFF00}: You cannot get the distance to yourself.");
	    new Float:X1, Float:X2, Float:Y1, Float:Y2, Float:Z1, Float:Z2, Float:Distance;
	    GetPlayerPos(playerid, X1, Y1, Z1);
	    GetPlayerPos(TargetID, X2, Y2, Z2);
	    X1 = X1 - X2;
	    Y1 = Y1 - Y2;
	    Z1 = Z1 - Z2;
	    Distance = floatsqroot((X1 * X1) + (Y1 * Y1) + (Z1 * Z1));
	    Distance = floatround(Distance, floatround_round);
	    new TargetName[MAX_PLAYER_NAME];
	    GetPlayerName(TargetID, TargetName, sizeof(TargetName));
	    new String[1024];
            format(String, sizeof(String), "{FF0000}/GETDISTANCE{FFFF00}: You are {00FFFF}%f {FFFF00}meters away from {NAME}%s{FFFF00}.", Distance, TargetName);
	    SendClientMessage(playerid, 0xFFFFFFFF, String);
	    return 1;
	}

	// Set the colors of the current vehicle
	if(!strcmp(cmd, "/SETCOLORS", true))
	{
	    new Color1, Color2;
	    if(sscanf(params, "dd", Color1, Color2)) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/SETCOLORS{FFFF00}: Usage: {FF4040}/SETCOLORS [color 1] [color 2]");
	    if(IsPlayerInAnyVehicle(playerid) == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/SETCOLORS{FFFF00}: You are not in a vehicle.");
	    if(Color1 < 0 || Color1 > 255 || Color2 < 0 || Color2 > 255) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/SETCOLORS{FFFF00}: Invalid color ID.");
	    ChangeVehicleColor(GetPlayerVehicleID(playerid), Color1, Color2);
	    new String[1024];
	    format(String, sizeof(String), "{FF0000}/SETCOLORS{FFFF00}: You have changed the colors of your vehicle to {MONEY}%d %d{FFFF00}.", Color1, Color2);
	    SendClientMessage(playerid, 0xFFFFFFFF, String);
	    return 1;
 	}

	// Pay another player
	if(!strcmp(cmd, "/PAY", true))
	{
	    new player;
	    new amount;
	    new money = GetPlayerMoney(playerid);
	    if(sscanf(params, "dd", player, amount)) return SendClientMessage(playerid,0xFFFFFFFF,"{FF0000}/PAY{FFFF00}: Usage: {FF4040}/PAY [player ID] [amount]{FFFF00}.");
     	    if(IsPlayerConnected(player)==0) return SendClientMessage(playerid,0xFFFFFFFF,"{FF0000}/PAY{FFFF00}: Invalid player ID.");
	    if(player == playerid) return SendClientMessage(playerid,0xFFFFFFFF,"{FF0000}/PAY{FFFF00}: You cannot pay yourself.");
	    if(amount < 1) return SendClientMessage(playerid,0xFFFFFFFF,"{FF0000}/PAY{FFFF00}: Invalid amount.");
   	    if(money - amount < 0) return SendClientMessage(playerid,0xFFFFFFFF,"{FF0000}/PAY{FFFF00}: You do not have enough money.");
	    GivePlayerMoney(player,amount);
	    GivePlayerMoney(playerid,-amount);
   	    new name[MAX_PLAYER_NAME];
   	    new sendername[MAX_PLAYER_NAME];
   	    GetPlayerName(player,name,sizeof(name));
   	    GetPlayerName(playerid,sendername,sizeof(sendername));
   	    new String[1024];
	    format(String,sizeof(String),"{FF0000}/PAY{FFFF00}: You have paid {00FFFF}$%d {FFFF00}to {FF40FF}%s{FFFF00}.", amount, name);
	    SendClientMessage(playerid,0xFFFFFFFF,String);
	    format(String,sizeof(String),"{FF40FF}%s {FFFF00}has paid you {00FFFF}$%d{FFFF00}.", sendername, amount);
	    SendClientMessage(player,0xFFFFFFFF,String);
	    return 1;
	}
	
	// Send a PM to another player
	if(!strcmp(cmd, "/PM", true))
	{
	    new TargetID, PM[256];
	    if(sscanf(params, "ds", TargetID, PM)) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/PM{FFFF00}: Usage: {FF4040}/PM [player ID] [message]");
	    if(IsPlayerConnected(TargetID) == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/PM{FFFF00}: Invalid player ID.");
	    if(TargetID == playerid) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/PM{FFFF00}: You cannot PM yourself.");
	    new SenderName[MAX_PLAYER_NAME];
	    GetPlayerName(playerid, SenderName, sizeof(SenderName));
	    new String[1024];
	    format(String, sizeof(String), "{FFFF00}PM from {FF40FF}%s{FFFF00}: {FFFFFF}%s", SenderName, PM);
	    SendClientMessage(TargetID, 0xFFFFFFFF, String);
	    new TargetName[MAX_PLAYER_NAME];
	    GetPlayerName(TargetID, TargetName, sizeof(TargetName));
	    format(String, sizeof(String), "{FF0000}/PM{FFFF00}: PM sent to {FF40FF}%s{FFFF00}: {FFFFFF}%s", TargetName, PM);
	    SendClientMessage(playerid, 0xFFFFFFFF, String);
	    return 1;
	}

	// Kill the current player
	if(!strcmp(cmdtext, "/SUICIDE", true))
        {
	    SetPlayerHealth(playerid,0);
            SendClientMessage(playerid,0xFFFFFFFF,"{FF0000}/SUICIDE{FFFF00}: You have killed yourself.");
	    return 1;
  	}

	// Repair the current vehicle
	if(!strcmp(cmdtext, "/REPAIR", true))
	{
	    if(IsPlayerInAnyVehicle(playerid)  == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/REPAIR{FFFF00}: You are not in a vehicle.");
	    new Float:VehicleHealth;
	    GetVehicleHealth(GetPlayerVehicleID(playerid), VehicleHealth);
	    if(VehicleHealth == 1000) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/REPAIR{FFFF00}: Your vehicle does not need repair.");
	    new Bill = floatround((1000 - VehicleHealth) / 10, floatround_round);
	    if(Bill == 0) Bill = 1;
	    new String[1024];
	    if(GetPlayerMoney(playerid) - Bill < 0)
	    {
	        format(String, sizeof(String), "{FF0000}/REPAIR{FFFF00}: With the current vehicle state, you need at least {00FFFF}$%d{FFFF00}.", Bill);
	        SendClientMessage(playerid, 0xFFFFFFFF, String);
	        return 1;
            }
	    RepairVehicle(GetPlayerVehicleID(playerid));
	    GivePlayerMoney(playerid, 0 - Bill);
	    format(String, sizeof(String), "{FF0000}/REPAIR{FFFF00}: You have repaired your vehicle, {00FFFF}-$%d{FFFF00}.", Bill);
	    SendClientMessage(playerid, 0xFFFFFFFF, String);
	    SetPVarInt(playerid, "MoneySpentOnVehicleRepair", GetPVarInt(playerid, "MoneySpentOnVehicleRepair") + Bill);
	    return 1;
	}

	// Request another player to pay you
	if(!strcmp(cmd, "/RQPAY", true))
        {
            new TargetID, Amount;
	    if(sscanf(params, "dd", TargetID, Amount)) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/RQPAY{FFFF00}: Usage: {FF4040}/RQPAY [player ID] [amount]");
	    if(IsPlayerConnected(TargetID) == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/RQPAY{FFFF00}: Invalid player ID.");
	    if(TargetID == playerid) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/RQPAY{FFFF00}: You cannot send a payment request to yourself.");
	    if(Amount < 1) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/RQPAY{FFFF00}: Invalid amount.");
	    new TargetName[MAX_PLAYER_NAME];
            GetPlayerName(TargetID, TargetName, sizeof(TargetName));
            new String[1024];
	    format(String, sizeof(String), "{FF0000}/RQPAY{FFFF00}: You have requested {FF40FF}%s {FFFF00}to pay you {00FFFF}$%d{FFFF00}.", TargetName, Amount);
	    SendClientMessage(playerid, 0xFFFFFFFF, String);
	    new SenderName[MAX_PLAYER_NAME];
	    GetPlayerName(playerid, SenderName, sizeof(SenderName));
	    format(String, sizeof(String), "{FF40FF}%s {FFFF00}has requested you to pay {00FFFF}$%d{FFFF00}.", SenderName, Amount);
 	    SendClientMessage(TargetID, 0xFFFFFFFF, String);
	    return 1;
	}
	
	return 0;
}
Reply
#4

Or could this be the problem?
I've put this code in the gamemode script to execute when the player types an invalid command.

Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
	return SendClientMessage(playerid, 0xFFFFFFFF, "{FFFF00}Unknown command. Type {FF0000}/CMDLIST {FFFF00}for a list of commands.");
}
Reply
#5

Somebody... Please?
Reply
#6

Well i had this too sometime... There is an error... But it doesnt show up in compiler
Reply
#7

Did you reload using "/rcon reloadfs (fsname)" ? That can be bugged sometimes.
Remember to "/rcon unloadfs (fsname)" and "/rcon loadfs (fsname)".
Reply
#8

Yeah, 'reloadfs' sometimes says 'unload failed' when it's loaded. I'll try 'unloadfs' and 'reloadfs'.
Reply
#9

Well, that doesn't work either. I'm confused.
Reply
#10

There's a limit of 16 filterscripts. Are you exceeding this?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)