Ir para conteúdo

Posts Recomendados

 

Iaewww! Galerinha Ekz!! Eu estava com preguiça de fazer algo grande, então resolvi criar esse code, eu olhei nos outros e vi que eram muito mal feitos, então recriei pra postar pra vocês.

 

 

 

 

 

Como funciona?

 

 

Você diz !afk on e começa a sair mensagens em cima do player dizendo "Off-line", "Afk!", "Ausente!", etc (configurável) e fica imóvel (para players não moverem o player)

 

 

Para sair do modo ausente, ande com o personagem ou diga "!afk off"

 

 

 

 

 

NEW: Agora player não pode usar comando em área pvp e nem se tiver infight!

 

 

Player quando está com evento ativo não pode ser atacado!

 

 

Agora player não pode ser empurrado!

 

 

Code testado e funcionando 100%

 

 

 

 

 

 

 

 

Como instalar?

 

 

Vá em creaturescripts/scripts/login.lua abra ele e coloque isso:

 

 

 

 

 


registerCreatureEvent(cid, "AwayFromKeyboard1")

registerCreatureEvent(cid, "AwayFromKeyboard2")

setPlayerStorageValue(cid, 3123, -1)

 

Agora, em creaturescripts/scripts/ crie um arquivo chamado AwayFromKeyboard.lua e adicione isso:

 

 

 

 

 


function onPush(cid, target)

if cid ~= target then

if getPlayerStorageValue(target, 3123) ~= -1 then

doPlayerSendCancel(cid, "Você não pode empurrar esse player!")

return false

end

end

return true

end

 

function onCombat(cid, target)

if isPlayer(target) or isPlayer(cid) then

if getPlayerStorageValue(target, 3123) ~= -1 or getPlayerStorageValue(cid, 3123) ~= -1 then

return false

end

end

return true

end

 

Agora em creaturescripts.xml adicione isso:

 

 

 

 

 


<event type="push" name="AwayFromKeyboard1" event="script" value="AwayFromKeyboard.lua"/>

<event type="combat" name="AwayFromKeyboard2" event="script" value="AwayFromKeyboard.lua"/>

 

Vá em talkactions/scripts e crie um arquivo chamado AwayFromKeyboard.lua e adicione isso:

 

 

 

 

 


local msgss = {"AFK!", "OFF!", "Off-Line!", "Ausente!"}

local msgsss = {"On!", "Voltei!", "Online!", "On-Line!"}

 

function sendAfkMsg(cid, oldpos)

if isCreature(cid) then

oldpos1 = getCreaturePosition(cid)

if getPlayerStorageValue(cid, 3123) >= 1 and doComparePositions(oldpos, oldpos1) then

