Noticias:

Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate

Menú Principal

Taxi: Mini Mision

Iniciado por Swarlog, Ene 30, 2023, 04:29 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;
}