[Plugin] [REL] Math Plugin
#41

Quote:
Originally Posted by [IL]HeHu
Посмотреть сообщение
I am sorry for my stupidity, but where do I get the .inc file?
The first post has it.
Reply
#42

Quote:
Originally Posted by BeckzyBoi
Посмотреть сообщение
Some questions:

1) Could you please make a MPDistance2D?
2) Is MPDistance faster than PointToPoint3D in the PointToPoint plugin?
3) How is MPFDistance less accurate? :S Can you please give me examples of what MPDistance and MPFDistance will return using the same coordinates?
4) Does MPGetTrailerTowingVehicle loop through all vehicles to find the towing vehicle or do you keep track of trailers using OnPlayerUpdate and OnUnoccupiedVehicleUpdate?

Thanks
2. Surely, yes.

3.
pawn Код:
printf("%0.2f", MPClamp360(361.0));
    new Float:distance[4];
    distance[3] = MPFDistance(0.0, 0.0, 0.0, 100.0, 100.0, 100.0);
    distance[0] = MPFDistance(0.0, 0.0, 0.0, 1000.0, 1000.0, 1000.0);
    distance[1] = MPFDistance(0.0, 0.0, 0.0, 2000.0, 2000.0, 3000.0);
    distance[2] = MPFDistance(0.0, 0.0, 0.0, 3000.0, 3000.0, 3000.0);
    printf("MPFDistance: 0.0 - 100.0: %f - 0.0 - 1000.0: %f - 0.0 - 2000.0: %f - 0.0 - 3000.0: %f", distance[3], distance[0], distance[1], distance[2]);
distance[3] = MPDistance(0.0, 0.0, 0.0, 100.0, 100.0, 100.0);
    distance[0] = MPDistance(0.0, 0.0, 0.0, 1000.0, 1000.0, 1000.0);
    distance[1] = MPDistance(0.0, 0.0, 0.0, 2000.0, 2000.0, 3000.0);
    distance[2] = MPDistance(0.0, 0.0, 0.0, 3000.0, 3000.0, 3000.0);
    printf("MPDistance: 0.0 - 100.0: %f - 0.0 - 1000.0: %f - 0.0 - 2000.0: %f - 0.0 - 3000.0: %f", distance[3], distance[0], distance[1], distance[2]);
Results:

pawn Код:
[10:50:22] 1.00
[15:13:13] MPFDistance: 0.0 - 100.0: 173.204788 - 0.0 - 1000.0: 1732.046386 - 0.0 - 2000.0: 4123.093261 - 0.0 - 3000.0: 5196.132324
[15:13:13] MPDistance: 0.0 - 100.0: 173.205078 - 0.0 - 1000.0: 1732.050781 - 0.0 - 2000.0: 4123.105468 - 0.0 - 3000.0: 5196.152343
Seems to me, the higher the distance, the more off it would be.

4. Look at the source code for it
Reply
#43

when you use F variants of function (fast) you sacrifice some precision for speed.
Reply
#44

Can you make a similar functions to detect vehicles too? native MPGetAimTarget(PlayerID, Float:SeekRadius = 50.0);
Reply
#45

superb , gonna try some codes
thank you for it 3))
Reply
#46

I've problem in FMPVecLength when I update this plugin, and recompiled my gamemode.
Here's crashdetect log:
Код:
[17:46:46] Script[gamemodes\scfri.amx]: During execution of OnGameModeInit():
[17:46:46] Script[gamemodes\scfri.amx]: Run time error 19: "File or function is not found"
[17:46:46] Additional information:
[17:46:46]   The following natives were not registered:
[17:46:46]     FMPVecLength
[17:46:46] Script[gamemodes\scfri.amx]: During execution of main():
[17:46:46] Script[gamemodes\scfri.amx]: Run time error 19: "File or function is not found"
[17:46:46] Additional information:
[17:46:46]   The following natives were not registered:
[17:46:46]     FMPVecLength
MathPlugin.inc:
pawn Код:
// game helpers
native Float:MPDistanceCameraToLocation(Float:CamX, Float:CamY, Float:CamZ, Float:ObjX, Float:ObjY, Float:ObjZ, Float:FrX, Float:FrY, Float:FrZ); // calculates how distant target aim is from camera data pointed towards a certain point
native Float:MPGetVehicleUpsideDown(vehicleid); // returns values such as 1.0 as pointing up, -1.0 is totally upside down. returns -5.0 if car id is not 1..2000.
native MPGetAimTarget(PlayerID, Float:SeekRadius = 50.0); // returns player that this player is aiming at or invalid player id if no player in target area.
native MPGetTrailerTowingVehicle(vehicleid); // finds the vehicle that this trailer is attached to, returns invalid_vehicle_id if invalid or not attached to any towing vehicle.
native MPGetVehicleDriver(vehicleid); // gets vehicle driver id or invalid player id - does a quick reverse vehicle to player id lookup.
native MPGetVehicleDriverCount(vehicleid); // returns number of drivers a car has (important to solve 2 drivers 1 car issue - if you wrote any decent anticheat you know what i mean)
native MPGetVehicleOccupantCnt(vehicleid); // returns number of player a vehicle is carrying
native MPGetVehicleSurfersCnt(vehicleid); // returns number of players surfing a vehicle

