OM

Omega Task v1.0

Por Omega, 29 de ago. de 2013 em Mods, funções e outros

otserv
tibia
script
5.0 (1)
45
12.4k
jonathasbizerrilJ
04 de setembro de 2013 às 01:40

Agora está pegando mais porque ta assim

 

01:39 Andamento da sua task de dragons -> [2/-1]

01:41 Andamento da sua task de dragons -> [102/-1] mas o maximo é 100

Obs: usei todos comandos ai em cima que você mandou

 

@Omega Blueheaven você tem skype ou algum meio de rede social pra nós trocar uma ideia?

Editado Setembro 4 por jonathasbizerril

OmegaO
04 de setembro de 2013 às 01:55

Então, cara, é porque não tá adicionando o storage como deveria... Você editou alguma coisa?

Como o resto tá funcionando, verifique se todos os killstotal estão escritos como devem e se não tem nenhum erro no executável (se tiver, posta aqui)

Esse erro daí só pode estar em dois lugares:

Na função doStartTask(cid) ou na configuração dos monstros, onde tem os nomes e killstotal. É onde o script muda o storage que deveria representar o total de monstros que devem ser mortos.

 

Quando você usou /storage nome_do_jogador, 3453, aparece -1 mesmo?

jonathasbizerrilJ
04 de setembro de 2013 às 02:12

Eu peguei tudo no crtl c e crtl v só troque aqui que você mesmo mandou

 

 

function doRewardTask(cid)
local monster = getPlayerStorageValue(cid,taskstg.monster)
local reward = taskreward[monster]
if reward.item and reward.amount then
doPlayerAddItem(cid,reward.item,reward.amount)
end
if monster and reward then
doPlayerAddMoney(cid,reward.money)
doPlayerAddExperience(cid, reward.xp)
return true
end
return false
end

 

E a configuração no taskrewards fica:

 

taskreward = -- em gps
{
[1] = {money = 5000,xp = 20000,item = 2458,amount = 1}, -- nenhum item será adicionado
[2] = {money = 10000,xp = 50000,item = 2459,amount = 1}, -- nenhum item será adicionado
[3] = {money = 20000,xp = 75000,item = 2458,amount = 1} -- aqui será adicionado 1 item com id 2458
}
OmegaO
04 de setembro de 2013 às 02:38

Tenta isso

 

 

function onSay(cid, words, param, channel)
	local monster, permission = getPlayerStorageValue(cid,taskstg.monster), getPlayerStorageValue(cid,tasksg.permission)
	local kills, killstotal = getPlayerStorageValue(cid,taskstg.kills), getPlayerStorageValue(cid,taskstg.killstotal)
	if monster == -1 or monster == 0 then
		doPlayerSendTextMessage(cid,27,'Voce nao tem nenhuma task ativa.')
	else
		local left = kills - killstotal
		if left >= 0 then
			doPlayerSendTextMessage(cid,27,'Voce ja matou monstros suficientes para terminar sua task.')
		else
			doPlayerSendTextMessage(cid,27,'Andamento da sua task de '..taskmonsters[monster][1]..'s -> ['..kills..'/'..killstotal..']')
		end
	end
	return true
end

 

 

jonathasbizerrilJ
04 de setembro de 2013 às 18:40

Erro na distro

 

 

[04/09/2013 18:39:41] [Error - TalkAction Interface]
[04/09/2013 18:39:41] data/talkactions/scripts/countkills.lua:onSay
[04/09/2013 18:39:41] Description:
[04/09/2013 18:39:41] data/talkactions/scripts/countkills.lua:2: attempt to index global 'tasksg' (a nil value)
[04/09/2013 18:39:41] stack traceback:
[04/09/2013 18:39:41] data/talkactions/scripts/countkills.lua:2: in function

 

 

mais eu já ajeitei @Omega você pode arrumar outro scrpit pra mim?

Editado Setembro 4 por jonathasbizerril

OmegaO
04 de setembro de 2013 às 18:59

Erro na distro

 

 

[04/09/2013 18:39:41] [Error - TalkAction Interface]

[04/09/2013 18:39:41] data/talkactions/scripts/countkills.lua:onSay

[04/09/2013 18:39:41] Description:

[04/09/2013 18:39:41] data/talkactions/scripts/countkills.lua:2: attempt to index global 'tasksg' (a nil value)

[04/09/2013 18:39:41] stack traceback:

[04/09/2013 18:39:41] data/talkactions/scripts/countkills.lua:2: in function

 

 

mais eu já ajeitei @Omega você pode arrumar outro scrpit pra mim?

 

Se não for relativo ao tópico, me passa por PM que eu tento.

phowtaksP
06 de setembro de 2013 às 06:46

omega blueheaven :

É possível você alterar uma parte desse script para mim?

Gostaria que você colocasse na parte dos kills uma coisa bem maneira que só vai ajudar a melhorar a vida dos players!

Para que todos não fiquem toda hora executando o comando !countkills para saber a quantidade que está no momento, poderias incluir uma mensagem de quando a task está completa e liberada para ir até o npc resgatar o gold e a EXP?

Sei que tem alguns scripts por ai que aparece esse tipo de mensagem mais os que eu testei eles ficam aparecendo a cada mob que matamos, isso encomoda alem de ficar um baita spam na tela.

Criando uma mensagem so pra mostrar o fim da task que foi completada já ficaria de bom grado!


Aguardo sua resposta!

By [ADM] Floripa
http://floripa.servegame.com/


Consegui fazer funcionar com 10 tipos de task diferentes, cada uma com 10 monstros diferentes para completar a mesma task. Cada task possui uma certa quantidade de pontos que o player ganha ao completar a task porém como o player pode visualizar a quantidade toral de pontos?

 

