Pvp System Control

  • 1
  • 2

SkyDangerous

Deus Kalec
avatar
Lorde
Lorde

INFOS

Grupo: LordeRegistrado: 17/01/09Posts: 2098Char no Tibia: Adra Sata

Função:

Você pode alterar o seu tipo de pvp, utilizando o comando !pvp on, para conseguirem te atacar e !pvp off para não te atacarem

 

SQL QUERY

ALTER TABLE `players` ADD `pvpmode` BOOL NOT NULL ;

 

 

em data/lib/function.lua

function getPlayerPVPMode(uid)
 local result = db.getResult("SELECT `pvpmode` FROM `players` WHERE `name` = '" .. getPlayerName(uid) .. "' LIMIT 1;")
  if(result:getID() ~= -1) then
local mode = result:getDataInt("pvpmode")
return mode
  else
return FALSE
  end
  result:free()
end

function setPlayerPVPMode(uid, value)
 if (value >= 0 and value <= 1) then
  if isPlayer(uid) == TRUE then
db.executeQuery("UPDATE `players` SET `pvpmode` = " .. value .. " WHERE `name`='" .. getPlayerName(uid) .. "' LIMIT 1;")
return TRUE
  else
return FALSE
  end
 else
  return FALSE
 end
end

 

 

data/talkactions/scripts/pvpmode.lua

function onSay(cid, words, param)
   local mode = getPlayerPVPMode(cid)
   if mode == 1 then
       setMode = 0
   else
       setMode = 1
   end
   if isPlayerPzLocked(cid) == FALSE and getCreatureSkullType(cid) == SKULL_NONE then
       setPlayerPVPMode(cid, setMode)
       if setMode == 1 then
           doPlayerSendTextMessage(cid, 19, "Now you set pvp mode to on!")
       else
           doPlayerSendTextMessage(cid, 19, "Now you set pvp mode to off!")
       end
   else
       doPlayerSendCancel(cid, "You cannot set pvp mode when you are agressive.")
   end
   return TRUE
end

 

talkactions.xml

<talkaction log="no" words="!pvp" access="0" event="script" value="pvpmode.lua">

 

login.lua

registerCreatureEvent(cid, "PVPMode")

 

data/creaturescripts/scripts/pvpProtection.lua

function onCombat(cid, target)
   if (getPlayerPVPMode(cid) == 1 and getPlayerPVPMode(target) == 1) or isPlayer(target) == FALSE then
       return TRUE
   else
       doPlayerSendCancel(cid, "You cannot attack players which pvp mode is off.")
       return FALSE
   end
end

 

creaturescripts.xml

<event type="combat" name="PVPMode" event="script" value="pvpProtection.lua">

</event></talkaction>

 

Credits

Gevox

