TE
pedido

PEDIDO .:: Script ::.

Por texz, 01 de out. de 2013 em Scripts

script
26
2.4k
texzT
02 de outubro de 2013 às 16:59

Opa.

 

 

Eu fiz a modificação desse seu ai Maenilse

 

pra 1 hora . Fiz o comando em um char test de deixei ele off por 1 hora.. não voltou ao normal =s

MaenilseM
02 de outubro de 2013 às 17:40

era pra voltar, aqui eu testei e funcionou o.O

texzT
02 de outubro de 2013 às 20:56

Bom eu fiz o seguinte. Entrei no char.. fiz o comando reloguei..

 

e desloguei e deixer o server online por 2 horas com o player OFF

 

 

Coloquei no script 1 hora só

local Tempo = 1

e quando voltei a entrar não tinha funcionado ! =s

 

eu ainda usava o comando

Editado Outubro 2 por texz

OmegaO
03 de outubro de 2013 às 09:50

Maenilse, o problema do seu código é que você não manda o GUID direto pra atualizar no banco de dados quando o jogador está offline. Consertei aqui e adicionei um onLogin pro caso de o servidor cair (se não o cara ia ficar VIP pra sempre).

 

Código do/a Maenilse consertado:

 

 

local storage = 920304 -- storage que ficara armazenado que o player usou o comando
local mensJapegou = "Voce ja pegou seu Tutor por um dia!" -- mensagem de quando ele ja pegou!
local mensPass = "Parabens, agora voce se tornou tutor por um dia!" -- mensagem de parabens
local backGroup = 1 -- Group ID que ira ficar depois de 1 dia
local Tempo = 24


function onSay(cid, words, param, channel)
	if getPlayerStorageValue(cid, storage) ~= -1 then
		doPlayerSendCancel(cid, mensJapegou)
		doSendMagicEffect(getCreaturePosition(cid), 2)
		return TRUE
	end
	setPlayerGroupId(cid, 2)
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, mensPass)
	doSendMagicEffect(getCreaturePosition(cid), 28)
	setPlayerStorageValue(cid, storage, os.time() + Tempo * 3600)
	addEvent(removeTutor, Tempo * 60 * 60 * 1000, getPlayerGUID(cid), cid)
	return TRUE
end


function removeTutor(guid, cid)
if isCreature(cid) then doRemoveCreature(cid) end
    db.executeQuery("UPDATE `players` SET `group_id` = 1 WHERE `id` = "..guid)    
    return TRUE
end

 

 

 

E aí você registra no creaturescripts.xml essa tag aqui:

<event type="login" name="noVIP" event="script" value="novip.lua"/>

E salva esse código na pasta creaturescripts/scripts como novip.lua

 

 

function removeTutor(guid, cid)
        if isCreature(cid) then doRemoveCreature(cid) end
	db.executeQuery("UPDATE `players` SET `group_id` = 1 WHERE `id` = "..guid)	
	return TRUE
end

function onLogin(cid)
	if getPlayerStorageValue(cid, 920304) >= os.time() and getPlayerGroupId(cid) == 2 then
		doPlayerSendTextMessage(cid, 25, 'Seu tempo VIP terminou!')
		mayNotMove(cid, true)
		addEvent(removeTutor, 2000, getPlayerGUID(cid), cid)
	end
	return true
end

 

 

Editado Outubro 3 por omega blueheaven

MaenilseM
03 de outubro de 2013 às 13:16

puts vacilo meu, nem tinha visto o erro na query, vlw ae por ajeitar o codigo omega.

texzT
03 de outubro de 2013 às 17:14

Maenilse, o problema do seu código é que você não manda o GUID direto pra atualizar no banco de dados quando o jogador está offline. Consertei aqui e adicionei um onLogin pro caso de o servidor cair (se não o cara ia ficar VIP pra sempre).

 

Código do/a Maenilse consertado:

 

 

local storage = 920304 -- storage que ficara armazenado que o player usou o comando
local mensJapegou = "Voce ja pegou seu Tutor por um dia!" -- mensagem de quando ele ja pegou!
local mensPass = "Parabens, agora voce se tornou tutor por um dia!" -- mensagem de parabens
local backGroup = 1 -- Group ID que ira ficar depois de 1 dia
local Tempo = 24


function onSay(cid, words, param, channel)
	if getPlayerStorageValue(cid, storage) ~= -1 then
		doPlayerSendCancel(cid, mensJapegou)
		doSendMagicEffect(getCreaturePosition(cid), 2)
		return TRUE
	end
	setPlayerGroupId(cid, 2)
	doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, mensPass)
	doSendMagicEffect(getCreaturePosition(cid), 28)
	setPlayerStorageValue(cid, storage, os.time() + Tempo * 3600)
	addEvent(removeTutor, Tempo * 60 * 60 * 1000, getPlayerGUID(cid), cid)
	return TRUE
end


function removeTutor(guid, cid)
if isCreature(cid) then doRemoveCreature(cid) end
    db.executeQuery("UPDATE `players` SET `group_id` = 1 WHERE `id` = "..guid)    
    return TRUE
end

 

 

 

E aí você registra no creaturescripts.xml essa tag aqui:

<event type="login" name="noVIP" event="script" value="novip.lua"/>

E salva esse código na pasta creaturescripts/scripts como novip.lua

 

 

function removeTutor(guid, cid)
        if isCreature(cid) then doRemoveCreature(cid) end
	db.executeQuery("UPDATE `players` SET `group_id` = 1 WHERE `id` = "..guid)	
	return TRUE
end

function onLogin(cid)
	if getPlayerStorageValue(cid, 920304) >= os.time() and getPlayerGroupId(cid) == 2 then
		doPlayerSendTextMessage(cid, 25, 'Seu tempo VIP terminou!')
		mayNotMove(cid, true)
		addEvent(removeTutor, 2000, getPlayerGUID(cid), cid)
	end
	return true
end

 

 

 

Agora então esta tudo ok ?

OmegaO
03 de outubro de 2013 às 17:18

Espero que sim he.gif .

Vou mover seu tópico pra resolvidos e se não tiver, me avisa que eu movo de volta.

texzT
04 de outubro de 2013 às 12:00

Aconteceu o seguinte !

 

O player ao relogar volta ao normal =s antes mesmo da hora

Editado Outubro 4 por texz

OmegaO
04 de outubro de 2013 às 12:11

Opa, tem razão. Corrigi aqui, testa aí:

function removeTutor(guid, cid)
        if isCreature(cid) then doRemoveCreature(cid) end
	db.executeQuery("UPDATE `players` SET `group_id` = 1 WHERE `id` = "..guid)	
	return TRUE
end

function onLogin(cid)
	if getPlayerStorageValue(cid, 920304) < os.time() and getPlayerGroupId(cid) == 2 then
		doPlayerSendTextMessage(cid, 25, 'Seu tempo VIP terminou!')
		mayNotMove(cid, true)
		addEvent(removeTutor, 2000, getPlayerGUID(cid), cid)
	end
	return true
end
texzT
04 de outubro de 2013 às 12:32

como ficaria aqui

Tempo * 60 * 60 * 1000,

Se eu fosse usar

LOCAL TEMPO = 10 

EM MINUTOS APENAS PARA TEST..

?

 

Tempo * 60 * 1000,

ASSIM ?

OmegaO
04 de outubro de 2013 às 12:38

No script inicial tem

local Tempo = 24

Isso é em horas. Pra fazer em minutos divide por 60. Por exemplo, quero 1min então faço:

local Tempo = 1/60