Noticias:

No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.

Menú Principal

Taxi: Mini Mision

Iniciado por Swarlog, May 13, 2025, 06:14 PM

Tema anterior - Siguiente tema

Swarlog

No puedes ver este adjunto.

No puedes ver este adjunto.

Muy Buenas!

Aquí os dejo un script que encontré y que desde mi punto de vista esta bastante bien para servidores DM/St/Fr. Se trata de un sistema de taxista, con el que podremos trabajar de taxista transportando a pasajeros y ganar un dinero extra por ello. El dinero dependerá de la distancia a recorrer y/o el tiempo que se lleve el pasajero dentro del taxi.

El funcionamiento es básicamente facil, lo que si he hecho es pasar el código a nuestra plantilla por defecto.
Espero que os guste, adjunto imagenes y archivo a descargar con su code.


// ----------------------------------------------------------------------
// Creado para la comunidad U3Games --> http://samp.united-extreme.com
// De la comunidad de juegos online --> http://u3games.united-extreme.com
// TAXI: Mini Mission - By zeruel_angel - Version: 1.0
// ----------------------------------------------------------------------

#include <a_samp>

//----------------------------------------------------------
// DEFINE:
//----------------------------------------------------------

#define BAJADA_DE_BANDERA 200
#define PRECIO_FICHA 100

//----------------------------------------------------------
// NEW:
//----------------------------------------------------------

new OnTaxiAsPassenger[MAX_PLAYERS];
new CostoDelViaje[MAX_PLAYERS];
new contador[MAX_PLAYERS];
new playerInMiniMission[MAX_PLAYERS];
new avisado[MAX_PLAYERS];
new caidadefichaTimer;
new cantidadPasajeros;

//----------------------------------------------------------
// FORWARD:
//----------------------------------------------------------

forward terminarMission(playerid);
forward caidadeficha();

//----------------------------------------------------------
// CODIGO INTERNO SCRIPT:
//----------------------------------------------------------

public OnFilterScriptInit()
{
	//Mensaje de la ejecucion del scripts:
	print("[TAXI] Sistema mini-mision cargado correctamente.");
	
	for (new i=0;i<MAX_PLAYERS;i++)
	{
		playerInMiniMission[i]=-1;
		avisado[i]=-1;
		OnTaxiAsPassenger[i]=-1;
	}
    caidadefichaTimer=-1;
    cantidadPasajeros=0;
	SetTimer("caidadeficha", 30000, 1);
	
	return 1;
}

public OnFilterScriptExit()
{
	//Mensaje de la ejecucion del scripts:
	print("[TAXI] Sistema mini-mision deshabilitado correctamente.");
	return 1;
}

main()
{
	// Mensaje final al cargar el servidor:
	print("[TAXI] Script de la mini-mision cargado correctamente.");
}

//----------------------------------------------------------
// CODIGO SCRIPT:
//----------------------------------------------------------

public OnGameModeInit()
{
	return 1;
}

public OnGameModeExit()
{
	return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
	return 1;
}

public OnPlayerConnect(playerid)
{
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
	if 	(playerInMiniMission[playerid]>0)
	{
		terminarMission(playerid);
	}
	
	OnTaxiAsPassenger[playerid]=-1;
	
	return 1;
}

public OnPlayerSpawn(playerid)
{
	return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
	return 1;
}

public OnVehicleSpawn(vehicleid)
{
	return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
	return 1;
}

