Tempo Em Uma Sala

farofafa
em Lixeira Pública

farofafa

avatar
Banidos
Banidos

INFOS

Grupo: BanidosRegistrado: 07/08/06Posts: 1

ola pessoal,

estou a tentar desenvolver um script, mas estou com alguma dificuldade. por isso vim aqui pra ver se alguem me ajuda.

 

o script devera contar a quanto tempo um player esta em uma determinada sala. e se este tempo for maior que 1800 segundos, ele deve ser teleportado para fora da sala.

 

Esta sala apenas tem entrada por 1 porta, q tem ja um uid, com uma action, onde o player ao clicar na porta, e feito o setstoragevalue, para o storage 4098 -> com o tempo restante la dentro ( 1800 ), e para o storage 4099 -> o valor 1, significa q ele esta la dentro.

 

Gostaria entao de um script, q a cada segundo, ou minuto, verifique se o storage 4099 e = a 1. e se for, diminui 1 segundo ou minuto no storage 4098.. se este chegar a 0. o player e teleportado para a location x=1687 y=823 z=7.

 

 

 

obrigado a todos.

Henrique Moura

Ex-administrador
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 17/02/08Posts: 2541

Tópico já existente no fórum, evite cometer double post.

Se você ainda não sabe o que venha a ser double post ou tem dúvidas sobre as regras do fórum, é necessário que leia-as aqui.

Link

Abraços.

KaKilo ~
 


Lom14fD.png

kubos2010

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 18/01/09Posts: 15

È tanta posição que o xtibia cria, que esses que competem por um cargo acabam esquecendo do principal "ajudar".

 

Se tudo for feito pelo "pesquisar" não precisa de tantos cargos assim no xitbia =D...

 

Double post não é quando alguem postar duas mensagens uma atraz da outra dentro do tópico? Será que estou ficando mais burro ou vocês que estão sendo muitos espertos, aldaciosos, malandrões?!?

 

Henrique Moura

 

Messenger - kakilow123@hotmail.com

E-mail - moura_820@hotmail.com

Skype - henriquekakilo

 

Entrada como estagiário - 24/09/09 <<<<< :withstupidsmiley:

Henrique Moura

Ex-administrador
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 17/02/08Posts: 2541

Eu estou mantendo a ordem na área, acredito que assim é melhor para organizar e ajudar todos usuários.

E se você viu o "link", é de um outro tópico que o mesmo usuário criou.

 

Abraços.

KaKilo ~
 


Lom14fD.png

farofafa

avatar
Banidos
Banidos

INFOS

Grupo: BanidosRegistrado: 07/08/06Posts: 1

desculpa pelo topico repetido. eu sei que fiz mal, mas e que nao sabia mesmo em qual dos dois colocar.

 

esse topico nao e 100% pedido de script, pq eu ja deixei aki a ideia (algoritimia) de como deve ser programado o script.

mas tambem n e 100% pedido de ajuda, pq de uma certa forma eu pedi um script.

 

entao postei nos 2.

desculpa..

 

kubos, ja dei uma olhada, e nao encontro nada que satisfaça a minha necessidade..

kubos2010

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 18/01/09Posts: 15
Tópico já existente no fórum, evite cometer double post.

Se você ainda não sabe o que venha a ser double post ou tem dúvidas sobre as regras do fórum, é necessário que leia-as aqui.

Link

 

Abraços.

 

Pensei que o link fosse para as regras =D...imaginação fertil a minha!

 

Mas tudo bem, todos fazemos cagada, mas seria melhor em vez de repreender tentar ajudar.

 

Se quer repreender vire policial! Você está no lugar errado amigo.

 

 

@Tópico

Sua idéia seria aplicada aonde, algum tipo de evento?

farofafa

avatar
Banidos
Banidos

INFOS

Grupo: BanidosRegistrado: 07/08/06Posts: 1

nao.

e simples, ha uma sala, com um npc na porta, ao falar com esse npc, o player pagara uma certa quantia e podera entrar na sala, onde ele podera permanecer por 1 hora. se dentro de 1 hora ele nao sair, ele deveria ser teleportado para fora da sala.

 

e aqui vai entrar o script, preciso q ele conte o tempo q esse player esta dentro da sala, e apos 1 hora, teleporte o player.

 

a forma como eu imaginei foi a que eu postei, e ja tenho o npc criado, ao entrar na sala, e registado na base de dados os dois storages, um com o tempo restante do player, e o outro indicando q o player esta la dentro.. ja tenho o sistema feito para que o storage apenas fique com value = 1 se o player realmente estiver la dentro.

 

o que preciso e simples, 1 funçao q a cada x tempo, verifica o storage do player, se for = 1, significa que ele esta la dentro da sala, entao vai ao outro storage e remove de la o x tempo em que a funçao e chamada.

satan666

Antichrist Superstar
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 07/05/08Posts: 612Char no Tibia: leviana luciferiana

