All pastes #194064 Raw Edit

Camera

public text v1 · immutable
·published 2006-10-07 14:21 UTC
rendered paste body
#include <a_samp>
// Created By Baly23 //
//-----------------//
/*      Spect      */
//-----------------//
new CameraPos[5][3]=
{
{2080,2290,20},
{2065,2255,30},
{2025,2270,30},
{2100,2280,10},
{2115,2280,10}
};

new CameraLookAt[5][3]=
{
{2045,2275,10},
{2040,2270,10},
{2100,2280,12},
{2060,2360,130},
{2115,2260,10}
};

new PlayerCameraLookAtX[MAX_PLAYERS];
new PlayerCameraLookAtY[MAX_PLAYERS];
new PlayerCameraLookAtZ[MAX_PLAYERS];

new CurrentId[MAX_PLAYERS];
new ciclic;
new CicleON[MAX_PLAYERS];

new CameraMsg[50];

//-------------------
main()
{
    print("\nLoaded CameraMove - SpectMode \n");
}

public ExitTheGamemode()
GameModeExit();

public CameraCiclic(playerid)
{
	CurrentId[playerid]++;
	if(CurrentId[playerid]==5)CurrentId[playerid]=0;
	format(CameraMsg, sizeof(CameraMsg), "~r~Camera %i", CurrentId[playerid]);
	GameTextForAll(CameraMsg,5000,3);
	PlayerCameraLookAtX[playerid]=CameraLookAt[CurrentId[playerid]][0];
	PlayerCameraLookAtY[playerid]=CameraLookAt[CurrentId[playerid]][1];
	PlayerCameraLookAtZ[playerid]=CameraLookAt[CurrentId[playerid]][2];
   SetPlayerCameraPos(playerid,CameraPos[CurrentId[playerid]][0],CameraPos[CurrentId[playerid]][1],CameraPos[CurrentId[playerid]][2]);
   SetPlayerCameraLookAt(playerid,CameraLookAt[CurrentId[playerid]][0],CameraLookAt[CurrentId[playerid]][1],CameraLookAt[CurrentId[playerid]][2]);
return 1;
}

CameraLookAtAndPos(playerid)
{
    format(CameraMsg, sizeof(CameraMsg), "~r~Camera %i", CurrentId[playerid]);
    GameTextForAll(CameraMsg,5000,3);
    PlayerCameraLookAtX[playerid]=CameraLookAt[CurrentId[playerid]][0];
    PlayerCameraLookAtY[playerid]=CameraLookAt[CurrentId[playerid]][1];
    PlayerCameraLookAtZ[playerid]=CameraLookAt[CurrentId[playerid]][2];
    SetPlayerCameraPos(playerid,CameraPos[CurrentId[playerid]][0],CameraPos[CurrentId[playerid]][1],CameraPos[CurrentId[playerid]][2]);
    SetPlayerCameraLookAt(playerid,CameraLookAt[CurrentId[playerid]][0],CameraLookAt[CurrentId[playerid]][1],CameraLookAt[CurrentId[playerid]][2]);
    return 1;
}

public OnGameModeInit()
{
    SetGameModeText("CameraMove - SpectMode");
    ShowPlayerMarkers(1);
    ShowNameTags(1);
    SetWorldTime(10);
    AddPlayerClass(60,2043.9395,2265.8181,10.8203,12.9082,24,500,0,0,0,0);
    return 1;
}

public OnPlayerConnect(playerid)
{
    SendClientMessage(playerid, 0xc0ff00AA, "Welcome to SpectMode");
    SendClientMessage(playerid, 0xc0ff00AA, "Coded by Baly23");
    return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
    SetPlayerCameraPos(playerid, 2179.5264, 2268.0776, 11.7728);
    SetPlayerPos(playerid, 2185.1941, 2268.3496, 10.8203);
    SetPlayerFacingAngle(playerid, 93.2527);
    SetPlayerCameraLookAt(playerid, 2185.1941, 2268.3496, 10.8203);
    return 1;
}

