Reikia pagalbos dėl submodels

Šiame forume rašomi vartotojų klausimai/problemos su kuriomis jie susidūrė kuriant pluginus.
Post Reply
User avatar
likux35
Ar jis surinks 50 žinučių?
Posts: 40
Joined: 2015 May 29 22:41
Skype: likux35
Contact:

Reikia pagalbos dėl submodels

Post by likux35 »

Sveiki. Bandau pereiti ant submodels, bet iškilo klausimas dėl grupinių submodels uždėjimo.
Pas mane yra vienoje skiltyje hats, kitoje - skinai.
Šaltinis : https://forums.alliedmods.net/showthread.php?t=210789

Aš tuos submodels persidariau, tai pas mane yra taip:
Modelių skaičius - 6
Hats skaičius - 23

Cituojant
pev_body = hat_id * amount_of_models + model_id
turi būti taip, bet vėlgi nėra tiksliai paaiškinta,
ar modelių suma tik hats reikšmė, ar visų modelių kartu sudėjus.

Tarkim, aš noriu užsidėti pas save antrąjį submodel, bei antrą hat tai bandžiau skaičiuot:

1 * 23 + 1 = 24 (netinka)
2 * 23 + 2 = 48 (netinka) (cia testavimas, nedarant atimties veiksmo)

2 * 29 + 2 = 60 (netinka)
1 * 29 + 1 = 30 (netinka) (cia testavimas, nedarant atimties veiksmo)

Jau galva net skauda, niekaip neuzdeda man normalaus skino, kokio reikia :)

Net nebežinau kokią reikšmę įvest .. :trollface:

Kodas: Select all

set_pev(id, pev_body, ?)
Gal kas susidūrėt su šia bėda, ar aš kažko nesuprantu? :asian:

User avatar
hleV
AMX Mod X ekspertai
Posts: 875
Joined: 2011 Apr 02 11:23
Skype: hlev.lt
Location: Šiauliai

Re: Reikia pagalbos dėl submodels

Post by hleV »

O geras, nemaniau kad kažkam kažkada šito prireiks. Kažkada sukau galvą, kaip apskaičiuot šitą šūdą. HL bei HL model viewer'iai naudoja HLSDK funkcijas išgaut iš modelio informaciją, o su Pawn jau sunkiau. Bet šiaip ne taip gavosi.

Funkcija:
[pawn]/** * Calculates model body index from given parameters. *  * @param parts  Model part indexes from each group * @param sizes  Each group's sizes * @param count  Total amount of groups * @return       Body index */stock CalculateModelBody(const parts[], const sizes[], count){    new body = 0;     while (count--)    {        if (sizes[count] == 1)            continue;                new temp = parts[count];         for (new i = 0; i < count; i++)            temp *= sizes;         body += temp;    }     return body;}[/pawn]
Pavyzdys:
[pawn]// Let's use HL soldier model hgrunt.mdlentity_set_model(entity, "models/player/hgrunt.mdl"); // hgrunt.mdl has 3 model part groups:new groupCount = 3; // By inspecting hgrunt.mdl via HLMV we can see it has these model groups and parts:// body    (1 part)// heads   (4 parts)// weapons (3 parts)new groupSizes[] ={    1, // Size of 1st model part group (body)    4, // Size of 2nd model part group (heads)    3  // Size of 3rd model part group (weapons)}; // Now define which parts we want to use (counting starts from zero)new modelParts[] ={    0, // 1st (and only) part in body group    2, // 3rd part in heads group (balaclava)    1  // 2nd part in weapons group (shotgun)}; // Let's calculate body and set it for entitynew body = CalculateModelBody(modelParts, groupSizes, groupCount);entity_set_int(entity, EV_INT_body, body);[/pawn]
Tai tavo atveju, jei pvz. nori imt pirmą kūną (index 0) ir antrą kepurę (index 1), turbūt būtų
[pawn]new body = CalculateModelBody({0, 1}, {6, 23}, 2);[/pawn]
Mėgink.
Image ← RIP best userbar
DISKUSIJA: KIETAS PLUGIN'O UŽSAKOVAS
Privačios pagalbos neteikiu!

