PDA

Просмотр полной версии : [Function] AttachVehicleToVehicle



Seregamil
05.01.2015, 15:10
Предисловие:
http://rghost.ru/60107191/image.png
Цена вопроса 3000р.

Понятия не имею как на меня вышел человек, который хотел эту работу, но вышел.
Мне было жалко брать деньги за 45 строк кода, поэтому размещаю это здесь.

http://s7.hostingkartinok.com/uploads/images/2015/01/347839be01e244708a7926a262255411.png
http://s7.hostingkartinok.com/uploads/images/2015/01/3fe9c73612398f848d598185a3b64282.png
http://s7.hostingkartinok.com/uploads/images/2015/01/37bf668703d40227c6ed0c920147b636.png

Чтобы убрать глупые вопросы:
- Мне лень писать клиент-сайд для багоМП
- Может выглядеть уебищно, если у машины будет большая скорость.
- Я пробовал альтернативный вариант с объектами, но благодаря рукожопому калкору вариант отпал, т.к. объекты, прикрепленные к чему-то, нельзя совокупить в страстном поцелуе вместе.
- Я извращенец, коих свет не видывал.

Функции:


AttachVehicleToVehicle( vehicleid, to_vehicleid, Float: offsetX, Float: offsetY, Float: offsetZ, Float: offsetA, time = 100 )
DeAttachVehicle( vehicleid )

Аргумент time отвечает за время, через которое машины снова совокупятся, если машина скоростная, то можно выставить ~15-20ms, если же медленная, то можно и так оставить.


//by Seregamil

native IsValidVehicle(vehicleid);

new vehicleAttached[ MAX_VEHICLES ] = { INVALID_VEHICLE_ID, ... };
new vehicleTimer[ MAX_VEHICLES ] ;

stock AttachVehicleToVehicle( vehicleid, to_vehicleid, Float: offsetX, Float: offsetY, Float: offsetZ, Float: offsetA, time = 100 ) {
if( !IsValidVehicle( vehicleid ) || !IsValidVehicle( to_vehicleid ) )
return INVALID_VEHICLE_ID ;

if( vehicleAttached[ vehicleid ] != INVALID_VEHICLE_ID )
return INVALID_VEHICLE_ID ;

vehicleAttached[ vehicleid ] = to_vehicleid ;
vehicleTimer[ vehicleid ] = SetTimerEx( "updateVehiclesWithAttach", time, false, "iiffffi", vehicleid, to_vehicleid, offsetX, offsetY, offsetZ, offsetA, time );
return vehicleid ;
}

stock DeAttachVehicle( vehicleid ) {
vehicleAttached[ vehicleid ] = INVALID_VEHICLE_ID ;
KillTimer( vehicleTimer[ vehicleid ] );
}

forward updateVehiclesWithAttach( vehicleid, to_vehicleid, Float: offsetX, Float: offsetY, Float: offsetZ, Float: offsetA, time ) ;
public updateVehiclesWithAttach( vehicleid, to_vehicleid, Float: offsetX, Float: offsetY, Float: offsetZ, Float: offsetA, time ) {
if( !IsValidVehicle( vehicleid ) || !IsValidVehicle( to_vehicleid ) )
return ;

new Float: x, Float: y, Float: z, Float: a ;

GetVehiclePos( to_vehicleid, x, y, z );
GetVehicleZAngle( to_vehicleid, a );

SetVehiclePos( vehicleid, x + offsetX, y + offsetY, z + offsetZ );
SetVehicleZAngle( vehicleid, a );

vehicleTimer[ vehicleid ] = SetTimerEx( "updateVehiclesWithAttach", time, false, "iifffi", vehicleid, to_vehicleid, offsetX, offsetY, offsetZ, offsetA, time );
}

Автор: Seregamil

Можете критиковать меня в пух и прах, я жду =3

Spectrum
07.01.2015, 12:32
КАК ТАК???:shock: БОГ СКРИПТЕНГА СКАЗАЛ ЧТО НАДА ПИСАТЬ ПЛУГИН!!1!!!111!

Seregamil
08.01.2015, 06:42
КАК ТАК???:shock: БОГ СКРИПТЕНГА СКАЗАЛ ЧТО НАДА ПИСАТЬ ПЛУГИН!!1!!!111!

Этот вариант рабочий,но можно сдплать лучше.

Arhan4hel
14.01.2015, 02:57
Этот вариант рабочий,но можно сдплать лучше.

Как?)

wAx
14.01.2015, 19:00
Все отлично.. Но.. У игроков со средним пингом, будет немного не хорошо выглядеть. А так, отличная работа, молодец!