Официалният форум на iPlay.bg 

Този раздел е създаден специално за проблеми и въпроси за направата на плъгини или преработката на вече съществуващи кодове.
 #393145  от southdivision
 чет юни 23, 2016 12:35 am
Код: Избери всички
public displayMessage()
{
 new iPnum
 new iPlayers[32]
 get_players(iPlayers, iPnum, "a")
 
 new flaga = ( ADMIN_LEVEL_C | ADMIN_LEVEL_D | ADMIN_LEVEL_E | ADMIN_LEVEL_F | ADMIN_LEVEL_G | ADMIN_LEVEL_H )

 for(new i, iPlayer; i < iPnum; i++)
 {
if(get_user_flags(iPlayer) & flaga ) {
  iPlayer = iPlayers[i]
  
  iPlayer = iPlayers[i]
   set_dhudmessage(g_iColors[0], g_iColors[1], g_iColors[2], -1.0, 0.91, 1, 2.0, 2.0, 0.5, 1.0, -1)
  show_dhudmessage(iPlayer, "Admin si")
  
  }
  else {
  iPlayer = iPlayers[i]
 set_dhudmessage(g_iColors[0], g_iColors[1], g_iColors[2], -1.0, 0.91, 1, 2.0, 2.0, 0.5, 1.0, -1)
   show_dhudmessage(iPlayer, "Ne si Admin")

 }
 }
}
Целта ми тези всички флагове ако имаш поне една от тях да ти показва,че си админ,но тук не се получава незнайно защо. Дори когато си админ и когато си играч показва,съобщението,че си админ ..
Последна промяна от OciXCrom™ на чет юни 23, 2016 1:50 am, променено общо 1 път. Причина: Преместена тема!
 #393149  от OciXCrom™
 чет юни 23, 2016 1:59 am
Като за начало, iPlayer е зададен неправилно и проверяваш флаговете на сървъра, а не на играч. Сложи го в началото на for loopа, и то само веднъж, а не 200 пъти.

Отделно, не мисля, че по този начин можеш да направиш въпросната проверка за флагове. Направи я по този начин:
Код: Избери всички
new iAccess[] = { ADMIN_LEVEL_A, ADMIN_LEVEL_B, ADMIN_BLABLA }

for(new i, iPlayer, iFlags, bool:blAdmin; i < iPnum; i++)
{
    iPlayer = iPlayers[i]
    iFlags = get_user_flags(iPlayer)
    blAdmin = false

    for(new i; i < sizeof(iAccess); i++)
    {
        if(iFlags & iAccess)
        {
            blAdmin = true
            break
        }
    }

    if(blAdmin)
    {
        // igrachut e admin
    }
    else
    {
        // igrachut ne e admin
    }
}
:ps: Може да има грешки, тъй като писах мнението от телефона.
 #393182  от southdivision
 чет юни 23, 2016 4:01 pm
error: Arrary must be indexed <variable iAccess>
Код: Избери всички
public displayMessage()
{
 new iPnum
 new iPlayers[32]
 get_players(iPlayers, iPnum, "a")
 
new iAccess[] = { ADMIN_LEVEL_C, ADMIN_LEVEL_D, ADMIN_LEVEL_E, ADMIN_LEVEL_F, ADMIN_LEVEL_G, ADMIN_LEVEL_H }

for(new i, iPlayer, iFlags, bool:blAdmin; i < iPnum; i++)
{
    iPlayer = iPlayers[i]
    iFlags = get_user_flags(iPlayer)
    blAdmin = false

    for(new i; i < sizeof(iAccess); i++)
    {
        if(iFlags & iAccess)
        {
            blAdmin = true
            break
        }
    }

    if(blAdmin)
    {
    set_dhudmessage(g_iColors[0], g_iColors[1], g_iColors[2], -1.0, 0.91, 1, 2.0, 2.0, 0.5, 1.0, -1)
    show_dhudmessage(iPlayer, "Admin si")
    }
    else
    {
      set_dhudmessage(g_iColors[0], g_iColors[1], g_iColors[2], -1.0, 0.91, 1, 2.0, 2.0, 0.5, 1.0, -1)
    show_dhudmessage(iPlayer, "Ne si admin")
    }
}
}