NA

Troca De Pvp E Non-Pvp

Por Nathan96, 10 de abr. de 2012 em Scripts

script
12
2.1k
Nathan96N
10 de abril de 2012 às 20:33

Protocolo 8.6

Servidor utilizado: tfs 3.6

 

Preciso de um script para que o player fique em modo no-pvp quando desejado e pvp quando desejado.

 

Exemplo:

o player digita !mudarpvp uma vez ai então ele fica em modo no-pvp livre de attacks de outros players, si ele falar novamente !mudarpvp ele voltara a ser modo pvp, podendo ser atacado novamente, isso claro com um tempo de "Exausted" que seria de 1 dia.

 

Obrigado pela atenção e espero que ajudem.

Editado Abril 10 por AnyurCT

jhon992J
10 de abril de 2012 às 20:44

Reportado, por nome irregular de tópico. Da próxima vês seja mais especifico com o nome do tópico para organização do fórum.

Nathan96N
10 de abril de 2012 às 21:23

Ok, estarei prestando mais atenção sleep.png

Gabriel CoutoG
10 de abril de 2012 às 22:41

Nome regularizado.

 

Até.

VildenV
10 de abril de 2012 às 22:47

Acho que é impossível, já que só tem a função de setar para todos. [world]

mais sempre tem um aziatico né, espera confirmações dos scripters...

 

setWorldType(PvP)

jhon992J
11 de abril de 2012 às 10:57

Vamo la. happy.png

 

Primeiro vai em data/creaturescripts/scripts, duplica um arquivo e nomeia para "pvpmode" sem as aspas e nele cole:

function onCombat(cid, target)

if (isPlayer(cid) and isPlayer(target)) then
   if getPlayerStorageValue(cid, 102059) == 1 then
       doPlayerSendTextMessage(cid, 27, "Seu status é non-pvp.")
       return FALSE
   elseif getPlayerStorageValue(target, 102059) == 1 then
       doPlayerSendTextMessage(cid, 27, "O status de seu oponente é non-pvp.")
       return FALSE
   end
end

 return TRUE
end

 

Agora em creaturescripts.xml coloque a tag:

<event type="combat" name="PvpMode" event="script" value="pvpmode.lua"/>

 

Depois vai no arquivo creaturescripts/scripts/login.lua e antes do último "return true" cole essa tag:

registerCreatureEvent(cid, "PvpMode")

 

-----------------------------------------------------------------------------------------------------------------------------------

 

Creaturescripts ta pronto, agora vamos para o talkaction de ativação.

 

Vai em data/talkactions/scripts, duplica um arquivo e nomeia para "pvp_change" sem as aspas e nele cole:

function onSay(cid, words, param, channel)

local exausted = 1 -- dias de exausted

if(exhaustion.check(cid, 34538) == TRUE) then
  if (exhaustion.get(cid, 34538) >= 60) then
  doPlayerSendCancel(cid, "Voçê só pode mudar modo após [" .. math.floor(exhaustion.get(cid, 34538) / 60 + 1) .."] minutos.")
  end
   if (exhaustion.get(cid, 34538) <= 60) then
   doPlayerSendCancel(cid, "Voçê só pode mudar modo após [" .. exhaustion.get(cid, 34538).."] segundos.")
   end
return TRUE
end

if getPlayerStorageValue(cid, 102059) == 1 then
   setPlayerStorageValue(cid, 102059, 0)
   doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Ativado Modo: PVP.")
   doSendMagicEffect(getCreaturePosition(cid), 30)    -- mudar effect se desejar
   exhaustion.set(cid, 34538, exausted * 60 * 60 * 24)
else
   setPlayerStorageValue(cid, 102059, 1)
   doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Ativado Modo: NON-PVP.")
   doSendMagicEffect(getCreaturePosition(cid), 30)    -- mudar effect se desejar
   exhaustion.set(cid, 34538, exausted * 60 * 60 * 24)
end

return true
end

 

E por último, em talkactions.xml cole a tag:

<talkaction words="!mudarpvp" event="script" value="pvp_change.lua"/>

 

--------------------------------------------------------------------------------------------------

 

Obs: nem testei, qualquer erro me fala.

Nathan96N
11 de abril de 2012 às 16:54

Muito bom só que só mais anoite que posso lhe dar seu Rep +

VildenV
11 de abril de 2012 às 23:00

Dúvida sanada, tópico será fechado.

 

Fechar.

___

Galera quando a dúvida for sanada, reportem o tópico para o mesmo ser fechado.

 

abc

HisashiitYamagutiH
11 de abril de 2012 às 23:30

Tópico movido para Pedidos Atendidos, pois o tópico foi atendido pelo Jhon e o dono do tópico falou isso.

Obs: o tópico não será fechado e não sei porque o Vilden falou que vai.

8 meses depois...
slekronS
12 de dezembro de 2012 às 01:22

como eu mudo o exausted pra 30 minutos~?

SkymagnumS
12 de dezembro de 2012 às 02:15
function onSay(cid, words, param, channel)

local exausted = 30 -- trinta minutos de exausted

if(exhaustion.check(cid, 34538) == TRUE) then
  if (exhaustion.get(cid, 34538) >= 60) then
  doPlayerSendCancel(cid, "Voçê só pode mudar modo após [" .. math.floor(exhaustion.get(cid, 34538) / 60 + 1) .."] minutos.")
  end
if (exhaustion.get(cid, 34538) <= 60) then
doPlayerSendCancel(cid, "Voçê só pode mudar modo após [" .. exhaustion.get(cid, 34538).."] segundos.")
end
return TRUE
end

if getPlayerStorageValue(cid, 102059) == 1 then
setPlayerStorageValue(cid, 102059, 0)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Ativado Modo: PVP.")
doSendMagicEffect(getCreaturePosition(cid), 30)	-- mudar effect se desejar
exhaustion.set(cid, 34538, exausted * 60 * 1000)
else
setPlayerStorageValue(cid, 102059, 1)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Ativado Modo: NON-PVP.")
doSendMagicEffect(getCreaturePosition(cid), 30)	-- mudar effect se desejar
exhaustion.set(cid, 34538, exausted * 60 * 1000)
end

return true
end

Editado Dezembro 12 por Skymagnum

slekronS
12 de dezembro de 2012 às 20:17

sky se sabe colocar alem de 15 minuts de exausted poder usar apenas sem batle?

se puder me diz awe vlw ti dopu rep++ :D