Ir para conteúdo
  • 0

Comando pvp on


cs007

Pergunta

Bom pessoal, no meu otserv tenho visto muito problema com players fazendo outros pegar red por está de bot, teria como criar um comando !pvp on e !pvp off

 

Com esse comando ativado o player pode ser morto mas não pode atacar players mesmo com spells de área.

 

 

Abraço e obrigado.

Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 0

 

Talvez que seu servidor já tenha. Tente:

/pvp optional
/pvp open

No caso não é para mudar o tipo de pvp do ot lek, é para o player usar quando for upar, se eu usar isso mudo do ot todo. =/

Link para o comentário
Compartilhar em outros sites

  • 0

data/talkactions/scripts

local msg = "Agora seu sistema PvP está %s."
function onSay(cid, words, param)
local _table = {
    ["on"] = {"ativado", 1},
    ["off"] = {"desativado", 0},
}
    if _table[param:lower()] then
        local mode = _table[param:lower()]
        setPlayerStorageValue(cid, 91821, mode[2])
        doPlayerSendTextMessage(cid, 27, msg:format(mode[1]))
    end
    return true
end

data/creaturescripts/scripts

 

--[[
    Tags:
    <event type="statschange" name="PvPStats" event="script" value="nome do arquivo.lua"/>
    <event type="target" name="PvPTarget" event="script" value="nome do arquivo.lua"/> 
    <event type="login" name="PvPLogin" event="script" value="nome do arquivo.lua"/> 
]]--
 
function onTarget(cid, target)
    if isPlayer(target) and isPlayer(cid) then
        if getPlayerStorageValue(cid, 91821) < 1 then
            doPlayerSendCancel(cid, "Você está com o modo PvP desligado. Se quiser atacar outros jogadores, ative-o.")
            return false
        end
    end
    return true
end
 
function onStatsChange(cid, attacker, type, combat, value)
    if isPlayer(cid) and isPlayer(attacker) and type == STATSCHANGE_HEALTHLOSS then
        if getPlayerStorageValue(attacker, 91821) < 1 then
            doPlayerSendCancel(attacker, "Você está com o modo PvP desligado. Se quiser atacar outros jogadores, ative-o.")
            return false
        end
    end
    return true
end
 
function onLogin(cid)
    registerCreatureEvent(cid, "PvPTarget")
    registerCreatureEvent(cid, "PvPStats")
    return true
end
Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 0

Zipter esse script é util pro meu server tb,porém eu n entendi nada,pode me explicar melhor oq é pra fazer???

vc passou o script,mas no xml? e essa creaturescript com tags do xml,login e o script em si tudo misturado???

Link para o comentário
Compartilhar em outros sites

  • 0

A única coisa que não citei foi a tag da talkaction, que achei desnecessário criar, pois pensei que o autor seria capaz de criá-la.

E há 3 funções main juntas num mesmo código (eu optei por fazer assim para não precisar criar 3 arquivos, ao invés de apenas um). Portanto, são 3 tags. Como você pôde ver, eu informei as 3 no início do código.

E, também, como você não entendeu? Ué, cria um arquivo na pasta citada com extensão .lua, e então coloque o código lá. As tags, no arquivo .xml da respectiva pasta (talkactions - talkactions.xml/creaturescripts - creaturescripts.xml).

Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 0

 

data/talkactions/scripts

local msg = "Agora seu sistema PvP está %s."
function onSay(cid, words, param)
local _table = {
    ["on"] = {"ativado", 1},
    ["off"] = {"desativado", 0},
}
    if _table[param:lower()] then
        local mode = _table[param:lower()]
        setPlayerStorageValue(cid, 91821, mode[2])
        doPlayerSendTextMessage(cid, 27, msg:format(mode[1]))
    end
    return true
end

data/creaturescripts/scripts

--[[
    Tags:
    <event type="statschange" name="PvPStats" event="script" value="nome do arquivo.lua"/>
    <event type="target" name="PvPTarget" event="script" value="nome do arquivo.lua"/> 
    <event type="login" name="PvPLogin" event="script" value="nome do arquivo.lua"/> 
]]--
 
function onTarget(cid, target)
    if isPlayer(target) and isPlayer(cid) then
        if getPlayerStorageValue(target, 91821) < 1 or getPlayerStorageValue(cid, 91821) < 1 then
            doPlayerSendCancel(cid, "Você não pode atacar jogadores que estão com o PvP desativado.")
            return false
        end
    end
    return true
end
 
function onStatsChange(cid, attacker, type, combat, value)
    if isPlayer(cid) and isPlayer(attacker) then
        if getPlayerStorageValue(cid, 91821) < 1 or getPlayerStorageValue(attacker, 91821) < 1 then
            doPlayerSendCancel(attacker, "Você não pode atacar jogadores que estão com o PvP desativado.")
            return false
        end
    end
    return true
end
 
function onLogin(cid)
    registerCreatureEvent(cid, "PvPTarget")
    registerCreatureEvent(cid, "PvPStats")
    return true
end

 

Valeu cara, vou testar ainda hoje e já edito :D

Ainda não testei mas me tira uma dúvida por favor, no caso eu quero que o cara que esteja upando não attack outros players com spells, o que me parace que esse comando não permite o players ser atacado. Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

O jogador que desativa a opção de PvP não pode nem ser atacado, nem atacar outros jogadores.

Não tem como por para ele só não atacar os outros? Se não ele vai deixar de bot e ninguém vai matar. Se for possível é claro :D Desde já agradeço. abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Funcionou direitinho amigo, muito obrigado. Podem fechar :D


OK. Editei meu comentário logo acima com o código alterado.

 

 

@EDIT

 

Só ocorreu um problema lek, não está dando para curar. =/ tem como ver isso? Obrigado

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...