engine, fakemeta

Šiame forume rašomi vartotojų klausimai/problemos su kuriomis jie susidūrė kuriant pluginus.
Post Reply
User avatar
MPD
Gana aktyvus vartotojas
Posts: 309
Joined: 2011 Jul 08 07:24
Location: Kaunas

engine, fakemeta

Post by MPD »

Girdėjau, kad engine ir fakemeta daro vos ne tą patį, tik, kad fakemeta yra geresnis. Tad man pasidarė įdomu, kaip padaryti kokį dalyką ir ant vieno, ir ant kito. Tai parūpo, kad nereikėtų įtraukti abiejų bibliotekų.
Pavyzdžiui, aš ieškojau kaip šitą pakeisti su engine:

Code: Select all

set_pdata_int( went, OFFSET_CLIPAMMO, Weapon[id], OFFSET_LINUX_WEAPONS);
Arba šį kodą su fakemeta:

Code: Select all

g_msgid_ClCorpse = get_user_msgid("ClCorpse"); set_msg_block(g_msgid_ClCorpse, BLOCK_ONCE);
bet nei vieno, nei kito neradau.
Image

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: engine, fakemeta

Post by aaarnas »

Nėra tokio dalyko kaip vienas ar kitas geresnis. Yra dalykų, kur geriau su engine galbūt daryti, yra kur su fakemeta.
Jei matuojant 0,00000001 tikslumu, tai engine yra greitesnis. Vien dėl to tikriausiai, kad engine naudoja paprastesę sintaksę funkcijų (bet nežiūrėjau kuo ten taip skirtis gali).
Nieko blogo turėti abu includintus. Kompiliatorius išsirenka tik tą, kas reikia. Visi moduliai pastoviai būna veikiantys, tiesiog pluginai naudoja tą, ką jiems reikia.

-- 2013 Lie 25 12:54 --

Bet kaip ir sakiau - tai skirtingi moduliai skirtingiems poreikiams. Tad naudoji vieną ar kitą priklausomai nuo to ko tau reikia ir ne visais atvejais vieną pakeisi kitu.

Pvz ten tokios panašios funkcijos kaip is_ent_valid(ent) (engine) ir pev_valid(ent) (fakemeta) yra skirtingos ir gali grąžinti net ir skirtingus rezultatus:

Code: Select all

int is_ent_valid(int iEnt){    if (iEnt < 1 || iEnt > gpGlobals->maxEntities)         return 0;     if (iEnt <= gpGlobals->maxClients)    {        if (!MF_IsPlayerIngame(iEnt))        {            return 0;        }    } else {        if (FNullEnt(INDEXENT(iEnt)))        {            return 0;        }    }     return 1;}

Code: Select all

static cell AMX_NATIVE_CALL amx_pev_valid(AMX *amx, cell *params){    int idx = static_cast<int>(params[1]);     edict_t *e = INDEXENT(idx);     if (FNullEnt(e))        return 0;     if (e->pvPrivateData)        return 2;     return 1;}
Palikau CS pasaulį ;/ . Nebepasiekiamas.

Post Reply

Who is online

Users browsing this forum: Ahrefs [Bot], Amazon [Bot] and 1 guest