Hola amigos. Realice un filterscript por pedido de un usuario.
Se trata de un trabajo de basurero para dos personas.
Caracterнsticas:
- Debe de tener el Skin 50 para poder trabajar
- Deben de estar en el mismo vehнculo (Basurero) para empezar el trabajo
- Se marca un checkpoint a los dos jugador de la basura mas cercana a su posiciуn
- Cuando termine de revisar una basura, se le marcara otro checkpoint de la basura mas cercana
- Al revisar la basura, se le darб aleatoriamente una cantidad de dinero a los dos jugador (100$ mбximo)[Esta parte es rara, pero asн lo pidiу]
- No tiene HQ ni vehiculos, tu tienes agregarlos por tu cuenta
- Puedes aсadirle tus propias restricciones para que funcione con el sistema de trabajo que tenga tu gm.
Para agregar mas puntos de basura usa la funciуn que cree:
pawn Код:
CrearBasura(Float:X, Float:Y, Float:Z)
Donde X, Y, Z son las coordenadas de la basura, se tiene que agregar en
OnFilterScriptInit()
Los ejemplos que coloque son estos:
pawn Код:
CrearBasura(411.3767, -1463.5654, 30.6637);
CrearBasura(423.5184, -1568.1147, 27.5688);
CrearBasura(435.6256, -1601.5014, 25.4765);
CrearBasura(487.7834, -1645.3548, 23.7031);
CrearBasura(515.1145, -1706.8461, 12.5314);
CrearBasura(468.1481, -1729.4348, 10.6985);
CrearBasura(350.2008, -1765.1225, 5.3103 );
CrearBasura(339.8854, -1772.7329, 5.1661 );
CrearBasura(303.0834, -1731.0209, 4.4575 );
Puedes borrarlos y crear unos nuevos.
Comandos:- /Basurero <ID> | Empieza a trabajar de basurero con un amigo
- /SalirBasura | Deja de trabajar de basurero
- /VerBasura | Revisa la basura en la que te encuentras
Para poder compilar este FS necesitas la librerнa de YSI, el include/plugin sscanf2 y el include/plugin streamer.
YSI(3.1):
https://sampforum.blast.hk/showthread.php?tid=321092 (NO utilizar la 4.0 BETA)
sscanf2:
https://sampforum.blast.hk/showthread.php?tid=120356
streamer:
https://sampforum.blast.hk/showthread.php?tid=102865
Mini-Guнa: Pasar este FS a un GM
Esta mini-guнa os explicare como pasarlo a u gm cualquiera.
Primero, tenemos que colocar los includes y las definiciones junto con las variables al inicio del gm.
Claro esta que si el gm ya tiene un include puesto, no copiarlo.
pawn Код:
#include <YSI\y_commands>
#include <YSI\y_colors>
#include <YSI\y_va>
#include <sscanf2>
#include <streamer>
#define MAX_RUTAS 1
#define MAX_BASURAS 10
new Float:Basura[MAX_BASURAS][3];
new BasuraO[MAX_BASURAS][5];
new BasuraCP[MAX_BASURAS];
new EnCP[MAX_PLAYERS];
new BasuraID = 0;
new Amigo[MAX_PLAYERS];
new bool:Conductor[MAX_PLAYERS];
new bool:Pasajero[MAX_PLAYERS];
Despuйs, copiamos todo lo que este entre las lineas 20 y 169(FS sin modificaciones) y lo copiamos al final de nuestro gm.
Para continuar, tenemos que copiar el contenidos de nuestro callbacks (public) y pasarlos a los callbacks de tu gm. Por ejemplo:
pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
if(Conductor[playerid] != false)
{
Conductor[playerid] = false;
Pasajero[Amigo[playerid]] = false;
Msg(Amigo[playerid], X11_GRAY, "Tu amigo(%d) se ha desconectado", playerid);
for(new x = 0; x < BasuraID; x++)
{
TogglePlayerDynamicCP(playerid, BasuraCP[x], false);
TogglePlayerDynamicCP(Amigo[playerid], BasuraCP[x], false);
}
Amigo[Amigo[playerid]] = -1;
Amigo[playerid] = -1;
}
if(Pasajero[playerid] != false)
{
Pasajero[playerid] = false;
Conductor[Amigo[playerid]] = false;
Msg(Amigo[playerid], X11_GRAY, "Tu amigo(%d) se ha desconectado", playerid);
for(new x = 0; x < BasuraID; x++)
{
TogglePlayerDynamicCP(playerid, BasuraCP[x], false);
TogglePlayerDynamicCP(Amigo[playerid], BasuraCP[x], false);
}
Amigo[Amigo[playerid]] = -1;
Amigo[playerid] = -1;
}
return 1;
}
Como verбn, tenemos que copiar desde
if(Conductor[playerid] != false) hasta una linea antes del ultimo
return 1; es decir, esto:
pawn Код:
if(Conductor[playerid] != false)
{
Conductor[playerid] = false;
Pasajero[Amigo[playerid]] = false;
Msg(Amigo[playerid], X11_GRAY, "Tu amigo(%d) se ha desconectado", playerid);
for(new x = 0; x < BasuraID; x++)
{
TogglePlayerDynamicCP(playerid, BasuraCP[x], false);
TogglePlayerDynamicCP(Amigo[playerid], BasuraCP[x], false);
}
Amigo[Amigo[playerid]] = -1;
Amigo[playerid] = -1;
}
if(Pasajero[playerid] != false)
{
Pasajero[playerid] = false;
Conductor[Amigo[playerid]] = false;
Msg(Amigo[playerid], X11_GRAY, "Tu amigo(%d) se ha desconectado", playerid);
for(new x = 0; x < BasuraID; x++)
{
TogglePlayerDynamicCP(playerid, BasuraCP[x], false);
TogglePlayerDynamicCP(Amigo[playerid], BasuraCP[x], false);
}
Amigo[Amigo[playerid]] = -1;
Amigo[playerid] = -1;
}
Repetir este mismo proceso para el resto de callbakc.
PD: Si no encuentras el callback (por ejemplo OnPlayerLeaveDynamicCP) tendras que copiarlo desde el public hasta la ultima llave }
PD.2: El contenido de
OnFilterScriptExit() y
OnFilterScriptInit() va dentro de
OnGameModeExit() y
OnGameModeInit() respectivamente.
Solo aclaro dudas sobre el fs, bugs y demбs en este tema.
Este fs esta creado para que funcione en cualquier gamemode que no inhabilite ninguna de las funciones del mismo.
Por favor, no suban este FS a otro gestor de descargas.
Por favor, no publicar otras versiones de este mismo FS
Si encuentran algъn bug o tienen alguna recomendaciуn, no duden en decнrmela
www.youtube.com/watch?v=4UGPKivJ-co