Ir para conteúdo
Banner com Efeitos

Featured Replies

Postado
  • Este é um post popular.

Olá pessoal!
Vi o tutorial sobre addEvent do Killua e decidi colocar em prática..
Então fiz esse sistema de campaínha para treino e decidi compartilhar com vocês que tanto me ajudam com sistemas e dívidas!

É um sistema bem simples e fácil de configurar, mesmo assim gostaria de criticas(construtivas) e sugestões uehue

 

Numa noite sombria e fora do normal, Jubileu decide visitar seu amigo Alfredo para conversar sobre recentes acontecimentos estranhos na cidade. Ao chegar na casa de seu amigo ele toca a campaínha e.. Não pode ser, o que é aquilo que se aproxima?! um zumbi?! SOCORRO ALFREEEDOOO! - grita Jubileu,desesperado. AEHUEAHEAUH

 

 

V2- TOCAR CAMPAÍNHA COM CHANCE DE APARECER MONSTRO/MENSAGEM/GANHAR ITEM

 

1°- Vá em data/actions e abra o arquivo actions.xml, então o adicione essa linha antes do final do arquivo:

<action itemid="1473;1475" script="campainha.lua"/>

ps: antes do final do arquivo, o final é </actions>

então salve e feche

 

2°- Vá em data/actions/scripts e crie um novo arquivo com a extensão lua chamado camapinha.lua e cole isso dentro:

local time = 1

function onUse(cid, item, frompos, item2, topos)
    if    exhaustion.check(cid, "zombiecall") == false then
        exhaustion.set(cid, "zombiecall", 10)   -- Aquele 1 é o exaust, de quanto em quanto tempo a campaínha pode ser tocada
    else
            return doPlayerSendCancel(cid, "Campaínha já foi tocada, espere:  " ..exhaustion.get(cid, "zombiecall").."")  
    end
        doSendMagicEffect(frompos,18) -- 18 é o efeito
        doSendAnimatedText(frompos,"Tindon",107) -- "Tindon" é a mensagem e 107 a cor
        addEvent(doSendAnimatedText, time*400, frompos,"Tindon", 107) -- "Tindon" é a mensagem e 107 a cor
        addEvent(function()
                         r1 = math.random(1,100)
                             if isCreature(cid) then
                                 if (item.itemid == 1473 or item.itemid ==1475) and  (r1 >= 1 and r1 <= 20) then
                                    doPlayerSendTextMessage(cid,22,"A campaínha fez barulho, talvez isso chame atenção.")  -- mensagem caso
                                elseif (item.itemid == 1473 or item.itemid ==1475) and  (r1 >= 21 and r1 <= 50)  then
                                    addEvent(doCreateMonster, time*400,"zombie", getCreaturePosition(cid))     -- em "zombie" vc edita o nome do que quer que apareça
                                    addEvent(doCreateMonster, time*500,"zombie", getCreaturePosition(cid))     -- em "zombie" vc edita o nome do que quer que apareça
                                    doPlayerSendTextMessage(cid,22,"A campaínha fez barulho, talvez isso chame atenção.")  -- mensagem caso nada apareça
                                  elseif (item.itemid == 1473 or item.itemid ==1475) and  (r1 >= 51 and r1 <= 70) then
                                    addEvent(doCreateMonster, time*500,"corvo", getCreaturePosition(cid))  -- em "corvo" vc edita o nome do que quer que apareça
                                    doPlayerSendTextMessage(cid,22,"A campaínha fez barulho, talvez isso chame atenção.")  -- mensagem
                                  elseif (item.itemid == 1473 or item.itemid ==1475) and  (r1 >= 71 and r1 <= 100) then
                                    addEvent(doCreateMonster, time*400,"zombie", getCreaturePosition(cid))     -- em "zombie" vc edita o nome do que quer que apareça
                                    addEvent(doCreateMonster, time*500,"zombie", getCreaturePosition(cid))     -- em "zombie" vc edita o nome do que quer que apareça
                                    addEvent(doCreateMonster, time*600,"zombie", getCreaturePosition(cid))     -- em "zombie" vc edita o nome do que quer que apareça
                                    addEvent(doCreateMonster, time*700,"zombie", getCreaturePosition(cid))     -- em "zombie" vc edita o nome do que quer que apareça
                                    addEvent(doCreateMonster, time*800,"zombie", getCreaturePosition(cid))     -- em "zombie" vc edita o nome do que quer que apareça
                                    doPlayerSendTextMessage(cid,22,"A campaínha fez barulho, talvez isso chame atenção.")  -- mensagem
                                end
                            end
                        end, 1000)
    return true
