Peds
No cliente um ped é bem mais do que posição e skin: ele tem um esqueleto que você lê osso por osso, uma pilha de tarefas que descreve o que ele está fazendo agora, uma linha de mira que dá para traçar e um conjunto de controles que ele está segurando. As funções desta página trabalham com esse ped vivo, o que está na tela.
Estas 52 funções existem somente no cliente. Chamá-las de um script de servidor resulta em erro de valor nulo.
Veja também as funções de Peds compartilhadas, que funcionam dos dois lados.
Peds são desenhados a partir de um esqueleto, e cada osso é identificado por um número. As funções Element de osso aceitam IDs de 0 a 302 — um ID maior registra Invalid bone e devolve false, e IDs dentro da faixa que o esqueleto daquele ped não tem simplesmente devolvem false. getPedBonePosition aceita de 0 a 54.
Ler um osso não custa nada. Já escrever só aparece na tela depois de updateElementRpHAnim, e a animação em execução reconstrói o esqueleto nos frames seguintes — por isso mexer em osso costuma ser coisa para rodar a cada frame, e não em uma chamada isolada.
Estado do ped
Seção intitulada “Estado do ped”Tarefas e movimento
Seção intitulada “Tarefas e movimento”Todo ped roda uma pilha de tarefas: alguns slots primários para o que ele está fazendo e slots secundários para o que vem por cima, como virar a cabeça. Os nomes de tarefa são strings em maiúsculas, tipo TASK_SIMPLE_SWIM, e cada tarefa pode ter uma cadeia de subtarefas.
Alguns nomes que aparecem com frequência:
| Nome | Quando aparece |
|---|---|
TASK_SIMPLE_PLAYER_ON_FOOT | Ped andando sob controle normal. |
TASK_SIMPLE_GO_TO_POINT | Ped indo até um ponto definido por script. |
TASK_COMPLEX_JUMP | Ped pulando. |
TASK_SIMPLE_CLIMB | Ped escalando. |
TASK_SIMPLE_SWIM | Ped nadando. |
TASK_SIMPLE_JETPACK | Ped voando de jetpack. |
TASK_SIMPLE_IN_AIR | Ped no ar. |
TASK_SIMPLE_FALL | Ped caindo. |
TASK_SIMPLE_CAR_DRIVE | Ped dirigindo. |
Mira e alvo
Seção intitulada “Mira e alvo”A linha de mira vai da origem do disparo do ped até o ponto para onde ele mira. No jogador local ela é calculada a partir da câmera e da arma na mão; em qualquer outro ped ou jogador ela é a última origem e o último alvo de disparo sincronizados para ele. A linha só pode ser lida com o ped carregado (streamed in) e segurando uma arma — fora isso o início e o fim leem 0, 0, 0 e as funções de colisão e de cano devolvem false.
Estados de controle
Seção intitulada “Estados de controle”Os controles são identificados por nome. Controles aceitos:
fire, next_weapon, previous_weapon, forwards, backwards, left, right, zoom_in, zoom_out, enter_exit, change_camera, jump, sprint, look_behind, crouch, action, walk, vehicle_fire, vehicle_secondary_fire, vehicle_left, vehicle_right, steer_forward, steer_back, accelerate, brake_reverse, radio_next, radio_previous, radio_user_track_skip, horn, sub_mission, handbrake, vehicle_look_left, vehicle_look_right, vehicle_look_behind, vehicle_mouse_look, special_control_left, special_control_right, special_control_down, special_control_up, aim_weapon, conversation_yes, conversation_no, group_control_forwards, group_control_back.
Maiúsculas e minúsculas não importam. Um nome fora da lista devolve false sem registrar nada.
Só alguns controles têm eixo analógico de verdade. São estes que aceitam um valor entre 0 e 1 em um ped:
left, right, forwards, backwards, vehicle_left, vehicle_right, steer_forward, steer_back, accelerate, brake_reverse, special_control_left, special_control_right, special_control_up, special_control_down.
Controles a pé e controles de veículo não se misturam. Quando o valor vem da entrada real — o jogador local, ou a entrada sincronizada de outro jogador — o controle só responde no modo correspondente, então accelerate devolve false em um jogador andando na calçada. Já os controles que você mesmo define em um ped são lidos de volta exatamente como você deixou, faça o ped o que estiver fazendo.
Animações
Seção intitulada “Animações”Os peds falam com uma voz escolhida de um dos tipos de voz do jogo — PED_TYPE_GEN, PED_TYPE_EMG, PED_TYPE_PLAYER, PED_TYPE_GANG e PED_TYPE_GFD —, cada um com seu próprio conjunto de vozes com nome. A voz faz parte do ped vivo do jogo, então só pode ser lida ou trocada com o ped carregado (streamed in); só o estado de mudo é lembrado enquanto o ped está longe.