Ir para conteúdo
Entre para seguir isso  
dalvorsn

Flags e customFlags

Recommended Posts

dalvorsn    46
dalvorsn

Flags e Custom Flags

 

O que são flags ?

 

Provavelmente ao configurar seu otserv, já se deparou ao mecher no groups.xml

com alguns elementos estranhos da tag (flags, customFlags).

Eles normalmente são números enormes e aparentemente sem sentido,

porém eles são importantíssimos, são eles que definem inumeras permissões e

limitações que determinado group terá.

 

Como eles funcionam?

 

Cada flag ou customFlag tem seu número e sua constante, são eles:

 

»» Flags ««


[center][b]╔═══════════════════════════════════════════╗
║PLAYERFLAG_CANNOTUSECOMBAT = 0 ║
║PLAYERFLAG_CANNOTATTACKPLAYER = 1 ║
║PLAYERFLAG_CANNOTATTACKMONSTER = 2 ║
║PLAYERFLAG_CANNOTBEATTACKED = 3 ║
║PLAYERFLAG_CANCONVINCEALL = 4 ║
║PLAYERFLAG_CANSUMMONALL = 5 ║
║PLAYERFLAG_CANILLUSIONALL = 6 ║
║PLAYERFLAG_CANSENSEINVISIBILITY = 7 ║
║PLAYERFLAG_IGNOREDBYMONSTERS = 8 ║
║PLAYERFLAG_NOTGAININFIGHT = 9 ║
║PLAYERFLAG_HASINFINITEMANA = 10 ║
║PLAYERFLAG_HASINFINITESOUL = 11 ║
║PLAYERFLAG_HASNOEXHAUSTION = 12 ║
║PLAYERFLAG_CANNOTUSESPELLS = 13 ║
║PLAYERFLAG_CANNOTPICKUPITEM = 14 ║
║PLAYERFLAG_CANALWAYSLOGIN = 15 ║
║PLAYERFLAG_CANBROADCAST = 16 ║
║PLAYERFLAG_CANEDITHOUSES = 17 ║
║PLAYERFLAG_CANNOTBEBANNED = 18 ║
║PLAYERFLAG_CANNOTBEPUSHED = 19 ║
║PLAYERFLAG_HASINFINITECAPACITY = 20 ║
║PLAYERFLAG_CANPUSHALLCREATURES = 21 ║
║PLAYERFLAG_CANTALKREDPRIVATE = 22 ║
║PLAYERFLAG_CANTALKREDCHANNEL = 23 ║
║PLAYERFLAG_TALKORANGEHELPCHANNEL = 24 ║
║PLAYERFLAG_NOTGAINEXPERIENCE = 25 ║
║PLAYERFLAG_NOTGAINMANA = 26 ║
║PLAYERFLAG_NOTGAINHEALTH = 27 ║
║PLAYERFLAG_NOTGAINSKILL = 28 ║
║PLAYERFLAG_SETMAXSPEED = 29 ║
║PLAYERFLAG_SPECIALVIP = 30 ║
║PLAYERFLAG_NOTGENERATELOOT = 31 ║
║PLAYERFLAG_CANTALKREDCHANNELANONYMOUS = 32 ║
║PLAYERFLAG_IGNOREPROTECTIONZONE = 33 ║
║PLAYERFLAG_IGNORESPELLCHECK = 34 ║
║PLAYERFLAG_IGNOREWEAPONCHECK = 35 ║
║PLAYERFLAG_CANNOTBEMUTED = 36 ║
║PLAYERFLAG_ISALWAYSPREMIUM = 37 ║
║PLAYERFLAG_CANANSWERRULEVIOLATIONS = 38 ║
║PLAYERFLAG_39 = 39 -- ignore ║
║PLAYERFLAG_SHOWGROUPINSTEADOFVOCATION = 40 ║
║PLAYERFLAG_HASINFINITESTAMINA = 41 ║
║PLAYERFLAG_CANNOTMOVEITEMS = 42 ║
║PLAYERFLAG_CANNOTMOVECREATURES = 43 ║
║PLAYERFLAG_CANREPORTBUGS = 44 ║
║PLAYERFLAG_45 = 45 -- ignore ║
║PLAYERFLAG_CANNOTBESEEN = 46 ║
╚═══════════════════════════════════════════╝[/b][/center]



»» Custom Flags ««

[b]
[center]╔═════════════════════════════════════════════════╗
║PLAYERCUSTOMFLAG_ALLOWIDLE = 0                   ║
║PLAYERCUSTOMFLAG_CANSEEPOSITION = 1              ║
║PLAYERCUSTOMFLAG_CANSEEITEMDETAILS = 2           ║
║PLAYERCUSTOMFLAG_CANSEECREATUREDETAILS = 3       ║
║PLAYERCUSTOMFLAG_NOTSEARCHABLE = 4               ║
║PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES = 5        ║
║PLAYERCUSTOMFLAG_CANTHROWANYWHERE = 6            ║
║PLAYERCUSTOMFLAG_CANPUSHALLITEMS = 7             ║
║PLAYERCUSTOMFLAG_CANMOVEANYWHERE = 8             ║
║PLAYERCUSTOMFLAG_CANMOVEFROMFAR = 9              ║
║PLAYERCUSTOMFLAG_CANLOGINMULTIPLECHARACTERS = 10 ║
║PLAYERCUSTOMFLAG_HASFULLLIGHT = 11               ║
║PLAYERCUSTOMFLAG_CANLOGOUTANYTIME = 12           ║
║PLAYERCUSTOMFLAG_HIDELEVEL = 13                  ║
║PLAYERCUSTOMFLAG_ISPROTECTED = 14                ║
║PLAYERCUSTOMFLAG_ISIMMUNE = 15                   ║
║PLAYERCUSTOMFLAG_NOTGAINSKULL = 16               ║
║PLAYERCUSTOMFLAG_NOTGAINUNJUSTIFIED = 17         ║
║PLAYERCUSTOMFLAG_HIDELEVEL = 18                  ║
║PLAYERCUSTOMFLAG_IGNOREPACIFICATION = 19         ║
║PLAYERCUSTOMFLAG_CANSTAIRHOP = 20                ║
║PLAYERCUSTOMFLAG_CANTURNHOP = 21                 ║
║PLAYERCUSTOMFLAG_IGNOREHOUSERENT = 22            ║
║PLAYERCUSTOMFLAG_CANWEARALLADDONS = 23           ║
╚═════════════════════════════════════════════════╝[/center]
[/b]

 

Observem que cada flag ou customFlag tem um valor correlacionado,

esse mesmo valor é usado no cálculo para se obter a somas das flags/customFlags.

 

 

Primeiramente vamos entender algumas flags, pelo próprio nome da para se ter uma noção boa do que ela representa:

PLAYERFLAG_CANNOTATTACKPLAYER (1) = Não pode atacar jogadores(cannot attack player)

PLAYERFLAG_CANNOTUSESPELLS (13) = Não pode usar magias(cannot use spells)

PLAYERFLAG_CANSUMMONALL (5) = Pode convocar todos(can summon all)

 

Aproveitando os exemplos, mostrarei como aplicá-los.As flags são calculadas em análise combinatória de acordo com o valor de cada constante.

 

(2 ^ (valor da constante))

Então vamos calcular o valor do exemplo.


soma_das_flags = ((2^[color="red"]1[/color]) + (2^[color="red"]13[/color]) + (2^[color="red"]5[/color]))
soma_das_flags = (2 + 8192 + 32)
soma_das_flags = ([color="red"]8226[/color])

O resultado que obtivemos foi 8226, e esse mesmo resultado que usaremos na tag(flags) do groups.xml.

 

As custom Flags são calculadas da mesma maneira, porém flag soma com flag e customFlag soma com customFlag e cada soma tem seu lugar na tag.

Devemos então somar todos os valores de todas as permissões que quer para determinado grupo.

Escolherei algumas como exemplo também:

 

PLAYERCUSTOMFLAG_ALLOWIDLE (0) = Permitir ocioso (allow idle)

PLAYERCUSTOMFLAG_HIDELEVEL (13) = Esconder nível (hide level)

PLAYERCUSTOMFLAG_CANPUSHALLITEMS (7) = Pode empurrar todos os itens (can push all items)

 

 

Somandos as customFlags:


soma_das_customFlags = ((2^[color="blue"]0[/color]) + (2^[color="blue"]13[/color]) + (2^[color="blue"]7[/color]))
soma_das_customFlags = (1 + 8192 + 128)
soma_das_customFlags = ([color="blue"]8321[/color])

 

O resultado que obtivemos foi 8321, e esse número é o que será usado na tag (customFlags) do groups.xml.

 

Em data/XML/groups.xml:


<group id="1" name="Players" flags="[color="red"][b]8226[/b][/color]" customFlags="[color="blue"][b]8321[/b][/color]"/>

 

