NY

New Repel System

Por nyuchiha, 12 de out. de 2011 em Actions e Talkactions

script
24
7.6k
nyuchihaN
12 de outubro de 2011 às 04:28

Ola a todos, venho lhes trazer um script criado por mim recentemente.



Quem ja jogou Pokemon de GB,GBA etc sabe qual a função do Repel e o quanto ele é importante.



O Script é divido em 2 partes, O Repel ( Que é uma potion ) e um script de Movements que vou explicar a função logo abaixo.



Algumas informações sobre como ele funciona.



<~~ Se o Player não estiver sobre o efeito do Repel ~~>

A Parte do Movements é executada toda vez que um player passa por cima de um dos tiles registrado no script.

Isso executara uma função Random de 1, 80 e se der 80 invocara um Pokemon.

O elemento do Pokemon depende do tile em que pisou, alem do Pokemon a ser invocado tbm ser Random.



<~~ Se o Player estiver sobre o efeito do Repel ~~>

Nenhum Pokemon sera invocado ao passar em cima do tile.

O player recebera informações de quantos passos lhe resta para acabar o efeito do Repel.



<~~ O Repel ~~>

Basicamente soh serve para adicionar a storage.





Então vamos la :

.

<~~ Repel ~~>



Actions/Scripts/Repel.lua

function onUse(cid, item, frompos, item2, topos)

       if item2.uid ~= cid then
               return doPlayerSendCancel(cid, "You can use repel only on you!") 
       end

       if getPlayerStorageValue(cid, 512110) >= 0 then
               return doPlayerSendCancel(cid, "You're still on the effect of repel!")
       end

       setPlayerStorageValue(cid, 512110, 0)
       doSendMagicEffect(frompos, 12)
       doSendAnimatedText(frompos, "REPEL!", 180)
end

 

Actions.xml

<action itemid=" ID DA POTION QUE DESEJA " event="script" value="repel.lua"/>

 

 

 

<~~ Parte do Movements ~~>



Movements/Scripts/Respaw.lua

local GRAMS = {  
[1] = {"Victreebel s"},
[2] = {"Weepinbell s"},
[3] = {"Bulbasaur s"},
[4] = {"Ivysaur s"},
[5] = {"Venusaur s"},
[6] = {"Tangela s"},
[7] = {"Gloom s"},
[8] = {"Caterpie s"},
[9] = {"Metapod s"},
[10] = {"Butterfree s"},
[11] = {"Weedle s"},
[12] = {"Kakuna s"},
[13] = {"Beedrill s"}
}  

local STONES = {  
[1] = {"Geodude s"},
[2] = {"Graveler s"},
[3] = {"Rhyhorn s"},
[4] = {"Onix s"},
[5] = {"Golem s"},
[6] = {"Rhydon s"}
}  

local storage = 512110
local steps = 100



function onStepOut(cid, item, position, lastPosition, fromPosition, toPosition, actor)
if not isPlayer(cid) then
return true
end



stepleft = getPlayerStorageValue(cid,storage)
left = steps - stepleft
if stepleft <= steps and stepleft >= 0 then
setPlayerStorageValue(cid,storage,stepleft+1)
       doPlayerSendTextMessage(cid,27, "You have " .. left .. " steps!." )
elseif stepleft >= steps then
setPlayerStorageValue(cid,storage,-1)
       doPlayerSendTextMessage(cid,27, "The effect of elixir ended!." )
return true
end

if getPlayerStorageValue(cid, 512110) < 0 then
Randow = math.random(1, 80)
if Randow == 80 then

