Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Galera tenho esse npc que peguei de um outro tópico.


price_21 = 1000 -- 1k ou 1000gold

price_jogo6 = 5000


local keywordHandler = KeywordHandler:new()

local npcHandler = NpcHandler:new(keywordHandler)

NpcSystem.parseParameters(npcHandler)

local talkState = {}                                                                                               


function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end

function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end

function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end

function onThink() npcHandler:onThink() end


function creatureSayCallback(cid, type, msg)

if(not npcHandler:isFocused(cid)) then

return false

end


local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid


if(msgcontains(msg, 'apostar')) then

selfSay('Eu faco 2 jogos: {21}, e jogo do {6}, escolha um deles!', cid)

talkState[talkUser] = 5

elseif (msgcontains(msg, '6') and talkState[talkUser] == 5)    then

selfSay('O Jogo do 6 funciona assim: Eu vou rodar um dado, e se cair no numero 6 voce ganha o sextuplo (6 vezes) do valor apostado.', cid)

selfSay('Caso nao caia no 6, voce perde apenas o dinheiro da aposta.', cid)

selfSay('Esta pronto para {comecar}?.', cid)

talkState[talkUser] = 3

elseif(msgcontains(msg, 'comecar') and talkState[talkUser] == 3) then

selfSay('Voce possui o {dinheiro} da aposta ('..price_jogo6..')golds ?', cid)

if doPlayerRemoveMoney(cid, price_jogo6) == TRUE then

talkState[talkUser] = 2

else

selfSay('Desculpe, mais voce nao tem dinheiro para apostar comigo.',cid)

end

elseif(msgcontains(msg, 'dinheiro') and talkState[talkUser] == 2) then

sorteio6 = math.random(1,6)

if sorteio6 == 6 then

talkState[talkUser] = 3

selfSay('Parabens, o numero sorteado foi 6 e voce acaba de ganhar '..(price_jogo6*6) ..'golds, mais o dinheiro que voce pagou da aposta.',cid)

doPlayerAddMoney(cid,price_jogo6*6) 

else

talkState[talkUser] = 2

selfSay('Que azar, o numero sorteado foi '..sorteio6..', mais sorte na proxima.',cid)

end

elseif(msgcontains(msg, '21') and talkState[talkUser] == 5) then

selfSay('O 21 funciona assim: Voce ira ganhar 1 numero e o numero tem quer ser 21, ou chegar o mais proximo possivel sem ultrapassar esse valor.', cid)

selfSay('E a mesma coisa sera feita comigo, ganharei 1 numero.', cid)

selfSay('Voce pode ir comprando mais numeros dizendo {comprar} e se quiser parar e so dizer {parar}.', cid)

selfSay('Se voce ganhar de mim, voce leva o triplo do dinheiro apostado.', cid)

selfSay('Esta pronto para {comecar}?.', cid)

talkState[talkUser] = 0

elseif(msgcontains(msg, 'comecar') and talkState[talkUser] == 0) then

selfSay('Voce possui o {dinheiro} da aposta ('..price_21..')golds ?', cid)

talkState[talkUser] = 1

elseif(msgcontains(msg, 'dinheiro') and talkState[talkUser] == 1) then

if doPlayerRemoveMoney(cid, price_21) == TRUE then

talkState[talkUser] = 0

local mpn = math.random(1,21) 

setPlayerStorageValue(cid, 55411,mpn)  

local pn = getPlayerStorageValue(cid, 55411)        

selfSay('Seu numero e '..pn..', quer comprar mais ou parar?',cid)

else

selfSay('Desculpe, mais voce nao tem dinheiro para apostar comigo.',cid)

end

elseif(msgcontains(msg, 'comprar') and talkState[talkUser] == 0) then

local cp = math.random(1,10)

setPlayerStorageValue(cid, 55411, (getPlayerStorageValue(cid, 55411))+cp)

selfSay('Seu numero e '..getPlayerStorageValue(cid, 55411)..', quer comprar mais ou parar?',cid)

talkState[talkUser] = 0  

elseif(msgcontains(msg, 'parar') and talkState[talkUser] == 0) then

local npcn = math.random(15,21)

setPlayerStorageValue(cid, 2224, npcn)

if getPlayerStorageValue(cid, 55411) < getPlayerStorageValue(cid, 2224)then

selfSay('Meu numero e '..getPlayerStorageValue(cid, 2224)..'.',cid)       

selfSay('Seu numero final e '..getPlayerStorageValue(cid, 55411)..'.',cid)  

selfSay('Ganhei, mais sorte na proxima vez.',cid)   

talkState[talkUser] = 1

elseif getPlayerStorageValue(cid, 55411) == getPlayerStorageValue(cid, 2224) then

selfSay('Meu numero e '..getPlayerStorageValue(cid, 2224)..'.',cid)       

selfSay('Seu numero final e '..getPlayerStorageValue(cid, 55411)..'.',cid)  

selfSay('Empato, portanto ninguem ganha nada.',cid) 

talkState[talkUser] = 1

elseif  getPlayerStorageValue(cid, 55411) > getPlayerStorageValue(cid, 2224)  then

selfSay('Meu numero e '..getPlayerStorageValue(cid, 2224)..'.',cid)       

selfSay('Seu numero final e '..getPlayerStorageValue(cid, 55411)..'.',cid)  

local somag = (price_21*3)

selfSay('Voce ganhou '..somag..'golds, mais os seus '..price_21..'golds de volta. Parabens !!!',cid)   

doPlayerAddMoney(cid, somag)

doPlayerAddMoney(cid, price_21)

talkState[talkUser] = 1

else

selfSay('Desculpe, mais voce nao possui dinheiro esta aposta',cid)

end                       

end

return true

end


npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

Na parte do jogo 21, se eu fizer 30, 40, 40...pontos eu ganho, o certo se eu fizer isso eu perco, e se eu fizer 21 ou menos q o npc eu ganhar, alguem me ajuda pelo mor de gzuis?

Link para o post
Compartilhar em outros sites

caraca, ta foda, ngm ajuda nesse forum...não é atoa que caiu a qualidade de suporte e ajuda aqui.

Link para o post
Compartilhar em outros sites

@Luzetti

Spoiler

price_21 = 1000 -- 1k ou 1000gold

price_jogo6 = 5000


local keywordHandler = KeywordHandler:new()

local npcHandler = NpcHandler:new(keywordHandler)

NpcSystem.parseParameters(npcHandler)

local talkState = {}                                                                                               


function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end

function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end

function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end

function onThink() npcHandler:onThink() end


function creatureSayCallback(cid, type, msg)

if(not npcHandler:isFocused(cid)) then

return false

end


local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid


if(msgcontains(msg, 'apostar')) then

selfSay('Eu faco 2 jogos: {21}, e jogo do {6}, escolha um deles!', cid)

talkState[talkUser] = 5

elseif (msgcontains(msg, '6') and talkState[talkUser] == 5)    then

selfSay('O Jogo do 6 funciona assim: Eu vou rodar um dado, e se cair no numero 6 voce ganha o sextuplo (6 vezes) do valor apostado.', cid)

selfSay('Caso nao caia no 6, voce perde apenas o dinheiro da aposta.', cid)

selfSay('Esta pronto para {comecar}?.', cid)

talkState[talkUser] = 3

elseif(msgcontains(msg, 'comecar') and talkState[talkUser] == 3) then

selfSay('Voce possui o {dinheiro} da aposta ('..price_jogo6..')golds ?', cid)

if doPlayerRemoveMoney(cid, price_jogo6) == TRUE then

talkState[talkUser] = 2

else

selfSay('Desculpe, mais voce nao tem dinheiro para apostar comigo.',cid)

end

elseif(msgcontains(msg, 'dinheiro') and talkState[talkUser] == 2) then

sorteio6 = math.random(1,6)

if sorteio6 == 6 then

talkState[talkUser] = 3

selfSay('Parabens, o numero sorteado foi 6 e voce acaba de ganhar '..(price_jogo6*6) ..'golds, mais o dinheiro que voce pagou da aposta.',cid)

