Pular para o conteúdo principal

Configurações

O ReAPI não tem variáveis de console próprias — ele é uma API de scripting, não um plugin para o usuário final. "Configurar" o ReAPI significa usar as natives dele corretamente no seu código Pawn. Esta página cobre os blocos de construção.

Arquivos de include

CabeçalhoFornece
reapi.incNúcleo do módulo: natives de cadeias de hooks, macros de acesso a membros, verificações de capacidade. Inclua este; ele puxa os demais.
reapi_engine.inc / reapi_engine_const.incFunções do nível do motor (ReHLDS) passíveis de hook e as constantes delas.
reapi_gamedll.inc / reapi_gamedll_const.incFunções do nível da GameDLL (ReGameDLL_CS) passíveis de hook e as constantes delas. Só podem ser usadas quando o ReGameDLL_CS está em execução.
cssdk_const.incConstantes do SDK do Counter-Strike compartilhadas pelos cabeçalhos acima.
reapi_reunion.incHooks para o ReUnion, quando instalado.
reapi_vtc.incHooks para a integração com o anticheat VTC, quando instalada.
reapi_rechecker.incHooks para o ReChecker, quando instalado.

O reapi.inc inclui todos os anteriores automaticamente — o reapi_engine.inc só faz sentido com o ReHLDS, e o reapi_gamedll.inc apenas com o ReGameDLL_CS.

Cadeias de hooks

Uma cadeia de hooks permite que o seu plugin intercepte a chamada de uma função do motor ou da GameDLL.

native HookChain:RegisterHookChain(ReAPIFunc:function_id, const callback[], post = 0);
native bool:DisableHookChain(HookChain:hook);
native bool:EnableHookChain(HookChain:hook);
native SetHookChainReturn(AType:type, any:...);
native any:GetHookChainReturn(AType:type, any:...);
native SetHookChainArg(number, AType:type, any:...);
native bool:IsReapiHookOriginalWasCalled(ReAPIFunc:function_id);
native HookChain:GetCurrentHookChainHandle();

O function_id é uma das constantes RG_* declaradas em reapi_engine_const.inc (funções do motor) ou em reapi_gamedll_const.inc (funções da GameDLL) — consulte esses cabeçalhos para ver a lista completa e versionada das funções passíveis de hook e das assinaturas de callback delas.

Tipos de retorno das cadeias de hooks

Retorne um destes valores do seu callback para controlar o que acontece em seguida:

ConstanteEfeito
HC_CONTINUEO plugin não tomou nenhuma ação; siga normalmente.
HC_SUPERCEDEPula a função real; usa no lugar dela o valor definido por SetHookChainReturn.
HC_BREAKPula todos os forwards restantes e a função real; usa o valor de retorno definido. Pula o hook de todos os plugins AMXX seguintes — use com cuidado.
HC_BYPASSPula as chamadas de todos os plugins AMXX seguintes, mas ainda chama a função original. Em pre, também pula os forwards de post.

Tipos de argumento e de retorno

SetHookChainReturn, GetHookChainReturn e SetHookChainArg recebem um valor AType: que descreve como interpretar os argumentos seguintes:

enum AType
{
ATYPE_INTEGER = 0,
ATYPE_FLOAT,
ATYPE_STRING,
ATYPE_CLASSPTR,
ATYPE_EDICT,
ATYPE_EVARS,
ATYPE_BOOL,
ATYPE_VECTOR,
ATYPE_TRACE
};

Acesso a membros

Leia e escreva membros internos das structs (jogador, arma, granada, regras do jogo e outros) pelo nome, em vez de por um offset calculado à mão:

set_member(entity, m_iSomeMember, value);
value = get_member(entity, m_iSomeMember);

Por padrão, set_member/get_member resolvem para as variantes set_member_s/get_member_s, com verificação de limites. Defina MEMBER_UNSAFE antes do #include <reapi> se você precisar das variantes sem verificação, um pouco mais rápidas, e entender o risco.

Verificações de capacidade em tempo de execução

Use-as para que um plugin se adapte à pilha que de fato está rodando, em vez de presumir:

NativeRetorna verdadeiro quando
is_rehlds()O servidor está rodando o ReHLDS.
is_regamedll()O servidor está rodando o ReGameDLL_CS.
has_reunion()O ReUnion está instalado.
has_vtc()A integração com o anticheat VTC está instalada.
has_rechecker()O ReChecker está instalado.

Outras natives utilitárias

NativeFinalidade
bool:FClassnameIs(entityIndex, const className[])Verifica o classname de uma entidade; também valida a entidade.
WeaponIdType:GetGrenadeType(entityIndex)Retorna o tipo de granada de uma entidade.
engset_view(index, viewEntity) / get_viewent(index)Lê ou define a entidade de visão de um jogador.
bool:is_entity(entityIndex)Verifica se um índice corresponde a uma entidade válida.

Para a lista completa e atualizada de natives e de IDs de funções passíveis de hook, trate o reapi.inc, o reapi_engine_const.inc e o reapi_gamedll_const.inc (instalados junto do scripting/include dos seus plugins) como fonte definitiva — eles são versionados junto com o binário que você está executando.