Ir para conteúdo
  • Cadastre-se

(Resolvido)3 Dias Premium ao Logar e Ao Avançar de Premium!


Ir para solução Resolvido por Flavio S,

Posts Recomendados

Eaew Pessoal Blz?? estou querendo um script que ao player logar pela primeira vez ele ganha 3 dias de premium!

e um script de que ao player avançar de level ganha 5 dias de premium!

 

Eu uso o Tfs 1.1 10.77!

 

se alguem puder me ajudar...

 

se quizerem podem usar este script de base para o primeiro pedido : http://www.tibiaking.com/forum/topic/2623-creaturescript-ganhar-3-dias-de-premium-ao-logar-pela-primeira-vez/

wq3bBzt.png
Pokémon Dust Evolution
 
É aonde começa sua nova aventura!! 

 

Facebook

 
Verifique Atualizações

 

Link para o post
Compartilhar em outros sites

doPlayerAddPremiumDays(cid, 3)

Em baixo de:

doPlayerSendOutfitWindow(cid)

No login.lua

 

 

5 dias, tem certeza ? 

é muito por lvl...

ou demora para ganhar level...

Você tem o arquivo, advancesave.lua, na sua pasta creaturescripts ?

 

 

Se sim, só adicionar:

doPlayerAddPremiumDays(cid, 5)

em baixo de:

if(config.savePlayersOnAdvance) then

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

Link para o post
Compartilhar em outros sites

Não cara vc entendeu errado!

 

Tipo ao player avançar determinado level ele ganha 5 dias de premium! 

 

e no login.lua não tem "doPlayerSendOutfitWindow(cid)"

tem um parecido : player:sendOutfitWindow()

mas acredito eu, que a tag que vc pediu para adicionar seria diferente!

wq3bBzt.png
Pokémon Dust Evolution
 
É aonde começa sua nova aventura!! 

 

Facebook

 
Verifique Atualizações

 

Link para o post
Compartilhar em outros sites

no caso seria:

player:addPremiumDays(3)

Agora sobre o premio em determinado lvl:

 

 

Cria um arquivo em (creaturescripts/scripts)

function onAdvance(cid, skill, oldLevel, newLevel)
	if player:getLevel() == 50 then
	 player:addPremiumDays(5)
	end
	return true
end

em login.lua coloque:

player:registerEvent("Premionolevel")

e em creaturescript.xml: 

<event type="advance" name="Premionolevel" script="arquivo.lua"/>

Ouuuuuu

 

você tem o advancesave.lua ? 

Seria assim, eu acho, 

se tiver, adiciona:

if player:getLevel() == 50 then
     player:addPremiumDays(5)
    end

antes do ultimo return true....

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

Link para o post
Compartilhar em outros sites

Ta funcionando d boa, mas dai esta como eu suspeitei des do inicio! se a pessoa cria 2 player em 1 acc ela ganha 6 dias premiums! se ela cria +1 player fica com 9 dias premium! dai eu só queria que o player ao logar pela primeira vez na conta ganha-se 3 dias premiums! se puder ajudar ^^ ganhou rep+ por tenta ^^


no caso seria:

player:addPremiumDays(3)
function onAdvance(cid, skill, oldLevel, newLevel)
	if player:getLevel() == 50 then
	 player:addPremiumDays(5)
	end
	return true
end

Seria assim, eu acho, você tem o advancesave.lua ? 

se tiver, adiciona:

if player:getLevel() == 50 then
     player:addPremiumDays(5)
    end

antes do ultimo return true....

pera ai

 

1- não tenho este advancesave

 

2- este segundo script é oque e aonde adiciono ele?

 

3- o primeiro que vc disse apenas adicionar aquela tag d baixo esta com oque falei logo acima de que eu citei sua msg

Editado por Zet0N0Murmurou (veja o histórico de edições)

wq3bBzt.png
Pokémon Dust Evolution
 
É aonde começa sua nova aventura!! 

 

Facebook

 
Verifique Atualizações

 

Link para o post
Compartilhar em outros sites

Ta funcionando d boa, mas dai esta como eu suspeitei des do inicio! se a pessoa cria 2 player em 1 acc ela ganha 6 dias premiums! se ela cria +1 player fica com 9 dias premium! dai eu só queria que o player ao logar pela primeira vez na conta ganha-se 3 dias premiums! se puder ajudar ^^ ganhou rep+ por tenta ^^

pera ai

 

1- não tenho este advancesave

 

2- este segundo script é oque e aonde adiciono ele?

 

3- o primeiro que vc disse apenas adicionar aquela tag d baixo esta com oque falei logo acima de que eu citei sua msg

 