doPlayerAddMoney(cid,price_jogo6*6) 

else

talkState[talkUser] = 2

selfSay('Que azar, o numero sorteado foi '..sorteio6..', mais sorte na proxima.',cid)

end

elseif(msgcontains(msg, '21') and talkState[talkUser] == 5) then

selfSay('O 21 funciona assim: Voce ira ganhar 1 numero e o numero tem quer ser 21, ou chegar o mais proximo possivel sem ultrapassar esse valor.', cid)

selfSay('E a mesma coisa sera feita comigo, ganharei 1 numero.', cid)

selfSay('Voce pode ir comprando mais numeros dizendo {comprar} e se quiser parar e so dizer {parar}.', cid)

selfSay('Se voce ganhar de mim, voce leva o triplo do dinheiro apostado.', cid)

selfSay('Esta pronto para {comecar}?.', cid)

talkState[talkUser] = 0

elseif(msgcontains(msg, 'comecar') and talkState[talkUser] == 0) then

selfSay('Voce possui o {dinheiro} da aposta ('..price_21..')golds ?', cid)

talkState[talkUser] = 1

elseif(msgcontains(msg, 'dinheiro') and talkState[talkUser] == 1) then

if doPlayerRemoveMoney(cid, price_21) == TRUE then

talkState[talkUser] = 0

local mpn = math.random(1,21) 

setPlayerStorageValue(cid, 55411,mpn)  

local pn = getPlayerStorageValue(cid, 55411)        

selfSay('Seu numero e '..pn..', quer comprar mais ou parar?',cid)

else

selfSay('Desculpe, mais voce nao tem dinheiro para apostar comigo.',cid)

end

elseif(msgcontains(msg, 'comprar') and talkState[talkUser] == 0) then

local cp = math.random(1,10)

setPlayerStorageValue(cid, 55411, (getPlayerStorageValue(cid, 55411))+cp)

selfSay('Seu numero e '..getPlayerStorageValue(cid, 55411)..', quer comprar mais ou parar?',cid)

talkState[talkUser] = 0  

elseif(msgcontains(msg, 'parar') and talkState[talkUser] == 0) then

local npcn = math.random(15,21)

setPlayerStorageValue(cid, 2224, npcn)

if getPlayerStorageValue(cid, 55411) < getPlayerStorageValue(cid, 2224) then

selfSay('Meu numero e '..getPlayerStorageValue(cid, 2224)..'.',cid)       

selfSay('Seu numero final e '..getPlayerStorageValue(cid, 55411)..'.',cid)  

selfSay('Ganhei, mais sorte na proxima vez.',cid)   

talkState[talkUser] = 1

elseif getPlayerStorageValue(cid, 55411) == getPlayerStorageValue(cid, 2224) then

selfSay('Meu numero e '..getPlayerStorageValue(cid, 2224)..'.',cid)       

selfSay('Seu numero final e '..getPlayerStorageValue(cid, 55411)..'.',cid)  

selfSay('Empato, portanto ninguem ganha nada.',cid) 

talkState[talkUser] = 1

elseif  getPlayerStorageValue(cid, 55411) > getPlayerStorageValue(cid, 2224) and getPlayerStorageValue(cid, 55411) <= 21 then

selfSay('Meu numero e '..getPlayerStorageValue(cid, 2224)..'.',cid)       

selfSay('Seu numero final e '..getPlayerStorageValue(cid, 55411)..'.',cid)  

local somag = (price_21*3)

selfSay('Voce ganhou '..somag..'golds, mais os seus '..price_21..'golds de volta. Parabens !!!',cid)   

doPlayerAddMoney(cid, somag)

doPlayerAddMoney(cid, price_21)

talkState[talkUser] = 1

else

selfSay('Desculpe, mais voce nao possui dinheiro esta aposta',cid)

end                       

end

return true

end


npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
2 horas atrás, KotZletY disse:

@Luzetti

  Ocultar conteúdo


price_21 = 1000 -- 1k ou 1000gold

price_jogo6 = 5000


local keywordHandler = KeywordHandler:new()

local npcHandler = NpcHandler:new(keywordHandler)

NpcSystem.parseParameters(npcHandler)

local talkState = {}                                                                                               


function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end

function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end

function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end

function onThink() npcHandler:onThink() end


function creatureSayCallback(cid, type, msg)

if(not npcHandler:isFocused(cid)) then

return false

end


local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid


if(msgcontains(msg, 'apostar')) then

selfSay('Eu faco 2 jogos: {21}, e jogo do {6}, escolha um deles!', cid)

talkState[talkUser] = 5

elseif (msgcontains(msg, '6') and talkState[talkUser] == 5)    then

selfSay('O Jogo do 6 funciona assim: Eu vou rodar um dado, e se cair no numero 6 voce ganha o sextuplo (6 vezes) do valor apostado.', cid)

selfSay('Caso nao caia no 6, voce perde apenas o dinheiro da aposta.', cid)

selfSay('Esta pronto para {comecar}?.', cid)

talkState[talkUser] = 3

elseif(msgcontains(msg, 'comecar') and talkState[talkUser] == 3) then

selfSay('Voce possui o {dinheiro} da aposta ('..price_jogo6..')golds ?', cid)

if doPlayerRemoveMoney(cid, price_jogo6) == TRUE then

talkState[talkUser] = 2

else

selfSay('Desculpe, mais voce nao tem dinheiro para apostar comigo.',cid)

end

elseif(msgcontains(msg, 'dinheiro') and talkState[talkUser] == 2) then

sorteio6 = math.random(1,6)

if sorteio6 == 6 then

talkState[talkUser] = 3

selfSay('Parabens, o numero sorteado foi 6 e voce acaba de ganhar '..(price_jogo6*6) ..'golds, mais o dinheiro que voce pagou da aposta.',cid)

doPlayerAddMoney(cid,price_jogo6*6) 

else

talkState[talkUser] = 2

selfSay('Que azar, o numero sorteado foi '..sorteio6..', mais sorte na proxima.',cid)

end

elseif(msgcontains(msg, '21') and talkState[talkUser] == 5) then

selfSay('O 21 funciona assim: Voce ira ganhar 1 numero e o numero tem quer ser 21, ou chegar o mais proximo possivel sem ultrapassar esse valor.', cid)

selfSay('E a mesma coisa sera feita comigo, ganharei 1 numero.', cid)

selfSay('Voce pode ir comprando mais numeros dizendo {comprar} e se quiser parar e so dizer {parar}.', cid)

selfSay('Se voce ganhar de mim, voce leva o triplo do dinheiro apostado.', cid)

selfSay('Esta pronto para {comecar}?.', cid)

talkState[talkUser] = 0

elseif(msgcontains(msg, 'comecar') and talkState[talkUser] == 0) then

selfSay('Voce possui o {dinheiro} da aposta ('..price_21..')golds ?', cid)

talkState[talkUser] = 1

elseif(msgcontains(msg, 'dinheiro') and talkState[talkUser] == 1) then

if doPlayerRemoveMoney(cid, price_21) == TRUE then

talkState[talkUser] = 0

local mpn = math.random(1,21) 

setPlayerStorageValue(cid, 55411,mpn)  

local pn = getPlayerStorageValue(cid, 55411)        

selfSay('Seu numero e '..pn..', quer comprar mais ou parar?',cid)

else

selfSay('Desculpe, mais voce nao tem dinheiro para apostar comigo.',cid)

end

elseif(msgcontains(msg, 'comprar') and talkState[talkUser] == 0) then

local cp = math.random(1,10)

setPlayerStorageValue(cid, 55411, (getPlayerStorageValue(cid, 55411))+cp)

selfSay('Seu numero e '..getPlayerStorageValue(cid, 55411)..', quer comprar mais ou parar?',cid)

talkState[talkUser] = 0  

elseif(msgcontains(msg, 'parar') and talkState[talkUser] == 0) then

local npcn = math.random(15,21)

setPlayerStorageValue(cid, 2224, npcn)

if getPlayerStorageValue(cid, 55411) < getPlayerStorageValue(cid, 2224) then