agora que você detalhou melhor como é o funcionamento do script fica mais facil pros scripters fazerem ele.

lembre-se quanto mais informações você deixar melhor é pros scripters le ajudarem a fazer o que queres.

 

se eu tiver um tempinho e paciencia eu faço ele pra você.

creationb.jpg

"Um Deus que usasse seu poder para criar seres humanos que de antemão sabia que seriam atormentados eternamente, e que os predestinasse a isso,



não poderia ser sábio, nem justo e tampouco amoroso.

Além de nos submeter a isso vim a nos julgar e condenar por nossos atos aos tormentos do inferno.

pra minha pessoa isso não é um Deus Pai amoroso e bondoso como o chaman, seu padrão seria muito mais inferior do que o de muitos homens."

farofafa

avatar
Banidos
Banidos

INFOS

Grupo: BanidosRegistrado: 07/08/06Posts: 1

Obrigado pela atençao..

 

eu nao necessito mesmo do script. apenas da funçao que posso usar para fazer isso.

 

mas ja avancei mais um pouco, ja consegui fazer o script.

 

o meu problema agora e so conseguir criar um evento para que ele seja executado.

 

ha possibilidades de criar uma funçao quando uma criatura e atacada??

 

ou seja, um script por exemplo pro scarab, quando o scarab e atacado, executa um script. chama uma funçao e manda pra la o CID que o atacou.

 

assim eu colocaria o script pra executar sempre q a tal criatura fosse atacada, e no script iria buscar o os.time(). e depois verificar no playerstorage. e no caso do os.time() >= playerstorage entao teleporta o player pra fora da sala.

 

 

nao preciso que façam o script pra mim. so quero que me digam como coloco um script pra ser executado quando uma criatura e atacad.

satan666

Antichrist Superstar
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 07/05/08Posts: 612Char no Tibia: leviana luciferiana

é mais facil você adicionar um evento ao passar na porta já que ele não pode retorna.

 

usa isso no script da porta e põe a função teleporte pra ele se teleportado pra fora da arena em 1 hora.

 

addEvent(teleporte, 1*1000*3600, {cid=cid})

creationb.jpg

"Um Deus que usasse seu poder para criar seres humanos que de antemão sabia que seriam atormentados eternamente, e que os predestinasse a isso,



não poderia ser sábio, nem justo e tampouco amoroso.

Além de nos submeter a isso vim a nos julgar e condenar por nossos atos aos tormentos do inferno.

pra minha pessoa isso não é um Deus Pai amoroso e bondoso como o chaman, seu padrão seria muito mais inferior do que o de muitos homens."

farofafa

avatar
Banidos
Banidos

INFOS

Grupo: BanidosRegistrado: 07/08/06Posts: 1

obrigado pela ajuda.

 

mas o que eu preciso nao pode ser isso.

 

pq o player pode sim sair da sala antes de terminar a 1 hora. e tambem pode fazer logout dentro da sala.

 

o que eu queria era mesmo colocar um script quando atacasse um criatura..

pq isso iria me servir nao so nesse sistema, como em outro sistema q estou a desenvolver.

 

queria por exemplo contar o numero de rotworm que um player ja matou. por exemplo.

 

se eu tenho uma criatura, como faço pra adicionar a ele um scipt quando ela for atacada, e preciso receber por parametros so o CID de quem atacou.

 

 

obrigado

kubos2010

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 18/01/09Posts: 15

Opa, esse script ele conta quantos monstros um jogador matou, claro que os monstros adicionados no script.

 

veja se pode ajudar você.

 

Créditos pirl0

 

data/creaturescripts/scripts/ criar arquivo >>> monsters.lua

  function onKill(cid, target)
-- Config --
local storage = 666 -- Storage value of the script.
local script =
{
name = getCreatureName(target), -- Do not edit.
how_check = getPlayerStorageValue(cid,999), -- Do not edit.
killed = getPlayerStorageValue(cid,storage), -- Do not edit.
skull_check = getCreatureSkullType(target) -- Do not edit.
}
local how = 3 -- How many monsters need to get reput point.
local rep_for_monster = 1 -- How many reputation give for kill monster.
local rep_for_player = 5 -- How many reputation give for kill player without skull.
local rep_for_whiteskull = 10 -- How many reputation give for kill player with white skull.
local rep_for_redskull = 15 -- How many reputation give for kill player with red skull.
local rep_for_blackskull = 20 -- How many reputation give for kill player with black skull.
local points = script.killed + 1
local msg = "You have now ".. points .." points."
local msg_monster = "Congratulations, you have slained ".. how .." monsters and you gained ".. rep_for_monster.." reputation point." -- Standard message for killing monster you can edit this.
local msg_player = "Congratulations, you have killed a ".. script.name .." and you gained ".. rep_for_player .." reputation points." -- Standard message for killing player without skull you can edit this.
local msg_white = "Congratulations, you have killed a ".. script.name .." and you gained ".. rep_for_whiteskull .." reputation points." -- Standard message for killing player with white skull you can edit this.
local msg_red = "Congratulations, you have killed a ".. script.name .." and you gained ".. rep_for_redskull .." reputation points." -- Standard message for killing player with red skull you can edit this.
local msg_black = "Congratulations, you have killed a ".. script.name .." and you gained ".. rep_for_blackskull .." reputation points." -- Standard message for killing player with black skull you can edit this.

-- Script --
if(getPlayerStorageValue(cid,999) >= how -1) then
			setPlayerStorageValue(cid, storage,script.killed + rep_for_monster)
			doPlayerSendTextMessage(cid,22,msg_monster)
			doPlayerSendTextMessage(cid,23,msg)
			setPlayerStorageValue(cid, 999,0)
			return TRUE
elseif(isMonster(target) == TRUE) then
			setPlayerStorageValue(cid, 999,script.how_check + 1)
			return TRUE
elseif(isPlayer(target) == TRUE) then
			setPlayerStorageValue(cid, storage,script.killed + rep_for_player)
			doPlayerSendTextMessage(cid,22,msg_player)
			doPlayerSendTextMessage(cid,23,msg)
			return TRUE
elseif(isPlayer(target) == TRUE) and skull_check == 3 then
			setPlayerStorageValue(cid, storage,script.killed + rep_for_whiteskull)
			doPlayerSendTextMessage(cid,22,msg_white)
			doPlayerSendTextMessage(cid,23,msg)
			return TRUE
elseif(isPlayer(target) == TRUE) and skull_check == 4 then
			setPlayerStorageValue(cid, storage,script.killed + rep_for_redskull)
			doPlayerSendTextMessage(cid,22,msg_red)
			doPlayerSendTextMessage(cid,23,msg)
			return TRUE
elseif(isPlayer(target) == TRUE) and skull_check == 5 then
			setPlayerStorageValue(cid, storage,script.killed + rep_for_blackskull)
			doPlayerSendTextMessage(cid,22,msg_black)
			doPlayerSendTextMessage(cid,23,msg)
			return TRUE
	end
end

 

creaturescripts.xml

<event type="kill" name="ReputationFromMonsters" event="script" value="reputation from monsters.lua"/>

login.lua

registerCreatureEvent(cid, "ReputationFromMonsters")

 

Sistema de reoutação:

data/talkactions/scripts criar aquivo >>> getrep.lua

function onSay(cid, words, param, channel)

	-- Config --

	storage = 666
	local reputation = getPlayerStorageValue(cid,storage)

	-- Script --

	if reputation == 1 or reputation == 0 then
			doPlayerSendCancel(cid, "You have ".. reputation .." reputation point.")
	else
			doPlayerSendCancel(cid, "You have ".. reputation .." reputation points.")
	end
	return TRUE -- Here
end

 

talkactions.xml

<talkaction words="!reputation" hide="yes" event="script" value="getrep.lua"/>
<talkaction words="/reputation" hide="yes" event="script" value="getrep.lua"/>

 

Ainda o cara fez sistema para site, olha ae:

 

characters.php na linha 99 troque isso

$main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD>Created:</TD><TD>'.date("j F Y, g:i a", $player->getCreated()).'</TD></TR>';

 

por isso

if($config['site']['show_reputation'])
		{
				$id = $player->getCustomField("id");
			if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++;
				$main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD WIDTH=10%>Reputation:</TD>';
					 $rep = $SQL->query('SELECT `value` FROM `player_storage` WHERE `player_id` = '.$id.' and `key` = '.$config['site']['show_reputation_storage'].';')->fetch();
				if($id >= 0) {
				$main_content .= '<TD><B>'.$rep[value].'</B></TD></TR>';

 

config.php

$config['site']['show_reputation_storage'] = 666;// the storage of reputation
$config['site']['show_reputation'] = 1;// show 1 = yes, 0 = no

rockstar96

Around the world
avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 01/07/09Posts: 216

data/movements/scripts crie o arquivo timeroom.lua e coloque isto:

function onStepIn(cid, item, pos)
local config = {
	newPos = {x=?, y=?, z=?},
	effect = 13,
	timeToLeave = 60 * 60 * 1000,
	storage = 53550,
}
if isPlayer(cid) then
	if getPlayerStorageValue(cid, config.storage) <= 0 then
		addEvent(doTeleportThing, config.timeToLeave, cid, config.newPos)
		addEvent(doSendMagicEffect, config.timeToLeave, config.newPos, config.effect)
		addEvent(doPlayerSetStorageValue, config.timeToLeave, cid, config.storage, 0)
		doPlayerSetStorageValue(cid, config.storage, 1)
	end
end
return true
end

 

data/movements/movevents.xml:

<movevent type="StepIn" event="script" value="timeroom.lua"/>

Last Seeker

Membro
avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 29/04/09Posts: 136
farofafa se sua dúvida foi sanada, peça aos moderadores que fechem o tóico.
Att,
Last Seeker.




Meus Avatares