Jump to content

[Ayuda] Crear un /aceptar


Platin

Recommended Posts

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
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
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

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
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

Algo asi?

Basado en mi gang system:

[No está testado, asi que seguramente haya algun error xD]

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
Algo asi?

Basado en mi gang system:

[No está testado, asi que seguramente haya algun error xD]

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 :P

Link to comment
  
    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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...