public OnPlayerSpawn(playerid)
{
    SetPlayerInterior(playerid,0);
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[]){

new idx,value,cmd[256];
cmd = strtok(cmdtext,idx);
if (strcmp(cmdtext, "/cameras", true)==0){
   SendClientMessage(playerid,0xFFD400AA,"Type /camera 0 for the 1st camera");
   SendClientMessage(playerid,0xFFD400AA,"Type /camera 1 for the 2nd camera");
   SendClientMessage(playerid,0xFFD400AA,"Type /camera 2 for the 3th camera");
   SendClientMessage(playerid,0xFFD400AA,"Type /camera 3 for the 4th camera");
   SendClientMessage(playerid,0xFFD400AA,"Type /camera 4 for the 5th camera");
   return 1;
   }

if (strcmp(cmd,"/camera",true) == 0)
    {
        cmd = strtok(cmdtext,idx);
        value = strval(cmd);
        if ((!strlen(cmd))||(value < 0)||(value > 4))
        {
            SendClientMessage(playerid,0xFFD400AA,"USAGE: /camera [0-4]");
        }
        else
        {
            CurrentId[playerid]= value;
            CameraLookAtAndPos(playerid);
        }
        return 1;
    }

if (strcmp(cmdtext, "/ciclic", true)==0)
{
    if (CicleON[playerid] == 0)
    {
        CicleON[playerid] = 1;
        ciclic = SetTimer("CameraCiclic", 5000, 1);
        GameTextForAll("~w~Ciclic ~r~ON",5000,3);
    }
    else
    {
        CicleON[playerid] = 0;
        KillTimer(ciclic);
        GameTextForAll("~w~Ciclic ~r~OFF",5000,3);
    }
    return 1;
}

if (strcmp(cmdtext, "/speeddome", true)==0){
		SendClientMessage(playerid,0xFFD400AA,"Type /x+ or /x- for move orizzontally");
		SendClientMessage(playerid,0xFFD400AA,"Type /y+ or /y- for move vertically");
		SendClientMessage(playerid,0xFFD400AA,"Type /z+ or /z- for move height");
   return 1;
   }

if (strcmp(cmdtext, "/x+", true)==0){
	PlayerCameraLookAtX[playerid]++;
   SetPlayerCameraLookAt(playerid,PlayerCameraLookAtX[playerid],PlayerCameraLookAtY[playerid],PlayerCameraLookAtZ[playerid]);
   return 1;
   }
if (strcmp(cmdtext, "/x-", true)==0){
	PlayerCameraLookAtX[playerid]--;
   SetPlayerCameraLookAt(playerid,PlayerCameraLookAtX[playerid],PlayerCameraLookAtY[playerid],PlayerCameraLookAtZ[playerid]);
   return 1;
   }
if (strcmp(cmdtext, "/y+", true)==0){
	PlayerCameraLookAtY[playerid]++;
   SetPlayerCameraLookAt(playerid,PlayerCameraLookAtX[playerid],PlayerCameraLookAtY[playerid],PlayerCameraLookAtZ[playerid]);
   return 1;
   }
if (strcmp(cmdtext, "/y-", true)==0){
	PlayerCameraLookAtY[playerid]--;
   SetPlayerCameraLookAt(playerid,PlayerCameraLookAtX[playerid],PlayerCameraLookAtY[playerid],PlayerCameraLookAtZ[playerid]);
   return 1;
   }
if (strcmp(cmdtext, "/z+", true)==0){
	PlayerCameraLookAtZ[playerid]++;
   SetPlayerCameraLookAt(playerid,PlayerCameraLookAtX[playerid],PlayerCameraLookAtY[playerid],PlayerCameraLookAtZ[playerid]);
   return 1;
   }
if (strcmp(cmdtext, "/z-", true)==0){
	PlayerCameraLookAtZ[playerid]--;
   SetPlayerCameraLookAt(playerid,PlayerCameraLookAtX[playerid],PlayerCameraLookAtY[playerid],PlayerCameraLookAtZ[playerid]);
   return 1;
   }
   return 0;
}

strtok(const string[], &index)
{
	new length = strlen(string);
	while ((index < length) && (string[index] <= ' '))
	{
		index++;
	}

	new offset = index;
	new result[20];
	while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
	{
		result[index - offset] = string[index];
		index++;
	}
	result[index - offset] = EOS;
	return result;
}