Dunno how to fix errors in compiler. plz help
#1

Hey guys, I've made an admin system for my server, heres the script, I put it in pastebin:

http://pastebin.com/NQFdBJ1T

But when I compile the whole thing, this comes up:


Код:
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(187) : error 017: undefined symbol "PInfo"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(187) : warning 215: expression has no effect
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(187) : error 001: expected token: ";", but found "]"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(187) : error 029: invalid expression, assumed zero
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(187) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664          Copyright © 1997-2006, ITB CompuPhase


4 Errors.
Can you please help!
Reply
#2

You have defined your variables inside the #if defined FILTERSCRIPT.
To fix the errors, simply remove the #if defined, #else and #endif lines from your script.
Reply
#3

I've done it, but I get so many errors, can you do it and paste it in pastebin for me plz
Reply
#4

Quote:
Originally Posted by Goldino
Посмотреть сообщение
I've done it, but I get so many errors, can you do it and paste it in pastebin for me plz
It's quite simple. Remove these lines (delete them)

pawn Код:
#if defined FILTERSCRIPT

#else

#endif
Remove them one by one. Don't remove anything else.
Reply
#5

Then this comes up?
Код:
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(50) : error 017: undefined symbol "dini_Exists"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(55) : error 017: undefined symbol "dini_Exists"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(57) : error 017: undefined symbol "dini_Create"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(58) : warning 217: loose indentation
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(58) : error 017: undefined symbol "dini_Set"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(59) : error 017: undefined symbol "dini_IntSet"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(60) : error 017: undefined symbol "dini_IntSet"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(61) : error 017: undefined symbol "dini_IntSet"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(80) : error 017: undefined symbol "dini_Exists"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(86) : warning 217: loose indentation
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(86) : error 017: undefined symbol "dini_Get"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(86) : error 033: array must be indexed (variable "pass")
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(87) : error 017: undefined symbol "dini_Exists"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(95) : error 017: undefined symbol "dini_IntSet"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(97) : error 017: undefined symbol "dini_Int"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(115) : error 017: undefined symbol "strtok"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(122) : error 017: undefined symbol "dini_IntSet"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(114) : warning 203: symbol is never used: "Index"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(132) : error 017: undefined symbol "strtok"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(131) : warning 203: symbol is never used: "Index"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(148) : error 017: undefined symbol "strtok"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(147) : warning 203: symbol is never used: "Index"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(189) : error 017: undefined symbol "dini_Exists"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(196) : error 017: undefined symbol "dini_Exists"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(212) : warning 217: loose indentation
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(212) : error 017: undefined symbol "dini_Exists"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(214) : error 017: undefined symbol "dini_IntSet"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(217) : warning 217: loose indentation
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(248) : error 017: undefined symbol "strtok"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(248) : error 033: array must be indexed (variable "cmd")
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(247) : warning 203: symbol is never used: "idx"
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(247 -- 256) : error 010: invalid function or declaration
C:\DOCUME~1\DANNY~1.YOU\MYDOCU~1\TESTAD~1\FILTER~1\admin.pwn(247 -- 256) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


25 Errors.
and heres the whole script:

Код:
// This is a comment
// uncomment the line below if you want to write a filterscript

#include <a_samp>

#if defined FILTERSCRIPT

#define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
#define GREY 0xAFAFAFAA
#define GREEN 0x33AA33AA
#define YELLOW 0xFFFF00AA
#define WHITE 0xFFFFFFAA
#define LIGHTBLUE 0x33CCFFAA
#define ORANGE 0xFF9900AA

enum gPInfo
{
    Logged,
    Regged,
    Level
};
new PInfo[MAX_PLAYERS][gPInfo];

public OnFilterScriptInit()
{
	print("\n--------------------------------------");
	print(" Blank Filterscript by your name here");
	print("--------------------------------------\n");
	return 1;
}

public OnFilterScriptExit()
{
	return 1;
}

#else

main()
{
	print("\n----------------------------------");
	print(" Blank Gamemode by your name here");
	print("----------------------------------\n");
}

#endif

dcmd_register(playerid,params[])
{
    new file[256],n[MAX_PLAYER_NAME];
    GetPlayerName(playerid,n,MAX_PLAYER_NAME);
    format(file,sizeof(file),"MyAdmin/Users/%s.txt",n);
    if(dini_Exists(file)) return SendClientMessage(playerid,YELLOW,"You are already registered!");
    if(PInfo[playerid][Regged] == 1) return SendClientMessage(playerid,LIGHTBLUE,"You are already registered!");
    if(PInfo[playerid][Logged] == 1) return SendClientMessage(playerid,ORANGE,"You are already registered, and logged in!");
    if(strlen(params))
    {
        if(!dini_Exists(file))
        {
    dini_Create(file);
            dini_Set(file,"Password",params);
            dini_IntSet(file,"Regged",1);
            dini_IntSet(file,"Logged",0);
            dini_IntSet(file,"Level",0);
            SendClientMessage(playerid,LIGHTBLUE,"Congratulations, you have just registered, please /login");
            PInfo[playerid][Regged] = 1;
            return 1;
        }
        }
    else
    {
        SendClientMessage(playerid,GREY,"USAGE: /register <Password>");
        return 1;
    }
    return 1;
}

dcmd_login(playerid,params[])
{
    new file[256],n[MAX_PLAYER_NAME];
    GetPlayerName(playerid,n,MAX_PLAYER_NAME);
    format(file,sizeof(file),"MyAdmin/Users/%s.txt",n);
    if(!dini_Exists(file)) return SendClientMessage(playerid,YELLOW,"You are not registered! Please /register");
    if(PInfo[playerid][Logged] == 1) return SendClientMessage(playerid,LIGHTBLUE,"You are already logged in!");
    if(PInfo[playerid][Regged] == 0) return SendClientMessage(playerid,ORANGE,"You are not registered! Please /register");
    if(strlen(params))
    {
    new pass[256];
        pass = dini_Get(file,"Password");
        if(dini_Exists(file))
        {
        if(strcmp(params,pass,false) != 0)
            {
                SendClientMessage(playerid,YELLOW,"Wrong Password!");
            }
            else
            {
                dini_IntSet(file,"Logged",1);
                PInfo[playerid][Logged] = 1;
                PInfo[playerid][Level] = dini_Int(file,"Level");
                SendClientMessage(playerid,YELLOW,"You have now logged in!");
                return 1;
            }
            }
    }
    else
    {
        SendClientMessage(playerid,GREY,"USAGE: /login <Password>");
        return 1;
    }
    return 1;
}

dcmd_setlevel(playerid,params[])
{
    new level,id,file[256],n[MAX_PLAYER_NAME];//creating the new variabls
    new tmp[256], tmp2[256], Index,str[50];// creating the new variables
    tmp = strtok(params,Index), tmp2 = strtok(params,Index),id = strval(tmp),level = strval(tmp2);// setting them to strtok so we can use them as parameters of our command
    GetPlayerName(id,n,MAX_PLAYER_NAME);//getting the players name
    format(file,sizeof(file),"Admin/Users/%s.txt",n);//formatting the file
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,GREY,"You are not an RCON admin!");//if the player is not rcon admin
    if(!strlen(params)) return SendClientMessage(playerid,GREY,"USAGE: /setlevel <ID> <Level>");// if the string is empty
    if(!IsPlayerConnected(id))return SendClientMessage(playerid,GREY,"You have entered an incorrect ID"); //if the id is not connected
    PInfo[id][Level] = level;//sets the level of the player
    dini_IntSet(file,"Level",level);//saves the new level to the file
    format(str,sizeof(str),"You have set %s's level to %d",n,level);//creates the string
    SendClientMessage(playerid,LIGHTBLUE,str);
    return 1;
}

dcmd_kick(playerid,params[])
{
    new id,n[MAX_PLAYER_NAME],on[MAX_PLAYER_NAME];
    new tmp[256], Index, str[49];
    tmp = strtok(params,Index), id = strval(tmp);
    GetPlayerName(id,on,sizeof(on));
    GetPlayerName(playerid,n,sizeof(n));
    if(PInfo[playerid][Level] < 3) return SendClientMessage(playerid,ORANGE,"You need to be level 3 to use this command!");
    if(!strlen(params)) return SendClientMessage(playerid,GREY,"USAGE: /kick <ID> ");
    if(!IsPlayerConnected(id)) return SendClientMessage(playerid,GREY,"Invalid ID");
    format(str,sizeof(str),"%s has kicked %s",n,on);
    SendClientMessageToAll(LIGHTBLUE,str);
    Kick(id);
    return 1;
}

