Ir para conteúdo
  • 0

vip by talkaction


iqueob

Pergunta

olá Xtibianos, possuo um STYLLER 8.6 versao 0.7.5 e este sistema de vip por Item:

 

function onUse(cid, item, fromPosition, itemEx, toPosition)

 

local config={

removeOnUse = "yes" -- remover quando usar ("yes" or "no")

}

 

local days = 5 -- dias que serão adicionados

local daysvalue = days * 24 * 60 * 60

local storageplayer = getPlayerStorageValue(cid, 13001)

local timenow = os.time()

 

if getPlayerStorageValue(cid, 13001) - os.time() <= 0 then

time = timenow + daysvalue

else

time = storageplayer + daysvalue

end

 

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. days .." dias de VIP no seu character.Para acessar a NOVA area vip, suba o segundo andar do templo.")

setPlayerStorageValue(cid, 13001, time)

local quantity = math.floor((getPlayerStorageValue(cid, 13001) - timenow)/(24 * 60 * 60))

doSendMagicEffect(getPlayerPosition(cid), math.random(28,30))

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. quantity .." dias de VIP restantes.")

if (config.removeOnUse == "yes") then

doRemoveItem(item.uid, 1)

end

 

return TRUE

end

Bom, eu queria algum jeito que so os jogadores que ja possuem a storage id "7777" (storage da quest que ganha o item do script acima) possam usar uma talkaction e renovar sua vip.

 

desde já, Obrigado.

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Vá em data/talkactions/scripts, crie um arquivo chamado newstor.lua e adicione isso dentro:

 

 

 

local days = 10

local price = 50000

local storage = 7777

local daysvalue = days * 24 * 60 * 60

local storageplayer = getPlayerStorageValue(cid, 13001)

local timenow = os.time()

 

function onSay(cid, words, param)

if getPlayerStorageValue(cid, 13001) - os.time() <= 0 then

time = timenow + daysvalue

else

time = storageplayer + daysvalue

end

if(words == "!buyvip") then

if not doPlayerRemoveMoney(cid, price) then

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa de "..price.." gp's para colocar vip.")

doPlayerAddItem(cid,2148,50000)

return true

end

if getPlayerStorageValue(cid, storage) ~= 1 then

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa completar a quest para renovar sua vip.") return true

end

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados "..days.." dias de VIP no seu character.")

setPlayerStorageValue(cid, 13001, time)

end

return true

end

 

 

 

Agora adicione essa tag em talkactions.xml

<talkaction log="no" words="!buyvip" event="script" value="newstor.lua"/>

Editado por Roksas
Link para o comentário
Compartilhar em outros sites

  • 0

testei, aconteceu o seguinte, no char do god, removeu a grana mas mandou a mensagem "22:47 Você precisa completar a quest para renovar sua vip." e nao adicionou os dias de vip. Com um player que nao tinha a quest, aconteceu da mesma maneira que com o god, retirou o dinheiro, nao adicionou vip days e mensagem:"Você precisa completar a quest para renovar sua vip.". Com o player que ja tinha a quest, o dinheiro foi retirado e a vip normalmente adicionada.

obrigado.

Editado por iqueob
Link para o comentário
Compartilhar em outros sites

  • 0

action da quest vip:

function onUse(cid, item, frompos, item2, topos)

if item.uid == 7007 then

if item.itemid == 1946 then

 

player1pos = {x=1265, y=1033, z=5, stackpos=253}

player1 = getThingfromPos(player1pos)

 

player2pos = {x=1264, y=1033, z=5, stackpos=253}

player2 = getThingfromPos(player2pos)

 

player3pos = {x=1263, y=1033, z=5, stackpos=253}

player3 = getThingfromPos(player3pos)

 

player4pos = {x=1262, y=1033, z=5, stackpos=253}

player4 = getThingfromPos(player4pos)

 

 

if player1.itemid > 0 and player2.itemid > 0 and player3.itemid > 0 and player4.itemid > 0 then

 

player1level = getPlayerLevel(player1.uid)

player2level = getPlayerLevel(player2.uid)

player3level = getPlayerLevel(player3.uid)

player4level = getPlayerLevel(player4.uid)

 

questlevel = 200

 

if player1level >= questlevel and player2level >= questlevel and player3level >= questlevel and player4level >= questlevel then

 

handmaiden1pos = {x=1267, y=1031, z=6}

demon2pos = {x=1266, y=1031, z=6}

demon3pos = {x=1265, y=1031, z=6}

demon4pos = {x=1264, y=1031, z=6}

demon5pos = {x=1263, y=1031, z=6}

demon6pos = {x=1262, y=1031, z=6}

handmaiden7pos = {x=1261, y=1031, z=6}

punish8pos = {x=1260, y=1032, z=6}

dracola9pos = {x=1260, y=1033, z=6}

punish10pos = {x=1260, y=1034, z=6}

handmaiden11pos = {x=1261, y=1035, z=6}

demon12pos = {x=1262, y=1035, z=6}

