Ir para conteúdo

New Repel System


nyuchiha

Posts Recomendados

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 por DeathAngels
Link para o comentário
Compartilhar em outros sites

 

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 por Eskylo
Link para o comentário
Compartilhar em outros sites

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 por DeathAngels
Link para o comentário
Compartilhar em outros sites

 

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

Link para o comentário
Compartilhar em outros sites

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 por Byerne
Link para o comentário
Compartilhar em outros sites

@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 por DeathAngels
Link para o comentário
Compartilhar em outros sites

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 por DeathAngels
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...