ON
creatureevent

Oneshot's Death Note

Por Oneshot, 07 de jun. de 2012 em Globalevents e Spells

script
12
2.6k
OneshotO
07 de junho de 2012 às 09:09

Faaala, pessoar.

 

Há um tempo vi em uma comunidade gringa um script super criativo que se baseava no anime Death Note. Através da função onTextEdit(cid, item, newText), o scripter criou um livro que matava jogadores cujo nome fosse escrito.

 

Mas era um código simples e limitado, você só podia matar um jogador por vez e o livro se tornava inútil depois disso.

 

Então resolvi criar meu próprio Death Note com alguns bônus.

 

- Você pode matar um número de jogadores configurável por vez, ou ilimitados se for CM ou mais.

- Existe um delay entre a escrita do nome e a morte do alvo de 40 segundos. (Igual o anime)

- Depois de escritos os nomes, o jogador que usou o Death Note, fica impossibilitado de usar denovo por 30 minutos. (Sem exhaust para CMs ou mais)

- Jogadores com red skull ou black skull não podem ser mortos pelo Death Note.

- O livro não se inutiliza.

 

Bom, vamos começar?

 

 

1 - Vá em seus items.xml e troque os atributos dos seguintes itens:

 

<item id="1972" article="a" name="death note">
	<attribute key="weight" value="1000">
	<attribute key="writeable" value="1">
	<attribute key="maxTextLen" value="512">
	<attribute key="writeOnceItemId" value="1955">
   </item>

 

<item id="1955" article="a" name="death note">
	<attribute key="weight" value="1000">
   </item>

 

2 - Vá em creaturescripts/scripts, crie um arquivo chamado deathnote.lua e cole o seguinte script abaixo:

 

local deathnote = {
max = 3,
delay = 40,
interval = 30 * 60

}

local function DeathNote(param)
if isCreature(param.target) then
	local position, damage = getThingPosition(param.target), getCreatureMaxHealth(param.target)
	return doAreaCombatHealth(0, COMBAT_DEATHDAMAGE, getThingPosition(param.target), 0, -(damage * 10), -(damage * 10), CONST_ME_MORTAREA)
end
end

function onTextEdit(cid, item, newText)
if item.itemid == 1972 then
	newText = string.explode(newText, "\n")
	if #newText > deathnote.max and getPlayerGroupId(cid) == 1 then
		doPlayerSendCancel(cid, "Sorry, but you cannot kill more than ".. deathnote.max .." players.")
	else
		if os.time() > getPlayerStorageValue(cid, 101011) or getPlayerGroupId(cid) > 3 then
			for _, name in ipairs(newText) do
				local target = getPlayerByNameWildcard(name)
				if target then
					if getCreatureSkullType(cid) >= 4 then
						doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry, but ".. name .." cannot die by the power of Death Note.")
					else
						doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, name .." will die in ".. deathnote.delay .." seconds.")
						setPlayerStorageValue(cid, 101011, os.time() + deathnote.interval)
						addEvent(DeathNote, deathnote.delay * 1000, {target = target})
					end
				else
					doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry, but ".. name .." isn't in this world.")
				end
			end
		else
			doPlayerSendCancel(cid, "You are exhausted to use Death Note.")
		end
	end
	return false
end
return true
end

 

3 - Ainda em creaturescripts/scripts, abra o arquivo login.lua e adicione a seguinte linha:

 

registerCreatureEvent(cid, "DeathNote")

 

Antes de:

 

return true

 

4 - Abra o arquivo creaturescripts.xml e adicione a seguinte chave.

 

<event type="textedit" name="DeathNote" event="script" value="deathnote.lua"/>

 


 

Para usar o Death Note depois de instalado o script, basta dar Use no livro e escrever um nome em cada linha dando Enter depois. Por exemplo:

 

pess0a

Lordfire

Vodkart

Beeki

 

E por aí vai.

Editado Junho 25 por Oneshot

caoticC
07 de junho de 2012 às 11:34

Oneshot muito boa ideia.

Gostei muito de jeito que uso o evento.

fagundes14F
07 de junho de 2012 às 11:45

@Oneshot

Teria Como Vc Adaptar Esse Script Para 8.0?

Parabens Otimo Script =D

 

REP ++

Editado Junho 7 por Fagundes14

VodkartV
07 de junho de 2012 às 15:23

bem estruturado seu código, está demais, outra coisa seu bandido... pq ta me matando? oh shit!

VincV
07 de junho de 2012 às 16:53

@oneshot

2 coisas

aki m deveria ser "and"

if #newText > deathnote.max or getPlayerGroupId(cid) < 5 then 

 

e coloca a damage baseada no hp + mana(sorcer e druid com utamo poderiam sobreviver,ja que a relção é 5 hp por 30 mana por lv logo a mana é maior que 4 veses o hp)

OneshotO
07 de junho de 2012 às 19:26

Não, não deveria ser and. E não havia pensado no caso do utamo vita.

VincV
07 de junho de 2012 às 22:18

mais dai so quem tem acesso 5 ou mais pode usa...

porque se usa "or" se uma for verdadeira ele executa,logo o que ta no else n executa,a n ser que as duas sejam false ou seja só god usam.

LordfireL
07 de junho de 2012 às 22:28

Meh, coitado de mim.

 

Muito fera esse script, não curto o anime mas achei muuuuuuuuito legal essa ideia. Meio abusivo né, simplesmente mata o cara, mas ainda assim é divertido uhauhahua

Bom script, continue fazendo essas maravilhas :p

OneshotO
07 de junho de 2012 às 22:46

É, acho que cometi um erro no caso desse or mesmo. :p

 

O código já foi consertado.

 

Att.

VildenV
08 de junho de 2012 às 01:54

A ideia é muito legal, script muito boa, rep+

SubwatS
08 de junho de 2012 às 20:50

está de parabens cara, script muito bom, bem planejado, parabens ganhou meu rep.

 

ops

Você já atingiu seu limite de reputações positivas para hoje
2 semanas depois...
21 de junho de 2012 às 03:10

cara não esta dando para escrever no livro arruma ai