Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Amigos, estou usando esse script para 1 certo item ser de double exp em meu servidor....

 

local config = {
	rate = 2, -- 4x More Experience
	time = 1, -- Hours of Exp Time
	storage = 21123
}
local function endExpRate(cid)
	if isPlayer(cid) == TRUE then
		doPlayerSetRate(cid, SKILL__LEVEL, 1) -- config.lua rate
		setPlayerStorageValue(cid, config.storage, -1)
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Your extra experience time has ended.")
	end
end
function onUse(cid, item, fromPosition, itemEx, toPosition)
	if(getPlayerStorageValue(cid, config.storage) < 0) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Your extra experience rate is now: " .. config.rate .. ". It will last for ".. config.time .." hours.")
		doPlayerSetRate(cid, SKILL__LEVEL, config.rate)
		setPlayerStorageValue(cid, config.storage, os.time() + config.time * 3600)
		addEvent(endExpRate, config.time * 3600 * 1000, cid)
		doRemoveItem(item.uid, 1)
	else
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You still have extra experience time left.")
	end
	return TRUE
end

Mas o mesmo está sempre bugando e virando no tinhoso..... Tipo as vezes o player usa e fica 100% normal mas as vezes o player usa, quando precisar usa novamente o mesmo não funciona alguém poderia me ajudar?

Link para o post
Compartilhar em outros sites

O tópico foi movido para a área correta, preste mais atenção da próxima vez!
Leia as regras do fórum: http://tibiaking.com/forum/topic/1281-regras-gerais/?p=7680

Este tópico foi movido:
De: "OTServAnuncie seu ServidorOpen PVP"
Para: "OTServSuporte OTServ"

 

@EDIT

O script a cima está programado para você poder usar de 24 em 24 horas. Ou seja, ao usar, você terá que esperar o tempo acabar para usar de novo.

"A alma permanece em suas criações" V89E5aN.png


142c9d3439.jpg
(Não dou suporte por mensagem privada.)

Link para o post
Compartilhar em outros sites

Problema, que preciso que ele funcione por 2 horas... e quando termine o tempo possa usar novamente, o item.... Estranho encima la falava que é 1 hora, o senhor poderia me ajudar a arrumar ele pra fica 100% ou até mesmo algum que senhor use?

:facepalm:  desculpe posta errado não sei onde estava com a cabeça.

Link para o post
Compartilhar em outros sites

 Bem, no caso esse script tem uma grande falha, pois se o player der logout com o Double XP, creio que ele não perderá o bônus depois do tempo.

local config = {
	rate = 2, -- 4x More Experience
	time = 2, -- Hours of Exp Time
	storage = 21123
}
local function endExpRate(cid)
	if isPlayer(cid) == TRUE then
		doPlayerSetRate(cid, SKILL__LEVEL, 1) -- config.lua rate
		setPlayerStorageValue(cid, config.storage, -1)
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Your extra experience time has ended.")
	end
end
function onUse(cid, item, fromPosition, itemEx, toPosition)
	if(getPlayerStorageValue(cid, config.storage) < 0) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Your extra experience rate is now: " .. config.rate .. ". It will last for ".. config.time .." hours.")
		doPlayerSetRate(cid, SKILL__LEVEL, config.rate)
		setPlayerStorageValue(cid, config.storage, os.time() + config.time * 3600)
		addEvent(endExpRate, config.time * 3600 * 1000, cid)
		doRemoveItem(item.uid, 1)
	else
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You still have extra experience time left.")
	end
	return TRUE
end


Bem, quanto tempo mais ou menos o script está funcionando para um player ?

"A alma permanece em suas criações" V89E5aN.png


142c9d3439.jpg
(Não dou suporte por mensagem privada.)

Link para o post
Compartilhar em outros sites

Então é como o senhor escreveu se ele da logout o mesmo falha realmente kkkk, ele funciona cerca de 1 hora ou 2... As vezes ele funciona até pessoa deslogar, e as vezes ele nunca para de funcionar. ... :facepalm: 


Não sei mais o que fazer testei uns 3 script e todos bugan e etc... Meu servidor versão 9.80 a 9.86 ....

Link para o post
Compartilhar em outros sites

Tente isso aqui... 

Substitua o script anterior por esse :