Realmente, ficou confuso, eu editei lá, mas vou explicar aqui:

 

Esse:

player:addPremiumDays(3)
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você ganhou 3 dias de premium")

Fica em baixo de:

player:sendOutfitWindow()

Mas ainda no login, você colocar isso:

player:registerEvent("Premionolevel")

antes do último return true

 

Fecha o login.lua

 

Cria um arquivo na pasta scripts de creaturescripts, com o nome que você quiser, e adicione dentro:

function onAdvance(cid, skill, oldLevel, newLevel)

-- 50 = level que vai receber 
-- 5 = quantidade de premium day

	if player:getLevel() == 50 then
	 player:addPremiumDays(5)
         player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você ganhou 5 dias de premium")
	end
	return true
end

em creaturescripts.xml adicione essa tag:

<event type="advance" name="Premionolevel" script="arquivo.lua"/>

Muda o nome do arquivo ali, para o nome que você pôs...

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

Link para o post
Compartilhar em outros sites

o script que ao upar lvl 50 ganha 5 dias de premium esta conflitando com o script do  "/addskill" quando eu uso o comando /addskill

 

e o outro de quando o player loga pela primeira vez ganha 3 dias premium, mas dai se ele cria outro char na mesma acc e loga vai ganhar +3 dias premium!

Editado por Zet0N0Murmurou (veja o histórico de edições)

wq3bBzt.png
Pokémon Dust Evolution
 
É aonde começa sua nova aventura!! 

 

Facebook

 
Verifique Atualizações

 

Link para o post
Compartilhar em outros sites

Tem que setar storage por account ... precisa adaptar esse sistema pra tfs 1.1, http://www.tibiaking.com/forum/topic/21851-function-account-storage/

se ninguém te ajudar até a noite eu faço pra ti ^^

I must not fear. Fear is the mind killer.

Link para o post
Compartilhar em outros sites

hummm, teria que fazer alterações

Mas como assim conflitando ?

Pra que você quer dar skill pro player...?

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

Link para o post
Compartilhar em outros sites

n man tipo, ele ta conflitando com o mod que vc me passou! e este comando é na fase de test ainda do serv! se eu precisa de lvl rapido! se eu uso o /addskill da erro no script 

wq3bBzt.png
Pokémon Dust Evolution
 
É aonde começa sua nova aventura!! 

 

Facebook

 
Verifique Atualizações

 

Link para o post
Compartilhar em outros sites

n man tipo, ele ta conflitando com o mod que vc me passou! e este comando é na fase de test ainda do serv! se eu precisa de lvl rapido! se eu uso o /addskill da erro no script

Tenta pegar lvl 49 e depois upar 1 nvl

Tenta mudar o

player:getLevel() == 50
Para

player:getLevel() >= 50
Fora isso, não vejo nada que atrapalhe o funcionamento

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

Link para o post
Compartilhar em outros sites
  • Solução

data/creaturescripts/scripts/ crie : advancepremium.lua

local advance = {
	level = xxx, -- Level que vai ganhar a premium
	days = 5, -- quantos dias de premium vai ganhar
	storage = 45646, -- Não mecher
}

function onAdvance(player, skill, oldLevel, newLevel)

	if skill == SKILL_LEVEL and newLevel == advance.level and player:getStorageValue(advance.storage) < 1 then
		player:addPremiumDays(advance.days)
		player:setStorageValue(advance.storage, 1)
		player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Congratulations! You won '.. advance.days ..'days of premium for advance to level '.. advance.level ..'!')
	end
	return true
end

function onLogin(player)

	player:registerEvent("AdvancePremium")
	return true
end

XML :

<event type="advance" name="AdvancePremium" script="advancepremium.lua" />
<event type="login" name="Verf_AdvancePremium" script="advancepremium.lua" />

Agora o de logar e ganhar 3 dias de premium por account.

 

Primeiro vai no seu phpmyadmin e use comando :

