Page 1 of 1

swich

Posted: 2011 Aug 04 00:26
by morka
Kaip elgtis su tuo masyvu, tarkim yra grupes 3 ir 4
3 butu suteikti bit
4 butu surteikti bitam flagai.
Kad nereiktu kurti atskiro stulpelio butu galima plugine priskirt flagus tai grupei.
Error kai kompiliuoju dabar error 033: array must be indexed (variable "-unknown-")
error rodo ant switch(szGroup)

Code: Select all

new szGroup[33]                g_aNum = 0                new qcolAuth = SQL_FieldNameToNum(query, "members_display_name")        new qcolPass = SQL_FieldNameToNum(query, "members_pass_hash")        new qcolSalt = SQL_FieldNameToNum(query, "members_pass_salt")        new qcolGroup = SQL_FieldNameToNum(query, "member_group_id")                while (SQL_MoreResults(query))        {            SQL_ReadResult(query, qcolAuth, g_aName[g_aNum], charsmax(g_aName))            SQL_ReadResult(query, qcolPass, g_aPassword[g_aNum], charsmax(g_aPassword))            SQL_ReadResult(query, qcolGroup, szGroup, charsmax(szGroup))            SQL_ReadResult(query, qcolSalt, g_aSalt[g_aNum], charsmax(g_aSalt))                        new vip[33], admin[33]                        get_cvar_string("amx_vip_access", vip, 33)            get_cvar_string("amx_admin_access", admin, 33)                        switch(szGroup)            {            case 3: g_aGroup[g_aNum] = read_flags(vip)            case 4: g_aGroup[g_aNum] = read_flags(admin)            }                        //g_aGroup[g_aNum] = read_flags(szGroup)                        ++g_aNum            SQL_NextRow(query)            

Re: swich

Posted: 2011 Aug 04 10:17
by aaarnas
Pamiršai indeksuoti szGroup masyvą. Turėtų būti kažkas panašaus: switch(szGroup[id])

Re: swich

Posted: 2011 Aug 04 14:34
by morka
Sukompiliuoja tik kazko flagu neprisikiria.

Re: swich

Posted: 2011 Aug 04 21:09
by aaarnas
Pasitikrink dar kartą kodą. Kažkaip man nelabai logiškai atrodo.

Re: swich

Posted: 2011 Aug 05 21:34
by morka
Tipo taip? Bet irgi nelabai veikia...

Code: Select all

                         new vip[33], admin[33]            new sflags[33]             get_pcvar_string(amx_vip_access, vip, 31)            get_pcvar_string(amx_admin_access, admin, 31)                        switch(g_aGroup[index])            {                case 3:                {                    set_user_flags(id, vip[31])                    get_flags(vip[31], sflags, charsmax(sflags))                    }                case 4:                {                    set_user_flags(id, admin[31])                    get_flags(admin[31], sflags, charsmax(sflags))                  }            }                log_amx("Login: ^"%s<%d><%s><>^" became an admin (account ^"%s^") (access ^"%s^") (address ^"%s^")", name, get_user_userid(id), authid, g_aName[index], sflags, ip)        }        else        {            result |= 1            log_amx("Login: ^"%s<%d><%s><>^" kicked due to invalid password (account ^"%s^") (address ^"%s^")", name, get_user_userid(id), authid, g_aName[index], ip)        }    }    else     {        new defaccess[33]        get_pcvar_string(amx_default_access, defaccess, 31)                if (!strlen(defaccess))            copy(defaccess, 33, "z")                new idefaccess = read_flags(defaccess)        if (idefaccess)        {            result |= 8            set_user_flags(id, idefaccess)        }    }    return result}

Re: swich

Posted: 2011 Aug 06 03:10
by aaarnas
Kam visur nustatinėji array dydį funkcijose? To daryti nereikia, nebent kažką labai jau special darai.

result |= 1 ? Kas čia? Toks aprašymas tikrai veikia, ir reikšmė nustatoma?

Be to nepamrišk, kad set_user_flags prideda flagus prie jau žaidėjo turimų, o ne perrašo. Norint nustatyti flagus, prieš tai reikia juos pašalinti su remove_user_flags.

Re: swich

Posted: 2011 Aug 06 22:29
by morka
krc nesigauna net neiraso access flagu, turbut netikrina switch

Re: swich

Posted: 2011 Aug 07 15:25
by aaarnas
Su log_amx tikrink visur viską ir rasi kur kuri sąlyga nesuveikia ir kuriam kintamajam ne tokia reikšmė.

Re: swich

Posted: 2011 Aug 08 13:36
by morka
Sutvarkyta