Duel System [V1.0] :By OrochiElf:

Tony Araujo
em Actions e Talkactions

Tony Araujo

OrochiElf
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 27/02/13Posts: 446Gênero: Masculino

Olá galerinha, eu tava sem fazer nada, e resolvi trazer um sistema de duelo, que conta vitorias e derrotas.


Eu achei que seria bem legal, os jogadores chamando os outros para um duelo limpo e talz. ,


SISTEMA 100% Meu.



Testado no TFS By OrochiElf v1.0



Bom, no sistema tem as seguintes funçoes :



Invite, -- Convida para o duelo


Accept, -- Aceita o convite


Recuse, -- Recusa o Convite


Cancel, -- Cancela o convite


Check, -- Verifica quem voce convidou ou quem te convidou


Status -- Checa a vitoria e a derrota



Como usar :


/duel comado, player



Exemplo :


/duel invite, Tony



/duel accept, Tony



/duel recuse, Tony



/duel cancel, Tony



/duel check



/duel status, Tony




Bom, vamos a instalaçao.


primeiro, vá em data/talkaction/script, crie um arquivo chamado : duel.lua


e adicione dentro



http://pastebin.com/3HUMPCYs



TAG



<talkaction words="/duel" hide="yes" event="script" value="duel.lua"/>

Agora vamos em creaturescript/scripts e dentro crie um arquivo chamado dueldie.lua


e dentro adicione



http://pastebin.com/QH2UeQTR



Em login.lua, antes do ultimo return true, adicione



registerCreatureEvent(cid, "DuelDie")

TAG



<event type="death" name="DuelDie" event="script" value="dueldie.lua"/>

Qualquer bug, avise.


Tony Araújo :happy:

BrunooMaciell

Bruno Maciel
avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 27/08/11Posts: 1919Gênero: MasculinoChar no Tibia: Bruno Maciel

nossa parece ser um exelente systema ^^

 

logo mais estarei testando ^^

 

mais Curti+ por trazer o conteudo ^^

 

Obs: so uma coisa cade as linhas do talkaction.xml

 

 

0.o ??

Tony Araujo

OrochiElf
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 27/02/13Posts: 446Gênero: Masculino

Estou editando o topico, está com um limite de conteudo, e estou tentando comprimir o meu topico.

Tony Araújo :happy:

Slicer

Insanity
avatar
Príncipe
Príncipe

INFOS

Grupo: PríncipeRegistrado: 19/08/10Posts: 4014Gênero: Masculino

eh... eu se fosse tu colocava os 'isCreature(player)' sempre no inicio das funçoes...

por exemplo, na funçao addInvite(cid, player), doq adianta por isCreature la embaixo se caso n for criatura ja vai da erro no console no getCreatureStorage...

 

e x1 eh facil kk' quero ver fazer 2x2, 3x3 '---'

"Só a beira do abismo que os seres humanos acham forças para mudar."... E isso me da nojo... ¬¬

"Insanity is doing the exact... same fucking thing... over and over again expecting... shit to change... That. Is. Crazy." -Vass/Einstein

 

Tony Araujo

OrochiElf
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 27/02/13Posts: 446Gênero: Masculino

Esse ai slicer, eu ja comecei a fazer. E obrigado pela dica...

E ta um poquinho dificil, mais eu consigo HUEUHEHUHUEUHEUHEUHEUHE

 

Voce ainda vai se orgulhar de min *-*

e vai parar com akelas suas criticas chatas =/ UHEHUEHUEHUEUHEUHEUHEUHEUHEUHU

Tony Araújo :happy:

BrunooMaciell

Bruno Maciel
avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 27/08/11Posts: 1919Gênero: MasculinoChar no Tibia: Bruno Maciel

Eu tentei testa no meu server de poketibia !!

 

deu o seguinte erro:

 

 

[15/07/2013 20:22:24] [Error - TalkAction Interface]
[15/07/2013 20:22:24] data/talkactions/scripts/duel.lua:onSay
[15/07/2013 20:22:24] Description:
[15/07/2013 20:22:24] data/lib/032-position.lua:48: attempt to index local 'toPosition' (a boolean value)
[15/07/2013 20:22:24] stack traceback:
[15/07/2013 20:22:24] data/lib/032-position.lua:48: in function 'getDistanceBetween'
[15/07/2013 20:22:24] data/talkactions/scripts/duel.lua:18: in function 'addInvite'
[15/07/2013 20:22:24] data/talkactions/scripts/duel.lua:215: in function

 

 

se puder arruma pra min ^^

Tony Araujo

OrochiElf
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 27/02/13Posts: 446Gênero: Masculino

Teste assim, para pokemon

 

 

 

-- FUNÇOES --
function addInvite(cid, player)
local playerinvite = nil
for _, func in ipairs(getPlayersOnline()) do
if getCreatureStorage(func, 15215) == getCreatureName(player) then
playerinvite = tostring(getCreatureName(func))
end
end
if getCreatureStorage(cid, 15215) == getCreatureName(player) then
doPlayerSendTextMessage(cid, 27, "Voce ja convidou "..getCreatureName(player).." para duelar, aguarde a resposta.")
return true
end
if getDistanceToCreature(player) > 3 then
doPlayerSendTextMessage(cid, 27, "Voce precisa chegar perto desse jogador para convida-lo.")
return true
end
if playerinvite ~= nil then
doPlayerSendTextMessage(cid, 27, "Esse jogador ja foi convidado por outro jogador.")
return true
end
if not isCreature(player) then
doPlayerSendTextMessage(cid, 27, "Esse jogador nao é valido.")
return true
end
if getCreatureStorage(cid, 15215) ~= -1 then
doPlayerSendTextMessage(cid, 27, "Voce nao pode convidar outro jogador, voce ja convidou o jogador "..getPlayerStorageValue(cid, 15215))
return true
end
if getTilePzInfo(getThingPos(cid)) then
doPlayerSendTextMessage(cid, 27, "Voce nao pode convidar outro jogador para o duelo, estando em Protection Zone.")
return true
end
setPlayerStorageValue(cid, 15215, getCreatureName(player))
doPlayerSendTextMessage(cid, 27, "Voce está convidando "..getCreatureName(player).." Para duelar.")
doSendAnimatedText(getThingPos(player), "INVITED", 120)
doPlayerSendTextMessage(player, 27, "Voce foi convidado para duelo por "..getCreatureName(cid))
return true
end
local tempo = 5
function doStartDuel(cid, cid2)
if tempo == 0 then
doCreatureSetSkullType(cid, SKULL_GREEN)
doCreatureSetSkullType(cid2, SKULL_GREEN)
doSendAnimatedText(getThingPos(cid), "BATTLE", 120)
doSendAnimatedText(getThingPos(cid2), "BATTLE", 120)
return true
else
doSendAnimatedText(getThingPos(cid), tempo, 120)
doSendAnimatedText(getThingPos(cid2), tempo, 120)
tempo = tempo - 1
return addEvent(doStartDuel, 1000, cid, cid2)
end
return true
end
function doSalvePosition(cid)
local p = getThingPos(cid)
if isCreature(cid) then
setPlayerStorageValue(cid, 18210, p.x)
setPlayerStorageValue(cid, 18211, p.y)
setPlayerStorageValue(cid, 18212, p.z)
end
return true
end
function acceptInvite(cid, player)
if getCreatureStorage(player, 15215) ~= getCreatureName(cid) then
doPlayerSendTextMessage(cid, 27, "Voce nao foi convidado por esse jogador.")
return true
end
if getDistanceToCreature(player) > 3 then
doPlayerSendTextMessage(cid, 27, "Voce precisa chegar perto desse jogador para aceitar o seu pedido.")
return true
end
if getTilePzInfo(getThingPos(cid)) then
doPlayerSendTextMessage(cid, 27, "Voce nao pode aceitar o pedido de duelo, estando em Protection Zone.")
return true
end
if getPlayerStorageValue(cid, 12577) <= 0 then
setPlayerStorageValue(cid, 12577, 0)
end
if getPlayerStorageValue(cid, 12578) <= 0 then
setPlayerStorageValue(cid, 12578, 0)
end
doPlayerSendTextMessage(player, 27, "O Jogador "..getCreatureStorage(player, 15215).." aceitou o seu pedido.")
doSendAnimatedText(getThingPos(cid), "ACCEPTED", 120)
setPlayerStorageValue(cid, 15122, 1)
setPlayerStorageValue(player, 15122, 1)
doSalvePosition(cid)
doSalvePosition(player)
addEvent(doStartDuel,1000,cid, player)
return true
end
function recuseInvite(cid, player)
if getCreatureStorage(player, 15215) ~= getCreatureName(cid) then
doPlayerSendTextMessage(cid, 27, "Voce nao foi convidado por esse jogador.")
return true
end
setPlayerStorageValue(player, 15215, -1)
doPlayerSendTextMessage(player, 27, "O Jogador "..getCreatureName(cid).." Cancelou seu pedido de duelo.")
doPlayerSendTextMessage(cid, 27, "Voce cancelou o pedido do jogador "..getCreatureName(player))
doSendAnimatedText(getThingPos(cid), "RECUSED", 120)
return true
end
function cancelInvite(cid)
local player_cancel = nil
for _, players in ipairs(getPlayersOnline()) do
if getCreatureStorage(cid, 15215) == getCreatureName(players) then
player_cancel = tostring(getCreatureName(players))
end
end
if player_cancel == nil then
doPlayerSendTextMessage(cid, 27, "Voce nao convidou ninquem, para cancelar.")
return true
end
setPlayerStorageValue(cid, 15215, -1)
doPlayerSendTextMessage(cid, 27, "Voce cancelou o seu pedido para "..player_cancel)
doPlayerSendTextMessage(getPlayerByName(player_cancel), 27, "O Jogador "..getCreatureName(cid).." cancelou o seu convite de duelo.")
doSendAnimatedText(getThingPos(cid), "RECUSED", 120)
return true
end
function checkMeInvite(cid)
local invites = nil
for _, players in ipairs(getPlayersOnline()) do
if getCreatureStorage(players, 15215) == getCreatureName(cid) then
invites = tostring(getCreatureName(players))
end
end
if invites ~= nil and getCreatureStorage(cid, 15215) == -1 then
doPlayerSendTextMessage(cid, 27, "Voce tem invites de "..invites)
elseif getCreatureStorage(cid, 15215) ~= -1 then
doPlayerSendTextMessage(cid, 27, "Voce invitou o jogador "..getCreatureStorage(cid, 15215))
else
doPlayerSendTextMessage(cid, 27, "Voce nao convidou ninquem , e nem foi convidado.")
end
return true
end
function checkStatus(cid, player)
if not isCreature(player) then
doPlayerSendCancel(cid, "Creature Not found.")
return true
end
doShowTextDialog(cid, 2160, " "..getCreatureName(player).." Status\n\nVitórias : "..getPlayerStorageValue(player, 12578).."\nDerrotas : "..getPlayerStorageValue(player, 12577).."")
return true
end
-- FUNÇOES --
function onSay(cid, words, param)
function showCommands(cid)
if isCreature(cid) then
local msg = "Comandos:\n-Invite\n-Accept\n-Recuse\n-Cancel\n-Status\n-Check\n\nModo de Uso:\n"..words.." comando, NomedoJogador"
doShowTextDialog(cid, 2160, msg)
end
return true
end
local txt = string.explode(param, ",")
local pid = getPlayerByNameWildcard(txt[2])
if txt[1] == "invite" then
addInvite(cid, pid)
elseif txt[1] == "accept" then
acceptInvite(cid, pid)
elseif txt[1] == "recuse" then
recuseInvite(cid, pid)
elseif txt[1] == "commands" then
showCommands(cid)
elseif txt[1] == "cancel" then
cancelInvite(cid)
elseif txt[1] == "status" then
checkStatus(cid, pid)
elseif txt[1] == "check" then
checkMeInvite(cid)
else
doPlayerSendTextMessage(cid, 27, "Comando nao valido, para saber os comandos use: "..words.." commands")
end
return true
end