demon13pos = {x=1263, y=1035, z=6}

demon14pos = {x=1264, y=1035, z=6}

demon15pos = {x=1265, y=1035, z=6}

demon16pos = {x=1266, y=1035, z=6}

handmaiden17pos = {x=1267, y=1035, z=6}

orshabaal18pos = {x=1266, y=1033, z=6}

orshabaal19pos = {x=1267, y=1033, z=6}

orshabaal20pos = {x=1268, y=1033, z=6}

 

doSummonCreature("The Handmaiden", handmaiden1pos)

doSummonCreature("The Handmaiden", handmaiden11pos)

doSummonCreature("The Handmaiden", handmaiden17pos)

doSummonCreature("The Handmaiden", handmaiden7pos)

doSummonCreature("Orshabaal", orshabaal18pos)

doSummonCreature("Orshabaal", orshabaal19pos)

doSummonCreature("Orshabaal", orshabaal20pos)

doSummonCreature("Dracola", dracola9pos)

doSummonCreature("Mr. Punish", punish8pos)

doSummonCreature("Mr. Punish", punish10pos)

doSummonCreature("Hellhound", demon2pos)

doSummonCreature("Hellhound", demon3pos)

doSummonCreature("Hellhound", demon5pos)

doSummonCreature("Hellhound", demon4pos)

doSummonCreature("Hellhound", demon6pos)

doSummonCreature("Hellhound", demon12pos)

doSummonCreature("Hellhound", demon13pos)

doSummonCreature("Hellhound", demon14pos)

doSummonCreature("Hellhound", demon15pos)

doSummonCreature("Hellhound", demon16pos)

 

 

 

nplayer1pos = {x=1265, y=1033, z=6}

nplayer2pos = {x=1264, y=1033, z=6}

nplayer3pos = {x=1263, y=1033, z=6}

nplayer4pos = {x=1262, y=1033, z=6}

 

doSendMagicEffect(player1pos,2)

doSendMagicEffect(player2pos,2)

doSendMagicEffect(player3pos,2)

doSendMagicEffect(player4pos,2)

 

doTeleportThing(player1.uid,nplayer1pos)

doTeleportThing(player2.uid,nplayer2pos)

doTeleportThing(player3.uid,nplayer3pos)

doTeleportThing(player4.uid,nplayer4pos)

 

doSendMagicEffect(nplayer1pos,10)

doSendMagicEffect(nplayer2pos,10)

doSendMagicEffect(nplayer3pos,10)

doSendMagicEffect(nplayer4pos,10)

 

doTransformItem(item.uid,1945)

 

else

doPlayerSendCancel(cid,"All players must have level 200 to enter.")

end

else

doPlayerSendCancel(cid,"You need 4 players in your team.")

end

end

if item.itemid == 1945 then

 

starting={x=1252, y=1023, z=6, stackpos=253}

checking={x=starting.x, y=starting.y, z=starting.z, stackpos=starting.stackpos}

ending={x=1281, y=1041, z=6, stackpos=253}

players=0

totalmonsters=0

monster = {}

repeat

creature= getThingfromPos(checking)

if creature.itemid > 0 then

if getPlayerAccess(creature.uid) == 0 then

players=players+1

end

if getPlayerAccess(creature.uid) ~= 0 and getPlayerAccess(creature.uid) ~= 3 then

totalmonsters=totalmonsters+1

monster[totalmonsters]=creature.uid

end

end

checking.x=checking.x+1

if checking.x>ending.x then

checking.x=starting.x

checking.y=checking.y+1

end

until checking.y>ending.y

if players==0 then

trash= {x=233, y=125, z=10}

current=0

repeat

current=current+1

doTeleportThing(monster[current],trash)

until current>=totalmonsters

doTransformItem(item.uid,1946)

end

 

 

end

end

if item.uid == 7770 then

queststatus = getPlayerStorageValue(cid,7777)

if queststatus == -1 then

doPlayerSendTextMessage(cid,22,"You have found a Ticket Vip.")

doPlayerAddItem(cid,5785,1)

setPlayerStorageValue(cid,7777,1)

else

doPlayerSendTextMessage(cid,22,"It is empty.")

end

end

if item.uid == 7772 then

queststatus = getPlayerStorageValue(cid,7778)

if queststatus ~= 1 then

doPlayerSendTextMessage(cid,22,"You have found a signet ring.")

doPlayerAddItem(cid,7697,1)

setPlayerStorageValue(cid,7778,1)

else

doPlayerSendTextMessage(cid,22,"It is empty.")

end

end

if item.uid == 7773 then

queststatus = getPlayerStorageValue(cid,7779)

if queststatus ~= 1 then

doPlayerSendTextMessage(cid,22,"You have found a Boots Vip.")

doPlayerAddItem(cid,2358,1)

setPlayerStorageValue(cid,7779,1)

else

doPlayerSendTextMessage(cid,22,"It is empty.")

end

end

return 1

end

Link para o comentário
Compartilhar em outros sites

  • 0

Substitua o talkaction por esse, arrumei uns bugs, depois é só editar conforme quiser

 

 

local days = 10

local price = 50000

local storage = 7777

local daysvalue = days * 24 * 60 * 60

local storageplayer = getPlayerStorageValue(cid, 13001)

local timenow = os.time()

 

function onSay(cid, words, param)

if getPlayerStorageValue(cid, 13001) - os.time() <= 0 then

time = timenow + daysvalue

else

time = storageplayer + daysvalue

end

if(words == "!buyvip") then

if not doPlayerRemoveMoney(cid, price) then

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa de "..price.." gp's para colocar vip.")

doPlayerAddItem(cid,2148,50000)

return true

end

if getPlayerStorageValue(cid, storage) ~= 1 then

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa completar a quest para renovar sua vip.") return true

end

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados "..days.." dias de VIP no seu character.")

setPlayerStorageValue(cid, 13001, time)

end

return true

end

 

 

Boa sorte!

Link para o comentário
Compartilhar em outros sites

  • 0

Agora deu esse erro:

[04/02/2013 14:04:20] [Error - TalkAction Interface]

[04/02/2013 14:04:20] data/talkactions/scripts/systemvip2.lua:onSay

[04/02/2013 14:04:20] Description:

[04/02/2013 14:04:20] data/talkactions/scripts/systemvip2.lua:12: attempt to perform arithmetic on upvalue 'storageplayer' (a boolean value)

[04/02/2013 14:04:20] stack traceback:

[04/02/2013 14:04:20] data/talkactions/scripts/systemvip2.lua:12: in function <data/talkactions/scripts/systemvip2.lua:8>

Link para o comentário
Compartilhar em outros sites

  • 0
function onSay(cid, words, param)
local days = 10
local price = 50000
local storage = 7777
local daysvalue = days * 24 * 60 * 60
local storageplayer = getPlayerStorageValue(cid, 13001)
local timenow = os.time()
if getPlayerStorageValue(cid, 13001) - os.time() <= 0 then
time = timenow + daysvalue
else
time = storageplayer + daysvalue
end
if(words == "!buyvip") then
if not doPlayerRemoveMoney(cid, price) then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa de "..price.." gp's para colocar vip.")
doPlayerAddItem(cid,2148,50000)
return true
end
if getPlayerStorageValue(cid, storage) ~= 1 then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa completar a quest para renovar sua vip.") return true
end
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados "..days.." dias de VIP no seu character.")
setPlayerStorageValue(cid, 13001, time)
end
return true
end

Link para o comentário
Compartilhar em outros sites

  • 0

deu o mesmo erro inicial, se o player nao fez a quest, remove a grana e nao add vip!

 

script systemvip2:

function onSay(cid, words, param)

local days = 10

local price = 5000000

local storage = 7777

local daysvalue = days * 24 * 60 * 60

local storageplayer = getPlayerStorageValue(cid, 13001)

local timenow = os.time()

if getPlayerStorageValue(cid, 13001) - os.time() <= 0 then

time = timenow + daysvalue

else

time = storageplayer + daysvalue

end

if(words == "!viphog") then

if not doPlayerRemoveMoney(cid, price) then

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa de "..price.." gp's para colocar vip.")

doPlayerAddItem(cid,2148,50000)

return true

end

if getPlayerStorageValue(cid, storage) ~= 1 then

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa completar a quest para renovar sua vip.") return true

end

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados "..days.." dias de VIP no seu character.")

setPlayerStorageValue(cid, 13001, time)

end

return true

end

 

talkactions.xml:

<talkaction log="no" words="!viphog" event="script" value="systemvip2.lua"/>
Link para o comentário
Compartilhar em outros sites

  • 0

Ok, tenta assim. substitui por esse:

 

 

function onSay(cid, words, param)

local days = 10

local price = 5000000

local stor1 = 7777

local daysvalue = days * 24 * 60 * 60

local storplayer = getPlayerStorageValue(cid, 13001)

local timenow = os.time()

if getPlayerStorageValue(cid, 13001) - os.time() <= 0 then

time = timenow + daysvalue

else

time = storplayer + daysvalue

end

if(words == "!viphog") then

if not doPlayerRemoveMoney(cid, price) then

doPlayerAddItem(cid,2148,price)

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa de "..price.." gp's para colocar vip.")

return true

end

if getPlayerStorageValue(cid, stor1) ~= 1 then

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa completar a quest para renovar sua vip.") return true

end

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados "..days.." dias de VIP no seu character.")

setPlayerStorageValue(cid, 13001, time)

end

return true

end

 

Editado por Roksas
Link para o comentário
Compartilhar em outros sites

  • 0

ainda nao =S mesmo coisa, player sem quest perde a grana e n ganha a vip.

(me desculpa eu preciso sair agora, mas muito obrigado pela atenção!depois eu upo o topico denovo!)

Editado por iqueob
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...