11/05/2022 01:59
Eu queria fazer um script pra ficar olhando os outros players jogar, até tentei funciona, mas tá uma merda....
1- quando um cara troca de interior ou virtual world (um dos dois ou os dois ainda não consegui indentificar) fica tudo branco
2- quando um cara entra num carro eu vejo de dentro do carro como se tivesse em primeira pessoa
1- quando um cara troca de interior ou virtual world (um dos dois ou os dois ainda não consegui indentificar) fica tudo branco
2- quando um cara entra num carro eu vejo de dentro do carro como se tivesse em primeira pessoa
Código:
CMD:tv(playerid, params[]) {
if(admin[playerid] < 1) return 0;
new id, string[80], lvlaviso;
lvlaviso = admin[playerid];
if(sscanf(params,"u", id) && gSpectateID[playerid] == 65535) return SendClientMessage(playerid, -1, "Use: /tv [id]");
else if(sscanf(params,"u", id) && gSpectateID[playerid] != 65535) {
SetPlayerInteriorEx(playerid,0);
SetPlayerVirtualWorldEx(playerid,0);
inttype[playerid] = 0;
TogglePlayerSpectating(playerid, 0);
gSpectateID[playerid] = INVALID_PLAYER_ID;
gSpectateType[playerid] = ADMIN_SPEC_TYPE_NONE;
format(string, sizeof(string), "AdmCmd: %s saiu do modo TV.", PlayerName(playerid));
ABroadCast(COLOR_LIGHTRED, string, lvlaviso);
SpawnPlayer(playerid);
return 1;
}
if(id == playerid) return SendClientMessage(playerid, -1, "You can not use this command for yourself!");
else if(!IsPlayerConnected(id)) return SendClientMessage(playerid, COLOR_GREY, "Jogador não conectado");
else if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "[ERROR] You have entered an invalid playername/playerid!");
else {
DoingTv(playerid, id);
format(string, sizeof(string), "AdmCmd: %s está de TV no jogador %s.", PlayerName(playerid), PlayerName(id) );
ABroadCast(COLOR_LIGHTRED, string, lvlaviso);
}
return 1;
}
public DoingTv(playerid, targetid) {
//
SetPlayerInteriorEx(playerid, GetPlayerInterior(targetid));
SetPlayerVirtualWorldEx(playerid, GetPlayerVirtualWorld(targetid));
inttype[playerid] = inttype[targetid];
//
gSpectateType[playerid] = ADMIN_SPEC_TYPE_PLAYER;
TogglePlayerSpectating(playerid, 1);
PlayerSpectatePlayer(playerid, targetid);
gSpectateID[playerid] = targetid;
}
public SetPlayerVirtualWorldEx(playerid, vwid) {
// set vw
SetPlayerVirtualWorld(playerid, vwid);
// update tv
foreach(new x : Player) {
if(IsPlayerConnected(x)
&& GetPlayerState(x) == PLAYER_STATE_SPECTATING
&& gSpectateID[x] == playerid
&& gSpectateType[x] == ADMIN_SPEC_TYPE_PLAYER
)
{
DoingTv(x, playerid);
break;
}
}
}
public SetPlayerInteriorEx(playerid, intid) {
// set interior
SetPlayerInterior(playerid, intid);
// reset tv
foreach(new x : Player) {
if(IsPlayerConnected(x)
&& GetPlayerState(x) == PLAYER_STATE_SPECTATING
&& gSpectateID[x] == playerid
&& gSpectateType[x] == ADMIN_SPEC_TYPE_PLAYER
)
{
DoingTv(x, playerid);
break;
}
}
}