selfSay('Meu numero e '..getPlayerStorageValue(cid, 2224)..'.',cid)       

selfSay('Seu numero final e '..getPlayerStorageValue(cid, 55411)..'.',cid)  

selfSay('Ganhei, mais sorte na proxima vez.',cid)   

talkState[talkUser] = 1

elseif getPlayerStorageValue(cid, 55411) == getPlayerStorageValue(cid, 2224) then

selfSay('Meu numero e '..getPlayerStorageValue(cid, 2224)..'.',cid)       

selfSay('Seu numero final e '..getPlayerStorageValue(cid, 55411)..'.',cid)  

selfSay('Empato, portanto ninguem ganha nada.',cid) 

talkState[talkUser] = 1

elseif  getPlayerStorageValue(cid, 55411) > getPlayerStorageValue(cid, 2224) and getPlayerStorageValue(cid, 55411) <= 21 then

selfSay('Meu numero e '..getPlayerStorageValue(cid, 2224)..'.',cid)       

selfSay('Seu numero final e '..getPlayerStorageValue(cid, 55411)..'.',cid)  

local somag = (price_21*3)

selfSay('Voce ganhou '..somag..'golds, mais os seus '..price_21..'golds de volta. Parabens !!!',cid)   

doPlayerAddMoney(cid, somag)

doPlayerAddMoney(cid, price_21)

talkState[talkUser] = 1

else

selfSay('Desculpe, mais voce nao possui dinheiro esta aposta',cid)

end                       

end

return true

end


npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

 

obg por tentar ajudar, porem ele mostra meu numero final, tipo eu tiro 11, ai compro mais 1 e sai 12.

como na foto abaixo, seria possivel fazer a soma de tudo?

 

 

asdddd.png

 

ele ta dando o resultado da aposta baseado no 2 numero.

 

No caso o jogo 21 se joga assim:

 

eu e vc:

vc compra 1 carta somando 21 vc ganha

eu compro 1 ou mais cartas passando de 21 perco,

 

queria que mostrasse a soma dos numeros tanto meu quanto dele e desse o resultado.