end

pronto, sistema instalado!

3°- Entendendo o script:

Para configurar, é o mesmo esquema explicado na V1(está no spoiler no final do tópico), o que muda é que aparece uma mensagem ao player e tem chances de invocar monstros, também ensinarei a como ganhar um item ao pressionar a campaínha.

 

 

Monstros: caso queira que apareça mais monstros, duplique alguma das linhas de invocação, caso contrário apague uma inteira

 

Mensagem: foi explicado no script, fácil de configurar.. só mudar o texto entre aspas  " ... "

 

Ganhar Item:

 

é só adicionar essa linha na chance de ganhar, ex:

        if (item.itemid == 1473 or item.itemid ==1475) and  (r1 >= 1 and r1 <= 20) then
                                    doPlayerSendTextMessage(cid,22,"A campaínha fez barulho, talvez isso chame atenção.")  -- mensagem caso
                                    doPlayerAddItem(cid,10599,45)

 

 

 

 

 

 

 

 

 

 

 

 

V1- Tocar campaínha

 

 

 

O script funciona assim:

Da use na campaínha, então aparece um efeito e o texto "Tindon", depois aparece novamente outro "Tindon". Existe um exaust para evitar abusos/caras chatos - SIIIIIMPLES DE TUDO.. bora lá!

 

 

 

 

1°- Vá em data/actions e abra o arquivo actions.xml, então adicione essa linha antes do final do arquivo:

    <action itemid="1473;1475" script="campainha.lua"/>

ps: antes do final do actions.xml.. o final do arquivo é o </actions>

ps²: 1473 e 1475 são os IDs dos itens que servirão como campaínha, são separados por " ; "  - caso acrescente mais coloque itemid="1473;1474;1475" etc

Então salve seu Actions.xml e feche-o.

 

 

 

2°- Vá em data/actions/scripts e crie um novo arquivo com extensão lua chamado campainha.lua, cole isso dentro:

local time = 1



function onUse(cid, item, frompos, item2, topos)
    if exhaustion.check(cid, 23000000) == false then
        exhaustion.set(cid, 23000000, 4)
    else
        return doPlayerSendCancel(cid, "Campaínha já foi tocada, espere:  " ..exhaustion.get(cid, 23000000).."")
    end


doSendMagicEffect(frompos,18)
doSendAnimatedText(frompos,"Tindon",107)
addEvent(doSendAnimatedText, time*400, frompos,"Tindon", 107)
end

Pronto, o sistema de campaínha está instalado!

 

 

 

3°- Entendendo o super mega simples script:

if exhaustion.check(cid, 23000000) == false then
        exhaustion.set(cid, 23000000, 4)
    else
        return doPlayerSendCancel(cid, "Campaínha já foi tocada, espere:  " ..exhaustion.get(cid, 23000000).."")
    end

Aqui é a função do exaust..

(cid, 23000000) - cid é para o exaust se aplicar ao player que apertou a campaínha, e 23000000 é a storage que salva o exaust

exhaustion.set(cid, 23000000, 4)   cid e 23000000 identico ao de cima.. é o tempo em segundos de exaust