Me segui lá (:

 

b906.png

http://ageofwar.servegame.com/

IP: ageofwar.servegame.com

TIBIA: 10.78

GLOBAL PERFECT CUSTOM

fredpadua

Eu sou o Rei ?! ...
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 13/10/11Posts: 411

Sky, esse comando pode ser usado toda hora ?

Tem como por um delay , e tambem só poderia ativar sem battle?

semefeito.png



 

↓ Gosta de mim ? Use a FanBar ↓

 

anigif2mo.gif

SkyDangerous

Deus Kalec
avatar
Lorde
Lorde

INFOS

Grupo: LordeRegistrado: 17/01/09Posts: 2098Char no Tibia: Adra Sata

Sky, esse comando pode ser usado toda hora ?

Tem como por um delay , e tambem só poderia ativar sem battle?

 

é isso que eu vou por depois.

 

kk', pra nao ficar toda hora trocando.

Me segui lá (:

 

b906.png

http://ageofwar.servegame.com/

IP: ageofwar.servegame.com

TIBIA: 10.78

GLOBAL PERFECT CUSTOM

Deadpool

!!!
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 25/10/11Posts: 2175Gênero: MasculinoChar no Tibia: Sociopata

e.e Muito Bom #@SkyDangerous :D

Não respondo PMs solicitando suporte. Já existem seções no fórum para isto.

 

 

 

 

DICA

Utilize botão @UP, no início de seu tópico, para atualizar o destaque de seu tópico em "Tópicos Recentes" na index, fará com que mais pessoas o vejam.

MaXwEllDeN

string.reverse("adiV a arohaD")
avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 18/10/10Posts: 246Char no Tibia: Elite Pamcadaum

Fico bacana Sky, Parabéns REP +;

 

 

Tipo, não usa FALSE nem TRUE cara, usa false e true, FALSE e TRUE são macros, não booleanos;

 

 

Poe ae um event onAttack também pra não poder atacar o cara, ai só vai previnir que o cara não tome o dano, e tipo a msg você poe só no onAttack, no onCombat não precisa porque se não vai ficar tipo, toda hora que o cara tentar hitar mandando a mensagem, mesmo se tiver sido um ataque em área!

eq9qh0.png

Vodkart

Sumus Validus
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 21/05/10Posts: 3406Gênero: Masculino

fico bom, mas de vez de fazer por db, daria pra fazer por storage...

bossisg.png

SkyDangerous

Deus Kalec
avatar
Lorde
Lorde

INFOS

Grupo: LordeRegistrado: 17/01/09Posts: 2098Char no Tibia: Adra Sata

e.e Muito Bom #@SkyDangerous :D

 

Vlw :p

 

 

Fico bacana Sky, Parabéns REP +;

 

 

Tipo, não usa FALSE nem TRUE cara, usa false e true, FALSE e TRUE são macros, não booleanos;

 

 

Poe ae um event onAttack também pra não poder atacar o cara, ai só vai previnir que o cara não tome o dano, e tipo a msg você poe só no onAttack, no onCombat não precisa porque se não vai ficar tipo, toda hora que o cara tentar hitar mandando a mensagem, mesmo se tiver sido um ataque em área!

 

Ok, irei modificar.

Vlw

 

fico bom, mas de vez de fazer por db, daria pra fazer por storage...

 

Sim, eu já fiz por storage.. é bem parecido ;D

Me segui lá (:

 

b906.png

http://ageofwar.servegame.com/

IP: ageofwar.servegame.com

TIBIA: 10.78

GLOBAL PERFECT CUSTOM

KUNGLOW

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 19/06/11Posts: 195Char no Tibia: Desconhecido

Teria como fazer pra um npc ativar e desativar o PVP? e assim que o player ativasse o PVP ele ganha uma skull amarela?

 

To com um erro aqui ao adicionar o código no SQL

 

Error while executing query: Cannot add a NOT NULL column with default value NULL

"Sua vida não é uma coincidência, é um reflexo do amor de Deus por ti..."

Vodkart

Sumus Validus
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 21/05/10Posts: 3406Gênero: Masculino

Se eu não me engano tem um bug, porque os dois jogadores tem que ta usando pra não poderem se atacar, ou seja se JOÃO tiver no modo seguro e MARIA não, MARIA ainda vai poder atacar o JOÃO... usa assim:

 

query:

 

ALTER TABLE `players` ADD `pvpmode` INT NOT NULL DEFAULT '0'

 

e script fiz em MODS

 

PvpMode.xml

<?xml version="1.0" encoding="UTF-8"?>  
<mod name="Pvp Mode" version="1.0" author="Gevox" contact="xtibia.com" enabled="yes">  
<config name="pvpmode_func"><![CDATA[
function getPlayerPVPMode(cid)
local check = db.getResult("SELECT `pvpmode` FROM `players` WHERE `id` = " .. getPlayerGUID(cid) .. " LIMIT 1")
return check:getDataInt("pvpmode") <= 0 and 0 or check:getDataInt("pvpmode")
end
function setPlayerPVPMode(cid, value)
db.executeQuery("UPDATE `players` SET `pvpmode` = "..value.." WHERE `id` = "..getPlayerGUID(cid))
end
]]></config>
<talkaction words="/pvp;!pvp" event="buffer"><![CDATA[
domodlib('pvpmode_func')
if isPlayerPzLocked(cid) == FALSE and getCreatureSkullType(cid) == SKULL_NONE then
	setPlayerPVPMode(cid, getPlayerPVPMode(cid) == 0 and 1 or 0)
		doPlayerSendTextMessage(cid, 19, "Now you set pvp mode to "..(getPlayerPVPMode(cid) == 0 and "off" or "on").."!")
else
	doPlayerSendCancel(cid, "You cannot set pvp mode when you are agressive.")
end
return true
]]></talkaction>
<event type="login" name="PvpModeRegister" event="script"><![CDATA[
function onLogin(cid)
registerCreatureEvent(cid, "pvpProtection")
return true
end]]></event>	  
<event type="combat" name="pvpProtection" event="script"><![CDATA[
domodlib('pvpmode_func')
if isPlayer(cid) and isPlayer(target) then
if getPlayerPVPMode(cid) == 1 or getPlayerPVPMode(target) == 1 then
doPlayerSendCancel(cid, "You may not attack this player.")
return false
end
end
return true
]]></event>
</mod>

 

 

 

obs: ainda prefiro fazer por storage

bossisg.png

Nathan96

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 25/03/12Posts: 109Char no Tibia: Kimera DebochadoOo

O nosso querido jhon992 fez um pra min com stogare como disse o Vodkart eu achei mais pratico.

Ti Ajudei ? então Rep +

KUNGLOW

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 19/06/11Posts: 195Char no Tibia: Desconhecido

Funcinou tem como assim que o player ativar o PVP ele ganhar uma Yellow Skull?

"Sua vida não é uma coincidência, é um reflexo do amor de Deus por ti..."

Vodkart

Sumus Validus
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 21/05/10Posts: 3406Gênero: Masculino

Funcinou tem como assim que o player ativar o PVP ele ganhar uma Yellow Skull?

 

<?xml version="1.0" encoding="UTF-8"?>  
<mod name="Pvp Mode" version="1.0" author="Gevox" contact="xtibia.com" enabled="yes">  
<config name="pvpmode_func"><![CDATA[
function getPlayerPVPMode(cid)
local check = db.getResult("SELECT `pvpmode` FROM `players` WHERE `id` = " .. getPlayerGUID(cid) .. " LIMIT 1")
return check:getDataInt("pvpmode") <= 0 and 0 or check:getDataInt("pvpmode")
end
function setPlayerPVPMode(cid, value)
db.executeQuery("UPDATE `players` SET `pvpmode` = "..value.." WHERE `id` = "..getPlayerGUID(cid))
end
]]></config>
<talkaction words="/pvp;!pvp" event="buffer"><![CDATA[
domodlib('pvpmode_func')
if isPlayerPzLocked(cid) == FALSE and isInArray({SKULL_NONE,SKULL_YELLOW}, getCreatureSkullType(cid)) then
	setPlayerPVPMode(cid, getPlayerPVPMode(cid) == 0 and 1 or 0)
doCreatureSetSkullType(cid, getPlayerPVPMode(cid) == 1 and 1 or 0)
		doPlayerSendTextMessage(cid, 19, "Now you set pvp mode to "..(getPlayerPVPMode(cid) == 0 and "off" or "on").."!")
else
	doPlayerSendCancel(cid, "You cannot set pvp mode when you are agressive.")
end
return true
]]></talkaction>
<event type="login" name="PvpModeRegister" event="script"><![CDATA[
domodlib('pvpmode_func')
function onLogin(cid)
registerCreatureEvent(cid, "pvpProtection")
if getPlayerPVPMode(cid) == 1 then doCreatureSetSkullType(cid, 1) end
return true
end]]></event>	  
<event type="combat" name="pvpProtection" event="script"><![CDATA[
domodlib('pvpmode_func')
if isPlayer(cid) and isPlayer(target) then
if getPlayerPVPMode(cid) == 1 or getPlayerPVPMode(target) == 1 then
doPlayerSendCancel(cid, "You may not attack this player.")
return false
end
end
return true
]]></event>
</mod>

bossisg.png

KUNGLOW

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 19/06/11Posts: 195Char no Tibia: Desconhecido

Outra pergunta tem como fazer isso so que por NPC?

"Sua vida não é uma coincidência, é um reflexo do amor de Deus por ti..."

Vodkart

Sumus Validus
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 21/05/10Posts: 3406Gênero: Masculino

óbvio que tem, você diz trocar a talk por npc né.

bossisg.png

SweetEvul

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 09/06/12Posts: 31Char no Tibia: Soldadin Do Inferno

Muito interessante , mas se o player pode utilizar o comando com battle ficaria bem feio . rs

TutuGIF.gif
  • 1
  • 2