dcmd_ban(playerid,params[])
{
    new id, n[MAX_PLAYER_NAME],on[MAX_PLAYER_NAME];
    new tmp[256], Index, str[49];
    tmp = strtok(params,Index), id = strval(tmp);
    GetPlayerName(id,on,sizeof(on));
    GetPlayerName(playerid,n,sizeof(n));
    if(PInfo[playerid][Level] < 3) return SendClientMessage(playerid,ORANGE,"You need to be level 3 to use this command!");
    if(!strlen(params)) return SendClientMessage(playerid,GREY,"USAGE: /ban <ID> ");
    if(!IsPlayerConnected(id)) return SendClientMessage(playerid,GREY,"Invalid ID");
    format(str,sizeof(str),"%s has banned %s",n,on);
    SendClientMessageToAll(ORANGE,str);
    Ban(id);
    return 1;
}

public OnGameModeInit()
{
	// Don't use these lines if it's a filterscript
	SetGameModeText("Blank Script");
	AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
	return 1;
}

public OnGameModeExit()
{
	return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
	SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
	SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
	return 1;
}

public OnPlayerConnect(playerid)
{
	PInfo[playerid][Logged] = 0;
    PInfo[playerid][Regged] = 0;
    PInfo[playerid][Level] = 0;
    new n[MAX_PLAYER_NAME], file[256];
    GetPlayerName(playerid,n,sizeof(n));
    format(file,sizeof(file),"Admin/Users/%s.txt",n);
    if(dini_Exists(file))
    {
        SendClientMessage(playerid,LIGHTBLUE,"You are registered, Please /login!");
        PInfo[playerid][Regged] = 1;
        PInfo[playerid][Logged] = 0;
        return 1;
    }
    if(!dini_Exists(file))
    {
        SendClientMessage(playerid,LIGHTBLUE,"You are not registered, Please /register!");
        PInfo[playerid][Regged] = 0;
        PInfo[playerid][Logged] = 0;
        return 1;
    }
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    new n[MAX_PLAYER_NAME], file[256];
    GetPlayerName(playerid,n,sizeof(n));
    format(file,sizeof(file),"Admin/Users/%s.txt",n);
    PInfo[playerid][Logged] = 0;
             if(dini_Exists(file))
             {
                 dini_IntSet(file,"Logged",0);
                 return 1;
             }
	return 1;
}

public OnPlayerSpawn(playerid)
{
	return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
	return 1;
}

public OnVehicleSpawn(vehicleid)
{
	return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
	return 1;
}

public OnPlayerText(playerid, text[])
{
	return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[256], idx;
    cmd = strtok(cmdtext, idx);
    dcmd(register,8,cmdtext);
    dcmd(login,5,cmdtext);
    dcmd(setlevel,8,cmdtext);
    dcmd(kick,4,cmdtext);
    dcmd(ban,3,cmdtext);
	return 1;
}
	return 0;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
	return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
	return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
	return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
	return 1;
}

public OnPlayerLeaveCheckpoint(playerid)
{
	return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
	return 1;
}

public OnPlayerLeaveRaceCheckpoint(playerid)
{
	return 1;
}

public OnRconCommand(cmd[])
{
	return 1;
}

public OnPlayerRequestSpawn(playerid)
{
	return 1;
}

public OnObjectMoved(objectid)
{
	return 1;
}

public OnPlayerObjectMoved(playerid, objectid)
{
	return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
	return 1;
}

public OnVehicleMod(playerid, vehicleid, componentid)
{
	return 1;
}

public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
	return 1;
}

public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
	return 1;
}

public OnPlayerSelectedMenuRow(playerid, row)
{
	return 1;
}

public OnPlayerExitedMenu(playerid)
{
	return 1;
}

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
	return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
	return 1;
}

public OnRconLoginAttempt(ip[], password[], success)
{
	return 1;
}

public OnPlayerUpdate(playerid)
{
	return 1;
}

public OnPlayerStreamIn(playerid, forplayerid)
{
	return 1;
}

public OnPlayerStreamOut(playerid, forplayerid)
{
	return 1;
}

public OnVehicleStreamIn(vehicleid, forplayerid)
{
	return 1;
}

public OnVehicleStreamOut(vehicleid, forplayerid)
{
	return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
	return 1;
}
Reply
#6

Ok first lesson first: Don't use strtok. It's slow and outdated. Look up sscanf instead - it's faster and honestly easier once you get the hang of it.

Second of all: You don't have the dini.inc included in your script. To use dini function, you have to have the dini include.

If you will be so kind (to yourself), go read up on sscanf, learn how to use it, and start using it.

All your errors are connected to dini.inc and the strtok function to extract parameters.
Reply
#7

You cant use filterscripts ant gamemode callback in one script ..
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)