Editado por Luzetti (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

O NPC é só uma, vez, o npc tem mais chance, veja bem nessa parte do código:

elseif(msgcontains(msg, 'dinheiro') and talkState[talkUser] == 1) then
if doPlayerRemoveMoney(cid, price_21) == TRUE then
talkState[talkUser] = 0
local mpn = math.random(1,21) 
setPlayerStorageValue(cid, 55411, mpn)  
local pn = getPlayerStorageValue(cid, 55411)        
selfSay('Seu numero e '..pn..', quer comprar mais ou parar?',cid)
else
selfSay('Desculpe, mais voce nao tem dinheiro para apostar comigo.',cid)
end

Ao falar "dinheiro" pro npc, você irá ganhar um numero, vamos supor que você ganhe 5, ae ele pergunta se você quer continuar com esse numero ou tentar mais uma vez, dessa vez somando o 5 já ganhado + o próximo valor,  se você falar parar, o npc vai gerá um numero para ele entre 15 e 21, tendo então muito mais vantagem, como mostra a parte do script a seguir:

elseif(msgcontains(msg, 'parar') and talkState[talkUser] == 0) then
local npcn = math.random(15,21)
setPlayerStorageValue(cid, 2224, npcn)
if getPlayerStorageValue(cid, 55411) < getPlayerStorageValue(cid, 2224) then
selfSay('Meu numero e '..getPlayerStorageValue(cid, 2224)..'.',cid)       
selfSay('Seu numero final e '..getPlayerStorageValue(cid, 55411)..'.',cid)  
selfSay('Ganhei, mais sorte na proxima vez.',cid)  

mais precisamente nessa parte: local npcn = math.random(15,21) ele fará um random entre 15 e 21 para ser o valor do NPC, então o NPC tem mais chance:

 

 

caso você compre:

elseif(msgcontains(msg, 'comprar') and talkState[talkUser] == 0) then
local cp = math.random(1,10)
setPlayerStorageValue(cid, 55411, (getPlayerStorageValue(cid, 55411))+cp)
selfSay('Seu numero e '..getPlayerStorageValue(cid, 55411)..', quer comprar mais ou parar?',cid)
talkState[talkUser] = 0  

 

Ele vai pegar um numero aleatório entre 1 e 10, e depois vai somar com o 5(da suposição) que você já tem, vamos supor que você tire 10, no total será 15, então você irá, perder, a menos que de 15 a 21 ele ganhe 15 e saia um empate, hahahaha.

 

Em fim, na alteração de cima que eu fiz, está tudo 100, então se você tirar mais que o NPC e menos que 21 você ganha, se não, você perde.

 

O certo seria você diminuir o valor do NPC e colocar para ele tirar de 1 a 21, em vez de 15 a 21 dando uma vantagem do karalho para ele, me perdoe o palavrão, mas é uma injustica do capeta Kkkkkkk.

 

 

Em fim cara... Ta explicado o que você precisa saber sobre seu script.

Agora você decide o que você quer agora!

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
53 minutos atrás, KotZletY disse:

O NPC é só uma, vez, o npc tem mais chance, veja bem nessa parte do código:


elseif(msgcontains(msg, 'dinheiro') and talkState[talkUser] == 1) then
if doPlayerRemoveMoney(cid, price_21) == TRUE then
talkState[talkUser] = 0
local mpn = math.random(1,21) 
setPlayerStorageValue(cid, 55411, mpn)  
local pn = getPlayerStorageValue(cid, 55411)        
selfSay('Seu numero e '..pn..', quer comprar mais ou parar?',cid)
else
selfSay('Desculpe, mais voce nao tem dinheiro para apostar comigo.',cid)
end

Ao falar "dinheiro" pro npc, você irá ganhar um numero, vamos supor que você ganhe 5, ae ele pergunta se você quer continuar com esse numero ou tentar mais uma vez, dessa vez somando o 5 já ganhado + o próximo valor,  se você falar parar, o npc vai gerá um numero para ele entre 15 e 21, tendo então muito mais vantagem, como mostra a parte do script a seguir:


elseif(msgcontains(msg, 'parar') and talkState[talkUser] == 0) then
local npcn = math.random(15,21)
setPlayerStorageValue(cid, 2224, npcn)
if getPlayerStorageValue(cid, 55411) < getPlayerStorageValue(cid, 2224) then
selfSay('Meu numero e '..getPlayerStorageValue(cid, 2224)..'.',cid)       
selfSay('Seu numero final e '..getPlayerStorageValue(cid, 55411)..'.',cid)  
selfSay('Ganhei, mais sorte na proxima vez.',cid)  

mais precisamente nessa parte: local npcn = math.random(15,21) ele fará um random entre 15 e 21 para ser o valor do NPC, então o NPC tem mais chance:

 

 

caso você compre:


elseif(msgcontains(msg, 'comprar') and talkState[talkUser] == 0) then
local cp = math.random(1,10)
setPlayerStorageValue(cid, 55411, (getPlayerStorageValue(cid, 55411))+cp)
selfSay('Seu numero e '..getPlayerStorageValue(cid, 55411)..', quer comprar mais ou parar?',cid)
talkState[talkUser] = 0  

 

Ele vai pegar um numero aleatório entre 1 e 10, e depois vai somar com o 5(da suposição) que você já tem, vamos supor que você tire 10, no total será 15, então você irá, perder, a menos que de 15 a 21 ele ganhe 15 e saia um empate, hahahaha.

 

Em fim, na alteração de cima que eu fiz, está tudo 100, então se você tirar mais que o NPC e menos que 21 você ganha, se não, você perde.

 

O certo seria você diminuir o valor do NPC e colocar para ele tirar de 1 a 21, em vez de 15 a 21 dando uma vantagem do karalho para ele, me perdoe o palavrão, mas é uma injustica do capeta Kkkkkkk.

 

 

Em fim cara... Ta explicado o que você precisa saber sobre seu script.

Agora você decide o que você quer agora!

vc pode fazer isso para mim?

Link para o post
Compartilhar em outros sites

local npcn = math.random(15,21)

 

mude essa linha para:

 

local npcn = math.random(1,21)

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
4 minutos atrás, KotZletY disse:

local npcn = math.random(15,21)

 

mude essa linha para:

 

local npcn = math.random(1,21)

cara, sempre que eu compro numero blza vai, ai quero parar ele fala isso.

 

18:24 Brian O'Conner: Desculpe, mais voce nao possui dinheiro esta aposta

 

sendo que ja apostei, comprei 3 numero, ai falo parar ele fala isso ai.

Link para o post
Compartilhar em outros sites

@Luzetti 

Spoiler

price_21 = 1000 -- 1k ou 1000gold

price_jogo6 = 5000


local keywordHandler = KeywordHandler:new()

local npcHandler = NpcHandler:new(keywordHandler)

NpcSystem.parseParameters(npcHandler)

local talkState = {}                                                                                               


function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end

function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end

function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end

function onThink() npcHandler:onThink() end


function creatureSayCallback(cid, type, msg)

if(not npcHandler:isFocused(cid)) then

return false

end


local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid


if(msgcontains(msg, 'apostar')) then

selfSay('Eu faco 2 jogos: {21}, e jogo do {6}, escolha um deles!', cid)

talkState[talkUser] = 5

elseif (msgcontains(msg, '6') and talkState[talkUser] == 5)    then

selfSay('O Jogo do 6 funciona assim: Eu vou rodar um dado, e se cair no numero 6 voce ganha o sextuplo (6 vezes) do valor apostado.', cid)

selfSay('Caso nao caia no 6, voce perde apenas o dinheiro da aposta.', cid)

selfSay('Esta pronto para {comecar}?.', cid)

talkState[talkUser] = 3

elseif(msgcontains(msg, 'comecar') and talkState[talkUser] == 3) then

selfSay('Voce possui o {dinheiro} da aposta ('..price_jogo6..')golds ?', cid)

if doPlayerRemoveMoney(cid, price_jogo6) == TRUE then

talkState[talkUser] = 2

else

selfSay('Desculpe, mais voce nao tem dinheiro para apostar comigo.',cid)

end

elseif(msgcontains(msg, 'dinheiro') and talkState[talkUser] == 2) then

sorteio6 = math.random(1,6)

if sorteio6 == 6 then

talkState[talkUser] = 3

selfSay('Parabens, o numero sorteado foi 6 e voce acaba de ganhar '..(price_jogo6*6) ..'golds, mais o dinheiro que voce pagou da aposta.',cid)

doPlayerAddMoney(cid,price_jogo6*6) 

else

talkState[talkUser] = 2

selfSay('Que azar, o numero sorteado foi '..sorteio6..', mais sorte na proxima.',cid)

end

elseif(msgcontains(msg, '21') and talkState[talkUser] == 5) then

selfSay('O 21 funciona assim: Voce ira ganhar 1 numero e o numero tem quer ser 21, ou chegar o mais proximo possivel sem ultrapassar esse valor.', cid)

selfSay('E a mesma coisa sera feita comigo, ganharei 1 numero.', cid)

selfSay('Voce pode ir comprando mais numeros dizendo {comprar} e se quiser parar e so dizer {parar}.', cid)

selfSay('Se voce ganhar de mim, voce leva o triplo do dinheiro apostado.', cid)

selfSay('Esta pronto para {comecar}?.', cid)

talkState[talkUser] = 0

elseif(msgcontains(msg, 'comecar') and talkState[talkUser] == 0) then

selfSay('Voce possui o {dinheiro} da aposta ('..price_21..')golds ?', cid)

talkState[talkUser] = 1

elseif(msgcontains(msg, 'dinheiro') and talkState[talkUser] == 1) then

if doPlayerRemoveMoney(cid, price_21) == TRUE then

talkState[talkUser] = 0

local mpn = math.random(1,21) 

setPlayerStorageValue(cid, 55411,mpn)  

local pn = getPlayerStorageValue(cid, 55411)        

selfSay('Seu numero e '..pn..', quer comprar mais ou parar?',cid)

else

selfSay('Desculpe, mais voce nao tem dinheiro para apostar comigo.',cid)

end

elseif(msgcontains(msg, 'comprar') and talkState[talkUser] == 0) then

local cp = math.random(1,10)

setPlayerStorageValue(cid, 55411, (getPlayerStorageValue(cid, 55411))+cp)

selfSay('Seu numero e '..getPlayerStorageValue(cid, 55411)..', quer comprar mais ou parar?',cid)

talkState[talkUser] = 0  

elseif(msgcontains(msg, 'parar') and talkState[talkUser] == 0) then

local npcn = math.random(1,21)

setPlayerStorageValue(cid, 2224, npcn)

if getPlayerStorageValue(cid, 55411) < getPlayerStorageValue(cid, 2224) then

selfSay('Meu numero e '..getPlayerStorageValue(cid, 2224)..'.',cid)       

selfSay('Seu numero final e '..getPlayerStorageValue(cid, 55411)..'.',cid)  

selfSay('Ganhei, mais sorte na proxima vez.',cid)   

talkState[talkUser] = 1

elseif getPlayerStorageValue(cid, 55411) == getPlayerStorageValue(cid, 2224) then

selfSay('Meu numero e '..getPlayerStorageValue(cid, 2224)..'.',cid)       

selfSay('Seu numero final e '..getPlayerStorageValue(cid, 55411)..'.',cid)  

selfSay('Empato, portanto ninguem ganha nada.',cid) 

talkState[talkUser] = 1

elseif  getPlayerStorageValue(cid, 55411) > getPlayerStorageValue(cid, 2224) and getPlayerStorageValue(cid, 55411) <= 21 then

selfSay('Meu numero e '..getPlayerStorageValue(cid, 2224)..'.',cid)       

selfSay('Seu numero final e '..getPlayerStorageValue(cid, 55411)..'.',cid)  

local somag = (price_21*3)

selfSay('Voce ganhou '..somag..'golds, mais os seus '..price_21..'golds de volta. Parabens !!!',cid)   

doPlayerAddMoney(cid, somag)

doPlayerAddMoney(cid, price_21)

talkState[talkUser] = 1

else

selfSay('Você tirou um numero maior que 21, então você perdeu.',cid)

end                       

end

return true

end


npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
35 minutos atrás, KotZletY disse:

@Luzetti 

  Ocultar conteúdo


price_21 = 1000 -- 1k ou 1000gold

price_jogo6 = 5000


local keywordHandler = KeywordHandler:new()

local npcHandler = NpcHandler:new(keywordHandler)

NpcSystem.parseParameters(npcHandler)

local talkState = {}                                                                                               


function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end

function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end

function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end

function onThink() npcHandler:onThink() end


function creatureSayCallback(cid, type, msg)

if(not npcHandler:isFocused(cid)) then

return false

end


local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid


if(msgcontains(msg, 'apostar')) then

selfSay('Eu faco 2 jogos: {21}, e jogo do {6}, escolha um deles!', cid)

talkState[talkUser] = 5

elseif (msgcontains(msg, '6') and talkState[talkUser] == 5)    then

selfSay('O Jogo do 6 funciona assim: Eu vou rodar um dado, e se cair no numero 6 voce ganha o sextuplo (6 vezes) do valor apostado.', cid)

selfSay('Caso nao caia no 6, voce perde apenas o dinheiro da aposta.', cid)

selfSay('Esta pronto para {comecar}?.', cid)

talkState[talkUser] = 3

elseif(msgcontains(msg, 'comecar') and talkState[talkUser] == 3) then

selfSay('Voce possui o {dinheiro} da aposta ('..price_jogo6..')golds ?', cid)

if doPlayerRemoveMoney(cid, price_jogo6) == TRUE then

talkState[talkUser] = 2

else

selfSay('Desculpe, mais voce nao tem dinheiro para apostar comigo.',cid)

end

elseif(msgcontains(msg, 'dinheiro') and talkState[talkUser] == 2) then

sorteio6 = math.random(1,6)

if sorteio6 == 6 then

talkState[talkUser] = 3

selfSay('Parabens, o numero sorteado foi 6 e voce acaba de ganhar '..(price_jogo6*6) ..'golds, mais o dinheiro que voce pagou da aposta.',cid)

doPlayerAddMoney(cid,price_jogo6*6) 

else

talkState[talkUser] = 2

selfSay('Que azar, o numero sorteado foi '..sorteio6..', mais sorte na proxima.',cid)

end

elseif(msgcontains(msg, '21') and talkState[talkUser] == 5) then

selfSay('O 21 funciona assim: Voce ira ganhar 1 numero e o numero tem quer ser 21, ou chegar o mais proximo possivel sem ultrapassar esse valor.', cid)

selfSay('E a mesma coisa sera feita comigo, ganharei 1 numero.', cid)

selfSay('Voce pode ir comprando mais numeros dizendo {comprar} e se quiser parar e so dizer {parar}.', cid)

selfSay('Se voce ganhar de mim, voce leva o triplo do dinheiro apostado.', cid)

selfSay('Esta pronto para {comecar}?.', cid)

talkState[talkUser] = 0

elseif(msgcontains(msg, 'comecar') and talkState[talkUser] == 0) then

selfSay('Voce possui o {dinheiro} da aposta ('..price_21..')golds ?', cid)

talkState[talkUser] = 1

elseif(msgcontains(msg, 'dinheiro') and talkState[talkUser] == 1) then

if doPlayerRemoveMoney(cid, price_21) == TRUE then

talkState[talkUser] = 0

local mpn = math.random(1,21) 

setPlayerStorageValue(cid, 55411,mpn)  

local pn = getPlayerStorageValue(cid, 55411)        

selfSay('Seu numero e '..pn..', quer comprar mais ou parar?',cid)

else

selfSay('Desculpe, mais voce nao tem dinheiro para apostar comigo.',cid)

end

elseif(msgcontains(msg, 'comprar') and talkState[talkUser] == 0) then

local cp = math.random(1,10)

setPlayerStorageValue(cid, 55411, (getPlayerStorageValue(cid, 55411))+cp)

selfSay('Seu numero e '..getPlayerStorageValue(cid, 55411)..', quer comprar mais ou parar?',cid)

talkState[talkUser] = 0  

elseif(msgcontains(msg, 'parar') and talkState[talkUser] == 0) then

local npcn = math.random(1,21)

setPlayerStorageValue(cid, 2224, npcn)

if getPlayerStorageValue(cid, 55411) < getPlayerStorageValue(cid, 2224) then

selfSay('Meu numero e '..getPlayerStorageValue(cid, 2224)..'.',cid)       

selfSay('Seu numero final e '..getPlayerStorageValue(cid, 55411)..'.',cid)  

selfSay('Ganhei, mais sorte na proxima vez.',cid)   

talkState[talkUser] = 1

elseif getPlayerStorageValue(cid, 55411) == getPlayerStorageValue(cid, 2224) then

selfSay('Meu numero e '..getPlayerStorageValue(cid, 2224)..'.',cid)       

selfSay('Seu numero final e '..getPlayerStorageValue(cid, 55411)..'.',cid)  

selfSay('Empato, portanto ninguem ganha nada.',cid) 

talkState[talkUser] = 1

elseif  getPlayerStorageValue(cid, 55411) > getPlayerStorageValue(cid, 2224) and getPlayerStorageValue(cid, 55411) <= 21 then

selfSay('Meu numero e '..getPlayerStorageValue(cid, 2224)..'.',cid)       

selfSay('Seu numero final e '..getPlayerStorageValue(cid, 55411)..'.',cid)  

local somag = (price_21*3)

selfSay('Voce ganhou '..somag..'golds, mais os seus '..price_21..'golds de volta. Parabens !!!',cid)   

doPlayerAddMoney(cid, somag)

doPlayerAddMoney(cid, price_21)

talkState[talkUser] = 1

else

selfSay('Você tirou um numero maior que 21, então você perdeu.',cid)

end                       

end

return true

end


npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

 

amigo parece que deu certo aqui, agora vc poderia me ajudar em uma outra coisa?

 

tenho esse outro script 

function isWalkable(pos, creature, proj, pz)-- by Nord
    if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
    if getTopCreature(pos).uid > 0 and creature then return false end
    if getTileInfo(pos).protection and pz then return false, true end
    local n = not proj and 3 or 2
    for i = 0, 255 do
        pos.stackpos = i
        local tile = getTileThingByPos(pos)
        if tile.itemid ~= 0 and not isCreature(tile.uid) then
            if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
                return false
            end
        end
    end
    return true
end
function doCreateFerumbras(amount)
    local vetor = 0
    local Area = {{x=7649,y=16379,z=5},{x=7735,y=16443,z=7}}
    repeat
        local pos = {x=math.random(Area[1].x, Area[2].x), y=math.random(Area[1].y,Area[2].y), z=math.random(Area[1].z,Area[2].z)}
        if isWalkable(pos, false, false, false) then
            doSummonCreature("Ferumbras", pos) 
            vetor = vetor + 1    
        end
    until vetor == amount
end
function onSay(cid, words, param, channel)
    local avisoproibido = "Desculpe isso não é possível."
    local horario = "Apenas uma vez por dia os deuses podem ser liberados."
    if getTileHouseInfo(getThingPos(cid)) then
        return doPlayerSendCancel(cid,avisoproibido)
    end
    if getTilePzInfo(getThingPos(cid)) then
        return doPlayerSendCancel(cid,avisoproibido)
    end
    if getTileHouseInfo(getThingPos(cid)) then
        return doPlayerSendCancel(cid,horario)
    end
    local M = {
        Pos = {x=7691,y=16409,z=5}, 
        id= 1355, 
    time = 86400}
    local x = M
    function criar()
        local parede = getTileItemById(x.Pos, x.id)
        doCreateItem(x.id, 1, x.Pos)
    end
    local tempo = 1*24*60*60
    local storage = 94368
    if x then
        local parede = getTileItemById(x.Pos, x.id)
        if getTileInfo(getCreaturePosition(cid)).itemid == 3217 or 3216 then
            if (getPlayerStorageValue(cid, storage) <= os.time()) then
                if parede then
                    setPlayerStorageValue(cid, storage, os.time()+tempo)
                    doRemoveItem(parede.uid, 1)
                    --doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))--
                    doPlayerSendTextMessage(cid, 25, "A furia dos Deuses foi liberada tenha cuidado")
                    doCreateFerumbras(30)
                    addEvent(criar, x.time*1000)
                end
            else
                doPlayerSendCancel(cid, "A furia dos deuses só pode ser liberada a cada 24 horas.")
            end
        end
    end
    return true
