Ir para conteúdo

Tempo Em Uma Sala


farofafa

Posts Recomendados

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.

Link para o comentário
Compartilhar em outros sites

È 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:

Editado por Kubos
Link para o comentário
Compartilhar em outros sites

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.

Editado por KaKilo
Link para o comentário
Compartilhar em outros sites

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..

Link para o comentário
Compartilhar em outros sites

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?

Editado por Kubos
Link para o comentário
Compartilhar em outros sites

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.

Link para o comentário
Compartilhar em outros sites

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ê.

Link para o comentário
Compartilhar em outros sites

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.

Link para o comentário
Compartilhar em outros sites

é 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})

Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

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"/>

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...