doSendAnimatedText(getCreaturePosition(cid), msgss[math.random(1, #msgss)], math.random(0, 256))

addEvent(sendAfkMsg, 1500, cid, oldpos1)

else

setPlayerStorageValue(cid, 3123, -1)

doSendAnimatedText(getCreaturePosition(cid), msgsss[math.random(1, #msgss)], math.random(0, 256))

end

end

end

 

function onSay(cid, words, param)

if param == "on" then

if getPlayerStorageValue(cid, 3123) >= 1 then

doPlayerSendTextMessage(cid, 27, "Você já está no modo afk!")

else

if getCreatureCondition(cid, CONDITION_INFIGHT) or getTileInfo(getThingPos(cid)).hardcore then

doPlayerSendTextMessage(cid, 27, "Você não pode usar esse comando enquanto estiver em fight ou em área PVP!")

return true

end

setPlayerStorageValue(cid, 3123, 1)

doPlayerSendTextMessage(cid, 27, "Você acaba de entrar no modo afk! Para sair diga ".. words .." off")

sendAfkMsg(cid, getCreaturePosition(cid))

end

elseif param == "off" then

if getPlayerStorageValue(cid, 3123) >= 1 then

setPlayerStorageValue(cid, 3123, -1)

doPlayerSendTextMessage(cid, 27, "Você acaba de sair do modo afk!")

doSendAnimatedText(getCreaturePosition(cid), msgsss[math.random(1, #msgss)], math.random(0, 256))

else

doPlayerSendTextMessage(cid, 27, "Você não está no modo afk para usar este comando!")

end

else

doPlayerSendTextMessage(cid, 27, "Você precisa declarar algum parâmetro (on/off)!")

end

return true

end

 

Pronto, para finalizar vá em talkactions.xml e adicione isso:

 

 

 

 

 


<talkaction hide="yes" words="!afk" event="script" value="AwayFromKeyboard.lua"/>

 

 

 

 

Espero que gostem do code :D

 

 

 

 

Créditos:

 

 

 

 

 

BielLucena1291 (Drazyn1291 - Eu) - Por fazer o script inteiro!

 

 

Os seguintes foram por dá ideias de melhorias!

 

 

@Poccnn

 

 

@samlecter

 

 

@Danihcv

 

 

Editado por BielLucena1291
Link para o comentário
https://xtibia.com/forum/topic/241155-away-from-keyboard-afk-system/
Compartilhar em outros sites

  • Diretor

Pô bacana xD há 2 anos atrás eu tinha feito um veja como tinha ficado:

  Mostrar conteúdo oculto

 

Seria melhor no lugar de

doPlayerSendTextMessage(cid, 27, "Você acaba de entrar no modo afk! Para sair diga !afk off")

Por " .. words .. " off ficando assim:

doPlayerSendTextMessage(cid, 27, "Você acaba de entrar no modo afk! Para sair diga ".. words .." off")

Igual fiz no meu, caso você queira mudar o comando no talkactions.xml não precisa ficar mudando a frase no .lua rsrs

Editado por nedroesdoksdja
Link para o comentário
https://xtibia.com/forum/topic/241155-away-from-keyboard-afk-system/#findComment-1697250
Compartilhar em outros sites

  Em 22/06/2016 em 14:14, Yan Liima disse:

Pô bacana xD há 2 anos atrás eu tinha feito um veja como tinha ficado:

  Mostrar conteúdo oculto

 

Seria melhor no lugar de

doPlayerSendTextMessage(cid, 27, "Você acaba de entrar no modo afk! Para sair diga !afk off")

Por ".. words .. " off ficando assim:

doPlayerSendTextMessage(cid, 27, "Você acaba de entrar no modo afk! Para sair diga ".. words .. " off")

Igual fiz no meu, caso você queira mudar o comando no talkactions.xml não precisa ficar mudando a frase no .lua rsrs

Expand  

Sim Sim, eu tlg nisso, é pq dificilmente o pessoal muda as words ai nem pensei em fazer isso ahsahs

Link para o comentário
https://xtibia.com/forum/topic/241155-away-from-keyboard-afk-system/#findComment-1697251
Compartilhar em outros sites

  Em 27/06/2016 em 14:13, Mendiguinho91 disse:

quando deslogar vai dar erro no console... coloca para checar se o jogador está online e depois checar a storage na função.

Expand  

Corrigi

Link para o comentário
https://xtibia.com/forum/topic/241155-away-from-keyboard-afk-system/#findComment-1697743
Compartilhar em outros sites

Deixa eu dar algumas dicas aqui para melhorar esse script.

Ao invés de usar storagevalue, você poderia criar uma tabela e adicionar os player nela; você poderia também deixar de usar o setnomove () e fazer uma mudança na função para verificar se o player saiu de seu lugar, desligando automaticamente o sistema; use o método recursivo apenas para chegar todos e não de um à um, causando assim lag quando tiver diversos jogadores usando o sistema.

Link para o comentário
https://xtibia.com/forum/topic/241155-away-from-keyboard-afk-system/#findComment-1697746
Compartilhar em outros sites

  Em 27/06/2016 em 15:26, Poccnn disse:

Deixa eu dar algumas dicas aqui para melhorar esse script.

Ao invés de usar storagevalue, você poderia criar uma tabela e adicionar os player nela; você poderia também deixar de usar o setnomove () e fazer uma mudança na função para verificar se o player saiu de seu lugar, desligando automaticamente o sistema; use o método recursivo apenas para chegar todos e não de um à um, causando assim lag quando tiver diversos jogadores usando o sistema.

Expand  

tlg, mas nem vou melhorar esse script, já que ele é meio inútil, só postei por postar mesmo, pq os que eu tinha achado na net eram mt ruins

Link para o comentário
https://xtibia.com/forum/topic/241155-away-from-keyboard-afk-system/#findComment-1697747
Compartilhar em outros sites

  • Administrador

Essa ideia é antigona, em 2012 todos os OTs que eu entrava tinha esse script. Muito bacana ver vocês recriando e aperfeiçoando. :EWBTE-min:

Link para o comentário
https://xtibia.com/forum/topic/241155-away-from-keyboard-afk-system/#findComment-1697749
Compartilhar em outros sites

  Em 27/06/2016 em 15:26, Poccnn disse:

Deixa eu dar algumas dicas aqui para melhorar esse script.

Ao invés de usar storagevalue, você poderia criar uma tabela e adicionar os player nela; você poderia também deixar de usar o setnomove () e fazer uma mudança na função para verificar se o player saiu de seu lugar, desligando automaticamente o sistema; use o método recursivo apenas para chegar todos e não de um à um, causando assim lag quando tiver diversos jogadores usando o sistema.

Expand  

Desculpe se estiver falando besteira, mas se trocar o setNoMove() pelo q vc disse, outros players iriam poder arrastar/empurrar o player Afk, não?

Link para o comentário
https://xtibia.com/forum/topic/241155-away-from-keyboard-afk-system/#findComment-1697755
Compartilhar em outros sites

@BielLucena1291, isso pode dar merda em pvp do jeito que tá, eu acho.

O ideal seria colocar uma checagem pra ver se o player tá in fight, se tiver, manda return false  e uma msg de q ñ pode estar em battle. E caso não esteja, ele fica impossível de atacar e ser atacado (eu ACHO que dá p fazer isso sem ter q mexer nas sources).

O que acha?

Link para o comentário
https://xtibia.com/forum/topic/241155-away-from-keyboard-afk-system/#findComment-1697775
Compartilhar em outros sites

  Em 27/06/2016 em 18:35, Danihcv disse:

@BielLucena1291, isso pode dar merda em pvp do jeito que tá, eu acho.

O ideal seria colocar uma checagem pra ver se o player tá in fight, se tiver, manda return false  e uma msg de q ñ pode estar em battle. E caso não esteja, ele fica impossível de atacar e ser atacado (eu ACHO que dá p fazer isso sem ter q mexer nas sources).

O que acha?

Expand  

Acho que é assim:

if getCreatureCondition(cid, CONDITION_INFIGHT) and getTileInfo(getThingPos(cid)).pvp then
return false
end

Não testei pq não estou em casa ^^

Link para o comentário
https://xtibia.com/forum/topic/241155-away-from-keyboard-afk-system/#findComment-1697777
Compartilhar em outros sites

  Em 27/06/2016 em 18:03, Poccnn disse:

Sim. Mas isso pode ser resolvido fazendo uma verificação se foi ele ou outro que o movimentou.

Expand  

Tem como fazer essa verificação em lua? 

Exemplo, caso o player se mexa, ele sai do modo Afk , porém outros players não conseguem arrasta-lo com o mouse

 

 

Na source, creio que seja em distance push (game.cpp)

tem como fazer uma checagem na função de mover os players com o mouse +/- assim: if getPlayerStorageValue(cid, 3123) >= 1 then return false end -- 3123 é a storage quando em modo afk

 

Se for na source, não sei fazer isso em C++.

 

 

em game.cpp, distance push:

 

Tem essa parte abaixo, acho que altera a velocidade que o player é movimentado quando arrastado por outro player: (&& delay > 0)

 

if(Position::areInRange<1,1,0>(movingCreature->getPosition(), player->getPosition()) && delay > 0

&& !player->hasCustomFlag(PlayerCustomFlag_CanThrowAnywhere))
 
 
 
 
 

 

Link para o comentário
https://xtibia.com/forum/topic/241155-away-from-keyboard-afk-system/#findComment-1697782
Compartilhar em outros sites

×
×
  • Criar Novo...