16.05.2013, 13:11
These two errors mean you have these callbacks more than once in the same script.
So basically, you have more than one OnPlayerStateChange, and more than one OnPlayerKeyStateChange. You need to delete whatever one has the least code in it, and move it to the other one. Currently you have something like this:
So you need to remove the first two empty callbacks, so that you are only left with the callbacks that contain code.
Code:
C:\Users\***\\Documents\GT Testing\gamemodes\GranTrucking.pwn(2088) : error 021: symbol already defined: "OnPlayerStateChange" C:\Users\***\Documents\GT Testing\gamemodes\GranTrucking.pwn(2174) : error 021: symbol already defined: "OnPlayerKeyStateChange"
pawn Code:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
return 1;
}
//Located somewhere else in your script:
public OnPlayerStateChange(playerid,newstate,oldstate)
{
new vid, Name[24], Msg[128], engine, lights, alarm, doors, bonnet, boot, objective;
switch (newstate)
{
case PLAYER_STATE_DRIVER:
{
vid = GetPlayerVehicleID(playerid);
GetPlayerName(playerid, Name, sizeof(Name));
if (AVehicleData[vid][Owned] == true)
{
if (strcmp(AVehicleData[vid][Owner], Name, false) != 0)
{
RemovePlayerFromVehicle(playerid);
GetVehicleParamsEx(vid, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vid, 0, 0, alarm, doors, bonnet, boot, objective);
format(Msg, 128, TXT_SpeedometerCannotUseVehicle, AVehicleData[vid][Owner]);
SendClientMessage(playerid, 0xFFFFFFFF, Msg);
}
if (AVehicleData[vid][Clamped] == true)
{
RemovePlayerFromVehicle(playerid);
GetVehicleParamsEx(vid, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vid, 0, 0, alarm, doors, bonnet, boot, objective);
format(Msg, 128, TXT_SpeedometerClampedVehicle);
SendClientMessage(playerid, 0xFFFFFFFF, Msg);
format(Msg, 128, TXT_SpeedometerClampedVehicle2);
SendClientMessage(playerid, 0xFFFFFFFF, Msg);
}
}
if (APlayerData[playerid][PlayerClass] != ClassPolice)
{
if (AVehicleData[vid][StaticVehicle] == true)
{
switch (GetVehicleModel(vid))
{
case VehiclePoliceLSPD, VehiclePoliceSFPD, VehiclePoliceLVPD, VehicleHPV1000, VehiclePoliceRanger:
{
RemovePlayerFromVehicle(playerid);
GetVehicleParamsEx(vid, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vid, 0, 0, alarm, doors, bonnet, boot, objective);
SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Error: {FFFFFF}You can not use a police vehicle!");
}
}
}
}
if (APlayerData[playerid][PlayerClass] != ClassPilot)
{
if (AVehicleData[vid][StaticVehicle] == true)
{
switch (GetVehicleModel(vid))
{
case VehicleShamal, VehicleNevada, VehicleStuntPlane, VehicleDodo, VehicleMaverick, VehicleCargobob:
{
// Force the player out of the vehicle
RemovePlayerFromVehicle(playerid);
// Turn off the lights and engine
GetVehicleParamsEx(vid, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vid, 0, 0, alarm, doors, bonnet, boot, objective);
// Let the player know he cannot use a cop car
SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Error: {FFFFFF}You can not use a pilot vehicle!");
}
}
}
}
}
}
new vehicleid = GetPlayerVehicleID(playerid);
if(newstate == PLAYER_STATE_DRIVER)
{
if(VehicleEngine[vehicleid] == 0)
{
TogglePlayerControllable(playerid, 0);
SendClientMessage(playerid, 0xFFFFFFFF, "{00FF00}Note: {FFFFFF}Your vehicle is not started!");
SendClientMessage(playerid, 0xFFFFFFFF, "{00FF00}Press SHIFT to start the engine.");
}
else if(VehicleEngine[vehicleid] == 1)
{
TogglePlayerControllable(playerid, 1);
SendClientMessage(playerid, 0xFFFFFFFF, "{00FF00}Engine is currently running..");
}
}
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
switch (APlayerData[playerid][PlayerClass])
{
case ClassPolice:
{
if(((newkeys & KEY_HANDBRAKE) && !(oldkeys & KEY_HANDBRAKE)) && (GetPlayerVehicleID(playerid) == 0))
Police_FineNearbyPlayers(playerid);
if(((newkeys & KEY_ACTION) && !(oldkeys & KEY_ACTION)) && (GetPlayerVehicleID(playerid) != 0))
Police_WarnNearbyPlayers(playerid);
}
case ClassAssistance:
{
if(((newkeys & KEY_HANDBRAKE) && !(oldkeys & KEY_HANDBRAKE)) && (GetPlayerVehicleID(playerid) == 0))
{
Assistance_FixVehicle(playerid);
}
if(((newkeys & KEY_ACTION) && !(oldkeys & KEY_ACTION)) && (GetPlayerVehicleID(playerid) != 0))
{
Assistance_FixOwnVehicle(playerid);
}
}
}
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == VehicleTowTruck)
{
if(newkeys & KEY_FIRE)
{
new closest = GetClosestVehicle(playerid);
if(VehicleToPlayer(playerid, closest) < 10)
AttachTrailerToVehicle(closest, GetPlayerVehicleID(playerid));
}
}
new vehicleid = GetPlayerVehicleID(playerid);
if(IsPlayerInAnyVehicle(playerid))
{
if(VehicleEngine[vehicleid] == 0)
{
if(newkeys == KEY_JUMP)
{
VehicleEngine[vehicleid] = 2;
SetTimerEx("StartEngine", 3000, 0, "i", playerid);
SendClientMessage(playerid, 0xFFFFFFFF, "{00FF00}Starting {FFFFFF}engine..");
}
}
if(newkeys == KEY_SECONDARY_ATTACK)
{
RemovePlayerFromVehicle(playerid);
TogglePlayerControllable(playerid, 1);
}
}
return 1;
}