Mose 1
Mose 1
============================
y_mouse - On-screen mouse.
============================
Description:
Makes a mouse cursor on the screen.
Legal:
Version: MPL 1.1
The contents of this file are subject to the Mozilla Public License Version
1.1 (the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Contributors:
ZeeX, koolk, JoeBullet/Google63, g_aSlice/Slice
Thanks:
JoeBullet/Google63 - Handy arbitrary ASM jump code using SCTRL.
ZeeX - Very productive conversations.
koolk - IsPlayerinAreaEx code.
TheAlpha - Danish translation.
breadfish - German translation.
Fireburn - Dutch translation.
yom - French translation.
50p - Polish translation.
Zamaroht - Spanish translation.
Dracoblue, sintax, mabako, Xtreme, other coders - Producing other modes
for me to strive to better.
Pixels^ - Running XScripters where the idea was born.
Matite - Pestering me to release it and using it.
Version:
1.0
Changelog:
02/05/11:
First version.
Functions:
Public:
-
Core:
-
Stock:
-
Static:
-
Inline:
-
API:
-
Callbacks:
-
Definitions:
-
Enums:
-
Macros:
-
Tags:
-
Variables:
Global:
-
Static:
-
Commands:
-
Compile options:
-
Operators:
-
\*----------------------------------------------------------------------------*/
#include "internal\y_version"
#include "y_hooks"
enum E_MOUSE_PLAYER_RESTORE
{
Float:E_MOUSE_PLAYER_RESTORE_X,
Float:E_MOUSE_PLAYER_RESTORE_Y,
Float:E_MOUSE_PLAYER_RESTORE_Z,
Float:E_MOUSE_PLAYER_RESTORE_A,
E_MOUSE_PLAYER_RESTORE_INT,
E_MOUSE_PLAYER_RESTORE_VW
}
static stock
Text:YSI_g_sCursor[MAX_PLAYERS] = {Text:-1, ...},
YSI_g_sMouseData[MAX_PLAYERS],
Float:YSI_g_sMousePos[MAX_PLAYERS][2],
YSI_g_sRestore[MAX_PLAYERS][E_MOUSE_PLAYER_RESTORE],
YSI_g_sCameraVehicle;
stock Mouse_Enable(playerid)
{
// Save settings.
GetPlayerPos(playerid, YSI_g_sRestore[playerid][E_MOUSE_PLAYER_RESTORE_X],
YSI_g_sRestore[playerid][E_MOUSE_PLAYER_RESTORE_Y], YSI_g_sRestore[playerid]
[E_MOUSE_PLAYER_RESTORE_Z]);
GetPlayerFacingAngle(playerid, YSI_g_sRestore[playerid]
[E_MOUSE_PLAYER_RESTORE_A]);
YSI_g_sRestore[playerid][E_MOUSE_PLAYER_RESTORE_INT] =
GetPlayerInterior(playerid);
YSI_g_sRestore[playerid][E_MOUSE_PLAYER_RESTORE_VW] =
GetPlayerVirtualWorld(playerid);
// May put the player in a vehicle in an interior, but on the ground so they
// can't see anything, then change the VW of the vehicle so they can't even
// see themselves (and while I'm at it, desync them).
SetVehiclePos(YSI_g_sCameraVehicle, 1946.195800, 1302.83012, 80.509375);
SetPlayerPos(playerid, -6000.0, -6000.0, -6000.0);
//SetPlayerFacingAngle(playerid, 0.0);
//SetCameraBehindPlayer(playerid);
// "Extreme" start delay.
YSI_g_sMouseData[playerid] = 0x100000FF;
// LinkVehicleToInterior(YSI_g_sCameraVehicle, 1);
// SetPlayerInterior(playerid, 1);
// These are NOT the same world to hide the vehicle.
// SetVehicleVirtualWorld(YSI_g_sCameraVehicle, 0xA137C013);
// SetPlayerVirtualWorld(playerid, 0xA137C014);
// Everyone gets put in the same vehicle.
PutPlayerInVehicle(playerid, YSI_g_sCameraVehicle, 0);
Mouse_SetPos(playerid, 320.0, 240.0);
// SetPlayerHealth(playerid, FLOAT_INFINITY);
// SetVehicleVirtualWorld(YSI_g_sCameraVehicle, 0xA137C013);
// SetPlayerVirtualWorld(playerid, 0xA137C014);
}
stock Mouse_Disable(playerid)
{
RemovePlayerFromVehicle(playerid);
SetPlayerPos(playerid, YSI_g_sRestore[playerid][E_MOUSE_PLAYER_RESTORE_X],
YSI_g_sRestore[playerid][E_MOUSE_PLAYER_RESTORE_Y], YSI_g_sRestore[playerid]
[E_MOUSE_PLAYER_RESTORE_Z]);
SetPlayerFacingAngle(playerid, YSI_g_sRestore[playerid]
[E_MOUSE_PLAYER_RESTORE_A]);
SetPlayerInterior(playerid, YSI_g_sRestore[playerid]
[E_MOUSE_PLAYER_RESTORE_INT]);
SetPlayerVirtualWorld(playerid, YSI_g_sRestore[playerid]
[E_MOUSE_PLAYER_RESTORE_VW]);
YSI_g_sMouseData[playerid] = 0;
}
hook OnScriptInit()
{
YSI_g_sCameraVehicle = CreateVehicle(564, 1946.195800, 1302.83012, 80.509375,
0.0, 0, 0, -1);
}
hook OnPlayerUpdate99(playerid)
{
if (YSI_g_sMouseData[playerid])
{
if (++YSI_g_sMouseData[playerid] == 0x10000100) //0x10000002) //
{
// SetPlayerInterior(playerid, 1);
// PutPlayerInVehicle(playerid, YSI_g_sCameraVehicle, 0);
// These are NOT the same world to hide the vehicle.
//SetVehicleVirtualWorld(YSI_g_sCameraVehicle, 0xA137C013);
//SetPlayerVirtualWorld(playerid, 0xA137C014);
// Reset.
SetVehiclePos(YSI_g_sCameraVehicle, 1946.195800, 1302.83012,
80.509375);
SetVehicleZAngle(YSI_g_sCameraVehicle, 0.0);
// SetPlayerFacingAngle(playerid, 0.0);
SetPlayerCameraPos(playerid, 1946.195800, 1302.83012, 80.509375);
YSI_g_sMouseData[playerid] = 0x10000000;
SetCameraBehindPlayer(playerid);
}
//if (YSI_g_sMouseData[playerid] & 1)
//{
// SetCameraBehindPlayer(playerid);
//}
new
Float:x,
Float:y,
Float:z;
GetPlayerCameraFrontVector(playerid, x, y, z);
/*if (y >= 0)
{
y = -0.01;
}*/
z += 0.098737;
// Invert.
//y = 1.0 / y;
// Invert and project to a large screen!
//x /= y * -10.0;
/*if (!(-0.001 < x < 0.001))
{
//x /= -y; // * -8.0;
}
else
{
//z = 0.0;
}
if (!(-0.001 < z < 0.001))
{
//z /= y; // * 8.0;
}
else
{
//z = 0.0;
}*/
/*if (x < -0.02) x = -30.0;
else if (x > 0.02) x = 30.0;
else x = 0;
//Mouse_Move(playerid, x, z);
printf("TO: %f %f %f", x, y, z);
GetPlayerCameraPos(playerid, x, y, z);
printf("POS: %f %f %f", x, y, z);
SetVehicleVelocity(YSI_g_sCameraVehicle, 0.2, 0.0, 0.001);
return 0;
}
// Do not sync anyone as in this vehicle ever!
return GetPlayerVehicleID(playerid) != YSI_g_sCameraVehicle;
}