local config = {
	rate = 2, -- 4x More Experience
	time = 2, -- Hours of Exp Time
	storage = 21123
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if(getPlayerStorageValue(cid, config.storage) < 0) then
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Your extra experience rate is now: " .. config.rate .. ". It will last for ".. config.time .." hours.")
		setPlayerStorageValue(cid, config.storage, os.time() + config.time * 3600)
		local ex = getPlayerRates(cid)[SKILL__LEVEL]
		doPlayerSetRate(cid, SKILL__LEVEL, (config.rate))
		doRemoveItem(item.uid, 1)
	else
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You still have extra experience time left.")
	end
	return TRUE
end

 

...e na pasta creaturescript > scripts > login.lua depois da function onLogin(cid) adicione isso :

if(getPlayerStorageValue(cid, 21123) > 0) then -- você muda a storage de acordo com o script da action
	doPlayerSetRate(cid, SKILL__LEVEL, 2)  -- você muda o valor de acordo com o script da action
end

registerCreatureEvent(cid, "Checkextraexp")

 

Crie um arquivo chamado checkextraexp.lua na pasta de script de creaturescript e cole isso :

 

function onThink(cid)
	if(getPlayerStorageValue(cid, 21123) <= 0) then 
		doPlayerSetRate(cid, SKILL__LEVEL, 1)
		setPlayerStorageValue(cid, 21123, -1)
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your extra experience rate time has ended.")
	end
return true
end 

 

E por último, a tag do creaturescript no arquivo creaturescript.xml :

<event type="think" name="Checkextraexp" event="script" value="checkextraexp.lua"/>

Não sei se vai funcionar, fiz agora.

"A alma permanece em suas criações" V89E5aN.png


142c9d3439.jpg
(Não dou suporte por mensagem privada.)

Link para o post
Compartilhar em outros sites

Não apresento nenhum erro no distro.....

Sera que funciono jovem?

Link para o post
Compartilhar em outros sites

Não funciono ainda alguém poderia me dar 1 luz de double exp funcional?

Link para o post
Compartilhar em outros sites

vai em mod e crie um arquivo com o nome doubleexp.lua e cole isso:

<?xml version="1.0" encoding="UTF-8"?>
<mod name="AdvancedExpPotionSystem" enabled="yes" author="MatheusMkalo" forum="XTibia.com">

<!-- Configs and Functions -->
<config name="PotionExpConfigs"><![CDATA[

------ CONFIGURE SEU SCRIPT ------ TRUE ou FALSE
configs = {
time = 120---- TIME IN MINUTES
needpa = TRUE,
needlvl = {TRUE, level = 50},
costmana = {TRUE, mana = 300},
addrate = 20, -- Exp que vai adicionar em %
removeonuse = TRUE
}

function getTime(s)
local n = math.floor(s / 60)
s = s - (60 * n)
return n, s
end

CreatureEventChecker = function(event, ...) -- Colex
if isCreature(arg[1]) then
event(unpack(arg))
end
end

creatureEvent = function(event, delay, ...) -- Colex
addEvent(CreatureEventChecker, delay, event, unpack(arg))
end

function getPlayerExtraExpRate(cid) -- By MatheusMkalo
return (getPlayerRates(cid)[8]-1)*100
end
]]></config>

<!-- exppotion.lua -->
<action itemid="7440" event="script"><![CDATA[
domodlib('PotionExpConfigs')
if getPlayerStorageValue(cid, 62164) >= 1 then
return doPlayerSendCancel(cid, "You are already taking effect from this item.")
end

if configs.needpa and not isPremium(cid) then
return doPlayerSendCancel(cid, "You need to be a premmium account to use this item.")
end

if configs.needlvl[1] and getPlayerLevel(cid) < configs.needlvl.level then
return doPlayerSendCancel(cid, "You need to be level " .. configs.needlvl.level .. " to use this item.")
end

if configs.costmana[1] then
if getCreatureMana(cid) < configs.costmana.mana then
return doPlayerSendCancel(cid, "You need " .. configs.costmana.mana .. " mana to use this item.")
else
doCreatureAddMana(cid, -configs.costmana.mana)
end
end

if configs.removeonuse then
doRemoveItem(item.uid, 1)
end

for i = configs.time*60, 1, -1 do
local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60))
if #a < 4 then
a = string.sub(a,1,2) .. "0" .. string.sub(a, 3)
end
if i == configs.time*60 then
creatureEvent(doPlayerSendCancel, configs.time*60*1000, cid, "The effect of the exp potion end.")
end
creatureEvent(doPlayerSendCancel, (configs.time*60-i)*1000, cid, "The effect of the exp potion will end in "..a..".")
end

doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100))
creatureEvent(doPlayerSetExperienceRate, configs.time *60*1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100)))
doPlayerSendTextMessage(cid, 22, "Agora voce ira receber mais exp por matar os mosntros.")
setPlayerStorageValue(cid, 62164, os.time())
creatureEvent(setPlayerStorageValue, configs.time *60*1000, cid, 62164, 0)
return TRUE
]]></action>

