Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Algoritmo posizionamento veicoli copchase
- */
- #include <a_samp>
- #include <Pawn.CMD>
- #define DISTANZA_FUGGITIVO (10.5)
- #define DISTANZA_FILA_POLIZIA (5.5)
- main(){}
- public OnPlayerText(playerid, text[])
- {
- if(IsPlayerInAnyVehicle(playerid))
- {
- new Float:x, Float:y, Float:z, Float:angle;
- new veh = GetPlayerVehicleID(playerid);
- AlgoritmoCopchase(veh, strval(text), x, y, z, angle);
- CreateVehicle(400, x, y, z, angle, -1, -1, 0);
- }
- new Float:gx, Float:gy, Float:gz;
- GetPlayerPos(playerid, gx, gy, gz);
- CreateVehicle(400, gx, gy, gz, 0.0, -1, -1, 0);
- return 1;
- }
- new counter = 1;
- CMD:c(playerid, params[])
- {
- new Float:x, Float:y, Float:z, Float:angle;
- new veh = GetPlayerVehicleID(playerid);
- AlgoritmoCopchase(veh, counter, x, y, z, angle);
- CreateVehicle(400, x, y, z, angle, -1, -1, 0);
- counter++;
- return 1;
- }
- stock AlgoritmoCopchase(vid_fuggitivo, numeroPosizioneID, &Float:ret_x, &Float:ret_y, &Float:ret_z, &Float:ret_angle)
- {
- new Float:fuggitivo_x, Float:fuggitivo_y, Float:fuggitivo_z, Float:fuggitivo_angolazione;
- GetVehiclePos(vid_fuggitivo, fuggitivo_x, fuggitivo_y, fuggitivo_z);
- GetVehicleZAngle(vid_fuggitivo, fuggitivo_angolazione);
- GetSideOfVehicle(vid_fuggitivo, 0, DISTANZA_FUGGITIVO, fuggitivo_x, fuggitivo_y, fuggitivo_z, fuggitivo_angolazione);
- new posizione, linea, Float:poliziotto_x, Float:poliziotto_y, Float:poliziotto_z;
- GetPosizioneLinea(numeroPosizioneID, posizione, linea);
- switch(posizione)
- {
- case 1:GetSideOfPos(poliziotto_x, poliziotto_y, poliziotto_z,fuggitivo_x, fuggitivo_y, fuggitivo_z, fuggitivo_angolazione, 2, 8, linea);
- case 2:GetSideOfPos(poliziotto_x, poliziotto_y, poliziotto_z,fuggitivo_x, fuggitivo_y, fuggitivo_z, fuggitivo_angolazione, 2, 4, linea);
- case 3:GetSideOfPos(poliziotto_x, poliziotto_y, poliziotto_z, fuggitivo_x, fuggitivo_y, fuggitivo_z, fuggitivo_angolazione, 0, 0 , linea);
- case 4:GetSideOfPos(poliziotto_x, poliziotto_y, poliziotto_z,fuggitivo_x, fuggitivo_y, fuggitivo_z, fuggitivo_angolazione, 3, 4, linea);
- case 5:GetSideOfPos(poliziotto_x, poliziotto_y, poliziotto_z,fuggitivo_x, fuggitivo_y, fuggitivo_z, fuggitivo_angolazione, 3, 8, linea);
- }
- ret_x = poliziotto_x;
- ret_y = poliziotto_y;
- ret_z = poliziotto_z;
- ret_angle = fuggitivo_angolazione;
- return 1;
- }
- stock GetPosizioneLinea(numeroPosizione, &posizione, &linea)
- {
- new numeroMinore = 1, numeroMaggiore = 5, linea_n = 1;
- for ( ; ; )
- {
- if(numeroPosizione >= numeroMinore && numeroPosizione <= numeroMaggiore)
- {
- if(linea_n == 1) posizione = numeroPosizione;
- else posizione = numeroPosizione -= (5*(linea_n-1));
- linea = linea_n;
- break;
- }
- else
- {
- numeroMinore += 5;
- numeroMaggiore += 5;
- }
- linea_n ++;
- }
- return 1;
- }
- stock GetSideOfPos(&Float:x, &Float:y, &Float:z, Float:distanza_x, Float:distanza_y, Float:distanza_z, Float:angle, side, Float:distance, linea) // Funzione per ottenere il backside di un veicolo
- {
- x = distanza_x;
- y = distanza_y;
- z = distanza_z;
- x -= ((DISTANZA_FILA_POLIZIA*linea) * floatsin(-angle, degrees));
- y -= ((DISTANZA_FILA_POLIZIA*linea) * floatcos(-angle, degrees));
- switch(side) // 0 back | 1 front | 2 sx | 3 dx
- {
- case 0: // backside
- {
- x -= (distance * floatsin(-angle, degrees));
- y -= (distance * floatcos(-angle, degrees));
- }
- case 1: // backside
- {
- x -= (distance * floatsin(angle, degrees));
- y -= (distance * floatcos(angle, degrees));
- }
- case 2:
- {
- //angle= angle+90.0;
- x += (distance * floatsin(-angle-90, degrees));
- y += (distance * floatcos(-angle-90, degrees));
- //angle = angle - 90.0;
- }
- case 3:
- {
- //angle= angle+90.0;
- x += (distance * floatsin(-angle+90, degrees));
- y += (distance * floatcos(-angle+90, degrees));
- // angle = angle - 90.0;
- }
- }
- return 1;
- }
- stock GetSideOfVehicle(vehicleid, side, Float:distance, &Float:x, &Float:y, &Float:z, &Float:angle) // Funzione per ottenere il backside di un veicolo
- {
- GetVehiclePos(vehicleid, x, y, z);
- GetVehicleZAngle(vehicleid, angle);
- switch(side) // 0 back | 1 front | 2 sx | 3 dx
- {
- case 0: // backside
- {
- x -= (distance * floatsin(-angle, degrees));
- y -= (distance * floatcos(-angle, degrees));
- GetVehicleZAngle(vehicleid, angle);
- }
- case 1: // backside
- {
- x -= (distance * floatsin(angle, degrees));
- y -= (distance * floatcos(angle, degrees));
- GetVehicleZAngle(vehicleid, angle);
- }
- case 2:
- {
- angle= angle+90.0;
- x += (distance * floatsin(-angle, degrees));
- y += (distance * floatcos(-angle, degrees));
- angle = angle - 90.0;
- }
- case 3:
- {
- angle= angle+90.0;
- x += (distance * floatsin(angle, degrees));
- y += (distance * floatcos(angle, degrees));
- angle = angle - 90.0;
- }
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement