Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Negalima prašyti ar platinti betkokių žaidimą (multiplayer) palengvinančių programų ir scriptų! Kitaip bus taikoma 1.21. taisyklė

autostabdymas


AimuMedziag

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 2260 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Sveiki,

Parodysiu kaip kurti autostabdymą (kai mašina automatiškai sustabdo, kai priekyje arba gale jeigu važiuoji atbulomis yra kliūtis):

new bool:autostabdymasmode[ MAX_PLAYERS ];
CMD:autostabdymas(playerid,params[])
{
	if( autostabdymasmode[ playerid ] == false )
	{
	    autostabdymasmode[ playerid ] = true;
	    SendClientMessage( playerid, 0xFFFFFFAA,"* Autostabdymas ijungtas");
	}
	else
	{
	    autostabdymasmode[ playerid ] = true;
	    SendClientMessage( playerid, 0xFFFFFFAA,"* Autostabdymas isjungtas");
	}
	return 1;
}
public OnPlayerUpdate( playerid )
{
	if( IsPlayerConnected( playerid ) )
	{
	    if( autostabdymasmode[ playerid ] == true )
	    {
	        new tavomasina = GetPlayerVehicleID( playerid );
	        if( tavomasina != 0 )
	        {
	            new Float:keitos[ 12 ];
	            new Float:X, Float:Y, Float:Z;
				new Float:Tavomasinosaukstis;
	            new Float:kampukoord[ 6 ];
				GetVehicleModelInfo(GetVehicleModel( tavomasina ), VEHICLE_MODEL_INFO_SIZE, X, Y, Z);
				Tavomasinosaukstis = Z;
				
                new Float:kkordnates[ 3 ];
                new Float:kkordnates2[ 3 ];
                GetVehiclePos( tavomasina,kkordnates[ 0 ],kkordnates[ 1 ],kkordnates[ 2 ]);
                
	        	if( IsVehicleDrivingBackwards( tavomasina ) ) // jeigu masina vaziuoja atbulomis
	        	{
	        	    GetXYBehindOfVehicle( tavomasina, kkordnates[ 0 ],kkordnates[ 1 ], Y+4.0 );
	        	}
	        	else
	        	{
	        	    GetXYInFrontOfVehicle( tavomasina, kkordnates[ 0 ],kkordnates[ 1 ], Y+4.0 );
	        	}
	        	
	        	new alvh;
	        	for( alvh = 0; alvh < MAX_VEHICLES; alvh ++)
	        	{
					if( IsValidVehicle( alvh ) )
					{
					    if( alvh != tavomasina )
					    {
         					GetVehiclePos( alvh,kkordnates2[ 0 ],kkordnates2[ 1 ],kkordnates2[ 2 ]);

					        GetVehicleModelInfo(GetVehicleModel( alvh ), VEHICLE_MODEL_INFO_SIZE, X, Y, Z);


					    	GetVehicleRelativePos(alvh, keitos[ 0 ],keitos[ 1 ],keitos[ 2 ], (X/2.0), (Y/2.0), 0.0);
					    	GetVehicleRelativePos(alvh, keitos[ 3 ],keitos[ 4 ],keitos[ 5 ], -(X/2.0), (Y/2.0), 0.0);
					    	GetVehicleRelativePos(alvh, keitos[ 6 ],keitos[ 7 ],keitos[ 8 ], (X/2.0), -(Y/2.0), 0.0);
					    	GetVehicleRelativePos(alvh, keitos[ 9 ],keitos[ 10 ],keitos[ 11 ], -(X/2.0), -(Y/2.0), 0.0);
					    	
					    	KuriameKeturkampi( kkordnates2[ 2 ]-(Z/1.7),kkordnates2[ 2 ]+(Z/1.7), keitos[ 0 ],keitos[ 1 ],keitos[ 2 ],keitos[ 3 ],keitos[ 4 ],keitos[ 5 ],keitos[ 6 ],keitos[ 7 ],keitos[ 8 ],keitos[ 9 ],keitos[ 10 ],keitos[ 11 ],kampukoord[0],kampukoord[1],kampukoord[2],kampukoord[3],kampukoord[4],kampukoord[5] );
					    	
					    	if( Tavomasinosaukstis > Z )
					    	{
					    	    if( IsPointInArea( kkordnates[ 0 ],kkordnates[ 1 ],kkordnates[ 2 ]-(Tavomasinosaukstis/2.8), kampukoord[0],kampukoord[1],kampukoord[2],kampukoord[3],kampukoord[4],kampukoord[5] ) )
						    	{
						    	    SetVehicleVelocity( tavomasina, 0.0, 0.0, 0.0 );
						    	    GameTextForPlayer(playerid, "~r~Kliutis kelyje", 4000, 5);
								}
					    	}
					    	else
					    	{
						    	if( IsPointInArea( kkordnates[ 0 ],kkordnates[ 1 ],kkordnates[ 2 ], kampukoord[0],kampukoord[1],kampukoord[2],kampukoord[3],kampukoord[4],kampukoord[5] ) )
						    	{
						    	    SetVehicleVelocity( tavomasina, 0.0, 0.0, 0.0 );
						    	    GameTextForPlayer(playerid, "~r~Kliutis kelyje", 4000, 5);
								}
							}
					    }
					}
				}
	        }
	    }
	}
	return 1;
}
public OnPlayerConnect( playerid )
{
	autostabdymasmode[ playerid ] = false;
	return 1;
}



stock IsVehicleDrivingBackwards(vehicleid)
{
    new Float:Float[3];
    if(GetVehicleVelocity(vehicleid, Float[1], Float[2], Float[0]))
    {
        GetVehicleZAngle(vehicleid, Float[0]);
        if(Float[0] < 90)
        {
            if(Float[1] > 0 && Float[2] < 0) return true;
        }
        else if(Float[0] < 180)
        {
            if(Float[1] > 0 && Float[2] > 0) return true;
        }
        else if(Float[0] < 270)
        {
            if(Float[1] < 0 && Float[2] > 0) return true;
        }
        else if(Float[1] < 0 && Float[2] < 0) return true;
    }
    return false;
}
GetXYInFrontOfVehicle(vehicleid, &Float:x, &Float:y, Float:distance)
{
	new Float:a;
	GetVehiclePos(vehicleid,x,y,a);
	GetVehicleZAngle(vehicleid,a);

	x += (distance * floatsin(-a, degrees));
	y += (distance * floatcos(-a, degrees));
}

stock GetXYBehindOfVehicle(vehicleid, &Float:x, &Float:y, Float:distance)
{
    new
        Float:a;
    GetVehiclePos( vehicleid, x, y, a );
    GetVehicleZAngle( vehicleid, a );
    x += ( distance * floatsin( -a+180, degrees ));
    y += ( distance * floatcos( -a+180, degrees ));
}
stock GetVehicleRelativePos(vehicleid, &Float:x, &Float:y, &Float:z, Float:xoff=0.0, Float:yoff=0.0, Float:zoff=0.0)
{
    new Float:rot;
    GetVehicleZAngle(vehicleid, rot);
    rot = 360 - rot;
    GetVehiclePos(vehicleid, x, y, z);
    x = floatsin(rot,degrees) * yoff + floatcos(rot,degrees) * xoff + x;
    y = floatcos(rot,degrees) * yoff - floatsin(rot,degrees) * xoff + y;
    z = zoff + z;
}
stock KuriameKeturkampi(Float:mazauksti, Float:didziaaukst, Float:Xzx,Float:Yzx,Float:Zzx,Float:Xzx1,Float:Yzx1,Float:Zzx1,Float:Xzx3,Float:Yzx3,Float:Zzx3,Float:Xzx4,Float:Yzx4,Float:Zzx4,&Float:MinX,&Float:MinY,&Float:MinZ, &Float:MaxX, &Float:Maxy, &Float:Maxz)
{

	if( Xzx <= Xzx1 && Xzx <= Xzx3 && Xzx <= Xzx4 )
	{
	    MinX = Xzx;
	}
	
	if( Xzx1 <= Xzx && Xzx1 <= Xzx3 && Xzx1 <= Xzx4 )
	{
	    MinX = Xzx1;
	}
	
	if( Xzx3 <= Xzx && Xzx3 <= Xzx1 && Xzx3 <= Xzx4 )
	{
	    MinX = Xzx3;
	}
	
	
	if( Xzx4 <= Xzx && Xzx4 <= Xzx1 && Xzx4 <= Xzx3 )
	{
	    MinX = Xzx4;
	}
	
	
	if( Yzx <= Yzx1 && Yzx <= Yzx3 && Yzx <= Yzx4 )
	{
	    MinY = Yzx;
	}

	if( Yzx1 <= Yzx && Yzx1 <= Yzx3 && Yzx1 <= Yzx4 )
	{
	    MinY = Yzx1;
	}

	if( Yzx3 <= Yzx && Yzx3 <= Yzx1 && Yzx3 <= Yzx4 )
	{
	    MinY = Yzx3;
	}


	if( Yzx4 <= Yzx && Yzx4 <= Yzx1 && Yzx4 <= Yzx3 )
	{
	    MinY = Yzx4;
	}
	

    MinZ = mazauksti;
    Maxz = didziaaukst;
}



stock IsPointInArea(Float:x,Float:y,Float:z,Float:minx,Float:miny,Float:minz,Float:maxx,Float:maxy,Float:maxz)
{
    if((x >= minx && x <= maxx) && (y >= miny && y <= maxy) && (z >= minz && z <= maxz)) return true;
    return false;
}

 

Redaguota , nario AimuMedziag
Nuoroda į komentarą
Dalintis per kitą puslapį

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 2260 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Prisijungti prie diskusijos

Palikti atsakymą galite iš karto, o užsiregistruoti vėliau. Jeigu jau turite paskyrą mūsų forume, Prisijunkite.

Svečias
Atsakyti šioje temoje...

×   Įklijuotas tekstas turi teksto formatavimą.   Pašalinti teksto formatavimą

  Galimi tik 75 veidukai.

×   Nuoroda buvo automatiškai įterpta.   Įterpti nuorodą paprastai

×   Jūsų ankstesnis pranešimas buvo atkurtas.   Išvalyti redaktorių

×   Jūs negalite įkelti nuotraukas tiesiogiai.Įkelkite arba įdėkite nuotraukas iš URL.

  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...