Os jogadores que tiverem group definido como 1, terão as permissões/restrições que foram configuradas:

 

»» Flags ««

•Não pode atacar jogadores (restrição)

•Não pode usar magias (restrição)

•Pode convocar todos (permissão)

 

»» Custom Flags ««

• Permitir ocioso (permissão)

• Esconder nível (permissão)

• Pode empurrar todos os itens (permissão)

 

As flags de restrição se não definidas, são consideradas permissões, e as flags de permissão não definidas são consideradas restrições. (bem óbvio)

 

Bom galera, o tutorial fica por aqui, espero que tenha-lhes sido útil. (Y)

Em caso de dúvidas poste que tento ajudar.

Caso tenha algo errado, por favor me avisem.

 

[Tutorial feito para OTBR, não permito postagem em outros locais.]

Editado por dalvorsn

Compartilhar este post


Link para o post
iuniX    4
iuniX

Bom, não tem nem o que te falar né. Como eu te disse no msn, ficou perfeito o tutorial. Ótima formatação, ótima explicação e ainda um assunto bem importante...

 

  • Avaliação:

A-

Explicação: 85

Organização: 90

Utilidade: 75

Média Final: 83,75

 

Muito obrigado por contribuir.

Att. iuniX~

17009120015510003635.png

Compartilhar este post


Link para o post
joaotesch    0
joaotesch

minhas 2 muié tao de sub mod agora é?? kkkk'

fico massa dalvo, vai ajudar bastante a galera aqui!

Compartilhar este post


Link para o post
Startix    9
Startix

Achei interessante,demorei um pouquinho pra entender mais consegui.Eu tinha entendido frags quando li....

Editado por Startix

Compartilhar este post


Link para o post
dalvorsn    46
dalvorsn

#Unix

Vlw por aprovar, não imaginei que a nota seria alta assim *-*

ty

 

#Tesch

porque tu fica mentindo falando essas coisas? sabes que tu é o passivo.

ty

 

#giocundo

Normal, tu mora no acre. HEIHEIEHIEH

zoa, ty =D

Compartilhar este post


Link para o post
Oneshot    24
Oneshot

Até que o tutorial serve para aqueles que procuram, sei lá, criar novos cargos em seus servidores (aliás, tipinho raro esse). É... tá bem explicadinho... paraba aí.

Compartilhar este post


Link para o post
Rômulo Souza    14
Rômulo Souza

Oche, aqui nao ta funcionando, elevei ao quadrado todos, mas na hora, nao funciona. Eu coloquei somente flags... e fiz realmente tudo certo. tem certeza que a formula eh essa? http://hem.bredband.net/johannesrosen/playerflags.html

Compartilhar este post


Link para o post
dalvorsn    46
dalvorsn

A formula é essa sim, explique melhor o que você fez e o que não deu certo pra que seja possível eu te ajudar, até então me parece muito vago.

E tu colou o site ae, se quiser conferir com os do site, verás que todos batem.

Mais por segurança, vá no seu data/lib/000-constant.lua e verifique se as flags e customFlags são as mesmas.

Compartilhar este post


Link para o post
LsM    2
LsM
Oche, aqui nao ta funcionando, elevei ao quadrado todos, mas na hora, nao funciona. Eu coloquei somente flags... e fiz realmente tudo certo. tem certeza que a formula eh essa? http://hem.bredband.net/johannesrosen/playerflags.html

 

Não há erro algum :

 

o6mwlz.jpg

Compartilhar este post


Link para o post
Henke Rula    4
Henke Rula

PArabens pelo tutorial cara.

 

Muito bem explicado

Compartilhar este post


Link para o post
f@bio    0
f@bio

Ei amigo meu servidor nao tem esse arquivo 

 data/lib/000-constant.lua

como devo prosseguir???

Compartilhar este post


Link para o post
Kuma Bear    33
Kuma Bear
11 horas atrás, f@bio disse:

Ei amigo meu servidor nao tem esse arquivo 


 data/lib/000-constant.lua

como devo prosseguir???

qual seu server parsero?

Compartilhar este post


Link para o post
f@bio    0
f@bio
1 hora atrás, bolotabunito disse:

qual seu server parsero?

OTX 3.1 amigo

 

https://hem.bredband.net/johannesrosen/playerflags.html

Esse site nao funciona mais, alguem tem algum que possa ver os flags tipo ele???

Editado por f@bio

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×