native MPProjectPointOnVehicle(vehicleid, Float:v1x, Float:v1y, Float:v1z, &Float:resx, &Float:resy, &Float:resz, worldspace = 0); // projects a point on vehicle's rotation on all 3 axes.
native MPProjectPointOnPlayer(playerid, Float:v1x, Float:v1y, Float:v1z, &Float:resx, &Float:resy, &Float:resz); // projects a point on player's facing angle (x - sideways, y front/back, z = up/down).

// pure math
native Float:FMPVecLength(Float:v1x, Float:v1y, Float:v1z); // calculates length of a simple XYZ 3d vector (FAST,less precision)
native Float:MPClamp360(Float:value);
native Float:MPDistance(Float:v1x, Float:v1y, Float:v1z, Float:v2x, Float:v2y, Float:v2z);  // distance between 2 points
native Float:MPDistancePointLine(Float:PointX, Float:PointY, Float:PointZ, Float:LineSx, Float:LineSy, Float:LineSz, Float:LineEx, Float:LineEy, Float:LineEz); // http://paulbourke.net/geometry/pointline/ returns super huge number 10000000 if outside of range of specified the lie segment.
native Float:MPDotProduct(Float:v1x, Float:v1y, Float:v1z, Float:v2x, Float:v2y, Float:v2z);
native Float:MPFDistance(Float:v1x, Float:v1y, Float:v1z, Float:v2x, Float:v2y, Float:v2z); // distance between 2 points (faster but less precise)
native Float:MPFSQRT(Float:value);  // Faster sqrt (****** the 0x5f3759df method)
native Float:MPVecLength(Float:v1x, Float:v1y, Float:v1z); // calculates length of a simple XYZ 3d vector
native MPCrossProduct(Float:v1x, Float:v1y, Float:v1z, Float:v2x, Float:v2y, Float:v2z, &Float:resx, &Float:resy, &Float:resz);
native MPFNormalize(&Float:vx, &Float:vy, &Float:vz); // fast float normalization of a vector to unit-length (makes whatever vector 1.0 long, purely to preserve direction and be able to scale it controllably)
native MPInterpolatePoint(Float:v1x, Float:v1y, Float:v1z, Float:v2x, Float:v2y, Float:v2z, &Float:resx, &Float:resy, &Float:resz, Float:distance);
Sorry if it is reported or has a solution already.

Edit:
I've checked the source code and I found that there's a typo in your MathPlugin.inc:
Код:
native Float:MPFVecLength(Float:v1x, Float:v1y, Float:v1z);
Reply
#47

Is this plugin still in beta/WIP state? and does it support 0.3d?
Reply
#48

Quote:
Originally Posted by BeckzyBoi
Посмотреть сообщение
Is this plugin still in beta/WIP state? and does it support 0.3d?
It supports 0.3d. I'm using it.
Reply
#49

Are there any known bugs with it?
Reply
#50

Probably no. However, it uses an old version of sampgdk if I am right.
Reply
#51

I don't really understand this native

pawn Код:
native Float:MPDistanceCameraToLocation(Float:CamX, Float:CamY, Float:CamZ, Float:ObjX, Float:ObjY, Float:ObjZ, Float:FrX, Float:FrY, Float:FrZ); // calculates how distant target aim is from camera data pointed towards a certain point
can you do an example in a callback?
Reply
#52

Put camera position in Cam_, the position of the object (or point) in Obj_ and the camera front vector in Fr_.
Reply
#53

Thanks, is creative ^^
Reply
#54

Quote:
Originally Posted by RyDeR`
Посмотреть сообщение
Put camera position in Cam_, the position of the object (or point) in Obj_ and the camera front vector in Fr_.
Maybe i've read wrong. It says " calculate " not " putting camera on that position ", i'm going wrong. :S
Reply
#55

Please, help me. I don't understand, why does it happens . Please, fix it



pawn Код:
stock function( playerid, vehicleid )
{
    new
        Float:offsetPos[ 3 ],
        Float:result[ 3 ]
    ;
    GetVehicleModelInfo( GetVehicleModel( vehicleid ), VEHICLE_MODEL_INFO_WHEELSFRONT, offsetPos[ 0 ], offsetPos[ 1 ], offsetPos[ 2 ] );
    MPProjectPointOnVehicle( vehicleid, offsetPos[ 0 ], offsetPos[ 1 ], offsetPos[ 2 ], result[ 0 ], result[ 1 ], result[ 2 ], 1 );

    printf( "%f %f %f", result[ 0 ], result[ 1 ], result[ 2 ] );
    CreateObject( 324, result[ 0 ], result[ 1 ], result[ 2 ], 0.0, 0.0, 0.0 );
    return false;
}
Reply
#56

Any chance we can get the source with the sampgdk folders included? I wanted to add this to MPGetAimTarget Nero3d's GetPlayerCameraWeaponVector so that way the aim target will be accurate with weapons but I can not get the project to compile with MSVC. (Has to do with paths not being correct)
Reply
#57

erm erm... where's the source code? :/
Reply
#58

Quote:
Originally Posted by ******
Посмотреть сообщение
erm erm... In the first post.
Looks like I didn't check well because I didn't find the link with the source. However I checked the ****** code page -> source -> trunk ... OMG A bit complicated to get to the souce...whatever, I got it now :P
Reply
#59

Since ****** code is shutting down i've ported the project over to github.

I added a few natives that can deal with NaN and Inf floats.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)