end

 

oq ele faz?? ele fala uma palavra q pode ser dita apenas 1 vez por dia e sumona 30 ferumbras, oq eu queria é que: tivesse um local especifico para essa palavra ser dita, e após matar todos os ferumbras abrir um tp que leve para outro local. Pode me ajudar nisso tbm? dou rep hje e amanha pra vc.

Link para o post
Compartilhar em outros sites

@Luzetti preciso tirar uma duvida para que eu possa fazer o seu pedido, essa parte do script:  local Area = {{x=7649,y=16379,z=5},{x=7735,y=16443,z=7}}

é a área onde os monstros são invocados, mas essas área são 2x andares, então seria tipo um evento isso ? Seria uma área de quest ?

 

Irei fazer um onKill, a cada ferrumbra sla o que, morto, irá setá uma globalStorage(não irei setar no player se não irá ficar escroto, sabe porque, ahsuhas),

na contagem de 30 valores nessa storage, o último monstro morto irá abrir um portal que levará para outro local.

Irá contar qualquer pessoa que matar o monstro.  

 

Esse monstro é especifico dessa quest/evento ou sla oquê ? Se não for usarei a mesma área acima, pois se esse monstro dar respawn em outro canto, irá morrer e irá contar do mesmo jeito, então farei assim para ficar fixado nessa quest/evento sla oquê. Haush pode ser ?

 

Qual a versão da distro ? 0.3.6 ou 0.4 ?

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
32 minutos atrás, KotZletY disse:

