Wysłany: 2012-02-03, 00:21
kurczak1324
Wiek: 29 Na forum: 5819 dni Posty: 202
Nick w MP: Izzy
Piwa : 671
Siema, potrzebuje kodu kt?ry b?dze obracal obiekt do pewnego stopnia, a p??niej wraca? do tego jak by?o i tak w k??ko. Je?li kto? nie zrozumia? to powiem, ?e tworze obracaj?cy sie d?wig.
Kod: CreateDynamicObject(...);
Wysłany: 2012-02-03, 09:10
_Artek_
Zapalisz Jointa?
Wiek: 30 Na forum: 6173 dni Posty: 57
Piwa : 84
kurczak1324 , to zr?b to na zasadzie bramy open\close
Podpis
Telewizja wmawia wam, że mamy kryzys? Ja wam powiem, że kryzys jest wtedy, gdy Twoja laska mówi ci, że cię kocha, a Tobie nie staje.
Wysłany: 2012-02-03, 09:21
mmarcinn21
Programista
Wiek: 32 Na forum: 6363 dni Posty: 32
Piwa : 727
Zale?y jak np chcesz zmieni? pozycje d?wigu po wej?ciu do niego, dobrze by?o by u?y? :
Kod:
#define PRESSED(%0) \
(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
#define HOLDING(%0) \
((newkeys & (%0)) == (%0))
#define RELEASED(%0) \
(((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
public OnMoveKeyChange(playerid, newkeys, oldkeys)
{
if(PRESSED(KEY_UP))
SendClientMessage(playerid, -1, "Klikn??e? klawisz w prz?d");
if(HOLDING(KEY_LEFT))
SendClientMessage(playerid, -1, "Trzymasz klawisz skr?tu w lewo");
else if(RELEASED(KEY_LEFT))
SendClientMessage(playerid, -1, "Pu?ci?e? klawisz skr?tu w lewo");
return 1;
}
Podpis
Posiadam konto tylko na GtaOnline
Wysłany: 2012-02-03, 09:41
Fargo007
Wiek: 37 Na forum: 6113 dni Posty: 47
Piwa : 1227
Pawn #include <a_samp>
#include <zcmd>
#define MAX_CRANES 20
#define DISTANCE(%1,%2,%3,%4,%5,%6) floatsqroot((%1-%4)*(%1-%4) + (%2-%5)*(%2-%5) + (%3-%6)*(%3-%6))
enum CRANE_ENUM
{
EXIST ,
INUSE ,
Float : CRANE_POS_X ,
Float : CRANE_POS_Y ,
Float : CRANE_POS_Z ,
Float : PICKUP_POS_X ,
Float : PICKUP_POS_Y ,
Float : PICKUP_POS_Z ,
Float : CRANE_ANGLE ,
PICKUP ,
CRANE_TOP
}
new
cranes [ MAX_CRANES ][ CRANE_ENUM ],
usingCrane [ MAX_PLAYERS ][ 2 ];
stock GetXYInFrontOfPlayer ( playerid , & Float : x , & Float : y , Float : distance )
{
new Float : a ;
GetPlayerPos ( playerid , x , y , a );
GetPlayerFacingAngle ( playerid , a );
if ( GetPlayerVehicleID ( playerid )) { GetVehicleZAngle ( GetPlayerVehicleID ( playerid ), a ); }
x += ( distance * floatsin (- a , degrees ));
y += ( distance * floatcos (- a , degrees ));
}
stock CreateCrane ( row )
{
CreateObject ( 1391 , cranes [ row ][ CRANE_POS_X ], cranes [ row ][ CRANE_POS_Y ], cranes [ row ][ CRANE_POS_Z ], 0 , 0 , 0 );
cranes [ row ][ CRANE_TOP ] = CreateObject ( 1388 , cranes [ row ][ CRANE_POS_X ], cranes [ row ][ CRANE_POS_Y ], ( cranes [ row ][ CRANE_POS_Z ]+ 12.539 ), 0 , 0 , 0 );
cranes [ row ][ PICKUP ] = CreatePickup ( 1317 , 23 , cranes [ row ][ PICKUP_POS_X ], cranes [ row ][ PICKUP_POS_Y ], cranes [ row ][ PICKUP_POS_Z ], 0 );
cranes [ row ][ EXIST ] = 1 ;
return 1 ;
}
CMD : newdzwig ( playerid )
{
new row = MAX_CRANES ;
for(new i = 0 ; i < MAX_CRANES ; i ++)
{
if( cranes [ i ][ EXIST ] == 0 )
{
row = i ;
}
}
if( row == MAX_CRANES ) return SendClientMessage ( playerid , 0xFF0000FF , "Jest ju? du?o!" );
else
{
new Float : x , Float : y , Float : z ;
GetPlayerPos ( playerid , cranes [ row ][ PICKUP_POS_X ], cranes [ row ][ PICKUP_POS_Y ], z );
GetXYInFrontOfPlayer ( playerid , x , y , 6 );
cranes [ row ][ CRANE_POS_Z ] = ( z + 30 );
cranes [ row ][ PICKUP_POS_Z ] = ( z - 1 );
cranes [ row ][ CRANE_POS_Y ] = y ;
cranes [ row ][ CRANE_POS_X ] = x ;
CreateCrane ( row );
}
return 1 ;
}
CMD : dzwig ( playerid )
{
if( usingCrane [ playerid ][ 0 ] == 1 )
{
SetPlayerPos ( playerid , cranes [ usingCrane [ playerid ][ 1 ]][ PICKUP_POS_X ], cranes [ usingCrane [ playerid ][ 1 ]][ PICKUP_POS_Y ], ( cranes [ usingCrane [ playerid ][ 1 ]][ PICKUP_POS_Z ]+ 2 ));
cranes [ usingCrane [ playerid ][ 1 ]][ INUSE ] = 0 ;
TogglePlayerControllable ( playerid , 1 );
usingCrane [ playerid ][ 0 ] = 0 ;
SetCameraBehindPlayer ( playerid );
return 1 ;
}
new crane = MAX_CRANES ;
for (new i = 0 ; i < MAX_CRANES ; i ++)
{
if ( IsPlayerInRangeOfPoint ( playerid , 3 , cranes [ i ][ PICKUP_POS_X ], cranes [ i ][ PICKUP_POS_Y ], cranes [ i ][ PICKUP_POS_Z ]))
{
crane = i ;
}
}
if( crane == MAX_CRANES ) return SendClientMessage ( playerid , 0xFF0000FF , "Nie jeste? w pickupie D?wigu!" );
if( cranes [ crane ][ INUSE ] == 1 ) return SendClientMessage ( playerid , 0xFF0000FF , "Jest ju? u?ywany!" );
else
{
SetPlayerPos ( playerid , cranes [ crane ][ CRANE_POS_X ], cranes [ crane ][ CRANE_POS_Y ], ( cranes [ crane ][ CRANE_POS_Z ] - 30 ));
SetPlayerCameraPos ( playerid , cranes [ crane ][ CRANE_POS_X ], cranes [ crane ][ CRANE_POS_Y ], ( cranes [ crane ][ CRANE_POS_Z ] + 20 ));
TogglePlayerControllable ( playerid , false );
SetPlayerFacingAngle ( playerid , cranes [ crane ][ CRANE_ANGLE ]);
new Float : x , Float : y ;
GetXYInFrontOfPlayer ( playerid , x , y , 41 );
SetPlayerCameraLookAt ( playerid , x , y , ( cranes [ usingCrane [ playerid ][ 1 ]][ CRANE_POS_Z ]+ 12.539 ));
usingCrane [ playerid ][ 0 ] = 1 ;
usingCrane [ playerid ][ 1 ] = crane ;
cranes [ crane ][ INUSE ] = 1 ;
}
return 1 ;
}
public OnPlayerUpdate ( playerid )
{
if( usingCrane [ playerid ][ 0 ] == 1 )
{
new Keys , ud , lr ;
GetPlayerKeys ( playerid , Keys , ud , lr );
if( lr < 0 )
{
new Float : fa ;
GetPlayerFacingAngle ( playerid , fa );
fa += 1.0 ;
if( fa >= 360.0 ) fa -= 360.0 ;
SetPlayerFacingAngle ( playerid , fa );
cranes [ usingCrane [ playerid ][ 1 ]][ CRANE_ANGLE ] = fa ;
SetObjectRot ( cranes [ usingCrane [ playerid ][ 1 ]][ CRANE_TOP ], 0 , 0 , cranes [ usingCrane [ playerid ][ 1 ]][ CRANE_ANGLE ]);
new Float : x , Float : y ;
GetXYInFrontOfPlayer ( playerid , x , y , 41 );
SetPlayerCameraLookAt ( playerid , x , y , ( cranes [ usingCrane [ playerid ][ 1 ]][ CRANE_POS_Z ]+ 12.539 ));
}
else if( lr > 0 )
{
new Float : fa ;
GetPlayerFacingAngle ( playerid , fa );
fa -= 1.0 ;
if( fa <= 0.0 ) fa += 360.0 ;
SetPlayerFacingAngle ( playerid , fa );
cranes [ usingCrane [ playerid ][ 1 ]][ CRANE_ANGLE ] = fa ;
SetObjectRot ( cranes [ usingCrane [ playerid ][ 1 ]][ CRANE_TOP ], 0 , 0 , cranes [ usingCrane [ playerid ][ 1 ]][ CRANE_ANGLE ]);
new Float : x , Float : y ;
GetXYInFrontOfPlayer ( playerid , x , y , 41 );
SetPlayerCameraLookAt ( playerid , x , y , ( cranes [ usingCrane [ playerid ][ 1 ]][ CRANE_POS_Z ]+ 12.539 ));
}
}
return 1 ;
}
public OnPlayerPickUpPickup ( playerid , pickupid )
{
for(new i = 0 ; i < MAX_CRANES ; i ++)
{
if( pickupid == cranes [ i ][ PICKUP ])
{
GameTextForPlayer ( playerid , "/dzwig" , 2000 , 1 );
}
}
return 1 ;
}
Wysłany: 2012-02-03, 11:22
kurczak1324
Wiek: 29 Na forum: 5819 dni Posty: 202
Nick w MP: Izzy
Piwa : 671
Ehh nie dodalem wa?nej rzeczy... D?wig sie obraca sam, tak dla wygl?du, ale na podstawie d?wigu zrobie sobie inne obiekty.
Wysłany: 2012-02-03, 11:36
Brendon16
Wiek: 34 Na forum: 6657 dni Posty: 38
Piwa : 72
mysle ze musisz dac timera dzialajacego co pare min (dla lepszej estetyki)
dasz zmienna
new dzwig =0; <-bedzie oznaczac pozycje dzwigu
pozniej timer w ktorym jesli
dzwig ==0 wtedy obracamy do pewnego kata, a jesli 1 to wracamy do poerwszego
Podpis
Programuję za jedzenie
Wysłany: 2012-02-03, 11:38
kurczak1324
Wiek: 29 Na forum: 5819 dni Posty: 202
Nick w MP: Izzy
Piwa : 671
Brendon16 , Dobra... A funkcja obracaj?ca obiekt?
Wysłany: 2012-02-03, 11:49
BraYaN_
Wiek: 34 Na forum: 6602 dni Posty: 276
Nick w MP: BraYaN_
Piwa : 1614
Wysłany: 2012-02-03, 11:56
kurczak1324
Wiek: 29 Na forum: 5819 dni Posty: 202
Nick w MP: Izzy
Piwa : 671
Wysłany: 2012-02-03, 12:13
mmarcinn21
Programista
Wiek: 32 Na forum: 6363 dni Posty: 32
Piwa : 727
Tak, za obr?t obiektu w poziomie odpowiada ostani argument, dodaj?c obiekt obkr?ca si? w lew? strone, a odejmuj?c w prawo.
Podpis
Posiadam konto tylko na GtaOnline
Wysłany: 2012-02-03, 14:23
kurczak1324
Wiek: 29 Na forum: 5819 dni Posty: 202
Nick w MP: Izzy
Piwa : 671
Wysłany: 2012-02-03, 14:59
mmarcinn21
Programista
Wiek: 32 Na forum: 6363 dni Posty: 32
Piwa : 727
Trzymaj :
Kod:
#include <a_samp>
new dzwig, zmienna, timer[2];
new Float:RotX,Float:RotY,Float:RotZ;//
public OnGameModeInit()
{
SetTimer("DzwigRot",4000, true);
dzwig = CreateObject(1384,1824.01867676,1429.07995605,70.27137756,0.00000000,0.00000000,130.00000000); //object(twrcrane_m_01) (1)
return 1;
}
forward DzwigRot();
public DzwigRot(){
GetObjectRot(dzwig, RotX, RotY, RotZ);
if(zmienna == 0){
timer[0] = SetTimer("DodawanieRot", 200, true);
}
if(zmienna == 1){
timer[1] = SetTimer("OdejmowenieRot", 200, true);
}
return 1;
}
forward DodawanieRot();
public DodawanieRot(){
GetObjectRot(dzwig, RotX, RotY, RotZ);
SetObjectRot(dzwig, RotX, RotY, RotZ+0.2);
zmienna = 1;
if(zmienna == 1)KillTimer(timer[0]);
}
forward OdejmowenieRot();
public OdejmowenieRot(){
GetObjectRot(dzwig, RotX, RotY, RotZ);
SetObjectRot(dzwig, RotX, RotY, RotZ-0.2);
zmienna = 0;
if(zmienna == 0)KillTimer(timer[1]);
}
Musisz da? wi?ksz? liczb? przy RotZ+- poniewa? obiekt ledwo co wida? ?e si? rusza.
Podpis
Posiadam konto tylko na GtaOnline
Wysłany: 2012-02-03, 18:40
kurczak1324
Wiek: 29 Na forum: 5819 dni Posty: 202
Nick w MP: Izzy
Piwa : 671
mmarcinn21 , chdzi mi o to aby obiekt przesuwa? sie p?ynnie, pr?bowa?em z funkcj? kt?r? poda? BraYaN_ (MoveObject), ale obiekt przeskakuje szybko, a nie przesuwa sie.
Wysłany: 2012-02-03, 18:44
krzyzan
Wiek: 30 Na forum: 5669 dni Posty: 387
Piwa : 2132
Tagi: obracający :: się :: obiekt
Anonymous
Na forum: 245 dni
Posty: 1
Anonymous Koniecznie zajrzyj na: