Platin Posted May 21, 2015 Share Posted May 21, 2015 Hola, haciendo otra de mis pruebas, quise crear un sistema en el cual un jugador invita a otro a hacer algo. El tema no es ese, si no que quiero hacer que una vez el jugador A (el que invita) ponga el comando, que al jugador B se le aparezca un outputChatBox (se hacerlo) y que tengan que poner /aceptar o /denegar ¿Cómo podría hacer la parte de /aceptar | /denegar ? No se me ocurre nada. Gracias de antemano. Link to comment
Enargy, Posted May 21, 2015 Share Posted May 21, 2015 Hola, haciendo otra de mis pruebas, quise crear un sistema en el cual un jugador invita a otro a hacer algo.El tema no es ese, si no que quiero hacer que una vez el jugador A (el que invita) ponga el comando, que al jugador B se le aparezca un outputChatBox (se hacerlo) y que tengan que poner /aceptar o /denegar ¿Cómo podría hacer la parte de /aceptar | /denegar ? No se me ocurre nada. Gracias de antemano. Pienso que puedes crearlo por elementData. Link to comment
Platin Posted May 21, 2015 Author Share Posted May 21, 2015 Hola, haciendo otra de mis pruebas, quise crear un sistema en el cual un jugador invita a otro a hacer algo.El tema no es ese, si no que quiero hacer que una vez el jugador A (el que invita) ponga el comando, que al jugador B se le aparezca un outputChatBox (se hacerlo) y que tengan que poner /aceptar o /denegar ¿Cómo podría hacer la parte de /aceptar | /denegar ? No se me ocurre nada. Gracias de antemano. Pienso que puedes crearlo por elementData. Nunca jugue con esa función. ¿La podría usar así?: setElementData(thePlayer, "duelo", jugando) setElementData(thePlayer, "duelo", retado) setElementData(thePlayer, "duelo", esperando) setElementData(thePlayer, "duelo", nil) Link to comment
Enargy, Posted May 21, 2015 Share Posted May 21, 2015 Puedes usarlo para algo asi local duelo_rechazado = false function invitar(thePlayer, _, victima) local victima = getPlayerFromName(victima); if victima ~= thePlayer then if victima then setElementData(victima, getPlayerName(thePlayer).." me reta a duelo", true); outputChatBox("retaste a ".. getPlayerName(victima).." a un duelo", thePlayer); end end end addCommandHandler("invitar",invitar) function aceptar(thePlayer, _, victima) local retante = getPlayerFromName(victima); local duelo = getElementData(thePlayer, victima.." me reta a duelo"); if duelo then if duelo_rechazado == false then outputChatBox("Aceptaste el duelo", thePlayer); duelo_rechazado = true; end else outputChatBox("No hay ningun retador.", thePlayer); end end addCommandHandler("aceptar", aceptar) function rechazar(thePlayer, _, victima) local retante = getPlayerFromName(victima); local duelo = getElementData(thePlayer, victima.." me reta a duelo"); if duelo then removeElementData(thePlayer, victima.." me reta a duelo"); outputChatBox("rechazaste el duelo", thePlayer); duelo_rechazado = false; end end addCommandHandler("rechazar", rechazar) /invitar /aceptar /rechazar Link to comment
Platin Posted May 21, 2015 Author Share Posted May 21, 2015 Puedes usarlo para algo asi local duelo_rechazado = false function invitar(thePlayer, _, victima) local victima = getPlayerFromName(victima); if victima ~= thePlayer then if victima then setElementData(victima, getPlayerName(thePlayer).." me reta a duelo", true); outputChatBox("retaste a ".. getPlayerName(victima).." a un duelo", thePlayer); end end end addCommandHandler("invitar",invitar) function aceptar(thePlayer, _, victima) local retante = getPlayerFromName(victima); local duelo = getElementData(thePlayer, victima.." me reta a duelo"); if duelo then if duelo_rechazado == false then outputChatBox("Aceptaste el duelo", thePlayer); duelo_rechazado = true; end else outputChatBox("No hay ningun retador.", thePlayer); end end addCommandHandler("aceptar", aceptar) function rechazar(thePlayer, _, victima) local retante = getPlayerFromName(victima); local duelo = getElementData(thePlayer, victima.." me reta a duelo"); if duelo then removeElementData(thePlayer, victima.." me reta a duelo"); outputChatBox("rechazaste el duelo", thePlayer); duelo_rechazado = false; end end addCommandHandler("rechazar", rechazar) /invitar /aceptar /rechazar No me funciono en lo absoluto Pero creo que lo que dije antes, ya algo aplicado, va a dar sus frutos, luego vuelvo a mandar un mensaje si sigo con dudas/problemas. Gracias por el tiempo. Link to comment
UserToDelete Posted May 21, 2015 Share Posted May 21, 2015 Algo asi? Basado en mi gang system: [No está testado, asi que seguramente haya algun error ] inv = {} data = {} function invitar (element_source, element_player, number_tiempo) if element_player ~= nil and number_tiempo ~= nil then if inv[element_player] == nil then inv[element_player] = getTickCount() / 1000 end if inv[element_player] <= getTickCount() then outputChatBox("Has sido invitado '/aceptar'", element_player, 0,0,0,true) outputChatBox("Has invitado a ",element_source, 0,0,0,true) inv[element_player] = getTickCount() + number_tiempo*1000 --data[element_source] = DATA -- # Lo que quieres almacenar como data setTimer( function (element_player) if inv[element_player] ~= nil and data[element_player] ~= nil then data[element_player] = nil outputChatBox("Tu invitacion ha expirado", element_player, 0,0,0,true) end end,number_tiempo*1000,1, element_player ) elseif inv[element_player] > getTickCount() then outputChatBox("Espera "..tostring(math.floor(inv[element_player]/1000))" segundos antes de invitarlo de nuevo", element_source, 0,0,0,true) end end end function onAccept (source, comando) if data[source] ~= nil then --Lo que quieres que pase data[source] = nil elseif data[source] == nil then outputChatBox("No has sido invitado a nada recientemente", source, 0,0,0,true) end end addCommandHandler("aceptar", onAccept) function onInvite (source, comando, jugador) if jugador ~= nil then encontrados = {} encontrados_result = 0 for k,v in ipairs(getElementsByType("player")) do if string.find(getPlayerName(v):gsub("#%x%x%x%x%x%x", ""), jugador) then table.insert(encontrados, v) encontrados_result = encontrados_result + 1 end end if encontrados_result == 1 then outputChatBox("has invitado a X", source, 0,0,0,true) invitar(source, encontrados[1], 30) elseif encontrados_result >= 2 then outputChatBox("Multiples personas encontradas, especifica mas!", source, 0,0,0,true) end else outputChatBox("Debes especificar un jugador", source, 0,0,0,true) end end addCommandHandler("invitar", onInvite) Link to comment
Platin Posted May 21, 2015 Author Share Posted May 21, 2015 Algo asi?Basado en mi gang system: [No está testado, asi que seguramente haya algun error ] inv = {} data = {} function invitar (element_source, element_player, number_tiempo) if element_player ~= nil and number_tiempo ~= nil then if inv[element_player] == nil then inv[element_player] = getTickCount() / 1000 end if inv[element_player] <= getTickCount() then outputChatBox("Has sido invitado '/aceptar'", element_player, 0,0,0,true) outputChatBox("Has invitado a ",element_source, 0,0,0,true) inv[element_player] = getTickCount() + number_tiempo*1000 --data[element_source] = DATA -- # Lo que quieres almacenar como data setTimer( function (element_player) if inv[element_player] ~= nil and data[element_player] ~= nil then data[element_player] = nil outputChatBox("Tu invitacion ha expirado", element_player, 0,0,0,true) end end,number_tiempo*1000,1, element_player ) elseif inv[element_player] > getTickCount() then outputChatBox("Espera "..tostring(math.floor(inv[element_player]/1000))" segundos antes de invitarlo de nuevo", element_source, 0,0,0,true) end end end function onAccept (source, comando) if data[source] ~= nil then --Lo que quieres que pase data[source] = nil elseif data[source] == nil then outputChatBox("No has sido invitado a nada recientemente", source, 0,0,0,true) end end addCommandHandler("aceptar", onAccept) function onInvite (source, comando, jugador) if jugador ~= nil then encontrados = {} encontrados_result = 0 for k,v in ipairs(getElementsByType("player")) do if string.find(getPlayerName(v):gsub("#%x%x%x%x%x%x", ""), jugador) then table.insert(encontrados, v) encontrados_result = encontrados_result + 1 end end if encontrados_result == 1 then outputChatBox("has invitado a X", source, 0,0,0,true) invitar(source, encontrados[1], 30) elseif encontrados_result >= 2 then outputChatBox("Multiples personas encontradas, especifica mas!", source, 0,0,0,true) end else outputChatBox("Debes especificar un jugador", source, 0,0,0,true) end end addCommandHandler("invitar", onInvite) De todas formas ya logre crearlo gracias. Aunque tengo un pequeño error. No me lee las datas, de ninguna forma, si yo reinicio el resource y pongo /aceptar | me manda a la arena directamente, sin que haya nadie más. Otra cosa, esta correcto esto: local estado = getElementData(thePlayer, "duelo") if (estado == retado) then Gracias de todas formas Venado Link to comment
Tomas Posted May 21, 2015 Share Posted May 21, 2015 local estado = getElementData(thePlayer, "duelo") if (estado == 'retado') then Para solucionar lo de cuando reinicias el resource, agrega esto: setElementData(localPlayer, "duelo", nil) Link to comment
Platin Posted May 21, 2015 Author Share Posted May 21, 2015 local estado = getElementData(thePlayer, "duelo") if (estado == 'retado') then Para solucionar lo de cuando reinicias el resource, agrega esto: setElementData(localPlayer, "duelo", nil) Muchas gracias, de todas formas lo último que me dijiste ya lo preveni function duelosNoBug() for k, thePlayer in ipairs(getElementsByType("player")) do setElementData(thePlayer, "duelo", nil) end end addEventHandler("onResourceStart", resourceRoot, duelosNoBug) EDIT: No me sirvió. server-side: local estado = getElementData(thePlayer, "duelo") if (estado == "retado") then Link to comment
Recommended Posts