Săriți la conținutul principal

Setări

ReAPI nu are variabile proprii de consolă — este un API pentru scripting, nu un plugin pentru utilizatorul final. „Configurarea” ReAPI înseamnă folosirea corectă a funcțiilor lui native în codul dumneavoastră Pawn. Această pagină trece în revistă elementele de bază.

Fișiere de includere

Fișier antetOferă
reapi.incNucleul modulului: funcțiile native pentru lanțurile de hook-uri, macrourile de acces la membri, verificările de capabilități. Includeți-l pe acesta; el le aduce pe celelalte.
reapi_engine.inc / reapi_engine_const.incFuncțiile de la nivelul motorului (ReHLDS) care pot primi hook-uri și constantele lor.
reapi_gamedll.inc / reapi_gamedll_const.incFuncțiile de la nivelul GameDLL-ului (ReGameDLL_CS) care pot primi hook-uri și constantele lor. Pot fi folosite doar când rulează ReGameDLL_CS.
cssdk_const.incConstantele SDK-ului Counter-Strike, comune fișierelor antet de mai sus.
reapi_reunion.incHook-uri către ReUnion, când este instalat.
reapi_vtc.incHook-uri către integrarea cu sistemul anti-cheat VTC, când este instalată.
reapi_rechecker.incHook-uri către ReChecker, când este instalat.

reapi.inc le include automat pe toate cele de mai sus — reapi_engine.inc are sens doar cu ReHLDS, iar reapi_gamedll.inc doar cu ReGameDLL_CS.

Lanțuri de hook-uri

Un lanț de hook-uri îi permite pluginului dumneavoastră să intercepteze apelul unei funcții a motorului sau a GameDLL-ului.

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();

function_id este una dintre constantele RG_* declarate în reapi_engine_const.inc (funcțiile motorului) sau în reapi_gamedll_const.inc (funcțiile GameDLL-ului) — consultați aceste fișiere antet pentru lista completă și versionată a funcțiilor care pot primi hook-uri și a semnăturilor lor de callback.

Tipurile de returnare ale lanțurilor de hook-uri

Returnați una dintre aceste valori din funcția dumneavoastră de callback, ca să stabiliți ce se întâmplă mai departe:

ConstantăEfect
HC_CONTINUEPluginul nu a întreprins nimic; se continuă normal.
HC_SUPERCEDESare peste funcția reală; folosește în locul ei valoarea stabilită prin SetHookChainReturn.
HC_BREAKSare peste toate funcțiile rămase și peste funcția reală; folosește valoarea de returnare stabilită. Sare peste hook-ul fiecărui plugin AMXX următor — folosiți-o cu grijă.
HC_BYPASSSare peste apelurile tuturor pluginurilor AMXX următoare, dar apelează totuși funcția originală. În pre, sare și peste funcțiile din post.

Tipurile de argumente și de valori returnate

SetHookChainReturn, GetHookChainReturn și SetHookChainArg primesc o valoare AType: care descrie cum trebuie interpretate argumentele următoare:

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

Accesul la membri

Citiți și scrieți membrii interni ai structurilor (jucător, armă, grenadă, reguli de joc și altele) după nume, nu după un decalaj calculat manual:

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

Implicit, set_member/get_member se traduc în variantele set_member_s/get_member_s, cu verificarea limitelor. Definiți MEMBER_UNSAFE înainte de #include <reapi> dacă aveți nevoie de variantele fără verificare, puțin mai rapide, și înțelegeți riscul.

Verificări de capabilități în timpul execuției

Folosiți-le ca un plugin să se adapteze la configurația pe care rulează efectiv, în loc să presupună:

Funcție nativăReturnează adevărat când
is_rehlds()Serverul rulează ReHLDS.
is_regamedll()Serverul rulează ReGameDLL_CS.
has_reunion()ReUnion este instalat.
has_vtc()Integrarea cu sistemul anti-cheat VTC este instalată.
has_rechecker()ReChecker este instalat.

Alte funcții native utilitare

Funcție nativăRol
bool:FClassnameIs(entityIndex, const className[])Verifică numele de clasă al unei entități; validează totodată entitatea.
WeaponIdType:GetGrenadeType(entityIndex)Returnează tipul de grenadă al unei entități.
engset_view(index, viewEntity) / get_viewent(index)Citește sau stabilește entitatea din care privește un jucător.
bool:is_entity(entityIndex)Verifică dacă un index corespunde unei entități valide.

Pentru lista completă și actualizată a funcțiilor native și a identificatorilor funcțiilor care pot primi hook-uri, tratați reapi.inc, reapi_engine_const.inc și reapi_gamedll_const.inc (instalate alături de scripting/include al pluginurilor dumneavoastră) drept sursă de referință — ele sunt versionate împreună cu binarul pe care îl rulați.