<creaturescript type="login" name="ExpPotion" event="script"><![CDATA[
domodlib('PotionExpConfigs')
local time = configs.time
if os.time()-getPlayerStorageValue(cid, 62164) < time *60 then
doPlayerSetExperienceRate(cid, (1+(configs.addrate/100))+(getPlayerExtraExpRate(cid)/100))
creatureEvent(doPlayerSetExperienceRate, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000, cid, 1+(getPlayerExtraExpRate(cid)/100-(configs.addrate/100)))
creatureEvent(setPlayerStorageValue, (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) * 1000 , cid, 62164, 0)

for i = (time*60-(os.time()-getPlayerStorageValue(cid, 62164))), 1, -1 do
local a = math.floor(i/60) .. ":" .. i - (60 * math.floor(i/60))
if #a < 4 then
a = string.sub(a,1,2) .. "0" .. string.sub(a, 3)
end
if i == (time*60-(os.time()-getPlayerStorageValue(cid, 62164))) then
creatureEvent(doPlayerSendCancel, (time*60-(os.time()-getPlayerStorageValue(cid, 62164)))*1000, cid, "The effect of the exp potion end.")
end
creatureEvent(doPlayerSendCancel, ((time*60-(os.time()-getPlayerStorageValue(cid, 62164)))-i)*1000, cid, "The effect of the exp potion will end in "..a..".")
end
end
return TRUE
]]></creaturescript>
</mod>

 

ali em :

configs = {

time = 120, -- tempo em minutos

needpa = TRUE, -- se precisa se premium para usar se nao coloque false
needlvl = {TRUE, level = 50}, -- o lvl que precisa se nao coloque false

costmana = {TRUE, mana = 300}, se vai custar mana se nao coloque false 
addrate = 20, -- Exp que vai adicionar em %
removeonuse = TRUE -- remove ao da use
}

edite a seu gosto

e aki:

<action itemid="7440" event="script"><![CDATA[  -- coloque o id do item 

Link para o post
Compartilhar em outros sites

esse ai tb buga.... o cara fica sem pode usar novamente, nossa não existe sera 1 script que funga legal gente ?    :(

Link para o post
Compartilhar em outros sites

Se eu por esses comandos para executarem quando meu ot liga, iria funcionar?????


 

db.executeQuery("UPDATE `players` SET `online` = 0 WHERE `world_id` = " .. getConfigValue('worldId') .. " AND `online` > 0;")
db.executeQuery("UPDATE `bans` SET `active` = 0 WHERE `expires` <= " .. time .. " AND `expires` >= 0 AND `active` = 1")
db.executeQuery("DELETE FROM `player_storage` WHERE `key` = '21123'")
db.executeQuery("DELETE FROM `guild_wars` WHERE `status` = 0 AND `begin` < " .. (time - 2 * 86400) .. ";")

o em negrito é de maior interesse funcionaria sera?

Link para o post
Compartilhar em outros sites

Pifafa, cuidado com o double post, você poderia ter editado sua mensagem anterior.

"A alma permanece em suas criações" V89E5aN.png


142c9d3439.jpg
(Não dou suporte por mensagem privada.)

Link para o post
Compartilhar em outros sites
  • 4 years later...

@vommok adm Olha esse tópico aí e veja se é oque vc está procurando. ^^

                    

                                                             Tópico 

                                                                             1535210279_tumblr_o9b6yoxM1Z1tco8kto1_500(3).gif.f527686e19da738322c39555244decac.gif

                                                             Meus tópicos         

                                                         Se ajudei você deixe seu Rep! para fortalecer a amizade ^^

                                                                              Vamos ajudar o fórum a crescer mais.

                                                                          1641206641_gif-escudo-fla-3d(1).gif.a5d3c0c24824d5272a181aa91c5eda0c.gif

                                                                                                Mengão porra! . .

                                                                     tumblr_oxm8eriUeU1sqwgnro2_400.gif.22e347b2fc58fdfd88dbf84f4bdaa1bc.gif

                                                                                ----- NPC que vende informação -----

                                                                           -----Baú Que dá Outfit se tiver Level -----

                                                                     ----- [Npc] Que vende Stones (itens) por diamonds -----

 

 

                                                                       

                       

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