@Luzetti preciso tirar uma duvida para que eu possa fazer o seu pedido, essa parte do script:  local Area = {{x=7649,y=16379,z=5},{x=7735,y=16443,z=7}}

é a área onde os monstros são invocados, mas essas área são 2x andares, então seria tipo um evento isso ? Seria uma área de quest ?

 

Irei fazer um onKill, a cada ferrumbra sla o que, morto, irá setá uma globalStorage(não irei setar no player se não irá ficar escroto, sabe porque, ahsuhas),

na contagem de 30 valores nessa storage, o último monstro morto irá abrir um portal que levará para outro local.

Irá contar qualquer pessoa que matar o monstro.  

 

Esse monstro é especifico dessa quest/evento ou sla oquê ? Se não for usarei a mesma área acima, pois se esse monstro dar respawn em outro canto, irá morrer e irá contar do mesmo jeito, então farei assim para ficar fixado nessa quest/evento sla oquê. Haush pode ser ?

 

Qual a versão da distro ? 0.3.6 ou 0.4 ?

entao é uma quest...essa area ai é o todo de onde vai se espalhar os ferumbras, ai queria que quando morto aparecesse um tp, quando acabar todos, uso tfs 1.0, e teria como o player fala a palavra estando na presença da statua? ai no script ta a posição dela, pq tipo, se eu to dp de thais eu falo a palavra ela é removida, por isso queria que desse pra fala somente quando tiver perto dela.

Link para o post
Compartilhar em outros sites

@Luzetti nova talkactions com o check de posição, que só poderá usar a talk na posição desejada:

Spoiler

function isWalkable(pos, creature, proj, pz)-- by Nord
    if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
    if getTopCreature(pos).uid > 0 and creature then return false end
    if getTileInfo(pos).protection and pz then return false, true end
    local n = not proj and 3 or 2
    for i = 0, 255 do
        pos.stackpos = i
        local tile = getTileThingByPos(pos)
        if tile.itemid ~= 0 and not isCreature(tile.uid) then
            if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
                return false
            end
        end
    end
    return true
end

function doCreateFerumbras(amount)
    local vetor = 0
    local Area = {{x=7649,y=16379,z=5},{x=7735,y=16443,z=7}}
    repeat
        local pos = {x=math.random(Area[1].x, Area[2].x), y=math.random(Area[1].y,Area[2].y), z=math.random(Area[1].z,Area[2].z)}
        if isWalkable(pos, false, false, false) then
            doSummonCreature("Ferumbras", pos) 
            vetor = vetor + 1    
        end
    until vetor == amount
end

function onSay(cid, words, param, channel)
local w ={	
	needPos = {x=1022, y=909, z=7}, -- pos que precisa está para usar o item
	myPos = getPlayerPosition(cid), 
    avisoproibido = "Desculpe isso não é possível.",
    horario = "Apenas uma vez por dia os deuses podem ser liberados.",
	tempo = 1*24*60*60,
    storage = 94368,
}



if getTileHouseInfo(getThingPos(cid)) then
        return doPlayerSendCancel(cid,w.avisoproibido)
end
   
if getTilePzInfo(getThingPos(cid)) then
        return doPlayerSendCancel(cid,w.avisoproibido)
end

if getTileHouseInfo(getThingPos(cid)) then
        return doPlayerSendCancel(cid,w.horario)
end
  
  local M = {
        Pos = {x=7691,y=16409,z=5}, 
        id= 1355, 
    time = 86400}
    local x = M
   
function criar()
        local parede = getTileItemById(x.Pos, x.id)
        doCreateItem(x.id, 1, x.Pos)
end
   
if w.myPos.x == w.needPos.x and w.myPos.y == w.needPos.y and w.myPos.z == w.needPos.z then	
    if x then
        local parede = getTileItemById(x.Pos, x.id)
        if getTileInfo(getCreaturePosition(cid)).itemid == 3217 or 3216 then
            if (getPlayerStorageValue(cid, w.storage) <= os.time()) then
                if parede then
                    setPlayerStorageValue(cid, w.storage, os.time()+w.tempo)
                    doRemoveItem(parede.uid, 1)
                    --doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))--
                    doPlayerSendTextMessage(cid, 25, "A furia dos Deuses foi liberada tenha cuidado")
                    doCreateFerumbras(30)
                    addEvent(criar, x.time*1000)
                end
            else
                doPlayerSendCancel(cid, "A furia dos deuses só pode ser liberada a cada 24 horas.")
            end
        end
    end
	else
    doPlayerSendCancel(cid, "Você precisa está na posição correta para usar o item que invoca os DEUSES.")
	end
    return true
end

 

 

 

vá em creaturescripts entre na pasta scripts e crie um arquivo chamado FerumbrasQuest.lua e cole dentro:

Spoiler

local frbs = {
-- Mesma área da talkactions que invoca os monstros
AreaFrom = {x=7649,y=16379,z=5}, -- Canto superior esquerdo da área
AreaTo = {x=7735,y=16443,z=7}, -- Canto inferior direito da área
monsterName = "Ferumbras", -- Nome do monstros
storage = 98392, -- Storage global da script
TpTo = {x=1019,y=928,z=7}, -- Para onde o teleporte vai levar
TpId = 11655, -- id do Teleporte
TpTime = 10 -- Tempo em segundos que o tp irá durá aberto
}

function onKill(cid, target)

	if target:isMonster() and target:getName():lower() == frbs.monsterName:lower() and Player(cid) then
		if isInRange(target:getPosition(), frbs.AreaFrom, frbs.AreaTo) then
			setGlobalStorageValue(frbs.storage, getGlobalStorageValue(frbs.storage)+1)
		end
		
		
	if getGlobalStorageValue(frbs.storage) >= 30 then -- 30 é a quantidade de monstro que precisa ser morto para abrir o Teleporte
		local TpActive = Game.createItem(frbs.TpId, 1, target:getPosition())
			if TpActive and TpActive:isTeleport() then
					TpActive:setDestination(frbs.TpTo)
						setGlobalStorageValue(frbs.storage, 0)
							Creature(target):say("O teleporte foi e vai sumir em ".. frbs.TpTime .." segundos.", TALKTYPE_MONSTER_SAY)
						addEvent(function() TpActive:remove() end, frbs.TpTime*1000)
					end
				end
			end
	return true
end

 

 

vá no login.lua e registre esse evento:

player:registerEvent("FerumbrasQuest")

 

<event type="kill" name="FerumbrasQuest" script="FerumbrasQuest.lua"/>

 

Testei aqui e está 1000% porque 100 é pouco. Kkkkk

xD

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
11 horas atrás, KotZletY disse:

@Luzetti nova talkactions com o check de posição, que só poderá usar a talk na posição desejada:

  Ocultar conteúdo


function isWalkable(pos, creature, proj, pz)-- by Nord
    if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
    if getTopCreature(pos).uid > 0 and creature then return false end
    if getTileInfo(pos).protection and pz then return false, true end
    local n = not proj and 3 or 2
    for i = 0, 255 do
        pos.stackpos = i
        local tile = getTileThingByPos(pos)
        if tile.itemid ~= 0 and not isCreature(tile.uid) then
            if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
                return false
            end
        end
    end
    return true
end

function doCreateFerumbras(amount)
    local vetor = 0
    local Area = {{x=7649,y=16379,z=5},{x=7735,y=16443,z=7}}
    repeat
        local pos = {x=math.random(Area[1].x, Area[2].x), y=math.random(Area[1].y,Area[2].y), z=math.random(Area[1].z,Area[2].z)}
        if isWalkable(pos, false, false, false) then
            doSummonCreature("Ferumbras", pos) 
            vetor = vetor + 1    
        end
    until vetor == amount
end

function onSay(cid, words, param, channel)
local w ={	
	needPos = {x=1022, y=909, z=7}, -- pos que precisa está para usar o item
	myPos = getPlayerPosition(cid), 
    avisoproibido = "Desculpe isso não é possível.",
    horario = "Apenas uma vez por dia os deuses podem ser liberados.",
	tempo = 1*24*60*60,
    storage = 94368,
}