Tony Araújo :happy:

wesleyt10

avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 02/12/12Posts: 209Char no Tibia: Wesleys

Slicer Calma é dos 1x1 que começa depois passa pros 2x2, 3x3 o carinha ai vai longe rlx tu ja é foda ele ta ficando kkk vamo incentivar :p mt bom cara parabens e obrigado por postar pra galera ai :D

 

@Slicer, e tbm eu agradeço por ele por mostrar como comerçar a script e mostrar os possiveis erros , sua atitude foi mais doq correta VLW!!!

Lf7rNdi.png

Pa8KtbA.png

Tony Araujo

OrochiElf
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 27/02/13Posts: 446Gênero: Masculino

Obrigado ai galera (;, espero que faça bom uso HEHUEUHE

Tony Araújo :happy:

tcbrj

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 16/09/07Posts: 8

Muito massa, excelente trabalho!

 

Aprovo e recomendo!

XkillerW

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 23/03/18Posts: 6Gênero: Masculino

O meu esta dando o seguinte erro:

[Error - LuaScriptInterface::loadFile] cannot open datapack/creaturescripts/scripts/dueldie.lua: No such file or directory
[25/07/2018 11:49:36] [Warning - Event::loadScript] Cannot load script (datapack/creaturescripts/scripts/dueldie.lua)
[25/07/2018 11:49:36] cannot open datapack/creaturescripts/scripts/dueldie.lua: No such file or directory

Algm sabe arrumar ?