Jump to content
Sign in to follow this  
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.]

Edited by dalvorsn

Share this post


Link to 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

Share this post


Link to post
joaotesch    0
joaotesch

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

fico massa dalvo, vai ajudar bastante a galera aqui!

Share this post


Link to post
Startix    9
Startix

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

Edited by Startix

Share this post


Link to 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

Share this post


Link to 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í.

Share this post


Link to 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

Share this post


Link to 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.

Share this post


Link to 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

Share this post


Link to post
Henke Rula    4
Henke Rula

PArabens pelo tutorial cara.

 

Muito bem explicado

Share this post


Link to post
f@bio    0
f@bio

Ei amigo meu servidor nao tem esse arquivo 

 data/lib/000-constant.lua

como devo prosseguir???

Share this post


Link to 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?

Share this post


Link to 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???

Edited by f@bio

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
  • Recently Browsing   0 members

    No registered users viewing this page.

×