public OnPlayerText(playerid, text[])
{
	return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
	return 0;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
	return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
	return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
	new msg[255];
	
	if 	(newstate==PLAYER_STATE_DRIVER)
	{
		if (GetVehicleModel(GetPlayerVehicleID(playerid)) == 420)
		{
			if 	(avisado[playerid]==-1)
			{
				GameTextForPlayer(playerid,"~w~Presiona ~b~2~n~~w~para comenzar la ~n~~r~MISSION DE~w~ TAXI.",3000,5);
			}
			else
			{
				KillTimer(avisado[playerid]);
				avisado[playerid]=-1;
			}
		}
	}
	
	if 	(newstate==PLAYER_STATE_ONFOOT)
	{
		if 	((playerInMiniMission[playerid]>0)&&(avisado[playerid]==-1))
		{
			GameTextForPlayer(playerid,"~w~Tienes ~r~10 sec ~n~~w~ para entrar a un ~r~TAXI",3000,4);
			avisado[playerid]=SetTimerEx("terminarMission",10000,0,"%d",playerid);
		}
		if 	(OnTaxiAsPassenger[playerid]!=-1)
		{
			new taxista = OnTaxiAsPassenger[playerid];
			new name[MAX_PLAYER_NAME];
			GetPlayerName(taxista,name,MAX_PLAYER_NAME);
			OnTaxiAsPassenger[playerid]=-1;
			new viaje = CostoDelViaje[playerid];
			format(msg,sizeof(msg),"~w~ Has pagado al taxista ~g~%s ~n~~r~$%d~w~ por el  ~r~trabajo de~w~ taxi.",name,viaje);
			GameTextForPlayer(playerid,msg,3000,4);
			format(msg,sizeof(msg),"~w~Obtuviste ~r~$%d~w~ ~n~por el ~r~trabajo de~w~ taxi.",viaje);
			GameTextForPlayer(taxista,msg,3000,4);
			GivePlayerMoney(playerid,-viaje);
			GivePlayerMoney(taxista,viaje);
			cantidadPasajeros--;
			if 	(cantidadPasajeros==0)
			{
				KillTimer(caidadefichaTimer);
			}
		}
	}
	
	if 	(newstate==PLAYER_STATE_PASSENGER)
	{
		if (GetVehicleModel(GetPlayerVehicleID(playerid)) == 420)
		{
			new i=0;
	  		while (i<MAX_PLAYERS)
	  		{
	  			if 	((playerInMiniMission[i]==1)&&(GetPlayerState(i)==PLAYER_STATE_DRIVER))
	  			{
					if 	(GetPlayerVehicleID(i) == GetPlayerVehicleID(playerid))
					{
						new name[MAX_PLAYER_NAME];
						GetPlayerName(i,name,MAX_PLAYER_NAME);
						contador[i]++;
						format(msg,sizeof(msg),"~w~You have gotten into ~n~~g~%s's ~r~TAXI~w~",name);
						GameTextForPlayer(playerid,msg,3000,4);
						format(msg,sizeof(msg),"~w~You have one new~n~~r~PASENGER~w~");
						GameTextForPlayer(playerid,msg,3000,4);
						OnTaxiAsPassenger[playerid]=i;
						CostoDelViaje[playerid]=BAJADA_DE_BANDERA;
						if 	(cantidadPasajeros==0)
						{
							caidadefichaTimer=SetTimer("caidadeficha",30000,1);
						}
						cantidadPasajeros++;
						i=MAX_PLAYERS;
					}
	  			}
	  			i++;
	  		}
		}
	}
	
	return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
	return 1;
}

public OnPlayerLeaveCheckpoint(playerid)
{
	return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
	return 1;
}

public OnPlayerLeaveRaceCheckpoint(playerid)
{
	return 1;
}

public OnRconCommand(cmd[])
{
	return 1;
}

public OnPlayerRequestSpawn(playerid)
{
	return 1;
}

public OnObjectMoved(objectid)
{
	return 1;
}

public OnPlayerObjectMoved(playerid, objectid)
{
	return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
	return 1;
}

public OnVehicleMod(playerid, vehicleid, componentid)
{
	return 1;
}

public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
	return 1;
}

public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
	return 1;
}

public OnPlayerSelectedMenuRow(playerid, row)
{
	return 1;
}