User avatar
likux35
Ar jis surinks 50 žinučių?
Posts: 40
Joined: 2015 May 29 22:41
Skype: likux35
Contact:

Re: Reikia pagalbos dėl submodels

Post by likux35 »

hleV wrote:O geras, nemaniau kad kažkam kažkada šito prireiks. Kažkada sukau galvą, kaip apskaičiuot šitą šūdą. HL bei HL model viewer'iai naudoja HLSDK funkcijas išgaut iš modelio informaciją, o su Pawn jau sunkiau. Bet šiaip ne taip gavosi.

Funkcija:
[pawn]/** * Calculates model body index from given parameters. *  * @param parts  Model part indexes from each group * @param sizes  Each group's sizes * @param count  Total amount of groups * @return       Body index */stock CalculateModelBody(const parts[], const sizes[], count){    new body = 0;     while (count--)    {        if (sizes[count] == 1)            continue;                new temp = parts[count];         for (new i = 0; i < count; i++)            temp *= sizes;         body += temp;    }     return body;}[/pawn]
Pavyzdys:
[pawn]// Let's use HL soldier model hgrunt.mdlentity_set_model(entity, "models/player/hgrunt.mdl"); // hgrunt.mdl has 3 model part groups:new groupCount = 3; // By inspecting hgrunt.mdl via HLMV we can see it has these model groups and parts:// body    (1 part)// heads   (4 parts)// weapons (3 parts)new groupSizes[] ={    1, // Size of 1st model part group (body)    4, // Size of 2nd model part group (heads)    3  // Size of 3rd model part group (weapons)}; // Now define which parts we want to use (counting starts from zero)new modelParts[] ={    0, // 1st (and only) part in body group    2, // 3rd part in heads group (balaclava)    1  // 2nd part in weapons group (shotgun)}; // Let's calculate body and set it for entitynew body = CalculateModelBody(modelParts, groupSizes, groupCount);entity_set_int(entity, EV_INT_body, body);[/pawn]
Tai tavo atveju, jei pvz. nori imt pirmą kūną (index 0) ir antrą kepurę (index 1), turbūt būtų
[pawn]new body = CalculateModelBody({0, 1}, {6, 23}, 2);[/pawn]
Mėgink.


Viskas veikia, ačiū :D Reiks dabar su kitais išsitestuoti. :D
Dar toks pastebėjimas, kad į stock`e pakeitus į

Kodas: Select all

new temp = parts[count]-1;
nereiks atimti po vieną nuolatos, ko aš, žinoma, vistiek pamiršiu :D
Paskutinį kartą redagavo likux35 2019 Sep 20 23:03. Iš viso redaguota 2019 kartus.

User avatar
hleV
AMX Mod X ekspertai
Posts: 875
Joined: 2011 Apr 02 11:23
Skype: hlev.lt
Location: Šiauliai

Re: Reikia pagalbos dėl submodels

Post by hleV »

Geriau nieko nekeitinėk tam stock'e jei pilnai nesupranti kaip jis skaičiuoja. Gal su vienu modeliu pasiseks ir veiks, bet pabandysi su kitais, kur pvz. yra daugiau sub-grupių ir pnš. ir gali jau blogai apskaičiuot. Indeksai visada ėjo ir eis nuo 0, ne nuo 1. Nieko čia atiminėt nereikia, tiesiog įsimint šitą esminį dalyką.
Image ← RIP best userbar
DISKUSIJA: KIETAS PLUGIN'O UŽSAKOVAS
Privačios pagalbos neteikiu!

Post Reply

Who is online

Users browsing this forum: No registered users and 12 guests