-- GRAMS TILE
       if isInArray({'4536', '4534', '4531', '4530', '4553', '4526', '4532'}, getTileThingByPos(fromPosition).itemid) then
       doSendMagicEffect(fromPosition, 173)
       r = math.random(1, #GRAMS)
       doCreateMonster(GRAMS[r][1], fromPosition)
       doPlayerSendTextMessage(cid,27, "A "..GRAMS[r][1].." has just appeared!." )

-- STONES TILE
elseif isInArray({'4575', '4570', '4578', '4576', '4572', '4573', '4577'}, getTileThingByPos(fromPosition).itemid) then
       doSendMagicEffect(fromPosition, 173)
       r = math.random(1, #STONES)
       doCreateMonster(STONES[r][1], fromPosition)
       doPlayerSendTextMessage(cid,27, "A "..STONES[r][1].." has just appeared!." )
end
end
end
return true
end

 

Movements.xml

<movevent type="StepOut" <movevent type="StepOut" itemid="103;4536;4534;4531;4530;4553;4526;4532;4575;4570;4578;4576;4572;4573;4577" event="script" value="respaw.lua"/>



Um Video para ficar + facil de entender a função dele...



Editado Outubro 14 por DeathAngels

DenuvoD
12 de outubro de 2011 às 08:29

Aêe death vs ée foda ótimo scripter bem útil

:D

ainda naum testei mais parece está 100% REP+

e obg aêe sempre ajudando a galera inclusive a mim :D

viktor2005V
12 de outubro de 2011 às 09:12

Mano vc , bruno,alls,zika sao tudoooooo foda'-' sabe d+ mecher nisso...Eu tentei fazer isso o script deu errado '-'Parabens pelo script D=

MulizeuM
12 de outubro de 2011 às 09:50

Boa death bom sistema..inovador..poderia colocar ate 1 video demonstrativo para as pessoas conhecerem melhor esse sistema!

EskyloE
12 de outubro de 2011 às 10:41

 

function onUse(cid, item, frompos, item2, topos)

if not isPlayer(item2.uid) then
	return doPlayerSendCancel(cid, "You can use repel on you!") -- <-- essa frase ta bem ruim, vc pois p checar se é player, se o cara tentar usar nele mesmo, vai dar certo pq ele é player, a frase vai aparecer quando ele usar a pot em algum pokemon, entao mude a frase p sei la, "vc n pode usar em pokes"
end

if getPlayerStorageValue(cid, 512110) >= 0 then
	return doPlayerSendCancel(cid, "You're still on the effect of repel!")
end

if isPlayer(item2.uid) then -- <-- if desnecessario, já checou se é player antes
	setPlayerStorageValue(cid, 512110, 0)
	doSendMagicEffect(getPlayerPosition(cid), 12)-- <-- esse aki se o cara usar em outro player o efeito vai sair nele e n no outro player entao sugiro trocar o getplayerpo... por frompos
	doSendAnimatedText(getThingPos(item2.uid), "REPEL!", 180) -- <-- troque getThingPos(item2.uid) por frompos, pois p isso q existe o frompos
end -- <-- se remnoveu o if q falei ali antes, tem q remover o end
end

 

 

fiz uns comentarios no script /\

 

mass se eu entendi errado, vc quis fazer p poder usar só em vc msm, se for isso, o certo seria:

 

 

 

function onUse(cid, item, frompos, item2, topos)

if item2.uid ~= cid then
	return doPlayerSendCancel(cid, "You can use repel ONLY on you!") 
end

if getPlayerStorageValue(cid, 512110) >= 0 then
	return doPlayerSendCancel(cid, "You're still on the effect of repel!")
end

setPlayerStorageValue(cid, 512110, 0)
doSendMagicEffect(frompos, 12)
doSendAnimatedText(frompos, "REPEL!", 180)
end

 

Editado Outubro 12 por Eskylo

nyuchihaN
12 de outubro de 2011 às 12:40

Vlw por modificar a potion =), realmente nem pensei que do jeito que coloquei daria para usar em outro player.

E sobre o efeito da potion, O Script do mevements que si encarrega de retirar a storage depois de 100 passo !!

 

o numero de passos vc edita no script em movements em

local steps = 100

 

Testei aqui e ta 100%

Editado Outubro 12 por DeathAngels

EskyloE
12 de outubro de 2011 às 12:52

 

Vlw por modificar a potion =), realmente nem pensei que do jeito que coloquei daria para usar em outro player.

E sobre o efeito da potion, O Script do mevements que si encarrega de retirar a storage depois de 100 passo !!

 

o numero de passos vc edita no script em movements em

local steps = 100

 

Testei aqui e ta 100%

 

 

falhei kkk, n olhei os outros scripts

SkyTimeS
12 de outubro de 2011 às 12:53

Mais uma vez inovando, dá uma olhada lá na sua página de visitas :s. repinho ae

bepokemonB
12 de outubro de 2011 às 14:49

O Repel poderia ser um exhaustion.

config {
[id] = {30}, -- repel
[id2] = {60}, -- super repel
[id3] = {120} -- max repel
}
if getPlayerStorageValue(cid, "underquest") ~= -1 then
doPlayerSendTextMessage(cid, 18, "You can\'t use a repel while you are doing a quest.")
return FALSE
end

exhaustion.set(cid, "repel", config[item.itemid])

 

E depois colocar um CreatureScript para que quando um monstro atacasse alguem com o Exhaustion Repel nao fosse possivel?

Ai funcionaria pra tudo.

function onAttack(cid, target)
if exhaustion.get(target, "repel") then
return FALSE
end
return TRUE
end

 

Depois seria soh configurar pra nao poder usar em quests, talvez ..

function onStepIn(cid, fromPosition)
if exhaustion.get(cid, "repel") then
exhaustion.set(cid, "repel", -1)
setPlayerStorageValue(cid, "underquest", 1)
doPlayerSendTextMessage(cid, 18, "Your repel status has been removed.")
end
return TRUE
end

Editado Outubro 12 por Byerne

nyuchihaN
12 de outubro de 2011 às 15:38

@Byerne

E depois colocar um CreatureScript para que quando um monstro atacasse alguem com o Exhaustion Repel nao fosse possivel?
Ai funcionaria pra tudo

Cheguei a fazer isso antes de postar, soh que ocasiono instabilidade no meu servidor, entao resolvi deixar do jeito que esta !!



O exhaustion é por tempo n é? Uso storage para checar e retirar o numero de passos..

Editado Outubro 12 por DeathAngels

BrunooAngelB
12 de outubro de 2011 às 17:20

Muito bom, ainda mais pra mim que quero deixar meu ot o mais parecido possivel do gba e o mais longe possivel do SvKe/PxG!

nyuchihaN
12 de outubro de 2011 às 17:40

Obrigado a Todos o.O ah e Bruno -> É nois que voa anjão !! xD

12 de outubro de 2011 às 20:21

haha, cada vez melhor em fi !

 

ta uma atualizada la no pokemon happy pfpfpf!

2402952
12 de outubro de 2011 às 22:40

Assim.. eu não entendi muito bem isso de Repel não.. tu não poderia explicar mais detalhadamente esse script não? através de fotos um ou vídeo.. Seria muito útil !! Ty

nyuchihaN
13 de outubro de 2011 às 03:33

Vou postar um video assim que der tempo.

Dei uma arrumada no script, ao passar por cima de 2 tipos de tipe de rock, invocava pokemons do tipo planta !!





Edit



Video Adicionado, como podem ver a hora do meu post ja é bem tardeeee.

O pior é q pisei, matei, estuprei o português HUSAHUSAUHSAUH

mais 2 % desses erros foi por causa do sono kkkkk

Editado Outubro 13 por DeathAngels