Duda helipcotero
#1

Buenas, vengo aca haber si me podrian ayudar con este sistema, que bajes del a cuerda por el helipcotero



Lo quiero integrar a mi gm, que al poner /cuerda empieze ah bajar del helipcotero asi como en la imagen espero ayuda
Reply
#2

Es un tanto difнcil de hacerlo. Lo ъnico que se me ocurre es algo asн:

- Crear las cuerdas claro.
- Poner un objeto invisible debajo de los jugadores, mientras que pones a los jugadores encima de dichos objetos.
- Bajar esos objetos lentamente.
- Aplicar una animaciуn al jugador para que simule que va bajando por la cuerda.
Reply
#3

Aqui un FS..

Intente probarlo pero no me funciono que tiene de malo?

Quote:

//======================================== Inicio FS ========================================//


//================================================== ==============================//
#include <a_samp>
#include <mapandreas>

//================================================== ==============================//
#define players 500
#define chopperid 497
#define ropelength 50
#define skinid 285

//================================================== ==============================//
#define offsetz 12
#define dur 250

//================================================== =============================//
new r0pes[players][ropelength],Floatl_pos[players][5];
//================================================== =============================//

public OnFilterScriptInit()
{
MapAndreas_Init(MAP_ANDREAS_MODE_FULL);
print("\n--------------------------------------");
print(" <Advanced Rope (v1)> ");
print(" © Trooper([Y]) , 2010 (Nicksoft) ");
print("--------------------------------------\n");

return 1;
}

public OnFilterScriptExit()
{
return 1;
}

public OnPlayerConnect(playerid)
{
return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
if(GetPVarInt(playerid,"roped") == 1)
{
for(new destr=0;destr<=ropelength;destr++)
{
DestroyObject(r0pes[playerid][destr]);
}
}
return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
if(GetPVarInt(playerid,"roped") == 1)
{
for(new destr2=0;destr2<=ropelength;destr2++)
{
DestroyObject(r0pes[playerid][destr2]);
}
SetPVarInt(playerid,"roped",0);
DisablePlayerCheckpoint(playerid);
}
return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
if(GetVehicleModel(vehicleid) == chopperid)
{
for(new shg=0;shg<=players;shg++)
{
if(GetPVarInt(shg,"chop_id") == vehicleid && GetPVarInt(shg,"roped") == 1)
{
DisablePlayerCheckpoint(shg);
SetPVarInt(shg,"roped",0);
DisablePlayerCheckpoint(shg);
ClearAnimations(shg);
TogglePlayerControllable(shg,1);
for(new destr3=0;destr3<=ropelength;destr3++)
{
DestroyObject(r0pes[shg][destr3]);
}
}
}
}
return 1;
}

forward syncanim(playerid);
public syncanim(playerid)
{
if(GetPVarInt(playerid,"roped") == 0) return 0;
SetTimerEx("syncanim",dur,0,"i",playerid);
ApplyAnimation(playerid,"ped","abseil",4.0,0,0,0,1 ,0);
return 1;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(GetVehicleModel(vehicleid) == chopperid && ispassenger)
{
SetPVarInt(playerid,"chop_id",GetPlayerVehicleID(p layerid));
SetPVarInt(playerid,"roped",0);
}
else SetPVarInt(playerid,"chop_id",0);
return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
if(GetPVarInt(playerid,"roped") == 1 && GetPlayerSkin(playerid) == skinid)
{
SetPVarInt(playerid,"roped",0);
SetPVarInt(playerid,"chop_id",0);
ClearAnimations(playerid);
TogglePlayerControllable(playerid,0);
TogglePlayerControllable(playerid,1);
DisablePlayerCheckpoint(playerid);
for(new destr4=0;destr4<=ropelength;destr4++)
{
DestroyObject(r0pes[playerid][destr4]);
}
}

return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(GetPlayerSkin(playerid) == skinid && GetPVarInt(playerid,"roped") == 0 && GetPlayerVehicleSeat(playerid) != 0 && IsPlayerInAnyVehicle(playerid) && (newkeys & KEY_SUBMISSION || newkeys == KEY_SUBMISSION))
{
GetPlayerPos(playerid,pl_pos[playerid][0],pl_pos[playerid][1],pl_pos[playerid][2]);
MapAndreas_FindZ_For2DCoord(pl_pos[playerid][0],pl_pos[playerid][1],pl_pos[playerid][3]);
pl_pos[playerid][4] = floatsub(pl_pos[playerid][2],pl_pos[playerid][3]);
if(pl_pos[playerid][4] >= ropelength) return SendClientMessage(playerid,0xAA3333AA,"Usted estб demasiado asustado para deslizarse desde esta altura");
if(pl_pos[playerid][4] <= 2) return RemovePlayerFromVehicle(playerid);
SetPVarInt(playerid,"roped",1);
SetPlayerCheckpoint(playerid,pl_pos[playerid][0],pl_pos[playerid][1],floatsub(pl_pos[playerid][3],offsetz),20);
SetPlayerPos(playerid,pl_pos[playerid][0],pl_pos[playerid][1],floatsub(pl_pos[playerid][2],2));
SetPlayerVelocity(playerid,0,0,0);
for(new rep=0;rep!=10;rep++) ApplyAnimation(playerid,"ped","abseil",4.0,0,0,0,1 ,0);
for(new cre=0;cre<=pl_pos[playerid][4];cre++)
{
r0pes[playerid][cre] = CreateObject(3004,pl_pos[playerid][0],pl_pos[playerid][1],floatadd(pl_pos[playerid][3],cre),87.640026855469,342.13500976563, 350.07507324219);
}
SetTimerEx("syncanim",dur,0,"i",playerid);
}
return 1;
}

Reply
#4

Creo que seria restando la posicion z del jugador cada 1 segundo, es lo que se me ocurre, osea primero obtienes la posicion y luego le restas a la z 2 posiciones cada 1 segundo o 2 o algo a si O.o
Reply
#5

Quote:
Originally Posted by juandiegox
Посмотреть сообщение
Creo que seria restando la posicion z del jugador cada 1 segundo, es lo que se me ocurre, osea primero obtienes la posicion y luego le restas a la z 2 posiciones cada 1 segundo o 2 o algo a si O.o
Es mejor la forma de Enzo.
Reply
#6

Quote:
Originally Posted by adri1
Посмотреть сообщение
Es mejor la forma de Enzo.
Sinceramente no lo creo, si baja con un objeto y el sujeto tiene un poco de lag lo que hara es que el objeto bajara primero que el personaje y el personaje caera encima del objeto lo que hara perder la animacion... acontinuacion una imagen demostrativa:
Reply
#7

Quote:
Originally Posted by juandiegox
Посмотреть сообщение
Sinceramente no lo creo, si baja con un objeto y el sujeto tiene un poco de lag lo que hara es que el objeto bajara primero que el personaje y el personaje caera encima del objeto lo que hara perder la animacion... acontinuacion una imagen demostrativa:
Off: Muy bien graficado jaja

No seria mejor un objeto donde el player se pare en el heli, y luego con un comando ej: /bajar y empiese a restarle -1 o -2 al float Z ? obviamente por timer e.e
Reply
#8

їY como se elabolaria el codigo?, no se mucho de script.
Reply
#9

Esa imagen es de un servidor SA-MP?
Reply
#10

Quote:
Originally Posted by DesingMyCry
Посмотреть сообщение
Esa imagen es de un servidor SA-MP?
Creo que es LS-RP ENG
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)