08.10.2011, 16:44
simple i am having some errors in a stock function i change FireCat's House system to suit me with cars but it aint working right its producing errors here they are:
here is the code ill highlight my error lines in red if the indentation is wrong its the tags not the script
Line 328 is
Line 330 is
Line 332 is
it seems to be acting up but im gonna post the rest of the code here it is:
plz help me :S
pawn Код:
C:\DOCUME~1\Rhys\Desktop\SA8BEC~1\FILTER~1\H_System.pwn(328) : error 010: invalid function or declaration
C:\DOCUME~1\Rhys\Desktop\SA8BEC~1\FILTER~1\H_System.pwn(330) : error 021: symbol already defined: "INI_Close"
C:\DOCUME~1\Rhys\Desktop\SA8BEC~1\FILTER~1\H_System.pwn(332) : error 010: invalid function or declaration
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
3 Errors.
pawn Код:
stock LoadCars()
{
new file[60],carowner[24];
for(new i = 0; i < MAX_CARS; i++)
{
format(file,sizeof(file),"FHouse/HouseCars/%i.ini",i);
if(INI_Exist(file)) break;
INI_Open(file);
CI[i][Price] = INI_ReadInt("Price");
CI[i][Model] = INI_ReadInt("Model");
CI[i][Owned] = INI_ReadInt("Owned");
CI[i][Colour1] = INI_ReadInt("Col1");
CI[i][Colour2] = INI_ReadInt("Col2");
CI[i][XPos] = INI_ReadInt("XPos");
CI[i][YPos] = INI_ReadInt("YPos");
CI[i][ZPos] = INI_ReadInt("ZPos");
CI[i][APos] = INI_ReadInt("APos");
INI_ReadString(carowner,"Owner");//Reading the house owner.
format(CI[i][Owner],24,"%s",carowner);
Car[i] = CreateVehicle(CI[i][Model],x,y,z,a,CI[i][Colour1],CI[i][Colour2],100);
new labelstring[100];
switch(CI[i][Owned])
{
case 0;{format(labelstring,sizeof(labelstring),"Owned: No \nPrice: %i \nModel: %d",CarPrice, CarModel);}
case 1;{format(labelstring,sizeof(labelstring),"Owned: Yes \nPrice: %i \nOwner: %s \nSlots: %i",HInfo[i][Price],pName, HInfo[i][Slots]);}
}
CI[i][CarLavel] = Create3DTextLabel(labelstring,0xFF0000FF,x,y,z,25.0,0);
CarCount++;
INI_Close();//Closing the SII file.
}
return 1;
}
Код:
CI[i][CarLavel] = Create3DTextLabel(labelstring,0xFF0000FF,x,y,z,25.0,0);
Код:
INI_Close();//Closing the SII file.
Код:
return 1;
pawn Код:
#include <a_samp>
#include <SII>
#include <streamer>
#include <zcmd>
#include <sscanf2>
#define MAX_HOUSES 100//Lets define that we can have the max limit of our houses to 100.
#define MAX_CARS 100
enum HouseInfo//Naming the enum
{
Owner[24],//This will be where it will store the house owner name, in a 24 bit size array.
Owned,//To store if the house is owned or not.
Price,//How much the house will cost.
Slots,
Float:XPos,//Float X position of the checkpoint
Float:YPos,//Self explanatory.
Float:ZPos,//Self explanatory.
VirtualWorld,//The checkpoints virtual world.
Text3D:HouseLabel//That label where it says "Owned Price..."
}
new HInfo[MAX_HOUSES][HouseInfo];//This is the var where we will read the house info.
enum CarInfo
{
Owner[24],
Owned,
Model,
Price,
Float:XPos,//Float X position of the checkpoint
Float:YPos,//Self explanatory.
Float:ZPos,//Self explanatory.
Float:APos,//Self explanatory.
Colour_1,
Colour_2,
Text3D:CarLabel
}
new CI[MAX_CARS][CarInfo];
new HouseCount;//To check how many houses have we created.
new CarCount;
new Car[MAX_CARS];
new HouseEnter[MAX_HOUSES];//This will be where we will store the house entrance checkpoint
new HouseExit[MAX_HOUSES];//This will be where we will store the house exit checkpoint.
new PlayerInHouseID[MAX_PLAYERS];//To check what house id is the player in.
IsAdmin(playerid, level)
{
if(IsPlayerAdmin(playerid)) return 1;
if(CallRemoteFunction("GetPlayerAVSAdmin", "d", playerid) >= level) return 1;
return 0;
}
CMD:createcar(playerid,params[])
{
if(!IsAdmin(playerid, 10)) return SendClientMessage(playerid,-1,"You aren't an admin!");//Check if the player is currently rcon logged in.
new CarPrice, CarModel, COL1, COL2, id = CarCount;
if(sscanf(params,"iddd",CarPrice, CarModel, COL1, COL2)) return SendClientMessage(playerid,-1,"USAGE: /createcar <Price> <Model> <COL1> <COL2>");
new Float:x, Float:y, Float:z, Float:a;
GetPlayerPos(playerid,x,y,z);
GetPlayerFacingAngle(playerid,a);
CI[id][Price] = CarPrice;
CI[id][Model] = CarModel;
CI[id][Colour_1] = COL1;
CI[id][Colour_2] = COL2;
CI[id][Owned] = 0;
CI[id][XPos] = x;
CI[id][YPos] = y;
CI[id][YPos] = z;
CI[id][APos] = a;
format(CI[id][Owner],24,"Nonuseablenameforthiscar");
Car[id] = CreateVehicle(CarModel, x, y, z, a, COL1, COL2, 100);
new file[40],labelstring[100];
format(file,sizeof(file),"FHouse/HouseCars/%i.ini",id);
INI_Open(file);
INI_WriteInt("Price",CarPrice);
INI_WriteInt("Model",CarModel);
INI_WriteInt("Col1",COL1);
INI_WriteInt("Col2",COL2);
INI_WriteInt("Owned",0);
INI_WriteFloat("XPos",x);//Writing the players pos for the check point position.
INI_WriteFloat("YPos",y);//Self explanatory.
INI_WriteFloat("ZPos",z);//Self explanatory.
INI_WriteFloat("APos",a);//Self explanatory.
INI_WriteString("Owner","Nonusablenameforthiscar");//Writing a string in "Owned" to "Nonusablenameforthishouse"
INI_Save();
INI_Close();
format(labelstring,sizeof(labelstring),"Owned: No \nPrice: %i \nModel: %d",CarPrice, CarModel);
CI[id][CarLabel] = Create3DTextLabel(labelstring,0xFF0000FF,x,y,z,25.0,GetPlayerVirtualWorld(playerid));
CarCount++;
return 1;
}
CMD:createhouse(playerid,params[])
{
if(!IsAdmin(playerid, 10)) return SendClientMessage(playerid,-1,"You aren't an admin!");//Check if the player is currently rcon logged in.
new HousePrice, HouseSlots, id = HouseCount;//Creating the house price for the selected value in the command, and the last house id created.
if(sscanf(params,"ii",HousePrice, HouseSlots)) return SendClientMessage(playerid,-1,"USAGE: /createhouse <price> <slots>");//Checking if the player uses the correct syntax. The parameter "i" in sscanf means integer, also could be used as "d".
new Float:x,Float:y,Float:z;//Creating the floats, to store the player's position.
GetPlayerPos(playerid,x,y,z);//Getting the player's position and storing it
HInfo[id][Price] = HousePrice;//Setting the house price to the selected one.
HInfo[id][Slots] = HouseSlots;
HInfo[id][Owned] = 0;//Setting the house id owned = 0
HInfo[id][XPos] = x;//Storing the XPos value to the player's x.
HInfo[id][YPos] = y;//Storing the YPos value to the player's y.
HInfo[id][ZPos] = z;//Storing the ZPos value to the player's z.
HInfo[id][VirtualWorld] = GetPlayerVirtualWorld(playerid);
format(HInfo[id][Owner],24,"Nonusablenameforthishouse");//Formating the "Owner" house id value to "Nonusablenameforthishouse".
SendClientMessage(playerid,-1,"House created");
HouseEnter[id] = CreateDynamicCP(x,y,z,1.5,GetPlayerVirtualWorld(playerid));//Creating the checkpoint and storing it in the HouseEnter value.
HouseExit[id] = CreateDynamicCP(443.9237,509.4609,1001.4195,1.5,GetPlayerVirtualWorld(playerid));//Creating the house exit checkpoint and storing it in the HouseExit value.
new file[40],labelstring[100];//Creating the "file", and the labelstring var.
format(file,sizeof(file),"FHouse/Houses/%i.ini",id);//Formating the var to the selected house directory.
INI_Open(file);//Opening the file with SII.
INI_WriteInt("Price",HousePrice);//Writing in the place "Price" the inputted "Price" value.
INI_WriteInt("Slots",HouseSlots);
INI_WriteInt("Owned",0);//Setting to "Owned" = 0 in the ini file.
INI_WriteInt("VirtualWorld",GetPlayerVirtualWorld(playerid));//Writing "VirtualWorld" = GetPlayerVirtualWorld(..);
INI_WriteFloat("XPos",x);//Writing the players pos for the check point position.
INI_WriteFloat("YPos",y);//Self explanatory.
INI_WriteFloat("ZPos",z);//Self explanatory.
INI_WriteString("Owner","Nonusablenameforthishouse");//Writing a string in "Owned" to "Nonusablenameforthishouse"
INI_Save();//Saving file with SII.
INI_Close();//Closing the file with SII.
format(labelstring,sizeof(labelstring),"Owned: No \nPrice: %i \nSlots: %i",HousePrice, HouseSlots);
HInfo[id][HouseLabel] = Create3DTextLabel(labelstring,0xFF0000FF,x,y,z,25.0,GetPlayerVirtualWorld(playerid));
HouseCount++;
return 1;
}
CMD:buycar(playerid,params[])
{
for(new i = 0; i < MAX_CARS; i++)
{
if(!IsPlayerInRangeOfPoint(playerid,8.0,CI[i][XPos],CI[i][YPos],CI[i][ZPos])) continue;
if(GetPlayerMoney(playerid) < CI[i][Price]) return SendClientMessage(playerid,-1,"You don't have enough money");
if(CI[i][Owned] == 1) return SendClientMessage(playerid,-1,"This car is already owned");
CI[i][Owned] = 1;
new file[60],pName[24],string[100];
GetPlayerName(playerid,pName,sizeof(pName));
format(CI[i][Owner],24,"%s",pName);
format(file,sizeof(file),"FHouse/HouseCars/%i.ini",i);
INI_Open(file);
INI_WriteInt("Owned",1);
INI_WriteString("Owner",pName);
INI_Save();
INI_Close();
format(string,sizeof(string),"Owned: Yes \nPrice: %i \nOwner: %s \nModel: %d",CI[i][Price],pName, CI[i][Model]);//Formating the string, so we can update the label of the house
Update3DTextLabelText(CI[i][CarLabel],0xFF0000FF,string);//Updating the label with a red color
return 1;
}
SendClientMessage(playerid,-1,"You aren't near a car!");
return 1;
}
CMD:buy(playerid,params[])
{
for(new i = 0; i < MAX_HOUSES; i++)//Loop threw all houses.
{
if(!IsPlayerInRangeOfPoint(playerid,8.0,HInfo[i][XPos],HInfo[i][YPos],HInfo[i][ZPos])) continue;//Check if the player is near a house checkpoint
if(GetPlayerMoney(playerid) < HInfo[i][Price]) return SendClientMessage(playerid,-1,"You don't have enough money");//Checking the players money, to see if he has enough to buy the house.
if(HInfo[i][Owned] == 1) return SendClientMessage(playerid,-1,"This house is already owned");//Checking if the house is already owned.
HInfo[i][Owned] = 1;//Setting the house owned var to 1.
new file[60],pName[24],string[100];//Creating the necessary vars.
GetPlayerName(playerid,pName,sizeof(pName));//Retrieving the player's name.
format(HInfo[i][Owner],24,"%s",pName);//Setting the House Owner's var
format(file,sizeof(file),"FHouse/Houses/%i.ini",i);//Formating the house file
INI_Open(file);//Opening the house file
INI_WriteInt("Owned",1);//Setting in the ini file "Owned" to 1
INI_WriteString("Owner",pName);//Setting the "Owner" to the player's name.
INI_Save();//Saving the ini
INI_Close();//Closing the ini
format(string,sizeof(string),"Owned: Yes \nPrice: %i \nOwner: %s \nSlots: %i",HInfo[i][Price],pName, HInfo[i][Slots]);//Formating the string, so we can update the label of the house
Update3DTextLabelText(HInfo[i][HouseLabel],0xFF0000FF,string);//Updating the label with a red color
return 1;
}
SendClientMessage(playerid,-1,"You aren't near a house!");
return 1;
}
CMD:sellcar(playerid,params[])
{
for(new i = 0; i < MAX_CARS; i++)
{
if(!IsPlayerInRangeOfPoint(playerid,8.0,HInfo[i][XPos],HInfo[i][YPos],HInfo[i][ZPos])) continue;//Check if the player is near a house checkpoint
if(CI[i][Owned] == 0) return SendClientMessage(playerid,-1,"This car isn't owned type /buycar to buy it now");
new pName[24];
GetPlayerName(playerid,pName,sizeof(pName));
if(CI[i][Owned] == 1 && strcmp(pName,CI[i][Owner]) != 0) return SendClientMessage(playerid,-1,"You aren't the owner of this car!");//Checking if the house is owned but the owners name is different
CI[i][Owned] = 0;
new file[60],string[100];
format(CI[i][Owner],24,"Nonusablenameforthiscar");
format(file,sizeof(file),"FHouse/HouseCars/%i.ini",i);
INI_Open(file);
INI_WriteInt("Owned",0);
INI_WriteString("Owner","Nonusablenameforthiscar");
INI_Save();
INI_Close();
format(string,sizeof(string),"Owned: No \nPrice: %i \nOwner: None \nModel: %d",CI[i][Price], CI[i][Model]);
Update3DTextLabelText(CI[i][CarLabel],0xFF0000FF,string);//Updating the label with a red color
return 1;
}
SendClientMessage(playerid,-1,"You aren't near a car!");
return 1;
}
CMD:sell(playerid,params[])
{
for(new i = 0; i < MAX_HOUSES; i++)//Loop threw all houses.
{
if(!IsPlayerInRangeOfPoint(playerid,8.0,HInfo[i][XPos],HInfo[i][YPos],HInfo[i][ZPos])) continue;//Check if the player is near a house checkpoint
if(HInfo[i][Owned] == 0) return SendClientMessage(playerid,-1,"This house isn't owned");//Checking if the house is already owned.
new pName[24];
GetPlayerName(playerid,pName,sizeof(pName));//Retrieving the player's name.
if(HInfo[i][Owned] == 1 && strcmp(pName,HInfo[i][Owner]) != 0) return SendClientMessage(playerid,-1,"You aren't the owner of this house!");//Checking if the house is owned but the owners name is different
HInfo[i][Owned] = 0;//Setting the house owned var to 1.
new file[60],string[100];//Creating the necessary vars.
format(HInfo[i][Owner],24,"Nonusablenameforthishouse");//Setting the House Owner's var
format(file,sizeof(file),"FHouse/Houses/%i.ini",i);//Formating the house file
INI_Open(file);//Opening the house file
INI_WriteInt("Owned",0);//Setting in the ini file "Owned" to 0
INI_WriteString("Owner","Nonusablenameforthishouse");//Setting the "Owner" to the "Nonusablenameforthishouse".
INI_Save();//Saving the ini
INI_Close();//Closing the ini
format(string,sizeof(string),"Owned: No \nPrice: %i \nOwner: None \nSlots: %i",HInfo[i][Price],pName, HInfo[i][Slots]);//Formating the string, so we can update the label of the house
Update3DTextLabelText(HInfo[i][HouseLabel],0xFF0000FF,string);//Updating the label with a red color
return 1;
}
SendClientMessage(playerid,-1,"You aren't near a house!");
return 1;
}
public OnPlayerEnterDynamicCP(playerid,checkpointid)
{
for(new i = 0; i < MAX_HOUSES;i++)//Looping threw all houses.
{
if(checkpointid == HouseEnter[i])//Checking if the checkpoint id corresponds to one of the house interiors
{
new pName[24];//Creating the new var for the players name
GetPlayerName(playerid,pName,24);//Storing the players name
if(HInfo[i][Owned] == 1 && strcmp(HInfo[i][Owner],pName) == 0)//String comparing between the players name and the house owners name, to check if they match.
{
SetPVarInt(playerid,"PlayersInteriorHouse",GetPlayerInterior(playerid));//Storing, so later we can reset it back
SetPVarInt(playerid,"PlayerVirtualWorldHouse",GetPlayerVirtualWorld(playerid));//Storing, so later we can reset it back
SetPlayerInterior(playerid,12);//Setting the players interior.
SetPlayerPos(playerid,446.7281,507.0475,1001.4195);//Setting the players position.
SetPlayerVirtualWorld(playerid,HInfo[i][VirtualWorld]);//Preventing players from different houses, finding each other.
PlayerInHouseID[playerid] = i;
}
if(HInfo[i][Owned] == 1 && strcmp(HInfo[i][Owner],pName) != 0)//Checking if the house is owned but the house owner and the players name don't match.
{
SendClientMessage(playerid,-1,"You don't own this house");
}
if(HInfo[i][Owned] == 0)//Simply checking if the house isn't owned.
{
SendClientMessage(playerid,-1,"/buy to buy this lovely house");
}
}
if(checkpointid == HouseExit[i])//Checking if the checkpointid is an House exit
{
SetPlayerPos(playerid,HInfo[i][XPos]+3,HInfo[i][YPos],HInfo[i][ZPos]);//Setting the players position to checkpoint position +3
SetPlayerInterior(playerid, GetPVarInt(playerid,"PlayersInteriorHouse"));//Setting the players interior to the one we stored
SetPlayerVirtualWorld(playerid, GetPVarInt(playerid,"PlayerVirtualWorldHouse"));//Setting the players virtual world to the one we stored.
}
}
return 1;
}
stock LoadHouses()//Creating the stock function
{
new file[60],houseowner[24];//creating the "file" var. And also creating the "houseowner" var so we can store it, when we are reading the house owner ini line.
for(new i = 0; i < MAX_HOUSES; i++)//Looping threw every house
{
format(file,sizeof(file),"FHouse/Houses/%i.ini",i);//Opening the house file with the current selected number with "i".
if(INI_Exist(file)) break;//Checking if the ini house file exist, if not to stop there.
INI_Open(file);//Opening the house ini
HInfo[i][Price] = INI_ReadInt("Price");//Reading the price.
HInfo[i][Slots] = INI_ReadInt("Slots");
HInfo[i][Owned] = INI_ReadInt("Owned");//Reading if it's owned.
HInfo[i][XPos] = INI_ReadInt("XPos");//Reading the X float position.
HInfo[i][YPos] = INI_ReadInt("YPos");//Reading the Y float position.
HInfo[i][ZPos] = INI_ReadInt("ZPos");//Reading the Z float position.
HInfo[i][VirtualWorld] = INI_ReadInt("VirtualWorld");//Reading the virtual world.
INI_ReadString(houseowner,"Owner");//Reading the house owner.
format(HInfo[i][Owner],24,"%s",houseowner);//Formating the "Owner" house id value to the red one.
HouseEnter[i] = CreateDynamicCP(x,y,z,1.5,HInfo[i][VirtualWorld]);//Creating the checkpoint and storing it in the HouseEnter value.
HouseExit[i] = CreateDynamicCP(443.9237,509.4609,1001.4195,1.5,HInfo[i][VirtualWorld]);//Creating the house exit checkpoint and storing it in the HouseExit value.
new labelstring[100];//Creating the labelstring var.
switch(HInfo[i][Owned])//Using the "switch" method to check if the house is owned
{
case 0:{format(labelstring,sizeof(labelstring),"Owned: No \nPrice: %i \nSlots: %i",HInfo[i][Price], HInfo[i][Slots]);}//If it isnt...
case 1:{format(labelstring,sizeof(labelstring),"Owned: Yes \nPrice: %i \nOwner: %s \nSlots: %i",HInfo[i][Price], HInfo[i][Owner], HInfo[i][Slots]);}//If it is...
}
HInfo[i][HouseLabel] = Create3DTextLabel(labelstring,0xFF0000FF,x,y,z,25.0,HInfo[i][VirtualWorld]);//Creating the label with the formatted string.
HouseCount++;//+ counting the HouseCount var.
INI_Close();//Closing the SII file.
}
return 1;
}
stock LoadCars()
{
new file[60],carowner[24];
for(new i = 0; i < MAX_CARS; i++)
{
format(file,sizeof(file),"FHouse/HouseCars/%i.ini",i);
if(INI_Exist(file)) break;
INI_Open(file);
CI[i][Price] = INI_ReadInt("Price");
CI[i][Model] = INI_ReadInt("Model");
CI[i][Owned] = INI_ReadInt("Owned");
CI[i][Colour1] = INI_ReadInt("Col1");
CI[i][Colour2] = INI_ReadInt("Col2");
CI[i][XPos] = INI_ReadInt("XPos");
CI[i][YPos] = INI_ReadInt("YPos");
CI[i][ZPos] = INI_ReadInt("ZPos");
CI[i][APos] = INI_ReadInt("APos");
INI_ReadString(carowner,"Owner");//Reading the house owner.
format(CI[i][Owner],24,"%s",carowner);
Car[i] = CreateVehicle(CI[i][Model],x,y,z,a,CI[i][Colour1],CI[i][Colour2],100);
new labelstring[100];
switch(CI[i][Owned])
{
case 0;{format(labelstring,sizeof(labelstring),"Owned: No \nPrice: %i \nModel: %d",CarPrice, CarModel);}
case 1;{format(labelstring,sizeof(labelstring),"Owned: Yes \nPrice: %i \nOwner: %s \nSlots: %i",HInfo[i][Price],pName, HInfo[i][Slots]);}
}
CI[i][CarLavel] = Create3DTextLabel(labelstring,0xFF0000FF,x,y,z,25.0,0);
CarCount++;
INI_Close();//Closing the SII file.
}
return 1;
}