CREATE TABLE `account_storage` (
`account_id` int(11) NOT NULL default '0',
`key` int(10) unsigned NOT NULL default '0',
`value` varchar(255) NOT NULL default '0',
UNIQUE KEY `account_id_2` (`account_id`,`key`),
KEY `account_id` (`account_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

agora vá em data/creaturescripts/script crie firstloginpremium.lua :

function getAccountStorageValue(accid, key)
	local resultId = db.storeQuery("SELECT `account_id`, `key` FROM `account_storage` WHERE `account_id` = " .. accid .. " and `key` = " .. key)
	if resultId ~= false then
		return result.getNumber(resultId, 'key')
	else
		return -1
	end
	return resultId:free()
end

function setAccountStorageValue(accid, key, value)
	local resultId = db.storeQuery("SELECT `value` FROM `account_storage` WHERE `account_id` = " .. accid .. " and `key` = " .. key)
	if resultId ~= false then
		db.query("UPDATE `account_storage` SET `value` = " .. accid .. " WHERE `key`=" .. key .. " LIMIT 1');")
	else
		db.query("INSERT INTO `account_storage` (`account_id`, `key`, `value`) VALUES (" .. accid .. ", " .. key .. ", '"..value.."');")
	end
	return true
end

function onLogin(player)
	local storage = 545465
	local pid = player:getGuid()
	local query = db.storeQuery("SELECT `account_id` FROM `players` WHERE `id` = ".. pid)
	local value = result.getNumber(query, 'account_id')

	if getAccountStorageValue(value, storage) < 1 then
		player:addPremiumDays(3)
		setAccountStorageValue(value, storage, 1)
	end
	return true
end

XML :

<event type="login" name="FirstLoginPremium" script="firstloginpremium.lua" />

Créditos ao luanluciano93 por ter me ajudado com as query.

abrçs

Editado por Stinger (veja o histórico de edições)

I must not fear. Fear is the mind killer.

Link para o post
Compartilhar em outros sites

@, com global storage você resolveria mais fácil usando a account ID.  :bleh: 

@, no seu creaturescript/scripts/login.lua, adicione esse código antes do ultimo return true: 

	if Game.getStorageValue(player:getAccountId()) <= 0 then
		Game.setStorageValue(player:getAccountId(), 1)
		player:addPremiumDays(3)
	end 

Abraços!

Link para o post
Compartilhar em outros sites

@, com global storage você resolveria mais fácil usando a account ID.  :bleh: 

@, no seu creaturescript/scripts/login.lua, adicione esse código antes do ultimo return true: 

	if Game.getStorageValue(player:getAccountId()) <= 0 then
		Game.setStorageValue(player:getAccountId(), 1)
		player:addPremiumDays(3)
	end 

Abraços!

 

LoL é vdd, tinha até me esquecido :facepalm:  , mas pelo menos valeu eu ter feito, pois aprendi alguns truques com querys.

I must not fear. Fear is the mind killer.

Link para o post
Compartilhar em outros sites

@, com global storage você resolveria mais fácil usando a account ID.  :bleh: 

@, no seu creaturescript/scripts/login.lua, adicione esse código antes do ultimo return true: 

	if Game.getStorageValue(player:getAccountId()) <= 0 then
		Game.setStorageValue(player:getAccountId(), 1)
		player:addPremiumDays(3)
	end 

Abraços!

o seu quando tentei logar deu erro na distro dizendo que tinha erro no login.lua! quando eu removi consegui loga direitinho!

 

 

data/creaturescripts/scripts/ crie : advancepremium.lua

local advance = {
	level = xxx, -- Level que vai ganhar a premium
	days = 5, -- quantos dias de premium vai ganhar
	storage = 45646, -- Não mecher
}

function onAdvance(player, skill, oldLevel, newLevel)

	if skill == SKILL_LEVEL and newLevel == advance.level and player:getStorageValue(advance.storage) < 1 then
		player:addPremiumDays(advance.days)
		player:setStorageValue(advance.storage, 1)
		player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Congratulations! You won '.. advance.days ..'days of premium for advance to level '.. advance.level ..'!')
	end
	return true
end

function onLogin(player)

	player:registerEvent("AdvancePremium")
	return true
end

XML :

<event type="advance" name="AdvancePremium" script="advancepremium.lua" />
<event type="login" name="Verf_AdvancePremium" script="advancepremium.lua" />

Agora o de logar e ganhar 3 dias de premium por account.

 

Primeiro vai no seu phpmyadmin e use comando :

CREATE TABLE `account_storage` (
`account_id` int(11) NOT NULL default '0',
`key` int(10) unsigned NOT NULL default '0',
`value` varchar(255) NOT NULL default '0',
UNIQUE KEY `account_id_2` (`account_id`,`key`),
KEY `account_id` (`account_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

agora vá em data/creaturescripts/script crie firstloginpremium.lua :

function getAccountStorageValue(accid, key)
	local resultId = db.storeQuery("SELECT `account_id`, `key` FROM `account_storage` WHERE `account_id` = " .. accid .. " and `key` = " .. key)
	if resultId ~= false then
		return result.getNumber(resultId, 'key')
	else
		return -1
	end
	return resultId:free()
end

function setAccountStorageValue(accid, key, value)
	local resultId = db.storeQuery("SELECT `value` FROM `account_storage` WHERE `account_id` = " .. accid .. " and `key` = " .. key)
	if resultId ~= false then
		db.query("UPDATE `account_storage` SET `value` = " .. accid .. " WHERE `key`=" .. key .. " LIMIT 1');")
	else
		db.query("INSERT INTO `account_storage` (`account_id`, `key`, `value`) VALUES (" .. accid .. ", " .. key .. ", '"..value.."');")
	end
	return true
end

function onLogin(player)
	local storage = 545465
	local pid = player:getGuid()
	local query = db.storeQuery("SELECT `account_id` FROM `players` WHERE `id` = ".. pid)
	local value = result.getNumber(query, 'account_id')

	if getAccountStorageValue(value, storage) < 1 then
		player:addPremiumDays(3)
		setAccountStorageValue(value, storage, 1)
	end
	return true
end

XML :

<event type="login" name="FirstLoginPremium" script="firstloginpremium.lua" />

Créditos ao luanluciano93 por ter me ajudado com as query.

abrçs

Irei Testar Agora!

wq3bBzt.png
Pokémon Dust Evolution
 
É aonde começa sua nova aventura!! 

 

Facebook

 
Verifique Atualizações

 

Link para o post
Compartilhar em outros sites

Edited@
 

data/creaturescripts/scripts/ crie : advancepremium.lua

local advance = {
	level = xxx, -- Level que vai ganhar a premium
	days = 5, -- quantos dias de premium vai ganhar
	storage = 45646, -- Não mecher
}

function onAdvance(player, skill, oldLevel, newLevel)

	if skill == SKILL_LEVEL and newLevel == advance.level and player:getStorageValue(advance.storage) < 1 then
		player:addPremiumDays(advance.days)
		player:setStorageValue(advance.storage, 1)
		player:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'Congratulations! You won '.. advance.days ..'days of premium for advance to level '.. advance.level ..'!')
	end
	return true
end

function onLogin(player)

	player:registerEvent("AdvancePremium")
	return true
end
XML :
<event type="advance" name="AdvancePremium" script="advancepremium.lua" />
<event type="login" name="Verf_AdvancePremium" script="advancepremium.lua" />
Agora o de logar e ganhar 3 dias de premium por account.
 
Primeiro vai no seu phpmyadmin e use comando :
CREATE TABLE `account_storage` (
`account_id` int(11) NOT NULL default '0',
`key` int(10) unsigned NOT NULL default '0',
`value` varchar(255) NOT NULL default '0',
UNIQUE KEY `account_id_2` (`account_id`,`key`),
KEY `account_id` (`account_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
agora vá em data/creaturescripts/script crie firstloginpremium.lua :
function getAccountStorageValue(accid, key)
	local resultId = db.storeQuery("SELECT `account_id`, `key` FROM `account_storage` WHERE `account_id` = " .. accid .. " and `key` = " .. key)
	if resultId ~= false then
		return result.getNumber(resultId, 'key')
	else
		return -1
	end
	return resultId:free()
end

function setAccountStorageValue(accid, key, value)
	local resultId = db.storeQuery("SELECT `value` FROM `account_storage` WHERE `account_id` = " .. accid .. " and `key` = " .. key)
	if resultId ~= false then
		db.query("UPDATE `account_storage` SET `value` = " .. accid .. " WHERE `key`=" .. key .. " LIMIT 1');")
	else
		db.query("INSERT INTO `account_storage` (`account_id`, `key`, `value`) VALUES (" .. accid .. ", " .. key .. ", '"..value.."');")
	end
	return true
end

function onLogin(player)
	local storage = 545465
	local pid = player:getGuid()
	local query = db.storeQuery("SELECT `account_id` FROM `players` WHERE `id` = ".. pid)
	local value = result.getNumber(query, 'account_id')

	if getAccountStorageValue(value, storage) < 1 then
		player:addPremiumDays(3)
		setAccountStorageValue(value, storage, 1)
	end
	return true
end
XML :
<event type="login" name="FirstLoginPremium" script="firstloginpremium.lua" />

Créditos ao luanluciano93 por ter me ajudado com as query.

abrçs

 


O de quando pegar certo level ganha 5 dias vip deu certo! e o de ganhar 3 dias de vip ao logar pela primeira vez na conta tbm! vlw!


@, qual erro? 

o seu disse que tava dando erro no login.lua mas o do stinger, me ajudou bastante! já foi resolvido o erro ^^

wq3bBzt.png
Pokémon Dust Evolution
 
É aonde começa sua nova aventura!! 

 

Facebook

 
Verifique Atualizações

 

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo