Pular para o conteúdo

Peds

Cliente

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.

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:

NomeQuando aparece
TASK_SIMPLE_PLAYER_ON_FOOTPed andando sob controle normal.
TASK_SIMPLE_GO_TO_POINTPed indo até um ponto definido por script.
TASK_COMPLEX_JUMPPed pulando.
TASK_SIMPLE_CLIMBPed escalando.
TASK_SIMPLE_SWIMPed nadando.
TASK_SIMPLE_JETPACKPed voando de jetpack.
TASK_SIMPLE_IN_AIRPed no ar.
TASK_SIMPLE_FALLPed caindo.
TASK_SIMPLE_CAR_DRIVEPed dirigindo.

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.

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.

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.