25.03.2013, 08:52
Hello. I have a problem in pawn. I wanted to make a factions system, and i red some tutorials, but when I try to complie it gives me these errors:
My lines are:
Can someone please help me ?
Код:
C:\Users\User\Desktop\New folder\filterscripts\testveh.pwn(77) : error 010: invalid function or declaration C:\Users\User\Desktop\New folder\filterscripts\testveh.pwn(79) : error 010: invalid function or declaration C:\Users\User\Desktop\New folder\filterscripts\testveh.pwn(81) : error 010: invalid function or declaration C:\Users\User\Desktop\New folder\filterscripts\testveh.pwn(83) : error 010: invalid function or declaration C:\Users\User\Desktop\New folder\filterscripts\testveh.pwn(85) : error 010: invalid function or declaration C:\Users\User\Desktop\New folder\filterscripts\testveh.pwn(91) : error 010: invalid function or declaration C:\Users\User\Desktop\New folder\filterscripts\testveh.pwn(92) : error 010: invalid function or declaration C:\Users\User\Desktop\New folder\filterscripts\testveh.pwn(94) : error 010: invalid function or declaration C:\Users\User\Desktop\New folder\filterscripts\testveh.pwn(95) : error 010: invalid function or declaration C:\Users\User\Desktop\New folder\filterscripts\testveh.pwn(97) : error 021: symbol already defined: "GetPlayerName" C:\Users\User\Desktop\New folder\filterscripts\testveh.pwn(102) : error 010: invalid function or declaration C:\Users\User\Desktop\New folder\filterscripts\testveh.pwn(105) : error 010: invalid function or declaration C:\Users\User\Desktop\New folder\filterscripts\testveh.pwn(106) : error 010: invalid function or declaration C:\Users\User\Desktop\New folder\filterscripts\testveh.pwn(111) : error 010: invalid function or declaration C:\Users\User\Desktop\New folder\filterscripts\testveh.pwn(130) : warning 203: symbol is never used: "makeleader" C:\Users\User\Desktop\New folder\filterscripts\testveh.pwn(130) : warning 203: symbol is never used: "removefromfaction" C:\Users\User\Desktop\New folder\filterscripts\testveh.pwn(130) : warning 203: symbol is never used: "setrank" Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase 14 Errors.
pawn Код:
#include <a_samp>
enum PlayerData //We create an enumerator entitled "PlayerData"
{ //Open bracket
Faction, //This is the variable we are going to store our faction id in.
Rank //The variable that we store the faction rank in.
}; //Close bracket and semi-colon to finish the enumerator
new pData[MAX_PLAYERS][PlayerData]; //We create a variable that stores our enumerator info for each player.
CMD:makeleader(playerid, params[])
{
new targetid, factionid, string[128], targetname[24], playername[24];
if(sscanf(params, "ui", targetid, factionid)) return SendClientMessage(playerid, -1, "Usage: /makeleader [playerid][factionid]"); //Checks if they typed in anything for the playerid and factionid parameters, and if they don't, return a client message.
if(AdminVariable[playerid] != 6) return SendClientMessage(playerid, -1, "You are not an admin"); //Checks if they are an admin. Remember, change this to your admin variable, or use !IsPlayerAdmin to check if they aren't rcon admin.
if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, -1, "Invalid playerid!"); //Sends a message if the player is not connected
if(0 < factionid < 3) //Checks if the factionid is between 0 and 3, and if so, continue. You can also type this like so: if(factionid >= 1 && factionid <= 2) or if(factionid == 1 || factionid == 2)
{
GetPlayerName(playerid, playername, sizeof(playername)); //Gets the players name and saves it to the variable playername
GetPlayerName(targetid, targetname, sizeof(targetname)); //Gets the targets name and saves it to the variable targetname
format(string, sizeof(string), "You made %s leader of faction id %i!", targetname, factionid); //Formats the string that you will receive
SendClientMessage(playerid, -1, string); //Sends a message to the person who changes the other persons faction in a random color
format(string, sizeof(string), "You were made leader of faction id %i by %s", factionid, playername);//Formats the string that the player will receive
SendClientMessage(playerid, -1, string); //Sends a message to the person who is made the faction leader
pData[playerid][Faction] == factionid;
pData[playerid][Rank] == 6; //Leader, use a switch case or if/else if statement if you want to make it so certain factions have seperate highest ranks
}
else return SendClientMessage(playerid, -1, "Invalid factionid. Factionid's: 1-2"); //Sends a message if the faction is NOT between 0 and 3
return 1;// Returns 1 to end the command, as we NEED to return a value.
}
CMD:removefromfaction(playerid, params[]) //Format to create a command
{ //Open bracket
new targetid, targetname[24], playername[24], string[128]; //Create the variables
if(sscanf(params, "u", targetid)) return SendClientMessage(playerid, -1, "Usage: /removefromfaction [playerid/partofname]"); //Sends message if they do not type something in for the targetid/name
if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, -1, "Invalid playerid!"); //Sends a message if the player isn't connected
if(AdminVariable[playerid] != 6 && pData[playerid][Rank] != 6) return SendClientMessage(playerid, -1, "You are not a high enough admin or you aren't the leader!"); //Sends a message if they aren't the leader of the faction and if they aren't admin
GetPlayerName(targetid, targetname, sizeof(targetname)); //Stores the targetid's name in the targetname variable
GetPlayerName(playerid, playername, sizeof(playername)); //Stores the playerid's name in the playername variable
format(string, sizeof(string), "You removed %s from his (now) previous faction!", targetname);//Formats the message that will be sent to you (the player)
SendClientMessage(playerid, -1, string);//Sends the message that is formatted above to the playerid in a random color
format(string, sizeof(string), "You were removed from your faction by %s!", playername);//Formats the message that will be sent to the targetid
SendClientMessage(targetid, -1, string);//Sends the message that is formatted above to the targetid in a random color
pData[targetid][Faction] == 0; //Sets their faction variable to 0 (civilian)
pData[targetid][Rank] == 0; //Sets their rank variable to 0 (no rank)
return 1; //Returns a value
} //Closed bracket
CMD:setrank(playerid, params[])
{
new targetid, rank, targetname[24], playername[24], string[128]; //Creates our variable
if(sscanf(params, "ui", targetid, rank)) return SendClientMessage(playerid, -1, "Usage: /setrank [playerid/partofname][rank]"); //Sends correct usage if they do not type in the rank and playerid
if(pData[playerid][Rank] != 6) return SendClientMessage(playerid, -1, "You are not the leader of a faction!"); //If their rank is not 6, send the message. Their rank won't be 6 unless they are in a faction, no need to check their faction
if(!IsPlayerConnected(targetid)) return SendClientMessage(playerid, -1, "That player is not connected!"); //Sends a message if the targetid is not connected
if(pData[targetid][Faction] != pData[playerid][Faction]) return SendClientMessage(playerid, -1, "That player is not in your faction!"); //Sends a message if the targetid is not in their faction
if(0 < rank < 7) //If the rank is between 0 and 7, seeing as below 1 and above 6 is not a valid rank
{ //Open bracket
GetPlayerName(playerid, playername, sizeof(playername)); //Stores the playerid's name into the playername variable
GetPlayerName(targetid, targetname, sizeof(targetname)); //Stores the targetid's name into the targetname variable
if(pData[targetid][Rank] < rank) //If the players rank is less than the rank being given (promotion)
{ //Open bracket
format(string, sizeof(string), "You have been promoted to rank %i by %s!", rank, playername); //Formats the message for the targetid
SendClientMessage(targetid, -1, string); //Sends formatted message to targetid
format(string, sizeof(string), "You promoted %s to rank %i", targetname, rank); //Formats the message for the playerid
SendClientMessage(playerid, -1, string); //Sends formatted message to playerid
} //Closed bracket
else //Else (demotion)
{ //Open bracket
format(string, sizeof(string), "You have been demoted to rank %i by %s!", rank, playername); //Same as above
SendClientMessage(targetid, -1, string); //Same as above
format(string, sizeof(string), "You demoted %s to rank %i", targetname, rank); //Same as above
SendClientMessage(playerid, -1, string); //Same as above
} //Closed bracket
} //Closed bracket
return 1; //Return a value
}
if(pData[playerid][Faction] == 1) //If the faction is 1
if(pData[playerid][Faction] == 1 || pData[playerid][Faction] == 2) //Checks if it is faction 1 or 2
if(0 < pData[playerid][Faction] < 3) //Checks if it is between 0 and 3
if(pData[playerid][Faction] != 0) //If the faction is not 0
if(pData[playerid][Faction] == 1 && pData[playerid][Rank] == 6) //If the faction is 1 and the rank is 6
//How do I check if something is 1 AND something else is 2
//&& == and, || == or, use accordingly like shown above
//Place where you want to save it
dini_IntSet(File,"Factionid",pData[playerid][Faction]); //Saving using dini
dini_IntSet(File,"Rank", pData[playerid][Rank]); //Saving using dini
INI_WriteInt(File, "Factionid", pData[playerid][Faction]); //Saving using y_ini
INI_WriteInt(File, "Rank", pData[playerid][Rank]); //Saving using y_ini
GetPlayerName(playerid, playername, sizeof(playername)); //You still have to create the variable playername
format(string, sizeof(string), "UPDATE `table` SET factionid = %i, rank = %i WHERE Username = %s", pData[playerid][Faction], pData[playerid][Rank], playername); //Updating mysql database with facitonid/rank
mysql_query(string); //Sending the query. Remember, must still create the variable "string"
//Place where you want to load it
pData[playerid][Faction] = dini_Get(File, "Factionid"); //Loading using dini
pData[playerid][Rank] = dini_Get(File, "Rank"); //Loading using dini
INI_Int("Factionid",pData[playerid][Faction]);
INI_Int("Rank",pData[playerid][Rank]);
//Not going to show loading for mysql, this is a pain to create from scratch right now, and it is boring.
new LSPDVehicles[11];
LVPDVehicles[0] = AddStaticVehicle(265,2269.2725,2441.8655,10.8203,359.7333,0,0,0,0,0,0);
LVPDVehicles[1] = AddStaticVehicle(265,2260.4592,2441.9963,10.8203,2.2634,0,0,0,0,0,0);
LVPDVehicles[2] = AddStaticVehicle(265,2256.1191,2442.6707,10.8203,355.9967,0,0,0,0,0,0);
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
for(new i = 0; i < 12; i++) //Loop. It counts to 11
{ //Open Bracket
if(vehicleid == LSPDVehicles[i]) //If the vehicleid is an LSPD vehicle
{ //Open Bracket
if(pData[playerid][Faction] != 1) //If the player is not in faction 1 (LSPD, in this case)
{ //Open Bracket
ClearAnimations(playerid); //Clears their animation, preventing them from entering the vehicle.
SendClientMessage(playerid, -1, "You don`t have the keys for this car."); //Sends a message to the player that he cannot enter it.
} //Closed Bracket
} //Closed Bracket
} //Closed Bracket
return 1; //Return a value
}