if getTileHouseInfo(getThingPos(cid)) then
        return doPlayerSendCancel(cid,w.avisoproibido)
end
   
if getTilePzInfo(getThingPos(cid)) then
        return doPlayerSendCancel(cid,w.avisoproibido)
end

if getTileHouseInfo(getThingPos(cid)) then
        return doPlayerSendCancel(cid,w.horario)
end
  
  local M = {
        Pos = {x=7691,y=16409,z=5}, 
        id= 1355, 
    time = 86400}
    local x = M
   
function criar()
        local parede = getTileItemById(x.Pos, x.id)
        doCreateItem(x.id, 1, x.Pos)
end
   
if w.myPos.x == w.needPos.x and w.myPos.y == w.needPos.y and w.myPos.z == w.needPos.z then	
    if x then
        local parede = getTileItemById(x.Pos, x.id)
        if getTileInfo(getCreaturePosition(cid)).itemid == 3217 or 3216 then
            if (getPlayerStorageValue(cid, w.storage) <= os.time()) then
                if parede then
                    setPlayerStorageValue(cid, w.storage, os.time()+w.tempo)
                    doRemoveItem(parede.uid, 1)
                    --doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))--
                    doPlayerSendTextMessage(cid, 25, "A furia dos Deuses foi liberada tenha cuidado")
                    doCreateFerumbras(30)
                    addEvent(criar, x.time*1000)
                end
            else
                doPlayerSendCancel(cid, "A furia dos deuses só pode ser liberada a cada 24 horas.")
            end
        end
    end
	else
    doPlayerSendCancel(cid, "Você precisa está na posição correta para usar o item que invoca os DEUSES.")
	end
    return true
end

 

 

 

vá em creaturescripts entre na pasta scripts e crie um arquivo chamado FerumbrasQuest.lua e cole dentro:

  Ocultar conteúdo


local frbs = {
-- Mesma área da talkactions que invoca os monstros
AreaFrom = {x=7649,y=16379,z=5}, -- Canto superior esquerdo da área
AreaTo = {x=7735,y=16443,z=7}, -- Canto inferior direito da área
monsterName = "Ferumbras", -- Nome do monstros
storage = 98392, -- Storage global da script
TpTo = {x=1019,y=928,z=7}, -- Para onde o teleporte vai levar
TpId = 11655, -- id do Teleporte
TpTime = 10 -- Tempo em segundos que o tp irá durá aberto
}

function onKill(cid, target)

	if target:isMonster() and target:getName():lower() == frbs.monsterName:lower() and Player(cid) then
		if isInRange(target:getPosition(), frbs.AreaFrom, frbs.AreaTo) then
			setGlobalStorageValue(frbs.storage, getGlobalStorageValue(frbs.storage)+1)
		end
		
		
	if getGlobalStorageValue(frbs.storage) >= 30 then -- 30 é a quantidade de monstro que precisa ser morto para abrir o Teleporte
		local TpActive = Game.createItem(frbs.TpId, 1, target:getPosition())
			if TpActive and TpActive:isTeleport() then
					TpActive:setDestination(frbs.TpTo)
						setGlobalStorageValue(frbs.storage, 0)
							Creature(target):say("O teleporte foi e vai sumir em ".. frbs.TpTime .." segundos.", TALKTYPE_MONSTER_SAY)
						addEvent(function() TpActive:remove() end, frbs.TpTime*1000)
					end
				end
			end
	return true
end

 

 

vá no login.lua e registre esse evento:

player:registerEvent("FerumbrasQuest")

 


<event type="kill" name="FerumbrasQuest" script="FerumbrasQuest.lua"/>

 

Testei aqui e está 1000% porque 100 é pouco. Kkkkk

xD

 

deu isso: [18/03/2017 11:28:15] [Error - CreatureScript Interface] 
[18/03/2017 11:28:15] data/creaturescripts/scripts/login.lua:onLogin
[18/03/2017 11:28:15] Description: 
[18/03/2017 11:28:15] data/creaturescripts/scripts/login.lua:75: attempt to index global 'player' (a nil value)
[18/03/2017 11:28:15] stack traceback:
[18/03/2017 11:28:15]     data/creaturescripts/scripts/login.lua:75: in function <data/creaturescripts/scripts/login.lua:6>
[18/03/2017 11:28:15] Kevintwo has logged out.

Link para o post
Compartilhar em outros sites

@Luzetti você tem certeza que seu tfs é 1.0 ? Meu script está mais que perfeito.

Me passe seu login.lua ae!

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
30 minutos atrás, KotZletY disse:

@Luzetti você tem certeza que seu tfs é 1.0 ? Meu script está mais que perfeito.

Me passe seu login.lua ae!

 

local config = {
    loginMessage = getConfigValue('loginMessage'),
    useFragHandler = getBooleanFromString(getConfigValue('useFragHandler'))
}

function onLogin(cid)
accountManager = "Account Manager"                       
managerCounter = 0

   for i, player in ipairs(getOnlinePlayers()) do
      if accountManager:lower() == player:lower() then             
      managerCounter = managerCounter + 1
      end 
   end
 
   if managerCounter >= 3 then
      return false
   end
    local loss = getConfigValue('deathLostPercent')
    if(loss ~= nil) then
        doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 10)
    end

    local accountManager = getPlayerAccountManager(cid)
    if(accountManager == MANAGER_NONE) then
        local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage
        if(lastLogin > 0) then
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
            str = "A ultima vez que voce fez login foi em " .. os.date("%a %b %d %X %Y", lastLogin) .. "."
        else
            str = str .. " Please choose your outfit."
            doPlayerSendOutfitWindow(cid)
        end

        doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
    elseif(accountManager == MANAGER_NAMELOCK) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, it appears that your character has been namelocked, what would you like as your new name?")
    elseif(accountManager == MANAGER_ACCOUNT) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to manage your account and if you want to start over then type 'cancel'.")
    else
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to create an account or type 'recover' to recover an account.")
    end

    if(not isPlayerGhost(cid)) then
        doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
    end

    registerCreatureEvent(cid, "Mail")
    registerCreatureEvent(cid, "GuildMotd")

    registerCreatureEvent(cid, "Idle")
    if(config.useFragHandler) then
        registerCreatureEvent(cid, "SkullCheck")
    end

registerCreatureEvent(cid, "ReportBug")
registerCreatureEvent(cid, "AdvanceSave")
registerCreatureEvent(cid, "attackguild")    
registerCreatureEvent(cid, "advance")
registerCreatureEvent(cid, "FimVip")
registerCreatureEvent(cid, "SkullCheck")
registerCreatureEvent(cid, "demonOakLogout")
registerCreatureEvent(cid, "demonOakDeath")
registerCreatureEvent(cid, "ReportBug")
registerCreatureEvent(cid, "VipReceive")
registerCreatureEvent(cid, "PlayerKill")
registerCreatureEvent(cid, "onPrepareDeath")
registerCreatureEvent(cid, "onPrepareDeath2")
registerCreatureEvent(cid, "KillingInTheNameOf")
registerCreatureEvent(cid, "exp_pmob")
registerCreatureEvent(cid, "forever amulet")
registerCreatureEvent(cid, "Senha")
registerCreatureEvent(cid, "PointSystem")
registerCreatureEvent(cid, "ExpVip")
player:registerEvent("FerumbrasQuest")

    if (InitArenaScript ~= 0) then
    InitArenaScript = 1

        for i = 42300, 42309 do
            setGlobalStorageValue(i, 0)
            setGlobalStorageValue(i+100, 0)
        end
    end

    if getPlayerStorageValue(cid, 42309) < 1 then
        for i = 42300, 42309 do
            setPlayerStorageValue(cid, i, 0)
        end
    end

    if getPlayerStorageValue(cid, 42319) < 1 then
        for i = 42310, 42319 do
            setPlayerStorageValue(cid, i, 0)
        end
    end

    if getPlayerStorageValue(cid, 42329) < 1 then
        for i = 42320, 42329 do
            setPlayerStorageValue(cid, i, 0)
        end
    end
    if getPlayerStorageValue(cid, 42355) == -1 then
        setPlayerStorageValue(cid, 42355, 0)
    end
    
     if getPlayerAccess(cid) > 3 then
      doPlayerSendCancel(cid, "$@$Administrador")
      doPlayerSendCancel(cid, " ")
    end
    
    setPlayerStorageValue(cid, 42350, 0)
    setPlayerStorageValue(cid, 42352, 0)
    


