Код:
*/
#include <a_samp>
//#include <time>
#include <YSI/y_ini>
//-------------------------------------------------------------------------------------------------------//
#define RED 0xFF0000FF
#define BLUE 0x00FFFFFF
new isInExam[MAX_PLAYERS];
new examCar[3][2] = {{0,-1},{0,-1},{0,-1}};
new Player[MAX_PLAYERS];
new examCarPlayer[MAX_PLAYERS];
new info;
// The Checkpoints coordinates
new Float:checkX[10] = {1008.1208,1007.3864,1007.7344,1567.6937,1727.3376,1644.3011,1344.1215,1074.1572,1078.9534,1166.2103};
new Float:checkY[10] = {1377.3363,1500.0265,1786.8397,1782.9592,1490.8068,1185.8735,1192.0806,1193.2159,1376.3060,1376.3862};
new Float:checkZ[10] = {10.3701,10.2369,10.2882,10.2378,10.2372,10.2371,10.2367,10.2367,10.2326,10.2274};
new checkpoint[MAX_PLAYERS];
new bool:ejectFromVeh = false;
new Float:oldHP, bool:allowHPchange = false, bool:timeChanged = false;
new dialog;
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Blank filterscript");
print("--------------------------------------\n");
info = CreatePickup(1239,1,1172.9979,1348.3250,10.9219,-1); // Exam Info pickup
examCar[0][0] = AddStaticVehicle(526,1413.8760,-1719.1808,13.2740,267.4485,0,0); // ExamCar1
examCar[1][0] = AddStaticVehicle(526,1413.8760,-1715.6440,13.2523,267.3694,0,0); // ExamCar2
examCar[2][0] = AddStaticVehicle(526,1413.8760,-1712.1121,13.2740,268.0577,0,0); // ExamCar3
return 1;
}
public OnPlayerConnect(playerid)
{
if(!IsPlayerNPC(playerid))
GetPlayerDrivingLicense(playerid);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
SavePlayerLicense(playerid);
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/exam", cmdtext, true) == 0)
{
if(Player[playerid]==0)
{
if(!isInExam[playerid])
{
if(GetPlayerMoney(playerid) >= 3000)
{
for(new i=0; i<3; i++)
{
if(examCar[i][1]==-1)
{
isInExam[playerid]=1; examCar[i][1]=1; examCarPlayer[playerid]=examCar[i][0];
SetVehiclePos(examCar[i][0],1008.1208,1377.3363,10.3701);
GetVehicleHealth(examCar[i][0], oldHP);
PutPlayerInVehicle(playerid,examCar[i][0],0);
SetPlayerCheckpoint(playerid,checkX[0],checkY[0],checkZ[0],8.0);
GameTextForPlayer(playerid,"~r~Drive Safe!",10000,6);
return 1;
}
if(i==2)
SendClientMessage(playerid,RED,"There is no car available at this moment. Try again later");
}
}
else SendClientMessage(playerid,RED,"You don't have enough money! You need at least 3000$");
}
else SendClientMessage(playerid,RED,"You can't do more than 1 exam at the same time!");
}
else SendClientMessage(playerid,BLUE,"You already have a driver license");
return 1;
}
return 0;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(Player[playerid]==0 && vehicleid!=examCarPlayer[playerid])
{
SendClientMessage(playerid,RED,"You can't drive this vehicle because you don't have a driver license!");
ejectFromVeh = true;
}
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)
{
if(ejectFromVeh)
{
RemovePlayerFromVehicle(playerid);
ejectFromVeh = false;
}
}
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
new veh;
if(isInExam[playerid])
{
if(IsPlayerInVehicle(playerid,examCarPlayer[playerid]))
{
DisablePlayerCheckpoint(playerid);
checkpoint[playerid]++;
if(checkpoint[playerid]>10)
{
if(timeChanged)
{
new h,m,s;
gettime(h,m,s); SetPlayerTime(playerid, h, m); timeChanged = false;
}
veh = GetPlayerVehicleID(playerid);
RemovePlayerFromVehicle(playerid);
SetVehicleToRespawn(veh);
GivePlayerMoney(playerid,-3000);
GameTextForPlayer(playerid,"You have ~b~passed ~w~the exam",10000,5);
SetPlayerWeather(playerid, 1);
isInExam[playerid]=0; checkpoint[playerid]=0;
for(new i=0; i<3; i++)
{
if(examCar[i][0]==veh)
{
examCar[i][1]=-1;
break;
}
}
Player[playerid]=1; examCarPlayer[playerid]=0;
}
else if(checkpoint[playerid]==9)
{
SendClientMessage(playerid,BLUE,"Simulating Storm Conditions - Your car may slide");
SetPlayerWeather(playerid, 8);
SetPlayerCheckpoint(playerid,checkX[checkpoint[playerid]],checkY[checkpoint[playerid]],checkZ[checkpoint[playerid]],8.0);
}
else if(checkpoint[playerid]==8)
{
SendClientMessage(playerid,BLUE,"Simulating Sandstorm Conditions - Low Visibility");
SetPlayerWeather(playerid, 19);
SetPlayerCheckpoint(playerid,checkX[checkpoint[playerid]],checkY[checkpoint[playerid]],checkZ[checkpoint[playerid]],8.0);
}
else if(checkpoint[playerid]==7)
{
SendClientMessage(playerid,BLUE,"Simulating Night Conditions - Foggy Weather"); timeChanged = true;
SetPlayerTime(playerid,0,0);
SetPlayerWeather(playerid, 9);
SetPlayerCheckpoint(playerid,checkX[checkpoint[playerid]],checkY[checkpoint[playerid]],checkZ[checkpoint[playerid]],8.0);
}
else SetPlayerCheckpoint(playerid,checkX[checkpoint[playerid]],checkY[checkpoint[playerid]],checkZ[checkpoint[playerid]],8.0);
}
else GameTextForPlayer(playerid,"~r~You are not in your exam car!",10000,5);
}
else DisablePlayerCheckpoint(playerid);
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
if(pickupid==info)
ShowPlayerDialog(playerid,2,DIALOG_STYLE_LIST,"Shop List","PracticalTest\n Disagree","Select","Exit");
if(pickupid==dialog)
GameTextForPlayer(playerid,"Type ~r~/exam ~w~to get started",5000,5);
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(isInExam[i] && examCarPlayer[i]==vehicleid)
{
if(timeChanged)
{
new h,m,s;
#pragma unused s
gettime(h,m,s); SetPlayerTime(i, h, m); timeChanged = false;
}
GameTextForPlayer(i, "~r~You have failed!", 10000, 5);
SetVehicleToRespawn(vehicleid);
isInExam[i]=0; checkpoint[i]=0; examCarPlayer[i]=0;
for(new j=0; j<3; j++)
{
if(examCar[j][0]==vehicleid)
{
examCar[j][1]=-1;
break;
}
}
SetPlayerWeather(i, 1);
DisablePlayerCheckpoint(i);
break;
}
}
return 1;
}
public OnVehicleRespray(playerid,vehicleid,color1,color2)
{
if(isInExam[playerid])
{
if(timeChanged)
{
new h,m,s;
gettime(h,m,s); SetPlayerTime(playerid, h, m); timeChanged = false;
}
SendClientMessage(playerid,BLUE,"NO CHEATING MOTHERFUCKER!");
GameTextForPlayer(playerid, "~r~You have failed!", 10000, 5);
isInExam[playerid]=0; checkpoint[playerid]=0; examCarPlayer[playerid]=0;
for(new i=0; i<3; i++)
{
if(examCar[i][0]==vehicleid)
{
examCar[i][1]=-1;
break;
}
}
SetPlayerWeather(playerid, 1);
RemovePlayerFromVehicle(playerid); SetVehicleToRespawn(vehicleid);
DisablePlayerCheckpoint(playerid);
}
return 1;
}
public OnVehicleMod(playerid, vehicleid, componentid)
{
if(isInExam[playerid])
{
if(timeChanged)
{
new h,m,s;
gettime(h,m,s); SetPlayerTime(playerid, h, m); timeChanged = false;
}
SendClientMessage(playerid,BLUE,"Don't fuck the exam car!");
GameTextForPlayer(playerid, "~r~You have failed!", 5000, 5);
isInExam[playerid]=0; checkpoint[playerid]=0; examCarPlayer[playerid]=0;
for(new i=0; i<3; i++)
{
if(examCar[i][0]==vehicleid)
{
examCar[i][1]=-1;
break;
}
}
SetPlayerWeather(playerid, 1);
RemovePlayerFromVehicle(playerid); RemoveVehicleComponent(vehicleid, componentid);
SetVehicleToRespawn(vehicleid);
DisablePlayerCheckpoint(playerid);
}
return 1;
}
public OnVehicleDamageStatusUpdate(vehicleid, playerid)
{
new Float:health;
GetVehicleHealth(vehicleid,health);
for(new i=0; i<MAX_PLAYERS; i++)
{
if(isInExam[i] && examCarPlayer[i]==vehicleid && playerid!=i)
{
FixCar(vehicleid); SetVehicleHealth(vehicleid, oldHP); allowHPchange = true;
SendClientMessage(playerid,BLUE,"Don't bother, it's bulletproof :))");
break;
}
}
oldHP = health;
return 1;
}
public OnPlayerUpdate(playerid)
{
if(IsPlayerInVehicle(playerid, examCarPlayer[playerid]) && isInExam[playerid])
{
new Float:health;
GetVehicleHealth(examCarPlayer[playerid], health);
if(health > oldHP && allowHPchange==false)
{
if(timeChanged)
{
new h,m,s;
gettime(h,m,s); SetPlayerTime(playerid, h, m); timeChanged = false;
}
SendClientMessage(playerid,BLUE,"NO CHEATING MOTHERFUCKER!");
GameTextForPlayer(playerid, "~r~You have failed!", 10000, 5);
isInExam[playerid]=0; checkpoint[playerid]=0;
for(new i=0; i<3; i++)
{
if(examCar[i][0]==examCarPlayer[playerid])
{
examCar[i][1]=-1;
break;
}
}
SetPlayerWeather(playerid, 1);
RemovePlayerFromVehicle(playerid); SetVehicleToRespawn(examCarPlayer[playerid]);
DisablePlayerCheckpoint(playerid);
examCarPlayer[playerid]=0;
}
else if(allowHPchange) allowHPchange = false;
}
return 1;
}
forward LoadLicense(playerid, name[], value[]);
public LoadLicense(playerid, name[], value[])
{
INI_Int("DrivingLicense", Player[playerid]);
return 0;
}
stock GetPlayerDrivingLicense(playerid)
{
new name[MAX_PLAYER_NAME],string[256];
GetPlayerName(playerid,name,sizeof(name));
format(string,256,"Players/%s.ini",name);
INI_ParseFile(string,"LoadLicense", .bExtra=true, .extra=playerid);
}
stock SavePlayerLicense(playerid)
{
new INI:player;
new name[MAX_PLAYER_NAME],string[256];
GetPlayerName(playerid,name,sizeof(name));
format(string,256,"Players/%s.ini",name);
player = INI_Open(string);
INI_WriteInt(player, "DrivingLicense", Player[playerid]);
INI_Close(player);
}
stock SetPlayerMoney(playerid, money)
{
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, money);
}
FixCar(vehicleid)
{
new panels, doors, lights, tires;
GetVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
tires = encode_tires(0, 0, 0, 0);
panels = encode_panels(0, 0, 0, 0, 0, 0, 0);
doors = encode_doors(0, 0, 0, 0, 0, 0);
lights = encode_lights(0, 0, 0, 0);
UpdateVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
}
encode_tires(tire1, tire2, tire3, tire4) return tire1 | (tire2 << 1) | (tire3 << 2) | (tire4 << 3);
encode_panels(flp, frp, rlp, rrp, windshield, front_bumper, rear_bumper)
{
return flp | (frp << 4) | (rlp << 8) | (rrp << 12) | (windshield << 16) | (front_bumper << 20) | (rear_bumper << 24);
}
encode_doors(bonnet, boot, driver_door, passenger_door, behind_driver_door, behind_passenger_door)
{
#pragma unused behind_driver_door
#pragma unused behind_passenger_door
return bonnet | (boot << 8) | (driver_door << 16) | (passenger_door << 24);
}
encode_lights(light1, light2, light3, light4)
{
return light1 | (light2 << 1) | (light3 << 2) | (light4 << 3);
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
{
if(dialogid==1 && response==1)
{
switch(listitem)
{
case 0:
{
dialog = CreatePickup(1239,6,1160.1805,1394.2655,5.8203,-1);
SetPlayerCheckpoint(playerid,1160.1805,1394.2655,5.8203,6.0);
}
case 1:
SendClientMessage(playerid,BLUE,"Okay, Mr.Stupid");
}
}
return 0;
}
C:\Documents and Settings\Mostwanted\Desktop\samp03e_svr_win32\filt erscripts\Drivingschool1.pwn(425) : error 030: compound statement not closed at the end of file (started at line 403)