28.05.2012, 11:08
Код:
*/ #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; }
Error name:
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)
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase
1 Error.