return doPlayerSendCancel(cid, "Campaínha já foi tocada, espere:  " ..exhaustion.get(cid, 23000000). - se o player ainda estive com exaust, aparecerá a mensagem"Campaínha já foi tocada, espere:  " e os segundos que falta para poder usar novamente

 

Se checar a storage 23000000 que equivale a 4 segundos e ela estiver vazia, o sistema acontece e adiciona o tempo de 4 segundos na storage.

Se a storage 23000000 não estiver vazia, aparece aquela mensagem para o player.

ps: as três storages são 23000000, se mudar uma, mude as três!

 

 

local time = 1

o tempo em segundos que irá demorar para aparecer o segundo "Tindon"

doSendMagicEffect(frompos,18)
 

   frompos é onde irá aparecer o efeito(no caso, encima do item usado) e 18 é o ID do efeito que irá aparecer ao usar.

doSendAnimatedText(frompos,"Tindon",107)

  frompos é onde irá aparecer o texto,  "Tindon" é o texto que irá aparecer e 107 é a cor do texto(vai desde 0 que é preto até 215 que é branco)

addEvent(doSendAnimatedText, time*1000, frompos,"Tindon", 107)

aqui é a parte que o treino entra..   

 

doSendAnimatedText é a função que o addEvent irá chamar

time*400 é o tempo que irá demorar para chamar a função( time foi uma variável configurada acima em milisegundos, então multiplica * por 400 para que o tempo configurado na variável 0,4 segundos [para transformar o time em segundos, multiplique por 1000 ao invés de 400])

frompos é onde ocorrerá o evento, como explicado acima(no caso, encima do item usado)

"Tindon" é o texto que irá aparecer no addEvent

107 é a cor do texto, dei uma mini explicada acima.

 

 

 

É isso pessoal, meu primeiro script postado e é bem simples ueheu

Se possível, indiquem-me algo para treinar pois tenho grande interesse na área de scripts!

 

 

 

Um grande mega salve ao @Caronte, pq além da ajuda no script, ainda salvou esse meu lindo primeiro tópico uaehaeuh falar o que desse manin que mal conheço e já considero pakas? *aplausos
 

Caronte,

Salvando tópicos desde 1997

Editado por biel.stocco (veja o histórico de edições)

  • Respostas 10
  • Visualizações 786
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Criativo...   esse local campainha = {1473, 1475} não serve pra nada, pois você não usa...     Faria sentido colocar isso caso a <TAG/> do XML, fosse uma action e dentro do script, embai

  • local time = 1 function onUse(cid, item, frompos, item2, topos) if exhaustion.check(cid, 23000000) == false then exhaustion.set(cid, 23000000, 4) else return doPlayerSendCan

  • Caronte, Salvando tópicos desde 1997 

Postado

Criativo...

 

esse

local campainha = {1473, 1475}

não serve pra nada, pois você não usa...

 

 

Faria sentido colocar isso caso a <TAG/> do XML, fosse uma action e dentro do script, embaixo do callback, estivesse algo como:

if not isInArray(campainha, item.itemid) then
 return true
end

Assim, os IDs, que tivessem ActionID (aid), porém, não tivessem dentro da tabela, campainha, não iriam ser incluídas no script.

 

 

 

Sobre o callback:

 

VWqnTur.png

 

 

Essas são as informações, que você dispõe do usuário do script, do item usado e do item alvo...

infos40x40.png

fromPosition = posição do itemEx

toPos = posição do item

cid = ID da criatura que usou

item = item usado

itemEx = alvo do item


Sobre o storage também, ele não funciona.

 

tente usar assim:

  if getPlayerStorageValue(cid, 23000) - os.time() <= 0 then
       setPlayerStorageValue(cid, 23000, os.time() + time)
    else
        return doPlayerSendCancel(cid, "Campaínha já foi tocada, espere:  " ..getPlayerStorageValue(cid, 23000) - os.time()) and true
    end

Não exagere no espaço também, 

eu vi como tava antes da edição, e tava cheio de espaços, tente usar 1 só linha, ou só quando for muito necessário para a organização.


<action itemid="1473;1475" script="campainha.lua"/>
 

 

sobre essa <TAG/>

ela é de TFS 1.+ e você fez um script 0.4-

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

Postado
  • Autor

@Caronte

 

local campainha, falta de atenção minha que esqueci da tag no actions.xml uaehuah

e como não sei quase nada de script, pensei que se eu adicionasse um item, teria que colocar na funcion como fiz com o "campainha"

corrigido manin, grato!

 

 

Criei um sistema de redbull aqui que alimenta(igual food, peguei o script de lá) e incrementei para aumentar a velocidade do player em X por Y segundos com addEvent e doChangeSpeed e vou postar para avaliação, da uma olhada quando ele for aprovado pfvr (:

Editado por biel.stocco (veja o histórico de edições)

Postado

Ok, avaliarei e darei sugestões, espero que ajude.

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

Postado

tem que usar essas functions para storage

getCreatureStorage(de quem vai verificar, e numero) -- para verificar
doCreatureSetStorage(de quem vai verificar, e numero, alteração) -- para alterar

e na storage

pode coloca numero ou string  e tem um limite de caracteres para poder ser armazenado na database

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo