//------------------------------------------------------------------------------
//
// Tour miniMission Filter Script v1.0
// Designed for SA-MP v0.2.1
//
// Created by zeruel_angel
// altered for busses buy c-middia
// and to work with other racecheckpoint systems
//------------------------------------------------------------------------------
#include <a_samp>
enum bus_stops
{
Float:Size,
Float:X,
Float:Y,
Float:Z
}
#define COACH 437
#define BONUS 500
#define MAX_CASH 2000
#define MIN_CASH 1000
#define MAX_ESTACIONES 100
new EDSbus[MAX_ESTACIONES][bus_stops];
new busDestinations[]="busstops.txt";
new playerInbusMission[MAX_PLAYERS];
new Cantbusstop;
new buscontador[MAX_PLAYERS];
new busdest[MAX_PLAYERS];
new avisadobus[MAX_PLAYERS];
new buslinea[255];
forward terminarMission(playerid);
//------------------------------------------------------------------------------------------------------
public OnFilterScriptInit()
{
print("\n Tour Filter Script v1.0 Loading...\n***********************************\n (Zeruel_Angel)\n");
//cargo los checkpoints desde el archivo
new File:file1;
new j=0;
new idx;
file1 = fopen(busDestinations,io_readwrite);
while ((fread(file1,buslinea,sizeof(buslinea),false))&&(j<MAX_ESTACIONES))
{
idx = 0;
EDSbus[j][Size] = floatstr(strtok(buslinea,idx));
EDSbus[j][X] = floatstr(strtok(buslinea,idx));
EDSbus[j][Y] = floatstr(strtok(buslinea,idx));
EDSbus[j][Z] = floatstr(strtok(buslinea,idx));
j++;
}
fclose(file1);
Cantbusstop=j;
format(buslinea,sizeof(buslinea),"Cantidad total de Destinos cargados: %d", Cantbusstop);
print(buslinea);
for (new i=0;i<MAX_PLAYERS;i++)
{
avisadobus[i]=-1;
}
print("Tour Filter Script fully Loaded\n**********************************\n\n");
}
//------------------------------------------------------------------------------------------------------
public OnFilterScriptExit()
{
print("\n Tour Script UnLoaded\n********************************************\n\n");
return 1;
}
//------------------------------------------------------------------------------------------------------
strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
//------------------------------------------------------------------------------------------------------
public terminarMission(playerid)
{
// GameTextForPlayer(playerid,"~r~Coach ~n~ ~w~MiniMision ~n~~w~cancelled",3000,4);
SendClientMessage(playerid,0xFF0000FF,"Coach MiniMision cancelled");
// DestroyVehicle(playerInbusMission[playerid]);
playerInbusMission[playerid]=0;
avisadobus[playerid]=-1;
DisablePlayerRaceCheckpoint(playerid);
buscontador[playerid]=0;
return 1;
}
//------------------------------------------------------------------------------------------------------
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if (newstate==PLAYER_STATE_DRIVER && GetVehicleModel(GetPlayerVehicleID(playerid)) == 437 && avisadobus[playerid]==-1)
{
// if (GetVehicleModel(GetPlayerVehicleID(playerid)) == 437)
// {
// if (avisadobus[playerid]==-1)
// {
// GameTextForPlayer(playerid,"~w~Press ~b~Buttom 2~n~~w~to start ~r~Xoomer~n~~w~Minimission",3000,5);//SetTimerEx("MandarMensaje",5500,0,"%d",playerid);
SendClientMessage(playerid,0x00FF00FF,"Press Buttom 2 to start Coach Minimission");
}
else
{
KillTimer(avisadobus[playerid]);
avisadobus[playerid]=-1;
// }
// }
}
if (newstate==PLAYER_STATE_ONFOOT)
{
if ((playerInbusMission[playerid]!=0)&&(avisadobus[playerid]==-1))
{
// GameTextForPlayer(playerid,"~You have ~r~10 sec ~n~~w~ to get a Truck",3000,4);
SendClientMessage(playerid,0xFF0000FF,"You have 10 sec to get a Coach");
avisadobus[playerid]=SetTimerEx("terminarMission",10000,0,"%d",playerid);
}
}
return 1;
}
//------------------------------------------------------------------------------------------------------
/*
ProximaEstacion(playerid)
{
new index = busdest[playerid];
DisablePlayerRaceCheckpoint(playerid);
// playerInbusMission[playerid]=CreateVehicle(584,0.0,0.0,0.0,0.0,0,1,-1);
// AttachTrailerToVehicle(playerInbusMission[playerid],GetPlayerVehicleID(playerid));
playerInbusMission[playerid]=1;
SetPlayerRaceCheckpoint(playerid,0,EDSbus[index][X],EDSbus[index][Y],EDSbus[index][Z],1716.7765,1391.4298,10.2873,EDSbus[index][Size]);
//FALTA LO DEL TRAILER
return 1;
}
*/
//------------------------------------------------------------------------------------------------------
Refineria(playerid)
{
DisablePlayerRaceCheckpoint(playerid);
new index = random(Cantbusstop);
busdest[playerid]=index;
SetPlayerRaceCheckpoint(playerid,0,1716.7765,1391.4298,10.2873,EDSbus[index][X],EDSbus[index][Y],EDSbus[index][Z],EDSbus[index][Size]);
return 1;
}
//------------------------------------------------------------------------------------------------------
MissionIni(playerid)
{
// GameTextForPlayer(playerid,"~r~Coach ~w~MiniMision ~w~starts!~n~ go to the ~n~~r~LV Coach Station",3000,4);
SendClientMessage(playerid,0x00FF00FF,"Coach MiniMision starts! go to the LV Coach Station");
Refineria(playerid);
playerInbusMission[playerid]=-1;
return 1;
}
//------------------------------------------------------------------------------------------------------
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if ((newkeys==KEY_SUBMISSION)&&(IsPlayerInAnyVehicle(playerid))&&(GetPlayerState(playerid)==PLAYER_STATE_DRIVER))
{
if (GetVehicleModel(GetPlayerVehicleID(playerid)) == 437)
{
if (playerInbusMission[playerid]==0)
{
MissionIni(playerid);
}
else
{
terminarMission(playerid);
}
}
}
}
//------------------------------------------------------------------------------------------------------
public OnPlayerEnterRaceCheckpoint(playerid)
{
new vid = GetPlayerVehicleID(playerid);
if (playerInbusMission[playerid]==-1 && GetVehicleModel(GetPlayerVehicleID(playerid)) == 437)
{
SendClientMessage(playerid,0x00FF00FF,"The passangers are on the Coach Take it to the Destination");
// ProximaEstacion(playerid);
//
new index = busdest[playerid];
DisablePlayerRaceCheckpoint(playerid);
playerInbusMission[playerid]=1;
SetPlayerRaceCheckpoint(playerid,0,EDSbus[index][X],EDSbus[index][Y],EDSbus[index][Z],1716.7765,1391.4298,10.2873,EDSbus[index][Size]);
//
// }
// else
// {
// SendClientMessage(playerid,0xFF0000FF,"You need a Coach");
// }
return 1;
}
// GetVehicleModel(vid) == COACH
// if (GetVehicleModel(GetPlayerVehicleID(playerid) == 437) && playerInbusMission[playerid]!=0)
if ((GetVehicleModel(vid) == COACH) && playerInbusMission[playerid]==1)
{
// if (IsPlayerInAnyVehicle(playerid))
// {
// if ((GetVehicleModel(GetPlayerVehicleID(playerid)) == 437))
// &&(IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid)))
// &&(GetVehicleTrailer(GetPlayerVehicleID(playerid))==playerInbusMission[playerid]))
// {
buscontador[playerid]++;
new cash=(random(MAX_CASH-MIN_CASH)+MIN_CASH);
GivePlayerMoney(playerid,cash);
// DestroyVehicle(playerInbusMission[playerid]);
playerInbusMission[playerid]=-1;
Refineria(playerid);
if ((((buscontador[playerid]/5)*5)==buscontador[playerid])&&(buscontador[playerid]!=0))
{
new string[255];
format(string,sizeof(string),"You get a ~r~BONUS ~w~ every 5 times!.~n~You made %d tours, your bonus is ~n~~b~$%d",buscontador[playerid],buscontador[playerid]*BONUS);
// SendClientMessage(playerid,0x0000FFFF,"You need a truck");
GameTextForPlayer(playerid,string,3000,3);
}
else
{
GameTextForPlayer(playerid,"~w~Passengers deployed ! Here is your cash! ~n~Go back to ~r~Las Venturas",5000,3);
SendClientMessage(playerid,0x0000FFFF,"Passengers deployed ! Here is your cash ! Go back to Las Venturas");
}
}
// }
// }
return 1;
}
//------------------------------------------------------------------------------------------------------
public OnPlayerDisconnect(playerid)
{
if (playerInbusMission[playerid]!=0)
{
terminarMission(playerid);
}
return 1;
}