Tens algum script que possa sei lá, usar um comando que abra uma janela mostrando um rank desses pontos?
Isso tem que ser mysql não é, é possível então criar uma página em .php para esse systema mostrando a quantidade de pontos?

Editado Setembro 5 por phowtaks

OmegaO
09 de setembro de 2013 às 18:03

omega blueheaven :

É possível você alterar uma parte desse script para mim?

 

Gostaria que você colocasse na parte dos kills uma coisa bem maneira que só vai ajudar a melhorar a vida dos players!

 

Para que todos não fiquem toda hora executando o comando !countkills para saber a quantidade que está no momento, poderias incluir uma mensagem de quando a task está completa e liberada para ir até o npc resgatar o gold e a EXP?

 

Sei que tem alguns scripts por ai que aparece esse tipo de mensagem mais os que eu testei eles ficam aparecendo a cada mob que matamos, isso encomoda alem de ficar um baita spam na tela.

 

Criando uma mensagem so pra mostrar o fim da task que foi completada já ficaria de bom grado!

 

 

Aguardo sua resposta!

By [ADM] Floripa

http://floripa.servegame.com/

Consegui fazer funcionar com 10 tipos de task diferentes, cada uma com 10 monstros diferentes para completar a mesma task. Cada task possui uma certa quantidade de pontos que o player ganha ao completar a task porém como o player pode visualizar a quantidade toral de pontos?

 

Tens algum script que possa sei lá, usar um comando que abra uma janela mostrando um rank desses pontos?

Isso tem que ser mysql não é, é possível então criar uma página em .php para esse systema mostrando a quantidade de pontos?

 

O do rank eu consigo fazer, mas de php eu não saco ainda =/

 

EDIÇÃO:

Segue o script do rank:

 

 

function onSay(cid, words, param)
	local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = 3456 and `value` > 0")
	if query:getID() == -1 then
		return true
	end
	local players = {}
	local points = {}
	local str = ""
	local j = 1
	repeat
		str = "TASK RANK\n"
		str = str..""..getPlayerNameByGUID(query:getDataInt("player_id")).." ["..query:getDataInt("value").."]\n"
		j = j + 1
	until not query:next() or j >= 10
	doPlayerPopupFYI(cid, str)
	return true
end

 

 

TAG no talkactions.xml:

<talkaction words="!taskrank" event="script" value="taskrank.lua"/>

Editado Setembro 9 por omega blueheaven

phowtaksP
10 de setembro de 2013 às 00:19

Olha cara a intenção foi boa, mais aqui não está abrindo nada, não está dando nenhum erro no distro quando executo o comando !taskrank e nenhuma mensagem de erro no game também!

 

Chegasse a testar?

 

Posta a foto do script funcionando em game ai!

 

Vlw!

OmegaO
10 de setembro de 2013 às 00:26

Cara, acho que tá funcionando aí, mas você não tem nenhum personagem com pontos de task ganhos, aí o script não mostra nada.

245zd6g.jpg

phowtaksP
10 de setembro de 2013 às 02:24

hmm vou testar, deposi comento pra ver!


hmm vou testar, deposi comento pra ver!

Precisa de alguma tabela na database pra salvar esses pontos não?

Porque fiz a task com dois players diferentes e não está aparecendo nada!

OmegaO
10 de setembro de 2013 às 09:51
function onSay(cid, words, param)
	local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..taskstg.points.." and `value` > 0")
	if query:getID() == -1 then
		doPlayerSendTextMessage(cid, 27, 'Nao foram encontrados jogadores com task points.')
		return true
	end
	local players = {}
	local points = {}
	local str = ""
	local j = 1
	local str = "TASK RANK\n\n"
	repeat		
		str = str.."{"..j.."} "..getPlayerNameByGUID(query:getDataInt("player_id")).." ["..query:getDataInt("value").."]\n"
		j = j + 1
	until not query:next() or j >= 10
	doPlayerPopupFYI(cid, str)
	return true
end

Cara, fiz só algumas modificações pra melhorar, mas o problema é que você tem que dar logout pra salvar os storages. Depois aparece.

phowtaksP
11 de setembro de 2013 às 01:00
function onSay(cid, words, param)
	local query = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = "..taskstg.points.." and `value` > 0")
	if query:getID() == -1 then
		doPlayerSendTextMessage(cid, 27, 'Nao foram encontrados jogadores com task points.')
		return true
	end
	local players = {}
	local points = {}
	local str = ""
	local j = 1
	local str = "TASK RANK\n\n"
	repeat		
		str = str.."{"..j.."} "..getPlayerNameByGUID(query:getDataInt("player_id")).." ["..query:getDataInt("value").."]\n"
		j = j + 1
	until not query:next() or j >= 10
	doPlayerPopupFYI(cid, str)
	return true
end

Cara, fiz só algumas modificações pra melhorar, mas o problema é que você tem que dar logout pra salvar os storages. Depois aparece.

 

 

 

Está aparecendo essa mensagem agora!

 

Sem_t_tulo.png

Eu fiz o que vc pensou ser, mais nao deu certo, fiz a task de rotworm com um lvl 30 e entreguei, recebi o item e a xp que configurei no script e dei exit e loguei novamente para salvar o storage, mais não aparece nenhuma janela de rank!

 

Lembrando novamente que tenho um server 8.6 com TFS 0.4!

OmegaO
11 de setembro de 2013 às 11:40

Cara, testei isso no meu servidor 8.6. Tá funcionando, copiei e colei o script que eu te passei. Revisa a instalação e vê se tem points na sua tasklib.lua.

Se ainda assim não funcionar, tenta trocar

"..taskstg.points.."

Pelo número do storage direto. Tire as "" se for colocar o número.

phowtaksP
13 de setembro de 2013 às 05:33

fiz isso e nao deu certo!