masyvas

Šiame forume rašomi vartotojų klausimai/problemos su kuriomis jie susidūrė kuriant pluginus.
Spag
Gana aktyvus vartotojas
Posts: 269
Joined: 2012 Dec 31 15:39

masyvas

Post by Spag »

Kaip rasti masyvo ilgį? pvz: mass[10] reiksmes jame yra { 1, 2, 3, 4, 5 }, kaip surasti kiek jame yra reiksmiu ?

User avatar
beast
AMX Mod X ekspertai
Posts: 509
Joined: 2011 Jan 08 18:44
Skype: thefurious4
Contact:

Re: masyvas

Post by beast »

Code: Select all

itemCount = GetItemCount(mass, sizeof mass) GetItemCount(array[], size){    new count     for(new i = 0; i < size; i++)    {        if(array[i])            count++    }        return count}
O gal tam ir specifinė funkcija yra...

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

Re: masyvas

Post by hleV »

Koks masyvo dydis tiek ir reikšmių (10).
Image ← RIP best userbar
DISKUSIJA: KIETAS PLUGIN'O UŽSAKOVAS
Privačios pagalbos neteikiu!

Spag
Gana aktyvus vartotojas
Posts: 269
Joined: 2012 Dec 31 15:39

Re: masyvas

Post by Spag »

Hlev, ne taip supratai.

Yra masyvas, o jame max eina išsaugoti 10 reikšmių, bet jame išsaugota reikšmių yra tik penkios, tai kaip gauti tą išsaugotą reikšmių skaičių jame?

Su beast masyvo ilgio skaičiavimu, kai išsaugota 1 reikšmė, rodo kad išsaugota 77.


Mano kodas:

Code: Select all

#include <amxmodx> new masyvas[10];new itemCount = GetItemCount(masyvas, sizeof(masyvas)) public plugin_init(){    register_plugin("Masyvu testavimai", "1.0", "Spag");        register_clcmd("say /array", "funkcija");    register_clcmd("say_team /array", "funkcija");        register_clcmd("say /arraym", "funkcija2");    register_clcmd("say_team /arraym", "funkcija2");} public funkcija(id){       masyvas[id]++    client_printc(id, "Masyvo dydis: %d | Is viso yra masyvo reiksmiu: %d", sizeof(masyvas), itemCount);} public funkcija2(id){    masyvas[id]--    client_printc(id, "Masyvo dydis: %d | Is viso yra masyvo reiksmiu: %d", sizeof(masyvas), itemCount);} stock GetItemCount(array[], size){    new count;     for (new i = 0; i < size; i++)    {        if(array[i])            count++    }       return count;} stock client_printc(const id, const input[], any:...){    new count = 1, players[32];    static msg[191];    vformat(msg, 190, input, 3);        replace_all(msg, 190, "!g", "^x04"); // Green Color    replace_all(msg, 190, "!n", "^x01"); // Default Color    replace_all(msg, 190, "!t", "^x03"); // Team Color        if (id) players[0] = id; else get_players(players, count, "ch");    {        for (new i = 0; i < count; i++)        {            if (is_user_connected(players[i]))            {                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);                write_byte(players[i]);                write_string(msg);                message_end();            }        }    }}

User avatar
beast
AMX Mod X ekspertai
Posts: 509
Joined: 2011 Jan 08 18:44
Skype: thefurious4
Contact:

Re: masyvas

Post by beast »

Kad naudoji nesąmoningai... kaip tau išviso susikompiliavo...

Pirma reikia sukurti masyvą ar priskirti jo elementui reikšmę, o tik po to naudoti GetItemCount...

Spag
Gana aktyvus vartotojas
Posts: 269
Joined: 2012 Dec 31 15:39

Re: masyvas

Post by Spag »

beast wrote:Kad naudoji nesąmoningai... kaip tau išviso susikompiliavo...

Pirma reikia sukurti masyvą ar priskirti jo elementui reikšmę, o tik po to naudoti GetItemCount...
nesupratau... Masyvas tai sukurtas, iskvietus komanda masyvas igauna +1.. paaiškink konkrečiau arba su komentarais

User avatar
beast
AMX Mod X ekspertai
Posts: 509
Joined: 2011 Jan 08 18:44
Skype: thefurious4
Contact:

Re: masyvas

Post by beast »

Code: Select all

#include <amxmodx> new masyvas[10];new itemCount public plugin_init(){    register_plugin("Masyvu testavimai", "1.0", "Spag");       register_clcmd("say /array", "funkcija");    register_clcmd("say_team /array", "funkcija");       register_clcmd("say /arraym", "funkcija2");    register_clcmd("say_team /arraym", "funkcija2");} public funkcija(id){      masyvas[id]++    itemCount = GetItemCount(masyvas, sizeof(masyvas))    client_printc(id, "Masyvo dydis: %d | Is viso yra masyvo reiksmiu: %d", sizeof(masyvas), itemCount);} public funkcija2(id){    masyvas[id]--    itemCount = GetItemCount(masyvas, sizeof(masyvas))    client_printc(id, "Masyvo dydis: %d | Is viso yra masyvo reiksmiu: %d", sizeof(masyvas), itemCount);} stock GetItemCount(array[], size){    new count;     for (new i = 0; i < size; i++)    {    if(array[i])        count++    }       return count;} stock client_printc(const id, const input[], any:...){    new count = 1, players[32];    static msg[191];    vformat(msg, 190, input, 3);       replace_all(msg, 190, "!g", "^x04"); // Green Color    replace_all(msg, 190, "!n", "^x01"); // Default Color    replace_all(msg, 190, "!t", "^x03"); // Team Color       if (id) players[0] = id; else get_players(players, count, "ch");    {    for (new i = 0; i < count; i++)    {        if (is_user_connected(players[i]))        {        message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);        write_byte(players[i]);        write_string(msg);        message_end();        }    }    }}

Spag
Gana aktyvus vartotojas
Posts: 269
Joined: 2012 Dec 31 15:39

Re: masyvas

Post by Spag »

Dabar supratau kame problema, o pvz. dabar su tuo ItemCount galėsiu tikrinti kitoje funkcijoje?

Code: Select all

public lalala(id){         if (ItemCount == 2)              ........}

User avatar
beast
AMX Mod X ekspertai
Posts: 509
Joined: 2011 Jan 08 18:44
Skype: thefurious4
Contact:

Re: masyvas

Post by beast »

Taip.

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

Re: masyvas

Post by hleV »

Spag wrote:Hlev, ne taip supratai.

Yra masyvas, o jame max eina išsaugoti 10 reikšmių, bet jame išsaugota reikšmių yra tik penkios, tai kaip gauti tą išsaugotą reikšmių skaičių jame?
Ką aš ne taip supratau? Masyvo dydis - 10, reiškia reikšmių - 10.
new masyvas[10]; - masyvas turi 10 reikšmių, visos jos lygios 0. Jeigu tu nustatysi masyvas[0] = 1, tai nereiškia kad kituose masyvo elementuose nėra reikšmių.
Problema ne mano supratime, o tavo išsireiškime.

Jei tu pvz. ieškai kiek reikšmių masyve yra nelygios 0, tai beast'o parašyta funkcija tai padarys.
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 1 guest