local txt = [[
Pegue seu item inicial no andar de cima.

PS Para saber sobre os aols leia o Log no client

Att: Kevintwo
]]
doPlayerPopupFYI(cid, txt)


return true


end

 

ta ai

Link para o post
Compartilhar em outros sites

@Luzetti cara, aprende a colocar scripts grandes em spolier, no canto esquerdo, na segunda fuleira, a quarta função, que tem forma de olho, clica nele e bota os scripts dentro.

 

Em fim: mude isso: player:registerEvent("FerumbrasQuest")

 

para isso: registerCreatureEvent(cid, "FerumbrasQuest")

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
Em 18/03/2017 ás 18:22, KotZletY disse:

@Luzetti cara, aprende a colocar scripts grandes em spolier, no canto esquerdo, na segunda fuleira, a quarta função, que tem forma de olho, clica nele e bota os scripts dentro.

 

Em fim: mude isso: player:registerEvent("FerumbrasQuest")

 

para isso: registerCreatureEvent(cid, "FerumbrasQuest")

fiz como vc falou, porem o monstro ele morre mas a vida n some, e começa a dar isso no console.

 

 

Untitledsw.png

Untitleds.png

Link para o post
Compartilhar em outros sites

@Luzetti com toda certeza desse mundo, sua distro não é 1.0, testei aqui em meu servidor, uso otx 1.3, e funcionou perfeitamente, as funções usada na minha scripts funcionariam em 100% no 1.0 sem nenhum erro. 

Em fim:

A tag xml e o register event continua o mesmo, mude apenas o script:

Spoiler

local frbs = {
-- Mesma área da talkactions que invoca os monstros
AreaFrom = {x=1011,y=916,z=7}, -- Canto superior esquerdo da área
AreaTo = {x=1019,y=922,z=7}, -- Canto inferior direito da área
monsterName = "Ferumbras", -- Nome do monstros
storage = 98392, -- Storage global da script
TpTo = {x=1012,y=920,z=7}, -- Para onde o teleporte vai levar
TpId = 1387, -- id do Teleporte
TpTime = 5 -- Tempo
}

function onKill(cid, target)

if isMonster(target) and getCreatureName(target):lower() == (frbs.monsterName:lower()) and isPlayer(cid) then	
	
if isInRange(getCreaturePosition(target), frbs.AreaFrom, frbs.AreaTo) then
	setGlobalStorageValue(frbs.storage, getGlobalStorageValue(frbs.storage)+1)
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getGlobalStorageValue(frbs.storage))
end
	
	
if getGlobalStorageValue(frbs.storage) >= 10 then
	doCreatureSay(target, "O teleporte foi aberto, e vai sumir em".. frbs.TpTime .." segundos.", TALKTYPE_MONSTER)
	setGlobalStorageValue(frbs.storage, 0)
	local PosMon = getCreaturePosition(target)
	doCreateTeleport(frbs.TpId, frbs.TpTo, PosMon)
     addEvent(function()
	 local tpHere = getTileItemById(PosMon, frbs.TpId)
     if tpHere then
	 doRemoveItem(tpHere.uid, 1) 
	 end
	 end, frbs.TpTime*1000)
	 end
end
	
	return true
end


 

 

Testei aqui e está 100%

 

@Luzetti então ?

 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
Em 18/03/2017 ás 23:29, KotZletY disse:

@Luzetti com toda certeza desse mundo, sua distro não é 1.0, testei aqui em meu servidor, uso otx 1.3, e funcionou perfeitamente, as funções usada na minha scripts funcionariam em 100% no 1.0 sem nenhum erro. 

Em fim:

A tag xml e o register event continua o mesmo, mude apenas o script:

  Ocultar conteúdo


local frbs = {
-- Mesma área da talkactions que invoca os monstros
AreaFrom = {x=1011,y=916,z=7}, -- Canto superior esquerdo da área
AreaTo = {x=1019,y=922,z=7}, -- Canto inferior direito da área
monsterName = "Ferumbras", -- Nome do monstros
storage = 98392, -- Storage global da script
TpTo = {x=1012,y=920,z=7}, -- Para onde o teleporte vai levar
TpId = 1387, -- id do Teleporte
TpTime = 5 -- Tempo
}

function onKill(cid, target)

if isMonster(target) and getCreatureName(target):lower() == (frbs.monsterName:lower()) and isPlayer(cid) then	
	
if isInRange(getCreaturePosition(target), frbs.AreaFrom, frbs.AreaTo) then
	setGlobalStorageValue(frbs.storage, getGlobalStorageValue(frbs.storage)+1)
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, getGlobalStorageValue(frbs.storage))
end
	
	
if getGlobalStorageValue(frbs.storage) >= 10 then
	doCreatureSay(target, "O teleporte foi aberto, e vai sumir em".. frbs.TpTime .." segundos.", TALKTYPE_MONSTER)
	setGlobalStorageValue(frbs.storage, 0)
	local PosMon = getCreaturePosition(target)
	doCreateTeleport(frbs.TpId, frbs.TpTo, PosMon)
     addEvent(function()
	 local tpHere = getTileItemById(PosMon, frbs.TpId)
     if tpHere then
	 doRemoveItem(tpHere.uid, 1) 
	 end
	 end, frbs.TpTime*1000)
	 end
end
	
	return true
end


 

 

Testei aqui e está 100%

 

@Luzetti então ?

 

opa desculpa a demora de responder estava em uam chacara fds, entao testei hje o sistema, nao aparece mais aqueles erros do print, porem quando mato todos os ferumbras da area nao abre nenhum tp.

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Jaurez
      .
    • Por Cat
      Em alguns casos, o tibia 8.60 comum não abre de jeito nenhum no map editor, mesmo desmarcando check file signatures e configurando o path corretamente.
       
      Este é o client 8.60 adaptado para o Remere's Map Editor. Resolvi postar já que ele foi removido do site oficial do RME. (ficou apenas a versão para linux lá)
      Se estiver tendo problemas para abrir a versão 8.60, tente utilizar este.
                                                                                                                     
      Baixar o Tibia Client 8.60 que funciona no Remere’s Map Editor
      Essa versão do Tibia 8.60 client resolve o erro unsupported client version ou Could not locate tibia.dat and/or tibia.spr, please navigate to your tibia 8.60 installation folder.
       
      Downloads
      https://tibiaking.com/applications/core/interface/file/attachment.php?id=47333

      Scan: https://www.virustotal.com/gui/file/333e172ac49ba2028db9eb5889994509e7d2de28ebccfa428c04e86defbe15cc
       
    • Por danilo belato
      Fala Galera To Com um problema aki 
       
      quero exporta umas sprites de um server para colocar em outro 
       
      eu clico na sprites ai aparece tds a forma delas do lado de la >>
       
      ai eu clico nela e ponho a opiçao de export mais quando salvo a sprite ela n abri 
       
      aparece isso quando tento vê-la 
       
      visualização não disponível ( no formatos png e bitmap)
       
      Agora no formato idc fala que o paint n pode ler 
       
      me ajudem ae...
    • Por Vitor Bicaleto
      Galera to com o script do addon doll aqui, quando eu digito apenas "!addon" ele aparece assim: Digite novamente, algo está errado!"
      quando digito por exemplo: "!addon citizen" ele não funciona e não da nenhum erro
       
      mesma coisa acontece com o mount doll.. 
    • Por Ayron5
      Substitui uma stone no serve, deu tudo certo fora  esse  erro ajudem  Valendo  Rep+  Grato  

      Erro: data/actions/scripts/boost.lua:557: table index is nil
       [Warning - Event::loadScript] Cannot load script (data/actions/scripts/boost.lua)

      Script:
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo