IM

Ajuda Script aura

Por imarlonjr, 07 de abr. de 2016 em Scripts

20
2.8k
imarlonjrI
07 de abril de 2016 às 03:38

Boa noite amigos, gostaria de saber como faço pro player só poder usar uma determinada "magia"*, no caso o (exevo aura rod), se ele tiver ela, ela só é adicionada pelo GOD. Tipo tenho um aq, mais qualquer pessoa lvl 200+ pode usar  

 gostaria de saber como coloco pra um usuario poder usar uma magia se ele tiver ela, tipo na database na tabela players eu add mais uma linha, a linha aura.

se essa linha linha = 1 o usuario pode usar, se não não!

 

Sò que no momento todos podem usar, alguem me ajuda pf?

 

local config = {  mana = 200,  seconds = 60,  storage = 500,  semMana = "Você não têm mana suficiente.",  msg = "Você precisa aguardar %d segundos para usar essa magia novamente.",}local combat1 = createCombatObject()setCombatParam(combat1, COMBAT_PARAM_EFFECT, 20)local combat2 = createCombatObject()setCombatParam(combat2, COMBAT_PARAM_EFFECT, 28)arr1 = {{0, 1, 0},{1, 3, 1},{0, 1, 0},}arr2 = {{1, 0, 1},{0, 3, 0},{1, 0, 1},}local area1 = createCombatArea(arr1)local area2 = createCombatArea(arr2)setCombatArea(combat1, area1)setCombatArea(combat2, area2)function onCastSpell(cid, var)  if getPlayerStorageValue(cid, config.storage) == -1 then    setPlayerStorageValue(cid, config.storage, os.time()-config.seconds)  end  if config.seconds-(os.time()-getPlayerStorageValue(cid, config.storage)) > 0 then    doPlayerSendCancel(cid, string.format(config.msg, config.seconds-(os.time()-getPlayerStorageValue(cid, config.storage))))    return true  end  if getPlayerMana(cid) >= config.mana then        setPlayerStorageValue(cid, config.storage, os.time())        if ((getPlayerSlotItem(cid, 5).itemid) <= 0) or ((getPlayerSlotItem(cid, 6).itemid) <= 0) then        doPlayerAddMana(cid, -config.mana)        doPlayerAddItem(cid,7410,1)        addEvent(doCombat, 0, cid, combat1, var)        addEvent(doCombat, 0, cid, combat2, var)        else        doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você precisa estar com as mãos livres para receber a Aura Rod.")        doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)        doSendMagicEffect(getThingPosition(cid), CONST_ME_POFF)        end  else	doPlayerSendCancel(cid, config.semMana)  end  return trueend

 

KarlKalvinK
07 de abril de 2016 às 07:28

Posta também o script que você usa para dar a "permissão" para que o player use este comando.

 

E explique também direito que eu não entendi quase nada oque tu quer.

PoccnnP
07 de abril de 2016 às 09:39

Vai em speels.xml e na tag dessa magia verifica se existe algo como learnspell isso faz com que o player só possa usar se aprender essa magia, então você pode adiciona-la pelo god.

Editado Abril 7 por Poccnn

imarlonjrI
07 de abril de 2016 às 13:28

Tipo eu quero que o player só use essa magia se o god der ela, e tou com um outro problema, quando god a usa funciona de boa, mais se um player usar da debug, o codigo original era de otserv 8.4, tou passando pra 8.6, poderiam me ajudar?

 

 

abaixo segue os demais codigos

 

Na pasta movemments
 

function onDeEquip(cid, item, slot)if isPlayer(cid) then        doRemoveItem(item.uid)        doSendMagicEffect(getCreaturePosition(cid), 29)end        return TRUEend

 

movemments.xml

<movevent event="AddItem" itemid="7429" script="aura.lua"/><movevent event="AddItem" itemid="7410" script="aura.lua"/><movevent event="AddItem" itemid="8858" script="aura.lua"/><movevent event="AddItem" itemid="7881" script="aura.lua"/><movevent event="AddItem" itemid="7878" script="aura.lua"/><movevent event="AddItem" itemid="7872" script="aura.lua"/>

Na spells.xml

<instant name="ARod" words="exevo aura rod" lvl="75" mana="0" prem="0" needweapon="0" exhaustion="1000" needlearn="0" script="support/aurarod.lua">                <vocation name="Elder Druid"/>        </instant>

 

aurarod.lua (pasta spells)

 

local config = {  mana = 200,  seconds = 60,  storage = 500,  semMana = "Você não têm mana suficiente.",  msg = "Você precisa aguardar %d segundos para usar essa magia novamente.",}local combat1 = createCombatObject()setCombatParam(combat1, COMBAT_PARAM_EFFECT, 20)local combat2 = createCombatObject()setCombatParam(combat2, COMBAT_PARAM_EFFECT, 28)arr1 = {{0, 1, 0},{1, 3, 1},{0, 1, 0},}arr2 = {{1, 0, 1},{0, 3, 0},{1, 0, 1},}local area1 = createCombatArea(arr1)local area2 = createCombatArea(arr2)setCombatArea(combat1, area1)setCombatArea(combat2, area2)function onCastSpell(cid, var)  if getPlayerStorageValue(cid, config.storage) == -1 then    setPlayerStorageValue(cid, config.storage, os.time()-config.seconds)  end  if config.seconds-(os.time()-getPlayerStorageValue(cid, config.storage)) > 0 then    doPlayerSendCancel(cid, string.format(config.msg, config.seconds-(os.time()-getPlayerStorageValue(cid, config.storage))))    return true  end  if getPlayerMana(cid) >= config.mana then        setPlayerStorageValue(cid, config.storage, os.time())        if ((getPlayerSlotItem(cid, 5).itemid) <= 0) or ((getPlayerSlotItem(cid, 6).itemid) <= 0) then        doPlayerAddMana(cid, -config.mana)        doPlayerAddItem(cid,7410,1)        addEvent(doCombat, 0, cid, combat1, var)        addEvent(doCombat, 0, cid, combat2, var)        else        doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você precisa estar com as mãos livres para receber a Aura Rod.")        doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)        doSendMagicEffect(getThingPosition(cid), CONST_ME_POFF)        end  elsedoPlayerSendCancel(cid, config.semMana)  end  return trueend

 