public OnPlayerExitedMenu(playerid)
{
	return 1;
}

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
	return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
	if ((newkeys==KEY_SUBMISSION)&&(IsPlayerInAnyVehicle(playerid))&&(GetPlayerState(playerid)==PLAYER_STATE_DRIVER))
	{
		if (GetVehicleModel(GetPlayerVehicleID(playerid)) == 420)
		{
			if 	(playerInMiniMission[playerid]<0)
			{
				MissionIni(playerid);
			}
			else
			{
				terminarMission(playerid);
			}
		}
	}
	
	return 1;
}

public OnRconLoginAttempt(ip[], password[], success)
{
	return 1;
}

public OnPlayerUpdate(playerid)
{
	return 1;
}

public OnPlayerStreamIn(playerid, forplayerid)
{
	return 1;
}

public OnPlayerStreamOut(playerid, forplayerid)
{
	return 1;
}

public OnVehicleStreamIn(vehicleid, forplayerid)
{
	return 1;
}

public OnVehicleStreamOut(vehicleid, forplayerid)
{
	return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
	return 1;
}

//----------------------------------------------------------
// CODIGO ADICIONAL:
//----------------------------------------------------------

public terminarMission(playerid)
{
	new msg[255];
	format(msg,sizeof(msg),"~r~TAXI ~w~MiniMission cancelada~n~ Llevaste ~r~%d~w~ pasajeros.",contador[playerid]);
	GameTextForPlayer(playerid,msg,3000,4);
	playerInMiniMission[playerid]=-1;
	avisado[playerid]=-1;
   	new name[MAX_PLAYER_NAME];
	GetPlayerName(playerid,name,MAX_PLAYER_NAME);
   	format(msg,sizeof(msg),"***ATENCION: %s ya no es taxista***",name);
	GetPlayerName(playerid,name,MAX_PLAYER_NAME);
	for (new i=0;i<MAX_PLAYERS;i++)
	{
		if 	(playerid!=i)
		{
			SendClientMessage(i,0xFFFF00AA," ");
			SendClientMessage(i,0xFFFF00AA,msg);
		}
	}
	for (new i=0;i<MAX_PLAYERS;i++)
	{
		if  (OnTaxiAsPassenger[i]==playerid)
		{
			new taxista = playerid;
			OnTaxiAsPassenger[i]=-1;
			new viaje=CostoDelViaje[i];
			format(msg,sizeof(msg),"~w~ Has pagado al taxista ~g~%s ~n~~r~$%d~w~ por el  ~r~trabajo de~w~ taxi.",name,viaje);
			GameTextForPlayer(i,msg,3000,4);
			format(msg,sizeof(msg),"~w~Obtuviste ~r~$%d~w~ ~n~por el ~r~trabajo de~w~ taxi.",viaje);
			GameTextForPlayer(taxista,msg,3000,4);
			GivePlayerMoney(i,-viaje);
			GivePlayerMoney(taxista,viaje);
			cantidadPasajeros--;
			if 	(cantidadPasajeros==0)
			{
				KillTimer(caidadefichaTimer);
			}
		}
	}
	
	contador[playerid]=0;
	return 1;
}


public caidadeficha()
{
	for (new i=0;i<MAX_PLAYERS;i++)
	{
		CostoDelViaje[i]=CostoDelViaje[i]+PRECIO_FICHA;
	}
}

MissionIni(playerid)
{
	playerInMiniMission[playerid]=1;
	GameTextForPlayer(playerid,"~r~TAXI ~w~MiniMision ~w~iniciada",3000,4);
	new name[MAX_PLAYER_NAME];
	GetPlayerName(playerid,name,MAX_PLAYER_NAME);
	new msg[255];
	format(msg,sizeof(msg),"***ATENTION: %s is now a TAXI DRIVER***",name);
	for (new i=0;i<MAX_PLAYERS;i++)
	{
		if 	(playerid!=i)
		{
			SendClientMessage(i,0xFFFF00AA," ");
			SendClientMessage(i,0xFFFF00AA,msg);
		}
	}
	
	return 1;
}

Descargar:

No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.