23.09.2011, 02:47
(
Последний раз редактировалось OKStyle; 26.09.2011 в 03:11.
)
Sorry, but I've made a more-rational option...
Howbeit, nice FS, I remember doing another camera view the player as a gta1-2, and your work will look great in an observatory (as in GTA United).
pawn Код:
#include <a_samp>
// [FS] BirdView by Mach97 & irinel1996
new Float:mapX[MAX_PLAYERS], Float:mapY[MAX_PLAYERS], Float:mapZ[MAX_PLAYERS];
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, "/mapon", true, 6) == 0)
{
SetPVarInt(playerid, "MapStarted", 1);
TogglePlayerControllable(playerid, 0);
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
mapX[playerid] = x; mapY[playerid] = y; mapZ[playerid] = z + 340.0;
TogglePlayerControllable(playerid, 0);
SetPlayerPos(playerid, mapX[playerid], mapY[playerid], -70.0);
SetPlayerCameraPos(playerid, mapX[playerid], mapY[playerid], mapZ[playerid]);
SetPlayerCameraLookAt(playerid, mapX[playerid], mapY[playerid], 0.0);
return 1;
}
if(strcmp(cmdtext, "/mapoff", true, 7) == 0)
{
SetPVarInt(playerid, "MapStarted", 0);
TogglePlayerControllable(playerid, 1);
SetCameraBehindPlayer(playerid);
return 1;
}
return 0;
}
public OnPlayerUpdate(playerid)
{
if(GetPVarInt(playerid, "MapStarted") == 1)
{
new o, ud, lr;
GetPlayerKeys(playerid, o, ud, lr);
if(ud > 0)
{
mapY[playerid] -= 10.0;
SetPlayerCameraPos(playerid, mapX[playerid], mapY[playerid], mapZ[playerid]);
SetPlayerCameraLookAt(playerid, mapX[playerid], mapY[playerid], 0.0);
SetPlayerPos(playerid,mapX[playerid], mapY[playerid], -70.0);
}
else if(ud < 0)
{
mapY[playerid] += 10.0;
SetPlayerCameraPos(playerid, mapX[playerid], mapY[playerid], mapZ[playerid]);
SetPlayerCameraLookAt(playerid, mapX[playerid], mapY[playerid], 0.0);
SetPlayerPos(playerid,mapX[playerid], mapY[playerid], -70.0);
return 1;
}
if(lr > 0)
{
mapX[playerid] += 10.0;
SetPlayerCameraPos(playerid, mapX[playerid], mapY[playerid], mapZ[playerid]);
SetPlayerCameraLookAt(playerid, mapX[playerid], mapY[playerid], 0.0);
SetPlayerPos(playerid,mapX[playerid], mapY[playerid], -70.0);
}
else if(lr < 0)
{
mapX[playerid] -= 10.0;
SetPlayerCameraPos(playerid, mapX[playerid], mapY[playerid], mapZ[playerid]);
SetPlayerCameraLookAt(playerid, mapX[playerid], mapY[playerid], 0.0);
SetPlayerPos(playerid,mapX[playerid], mapY[playerid], -70.0);
return 1;
}
}
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(GetPVarInt(playerid, "MapStarted") == 1)
{
if(newkeys & KEY_SPRINT) // +
{
mapZ[playerid] += 10.0;
SetPlayerCameraPos(playerid, mapX[playerid], mapY[playerid], mapZ[playerid]);
SetPlayerCameraLookAt(playerid, mapX[playerid], mapY[playerid], 0.0);
}
else if(newkeys & KEY_CROUCH) // -
{
mapZ[playerid] -= 10.0;
SetPlayerCameraPos(playerid, mapX[playerid], mapY[playerid], mapZ[playerid]);
SetPlayerCameraLookAt(playerid, mapX[playerid], mapY[playerid], 0.0);
return 1;
}
}
return 1;
}