Na talcktions aura.lua

function onSay(cid, words, param)char = getPlayerByName(param)if (getPlayerGroupId(cid) == 6) then     if getPlayerStorageValue(char, 10001) == 0 then            setPlayerStorageValue(char,10005,1)        setPlayerStorageValue(char,10002,1)        setPlayerStorageValue(char,10007,1)        setPlayerStorageValue(char,10001,1)        doPlayerSendTextMessage(cid,22,"Você adicinou Full aura ao char " .. char ..".")        doPlayerSendTextMessage(char,22,"Você recebeu Full Aura.")    else        setPlayerStorageValue(char,10005,0)        setPlayerStorageValue(char,10002,0)        setPlayerStorageValue(char,10007,0)        setPlayerStorageValue(char,10001,0)        doPlayerSendTextMessage(cid,22,"Você removeu a Full Aura do char " .. char ..".")    endelsedoPlayerSendCancel(cid, "Somente Administradores podem usar esse comando.")endreturn TRUEend

 

talcktions.xml

	<talkaction log="yes" words="/fullaura" access="5" script="aura.lua"/>

 

 

Muito obrigado desde já pela atençao :D

PoccnnP
07 de abril de 2016 às 13:50

em spell.xml nessa tag da magia, mude o valor de learnspell para 1.

Adicione no script de talkactions/aura.lua, dentro do escopo para God essa função:

Citar

playerLearnInstantSpell(cid, "ARod") 

 

Somente a quem o God favorecer, poderá dispor dessa magia.

imarlonjrI
07 de abril de 2016 às 13:53
1 minuto atrás, Poccnn disse:

em spell.xml nessa tag da magia, mude o valor de learnspell para 1.

Adicione no script de talkactions/aura.lua, dentro do escopo para God essa função:

 

Somente a quem o God favorecer, poderá dispor dessa magia.

e mano, tipo quando um player usa a aura o serve buga, trava, da pra saber onde ta errado no codigo?

PoccnnP
07 de abril de 2016 às 13:55

Descreva o ocorrido.

imarlonjrI
07 de abril de 2016 às 13:59

Tipo, o god usa o item gerado por essa magia de boa, mais o Player não, quando clico em atacar qualquer bixo trava a tela.

 

 

 

Adicionei assim:
 

function onSay(cid, words, param)char = getPlayerByName(param)playerLearnInstantSpell(cid, "ARod") if (getPlayerGroupId(cid) == 6) then     if getPlayerStorageValue(char, 10001) == 0 then            setPlayerStorageValue(char,10005,1)        setPlayerStorageValue(char,10002,1)        setPlayerStorageValue(char,10007,1)        setPlayerStorageValue(char,10001,1)        doPlayerSendTextMessage(cid,22,"Você adicinou Full aura ao char " .. char ..".")        doPlayerSendTextMessage(char,22,"Você recebeu Full Aura.")    else        setPlayerStorageValue(char,10005,0)        setPlayerStorageValue(char,10002,0)        setPlayerStorageValue(char,10007,0)        setPlayerStorageValue(char,10001,0)        doPlayerSendTextMessage(cid,22,"Você removeu a Full Aura do char " .. char ..".")    endelsedoPlayerSendCancel(cid, "Somente Administradores podem usar esse comando.")endreturn TRUEend

Certo?

PoccnnP
07 de abril de 2016 às 14:03

Na função playerlearninstantspell muda o cid por char que no caso seria o player em questão. 

 

Descreve melhor o ocorrido, se gera error no console, derruba o servidor, apenas laga mas funciona etc.

 

Qual servidor você usa?

imarlonjrI
07 de abril de 2016 às 14:07

Olha no momento baixei o TFS 0.4 que achei aqui no Forum, teria como me add skype brow? imarlonjr

Assim te mando a pasta você analisa melhor, se tiver como claro.

PoccnnP
07 de abril de 2016 às 14:07

Não tenho skype.

imarlonjrI
07 de abril de 2016 às 14:34

Desculpa demora ao responder brow, tive um transtorno com minha internet, tou upando os arquivos!

imarlonjrI
07 de abril de 2016 às 14:40

http://fansubanimesforever.eu.org/TFS.rar

 

Se tiver como você dar uma olhada por favor, estou com dificuldade nos 2 sistemas q disse esse da aura, e o da gema.

imarlonjrI
07 de abril de 2016 às 15:01

Testei o que você disse brow, funcionou em partes, tipo o usuario não consegue usar mais, mais não consigo dar a aura pro user.

imarlonjrI
07 de abril de 2016 às 15:31

Fiz aqui, deu certo man vlw <3