O que é um Ator?
De uma forma direta e simplificada de explicar, são considerados NPC'S ESTÉTICOS , não ocupam SLOTS em seu servidor. Sabe aqueles NPC's que ficam parados atrбs de balcхes? O ator(Actor) é a mesma coisa. Diferente do NPC normal, ele tem uma funcionalidade limitada.
OBS: O limite máximo de Actors 1000 (MAX_ACTORS).
Quais são as funções?
:heavy_multiplication_x: CreateActor(modelid, Float:X, Float:Y, Float:Z, Float:Rotation)
De uma forma direta e simplificada de explicar, são considerados NPC'S ESTÉTICOS , não ocupam SLOTS em seu servidor. Sabe aqueles NPC's que ficam parados atrбs de balcхes? O ator(Actor) é a mesma coisa. Diferente do NPC normal, ele tem uma funcionalidade limitada.
OBS: O limite máximo de Actors 1000 (MAX_ACTORS).
Quais são as funções?
:heavy_multiplication_x: CreateActor(modelid, Float:X, Float:Y, Float:Z, Float:Rotation)
Descriзгo: A funзгo jб fala por si sу, criarб um novo ator no game.
Especificações da função:
- Código:
modelid - ID da Skin que o ator recebeб.
Float:X - A Coordenada X da posição do Ator.
Float:Y - A Coordenada Y da posição do Ator.
Float:Z - A Coordenada Z da posição do Ator.
Float:Rotation - O Ângulo (Rotaço) do Ator.
Modo de uso:
PHP como:- Código:
new SashaGray;
public OnGameModeInit()
{
// Criarб um novo actor, com a skin ID 306 (WFYCLPD) na posiзгo 1480.94, -1764.35, 18.79 e rotaзгo 0.60
SashaGray = CreateActor(306, 1480.94, -1764.35, 18.79, 0.60);
}
:heavy_multiplication_x: DestroyActor(actorid)
Descrição: Destruir um Ator desejado, para usar esta função, antes de criá-lo com a função CreateActor .
Especificações da função:
Код:Especificações da função:
- Código:
atorid - O ID do Ator, usado em CreateActor .
Modo de uso:
PHP como:- Código:
new SashaGray;
public OnGameModeInit()
{
SashaGray = CreateActor(306, 1480.94, -1764.35, 18.79, 0.60);
}
public OnGameModeExit()
{
DestroyActor(SashaGray);
}
:heavy_multiplication_x: IsValidActor(actorid)
Descriзгo: Verifiqueб se um Atorй vбlido ou nгo.
Especificações da função:
Код:Especificações da função:
- Código:
atorid - O ID do Ator para checar.
Valores que retornaгo:
0 - O ator nгo й vбlido.
1 - O ator é válido.
Modo de uso:
PHP como:- Código:
new SashaGray;
public OnFilterScriptInit()
{
SashaGray = CreateActor(306, 1480.94, -1764.35, 18.79, 0.60);
if(IsValidActor(SashaGray)) //Verificando se o Ator 'SashaGray' й vбlido, se sim, executa o cуdigo abaixo:
{
print("Ator 'SashaGray' vбlido, aquela safadinha, adoro :)");
}
else //Se o Ator nгo for vбlido, entгo executa o cуdigo abaixo:
{
print("Ator 'SashaGray' invбlido, deve tб fazendo outro filme porno :(");
}
return 1;
}
:heavy_multiplication_x: GetActorPos(actorid, &Float:X, &Float:Y, &Float:Z)
Descrição: Muito próximo com a função GetPlayerPos , esta função geta a posição X, Y, Z do Ator.
Especificações da função:
- Código:
atorid - O ID do Ator, usado em CreateActor .
&Float:X - Uma variável flutuante ( float ) que recebe o valor da posição X do ator.
&Float:Y - Uma variável flutuante ( float ) que recebe o valor da posição Y do ator.
&Float:Z - Uma variável flutuante ( float ) que recebe o valor da posição Z do ator.
Modo de uso:
PHP como:- Código:
new SashaGray;
public OnFilterScriptInit()
{
SashaGray = CreateActor(306, 1480.94, -1764.35, 18.79, 0.60);
new Float:x, Float:y, Float:z; //Criando as variбveis flutuantes x, y, z
GetActorPos(SashaGray, x, y, z); //Pegando e atribuindo os valores аs variбveis criadas
//ou
new Float:PosActor[3];
GetActorPos(SashaGray, PosActor[0], PosActor[1], PosActor[2]);
return 1;
}
⇡ Depurar ⇡
:heavy_multiplication_x: SetActorPos(actorid, Float:X, Float:Y, Float:Z)
:heavy_multiplication_x: SetActorPos(actorid, Float:X, Float:Y, Float:Z)
Descrição: Setará a posição do Ator para algum lugar desejado.
Especificações da função:
- Código:
atorid - O ID do Ator, usado em CreateActor .
Float:X - A Coordenada X que o ator se teleportará.
Float:Y - A Coordenada Y que o ator se teleportará.
Float:Z - A Coordenada Z que o ator se teleportará.
Modo de uso:
PHP como:- Código:
new SashaGray;
public OnFilterScriptInit()
{
SashaGray = CreateActor(306, 1480.94, -1764.35, 18.79, 0.60);
SetActorPos(SashaGray, 2176.64, -986.69, 64.46); //Teletransportarб o Ator para 2176.64, -986.69, 64.46
return 1;
}
:heavy_multiplication_x: SetActorVirtualWorld(actorid, vworld)
Descrição: Setará o Virtual World (Mundo Virtual) de um Ator.
Especificações da função:
Код:Especificações da função:
- Código:
atorid - O ID do Ator, usado em CreateActor .
vworld - O ID do Virtual World que o Ator serб colocado.
Modo de uso:
PHP como:- Código:
new SashaGray;
public OnFilterScriptInit()
{
SashaGray = CreateActor(306, 1480.94, -1764.35, 18.79, 0.60);
SetActorVirtualWorld(SashaGray, 24); //Colocando o Ator no Virtual World(Mundo virtual) 24
return 1;
}
:heavy_multiplication_x: GetActorVirtualWorld(actorid)
Descrição: Pegar o Virtual World (Mundo Virtual) de um Ator. O Mundo Virtual por padrinho, ou seja, quando o Ator for criado, é 0.
Especificações da função:
Код:Especificações da função:
- Código:
atorid - O ID do Ator, usado em CreateActor .
Modo de uso:
PHP como:- Código:
new SashaGray;
public OnFilterScriptInit()
{
SashaGray = CreateActor(306, 1480.94, -1764.35, 18.79, 0.60);
SetActorVirtualWorld(SashaGray, 24); //Colocando o Ator no Virtual World(Mundo virtual) 24
if(GetActorVirtualWorld(SashaGray) == 24) //Se o Virtual World do Ator for 24, entгo...
{
//Reaзгo...
}
return 1;
}
:heavy_multiplication_x: SetActorInvulnerable(actorid, invulnerável = true)
Descrição: Change invulnerabilidade de um Ator. Uma vez que o Ator é invulnerável, não chama o Callback OnPlayerGiveDamageActor .
Especificações da função:
Код:Especificações da função:
- Código:
atorid - O ID do Ator, usado em CreateActor .
invulnerable - Coloque 0 ( false ) para torná-lo vulnerável ou coloque 1 ( true ) para torná-lo invulnerável.
Modo de uso:
PHP como:- Código:
new SashaGray;
public OnFilterScriptInit()
{
SashaGray = CreateActor(306, 1480.94, -1764.35, 18.79, 0.60);
SetActorInvulnerable(SashaGray, true); //Tornarб o Ator invulnerбvel, vocк tambйm poderia usar apenas SetActorInvulnerable(SashaGray); para fazer o mesmo.
return 1;
}
:heavy_multiplication_x: IsActorInvulnerable(actorid)
Descrição: Verifique se um Ator é invulnerável ou nгo.
Especificações da função:
Код:Especificações da função:
- Código:
atorid - O ID do Ator, usado em CreateActor para chegar se é invulnerável ou nгo.
Valores que retornarão:
- Código:
0 - O ator é vulnerável, ou seja, sofrerá dano.
1 - O ator é invulnerável, ou seja, não sofrerá dano.
Modo de uso:
PHP como:- Código:
new SashaGray;
public OnFilterScriptInit()
{
SashaGray = CreateActor(306, 1480.94, -1764.35, 18.79, 0.60);
if(IsActorInvulnerable(SashaGray)) //Verificando se o Ator 'SashaGray' й Invulnerбvel, se sim, executa o cуdigo abaixo:
{
print("O Ator й invulnerбvel, nгo sofrerб dano.");
}
else //Se nгo for invulnerбvel, executa o cуdigo abaixo:
{
print("O Ator й vulnerбvel, vamos matar esse fi de rapariga.");
}
return 1;
}
:heavy_multiplication_x: SetActorHealth(actorid, Float:saúde)
Descrição: Setará a vida de um determinado Ator.
Especificações da função:
Код:Especificações da função:
- Código:
atorid - O ID do Ator, usado em CreateActor .
Float:health - A quantidade de vida que o será atribuída ao Ator.
Modo de uso:
PHP como:- Código:
new SashaGray;
public OnFilterScriptInit()
{
SashaGray = CreateActor(306, 1480.94, -1764.35, 18.79, 0.60);
SetActorHealth(SashaGray, 100); //Seta a vida do Ator para 100
return 1;
}
:heavy_multiplication_x: GetActorHealth(actorid, &Float:saúde)
Descrição: Pega a vida de um determinado ator.
Especificações da função:
Код:Especificações da função:
- Código:
atorid - O ID do Ator, usado em CreateActor .
&Float:health - A variável flutuante ( float ) que armazenaÁ a quantidade de vida do Ator.
Modo de uso:
PHP como:- Código:
new SashaGray;
public OnFilterScriptInit()
{
SashaGray = CreateActor(306, 1480.94, -1764.35, 18.79, 0.60);
SetActorHealth(SashaGray, 100); //Seta a vida do Ator para 100
new Float:Health_Actor; //Criando a variбvel que armazenarб o quantidade de vida
GetActorHealth(SashaGray, Health_Actor); //Pegando e atribuindo a vida do Ator а variбvel
printf("A vida do Ator ID %d й %.2f", SashaGray, Health_Actor); //[DEBUG]
return 1;
}
⇡ Depurar ⇡
:heavy_multiplication_x: SetActorFacingAngle(actorid, Float:ang)
:heavy_multiplication_x: SetActorFacingAngle(actorid, Float:ang)
Descriзгo: Setarб o вngulo (rotaзгo) de um determinado Ator.
Especificações da função:
Код:Especificações da função:
- Código:
atorid - O ID do Ator, usado em CreateActor .
Float:ang - O вngulo (rotaзгo) desejado que o Ator ficarб.
Modo de uso:
PHP como:- Código:
new SashaGray;
public OnFilterScriptInit()
{
SashaGray = CreateActor(306, 1480.94, -1764.35, 18.79, 0.60);
SetActorFacingAngle(SashaGray, 180.0); //Setarб a rotaзгo do Ator para 180.0
return 1;
}
:heavy_multiplication_x: GetActorFacingAngle(actorid, &Float:ang)
Descriзгo: Pegarб o вngulo (rotaзгo) de um determinado Ator existente.
Especificações da função:
Код:Especificações da função:
- Código:
atorid - O ID do Ator, usado em CreateActor .
&Float:ang - Variável flutuante ( float ) que armazenaÁ a rotação do Ator.
Modo de uso:
PHP como:- Código:
new SashaGray;
public OnFilterScriptInit()
{
SashaGray = CreateActor(306, 1480.94, -1764.35, 18.79, 0.60);
new Float:AnguloAtor; //Criando a variбvel que armazenarб o valor da rotaзгo do Ator
GetActorFacingAngle(SashaGray, AnguloAtor); //Pegando e atribuindo o valor da rotaзгo а variбvel criada acima
printf("O вngulo(rotaзгo) do Ator ID %d й %.2f", SashaGray, AnguloAtor); //[DEBUG]
return 1;
}
⇡ Debug ⇡
ApplyActorAnimation
(actorid, animlib[], animname[], Float:fDelta, loop, lockx, locky, freeze, time)
ApplyActorAnimation
(actorid, animlib[], animname[], Float:fDelta, loop, lockx, locky, freeze, time)
Descrição: Aplicará uma animação a um determinado Ator existente.
Especificações da função:
Код:Especificações da função:
- Código:
atorid - O ID do Ator, usado em CreateActor .
animlib[] - A biblioteca que um animal pertence.
animname[] - O nome da animação da biblioteca especificada.
fDelta - A velocidade para reproduzir a animação ( use 4.1 ).
loop - Se definido como 1 , a animação se repetirá. Se definido como 0 , a animação será reproduzida apenas uma vez.
lockx - Se definido como 0 , o Ator é devolvido à sua antiga posição ( X ) e uma vez que a animação é completa (para animações que movem o ator, como caminhar). Se definido como 1, nгo vai devolvк-lo а antiga posiзгo.
locky - O mesmo que acima, mas para o eixo Y . Deve ser mantido o mesmo que o parâmetro anterior.
freeze - Se definido como 1 , irá congelar o Ator no final da animação, se definido como 0 , isso não acontecerá.
time - Tempo em milissegundos. Para um loop sem fim deverá colocar 0 .
Modo de uso:
PHP como:- Código:
new SashaGray;
public OnFilterScriptInit()
{
SashaGray = CreateActor(306, 1480.94, -1764.35, 18.79, 0.60);
ApplyActorAnimation(SashaGray, "DEALER", "shop_pay", 4.1, 0, 0, 0, 0, 0); // Pay anim
return 1;
}
:heavy_multiplication_x: ClearActorAnimations(actorid)
Descriзгo: Pararб a animaзгo executado por um determinado Ator.
Especificações da função:
Код:Especificações da função:
- Código:
atorid - O ID do Ator, usado em CreateActor .
Modo de uso:
PHP como:- Código:
new SashaGray;
public OnFilterScriptInit()
{
SashaGray = CreateActor(306, 1480.94, -1764.35, 18.79, 0.60);
ApplyActorAnimation(SashaGray, "DEALER", "shop_pay", 4.1, 0, 0, 0, 0, 0); // Pay anim
return 1;
}
//Coloque em alguma funзгo, comando, public e etc...
ClearActorAnimations(SashaGray); //Pararб a animaзгo que o determinado Ator estiver executando
:heavy_multiplication_x: GetPlayerTargetActor(playerid)
Descrição: Obtém o id de um Ator que está sendo mirado por um jogador. Não funciona para joypads / controladores, depois de uma certa distância e também não funciona se o jogador estiver mirando com rifle sniper.
Код:- Código:
playerid - O ID do Jogador que está mirando para algum Ator.
Modo de uso:
PHP como:- Código:
public OnPlayerUpdate(playerid)
{
new AtorMirado = GetPlayerTargetActor(playerid); //Criado uma variбvel e atribuindo-a o ID do ator que o jogador estб mirando
if(IsValidActor(AtorMirado) && GetPlayerWeapon(playerid) != 0) //Verifica se o Ator que estб sendo mirado й vбlido e se o jogador estб desarmado, se o Ator for invбlido ou o jogador estiver sem armas, nгo й executado o cуdigo abaixo.
{
new WeaponName[24], String[128]; //Criando as variбveis para armazenar Textos, como o nome da arma(WeaponName) e a mensagem que serб transmitida(String).
GetWeaponName(GetPlayerWeapon(playerid), WeaponName, sizeof(WeaponName)); //Pegando o nome da arma que o jogador estб segurando na mгo
format(String, sizeof(String), "{00FF00}Vocк estб mirando para o Actor de ID {FF8000}%d {00FF00}com a arma {FF8000}%s", AtorMirado, WeaponName); //Formatando a mensagem que serб transmitida
SendClientMessage(playerid, -1, String); //Enviando a mensagem - isso й como se fosse um debug
}
return 1;
}
:heavy_multiplication_x: GetActorPoolSize()
Descrição: Obtém a maior ActorID(ID do Ator) criado no servidor.
Modo de uso:
PHP como:Modo de uso:
- Código:
public OnFilterScriptInit()
{
CreateActor(306, 1480.94, -1764.35, 18.79, 0.60); //ID 0
CreateActor(228, 0.0, 0.0, 0.0, 0.90); //ID 1
CreateActor(228, 3.0, 2.0, 0.0, 0.90); //ID 2
CreateActor(228, 6.0, 4.0, 0.0, 0.90); //ID 3
CreateActor(228, 9.0, 6.0, 0.0, 0.90); //ID 4
CreateActor(228, 12.0, 8.0, 0.0, 0.90); //ID 5
for(new j; j <= GetActorPoolSize(); ++j) //Criando um loop, se a variбvel 'j' for menor ou igual ao maior Actor ID criado no servidor, o cуdigo abaixo й executado
{
if(IsValidActor(j)) //Se o Actor ID 'j' for vбlido entгo...
{
SetActorVirtualWorld(j, 69); //Setando o Virtual World (Mundo Virtual) do Ator ID 'j' para 69
SetActorInvulnerable(j, false); //Deixando o Ator ID 'j' vulnerбvel
SetActorHealth(j, 100.0); //Setando a vida do Ator ID 'j' para 100
}
}
printf("Maior ActorID do servidor: %d", GetActorPoolSize()); //[DEBUG]
return 1;
}
⇡ Depurar ⇡
:heavy_multiplication_x: GetPlayerCameraTargetActor(playerid)
:heavy_multiplication_x: GetPlayerCameraTargetActor(playerid)
Descrição: Pega o ID do Ator que o jogador está olhando. Esta função é desabilitada pelo padrão para economizar largura de banda. Terá que usar primeiro a função Enableplayercameratarget para habilitá-lo para cada jogador.
Код:- Código:
playerid - O ID do Jogador que está olhando para algum Ator.
Modo de uso:
PHP como:- Código:
public OnPlayerConnect(playerid)
{
EnablePlayerCameraTarget(playerid, 1); //Como dito na descriзгo da funзгo, isso deverб ser habilitado para que o cуdigo funcione.
return 1;
}
public OnPlayerUpdate(playerid)
{
new AtorObservado = GetPlayerCameraTargetActor(playerid); //Criando uma variбvel e atribuindo-a o ID de algum ator que o jogador estб olhando
new String[128];
if(AtorObservado != INVALID_ACTOR_ID) //Verificando se o jogador nгo й invбlido, se ele for vбlido, executa o cуdigo abaixo:
{
format(String, sizeof(String), "Vocк estб olhando para o Actor ID %d", AtorObservado); //Formata uma mensagem onde diz qual o ID do Ator que o jogador estб observando.
SendClientMessage(playerid, -1, String); //Enviando a mensagem no chat
}
return 1;
}
:heavy_multiplication_x: IsActorStreamedIn(actorid, forplayerid)
Descrição: Essa função é verificar se existe um determinado Ator( atorid ) no campo de visão do Jogador( forplayerid ).
Especificações da função:
Код:Especificações da função:
- Código:
atorid - atorid - O ID do Ator, usado em CreateActor .
forplayerid - O ID do jogador que está vendendo ou nгo o Ator ( atorid ).
Modo de uso:
PHP como:- Código:
new SashaGray;
public OnFilterScriptInit()
{
SashaGray = CreateActor(306, 1480.94, -1764.35, 18.79, 0.60);
return 1;
}
public OnPlayerSpawn(playerid)
{
if(IsActorStreamedIn(SashaGray, playerid)) //Verificando se o playerid estб vendo o Ator 'SashaGray' no seu campo de visгo, se sim, executa o cуdigo abaixo:
{
SendClientMessage(playerid, -1, "O Ator 'SashaGray' estб em seu campo de visгo.");
}
else //Se o jogador (playerid) nгo estiver vendo o Ator 'SashaGray' no campo de visгo, executa o cуdigo abaixo:
{
SendClientMessage(playerid, -1, "O Ator 'SashaGray' nгo estб em seu campo de visгo.");
}
return 1;
}
Quais são os Callbacks?
OnPlayerGiveDamageActor
(playerid, damage_actorid, Float:amount, weaponid, bodypart)
OnPlayerGiveDamageActor
(playerid, damage_actorid, Float:amount, weaponid, bodypart)
Descriзгo: Essa callback й chamada quando um jogador dб danifica a um ator que й vulnerбvel.
Especificações da função:
- Código:
playerid - O ID do jogador que deu danos ao Ator( danificado_actorid ).
danificado_actorid - O ID do Ator que recebeu danos.
Float:amount - A quantidade de vida/coleta que o Ator perdeu.
weaponid - O ID da arma que causava o dano, ou seja, a arma que o jogador estava usando quando deu dano ao Ator.
bodypart - A parte do corpo que foi atingida.
Modo de uso:
PHP como:- Código:
public OnPlayerGiveDamageActor(playerid, damaged_actorid, Float: amount, weaponid, bodypart)
{
new StringActor[150], WeaponName[24]; //Criando as variбveis que amazenarб o nome da arma(WeaponName) e a mensagem que serб transmitida no chat(StringActor)
GetWeaponName(weaponid, WeaponName, sizeof (WeaponName)); //Pegando o nome da arma que foi usada para causa dano ao Ator
if(!IsActorInvulnerable(damaged_actorid)) //Verificando se o Ator й vulnerбvel, se sim, segue o cуdigo. Se nгo, o cуdigo abaixo nгo й executado
{
new Float:Actor_Health; //Criando a variбvel que armazenarб a vida do Ator
GetActorHealth(damaged_actorid, Actor_Health); //Pegando a vida atual do Ator
SetActorHealth(damaged_actorid, Actor_Health-amount); //Aplicando o dano ao Ator
format(StringActor, sizeof(StringActor), "ActorID: %d | VW: %d | Arma: %s | BodyPartID: %d | Dano: %.0f | Vida: %.0f", damaged_actorid, GetActorVirtualWorld(damaged_actorid), WeaponName, bodypart, amount, Actor_Health-amount); //Formatando a mensagem que serб enviada no chat
SendClientMessage(playerid, -1, StringActor); //Enviando a mensagem no chat
}
return 1;
}
:heavy_multiplication_x: OnActorStreamIn(actorid, forplayerid)
Descrição: Essa Callback é chamada quando um Ator ( atorid ) entra no campo de visão de um jogador ( forplayerid ).
Especificações da função:
- Código:
atorid - O ID do Ator que entra no campo de visão do jogador ( forplayerid ).
forplayerid - O ID do jogador que está vendendo o Ator ( atorid ).
Modo de uso:
PHP como:- Código:
public OnActorStreamIn(actorid, forplayerid)
{
new String[40]; //Criando uma variбvel que armazenarб Textos, aqui no caso, serб uma mensagem formatada.
format(String, sizeof(String), "Ator ID %d entrou no seu campo de visгo.", actorid); //Formatando a mensagem, mostrarб qual o ID de qualquer ator que entrar no campo de visгo do jogador.
SendClientMessage(forplayerid, 0xFFFFFFFF, String); //Enviando a mensagem no Chat
return 1;
}
:heavy_multiplication_x: OnActorStreamOut(actorid, forplayerid)
Descrição: Essa Callback é chamada quando um Ator ( atorid ) sai do campo de visão de um jogador ( forplayerid ), e lembrando: isto não é aplicado apenas a distância, se o Jogador( forplayerid ) e o Ator( atorid ) ocorreram em mundos( Virtual World) diferentes, também chamará um Callback.
Especificações da função:
- Código:
atorid - O ID do Ator que sai do campo de visão do jogador ( forplayerid ).
forplayerid - O ID do jogador que está vendendo ou nгo o Ator ( atorid ).
Modo de uso:
PHP como:- Código:
public OnActorStreamOut(actorid, forplayerid)
{
new String[40]; //Criando uma variбvel que armazenarб Textos, aqui no caso, serб uma mensagem formatada.
format(String, sizeof(String), "Ator ID %d saiu do seu campo de visгo.", actorid); //Formatando a mensagem, mostrarб qual o ID de qualquer ator que sair do campo de visгo do jogador.
SendClientMessage(forplayerid, 0xFFFFFFFF, String); //Enviando a mensagem no Chat
return 1;
}
Creditos: Rhayziin