Jump to content

CeKiT

Members
  • Posts

    152
  • Joined

  • Last visited

Posts posted by CeKiT

  1. Server-side:
      
        function showCountry () 
        setElementData(source, "country", exports.admin:getPlayerCountry(source) ) 
        end 
        addEventHandler("onPlayerJoin", g_Root, showCountry) 
      
    

    Client-side:

      
    if not cCountry then cCountry = getElementData(localPlayer, "country" ) end  
              dxDrawImage(sX-toptimes.size[1]+(toptimes.size[1]*0.93)-10,(sY/2)-(toptimes.size[2])+(200/8)+((i-1)*20)+3,16,11,":admin/client/images/flags/".. cCountry ..".png",tocolor(255,255,255,255)) 
      
    

    Gracias capo, me solucionaste la vida varias veces. Al igual que solid

  2. Hola que tal, tengo un problema con crear una variable global tengo esto:

    toptimes_server.lua

    function showCountry () 
    cCountry = exports.admin:getPlayerCountry(source) 
    end 
    addEventHandler("onPlayerJoin", g_Root, showCountry) 
    

    toptimes_client.lua

          dxDrawImage(sX-toptimes.size[1]+(toptimes.size[1]*0.93)-10,(sY/2)-(toptimes.size[2])+(200/8)+((i-1)*20)+3,16,11,":admin/client/images/flags/".. cCountry ..".png",tocolor(255,255,255,255)) 
                 
    

    no entiendo que es lo que estoy haciendo mal que en el debugsript me dice nil value.

  3. Hola que tal, tengo este script que guarda y carga el dinero del jugador.

    addEventHandler("onPlayerLogin", getRootElement(), 
        function (prevAcc, currAcc, autoLogin) 
            setPlayerMoney(source, 
                ( getAccountData( currAcc, "money" ) or 0 ) 
            ) 
        end ) 
      
    addEventHandler("onPlayerLogout", getRootElement(), 
        function (prevAcc, currAcc) 
            setAccountData(prevAcc, "money", getPlayerMoney(source)) 
    -- Borrando dinero para evitar bugs. 
            setPlayerMoney(source, 0) 
        end ) 
      
    addEventHandler("onPlayerQuit", getRootElement(), 
        function () 
            local pAcc = getPlayerAccount(source) 
            if (pAcc and not isGuestAccount(pAcc)) then 
                setAccountData(pAcc, "money", getPlayerMoney(source)) 
            end 
        end ) 
      
    

    Y quiero agregar una columna al scoreboard con el dinero del jugador, como hago para crear la columna con scoreboardAddColummn? Gracias, hasta donde tengo entendido con setelementdata puedo cambiarle el valor, pero primero necesito crear la columna.

  4. Postea los dos sides completos así veo que hiciste.

    SERVER-SIDE:

    DestructionDerby = setmetatable({}, RaceMode) 
    DestructionDerby.__index = DestructionDerby 
      
    DestructionDerby:register('Destruction derby') 
      
    function DestructionDerby:isApplicable() 
        return not RaceMode.checkpointsExist() and RaceMode.getMapOption('respawn') == 'none' 
    end 
      
    function DestructionDerby:getPlayerRank(player) 
        return #getActivePlayers() 
    end 
      
    -- Copy of old updateRank 
    function DestructionDerby:updateRanks() 
        for i,player in ipairs(g_Players) do 
            if not isPlayerFinished(player) then 
                local rank = self:getPlayerRank(player) 
                if not rank or rank > 0 then 
                    setElementData(player, 'race rank', rank) 
                end 
            end 
        end 
        -- Make text look good at the start 
        if not self.running then 
            for i,player in ipairs(g_Players) do 
                setElementData(player, 'race rank', '' ) 
                setElementData(player, 'checkpoint', '' ) 
            end 
        end 
    end 
      
    function DestructionDerby:onPlayerWasted(player) 
        if isActivePlayer(player) then 
            self:handleFinishActivePlayer(player) 
            if getMapDM() then 
                if getActivePlayerCount() <= 0 then 
                    triggerClientEvent ( "showWinMessage", getRootElement()) 
                    RaceMode.endMap() 
                else 
                    TimerManager.createTimerFor("map",player):setTimer(clientCall, 2000, 1, player, 'Spectate.start', 'auto') 
                end 
                local activePlayers = getActivePlayers() 
                if getActivePlayerCount() == 1 then 
                    if getElementModel(getPedOccupiedVehicle(activePlayers[1])) == 425 then 
                         
                         if getActivePlayerCount() <= 1 and getMapDM() then 
            if stateAllowsPostFinish() then 
            gotoState('PostFinish') 
                    local whoWon = getPlayerName(source) 
            setTimer ( RaceMode.startNextMapSelect, 8000, 1)       
    -- Creando cuenta regresiva, y definiendo el mensaje. 
      
    -- Llamando al sonido de victoria 
    triggerClientEvent("wsonido",getRootElement()) 
    triggerClientEvent (root,  "callingWinnerMessage", source, whoWon ) 
      
    end 
    end 
                    end 
                end 
            else 
                if getActivePlayerCount() <= 1 then 
                    triggerClientEvent ( "showWinMessage", getRootElement()) 
                    RaceMode.endMap() 
                else 
                    TimerManager.createTimerFor("map",player):setTimer(clientCall, 2000, 1, player, 'Spectate.start', 'auto') 
                end 
            end 
        end 
        RaceMode.setPlayerIsFinished(player) 
        showBlipsAttachedTo(player, false) 
    end 
      
    -- Comprobamos jugadores activos al agarrar el hunter. 
    function checkForHunter(number, sort, model) 
            if sort == "vehiclechange" then 
            if model == 425 then 
            if getActivePlayerCount() <= 1 and getMapDM() then 
            if stateAllowsPostFinish() then 
            gotoState('PostFinish') 
                    local whoWon = getPlayerName(source) 
            setTimer ( RaceMode.startNextMapSelect, 8000, 1)       
    -- Creando cuenta regresiva, y definiendo el mensaje. 
      
    -- Llamando al sonido de victoria 
    triggerClientEvent("wsonido",getRootElement()) 
    triggerClientEvent (root,  "callingWinnerMessage", source, whoWon ) 
      
    end 
    end 
    end 
    end 
    end 
    addEvent("onPlayerPickUpRacePickup",true) 
    addEventHandler("onPlayerPickUpRacePickup",getRootElement(),checkForHunter) 
    ------------------------------------------------------------------------------------------------------------------------------------- 
      
      
      
    function DestructionDerby:onPlayerQuit(player) 
        if isActivePlayer(player) then 
            self:handleFinishActivePlayer(player) 
            if getMapDM() then 
                if getActivePlayerCount() <= 0 then 
                    RaceMode.endMap() 
                    triggerEvent ( "activatePodium", getRootElement()) 
      
                end 
            else 
                if getActivePlayerCount() <= 1 then 
                    RaceMode.endMap()--sida 
         
                    triggerEvent ( "activatePodium", getRootElement()) 
      
                end 
            end 
        end 
    end 
      
    function DestructionDerby:handleFinishActivePlayer(player) 
        -- Update ranking board for player being removed 
        local activePlayers = getActivePlayers() 
        triggerEvent("onPlayerDeadInRace",getRootElement(),#activePlayers,player) 
        if getActivePlayerCount() == 1 then 
            clientCall(getRootElement(),"setPlayerNameOnWinMessege", activePlayers[1]) 
        end 
        if not self.rankingBoard then 
            self.rankingBoard = RankingBoard:create() 
            self.rankingBoard:setDirection( 'up', getActivePlayerCount() ) 
        end 
        local timePassed = self:getTimePassed() 
        self.rankingBoard:add(player, timePassed) 
        -- Do remove 
        finishActivePlayer(player) 
        -- Update ranking board if one player left 
        local activePlayers = getActivePlayers() 
        if #activePlayers == 1 then 
            self.rankingBoard:add(activePlayers[1], timePassed) 
            clientCall(getRootElement(),"setPlayerNameOnWinMessege", activePlayers[1]) 
            triggerEvent("onPlayerDestructionDerbyWin", getRootElement(), activePlayers[1]) 
        end 
        --PODIUM SCRIPT 
        if #activePlayers == 3 then 
            triggerClientEvent ( "SaveName3",getRootElement(),_getPlayerName(player)) 
        end 
        if #activePlayers == 2 then 
            triggerClientEvent ( "SaveName2",getRootElement(),_getPlayerName(player)) 
        end 
        if #activePlayers == 1 then 
            triggerClientEvent ( "SaveName",getRootElement(),_getPlayerName(player)) 
            triggerEvent("createPeds",getRootElement()) 
        end 
    end 
      
      
      
    ------------------------------------------------------------ 
    -- activePlayerList stuff 
    -- 
      
    function isActivePlayer( player ) 
        return table.find( g_CurrentRaceMode.activePlayerList, player ) 
    end 
      
    function addActivePlayer( player ) 
        table.insertUnique( g_CurrentRaceMode.activePlayerList, player ) 
    end 
      
    function removeActivePlayer( player ) 
        table.removevalue( g_CurrentRaceMode.activePlayerList, player ) 
    end 
      
    function finishActivePlayer( player ) 
        table.removevalue( g_CurrentRaceMode.activePlayerList, player ) 
        table.insertUnique( g_CurrentRaceMode.finishedPlayerList, _getPlayerName(player) ) 
    end 
      
    function getFinishedPlayerCount() 
        return #g_CurrentRaceMode.finishedPlayerList 
    end 
      
    function getActivePlayerCount() 
        return #g_CurrentRaceMode.activePlayerList 
    end 
      
    function getActivePlayers() 
        return g_CurrentRaceMode.activePlayerList 
    end 
      
      
    function getMapDM() 
        local getMapName = g_MapInfo.name or "" 
        if string.find(getMapName, "[DM]", 1, true) then 
            return true 
        else  
            return false 
        end 
    end 
      
    

    CLIENT-SIDE

    function wSonido() 
    playSound("audio/win.ogg",false) 
    end  
    addEvent("wsonido",true) 
    addEventHandler("wsonido",getRootElement(),wSonido) 
      
      
      
    local screenWidth, screenHeight = guiGetScreenSize ( ) 
      
    addEvent("callingWinnerMessage", true) 
    addEventHandler("callingWinnerMessage", root, 
        function ( whoWon ) 
            whoWon = whoWon 
            addEventHandler ( "onClientRender", root, printWinner ) 
            setTimer(detener, 8000, 1)  
        end 
    ) 
    function detener() 
    removeEventHandler("onClientRender", root, printWinner) 
    removeEventHandler("callingWinnerMessage", root, printWinner) 
    end 
      
    function printWinner(root) 
      
    local nWIN  = getPlayerName(getLocalPlayer()) 
    dxDrawText(nWIN.." ES EL GANADOR!", 229, 217, 629, 219, tocolor(255, 255, 255, 255), 2.00, "sans", "left", "top", false, false, false, true, false) 
    end 
      
      
      
      
    

  5. root es lo mismo que getRootElement, no hay ningún debug?

    Basandome en el script que me diste pude modificarlo y logre que aparezca y desaparezca pasado un tiempo a si me quedo:

    addEventHandler("callingWinnerMessage", root, 
        function ( whoWon ) 
            whoWon = whoWon 
            addEventHandler ( "onClientRender", root, printWinner ) 
            setTimer(detener, 8000, 1)  
        end 
    ) 
    function detener() 
    removeEventHandler("onClientRender", root, printWinner) 
    removeEventHandler("callingWinnerMessage", root, printWinner) 
    end 
      
    function printWinner(root) 
    dxDrawText(whoWon.." ES EL GANADOR!", 229, 217, 629, 219, tocolor(255, 255, 255, 255), 2.00, "sans", "left", "top", false, false, false, true, false) 
    end 
    

    Ahora me dice que "whoWon" no recibe ningun valor, osea que esta nulo. Nose como obtener el string, ya que tengo que saber el nombre del jugador que gano, no el que esta viendo el mesaje. Desde el server-side es facil lo hago con:

    local whoWon = getPlayerName(source) 
    

    como lo envio hacia el client-side?

    Saludos

  6. ¿Hola mira, no lo hacerlo funcionar para mi que es un problema entre "root" , "resourceRoot" o "source" del server-side y el client-side.

    Mira el server-side lo puse a si:

    function checkForHunter(number, sort, model) 
            if sort == "vehiclechange" then 
            if model == 425 then 
            if getActivePlayerCount() <= 1 and getMapDM() then 
            if stateAllowsPostFinish() then 
            gotoState('PostFinish') 
            setTimer ( RaceMode.startNextMapSelect, 8000, 1)       
    -- Creando cuenta regresiva, y definiendo el mensaje. 
            local pName = getPlayerName(source) 
    -- Llamando al mensaje de victoria. 
            triggerClientEvent (root,  "callingWinnerMessage", resourceRoot, pName ) 
    -- Llamando al sonido de victoria. 
            triggerClientEvent("wsonido",getRootElement()) 
    end 
    end 
    end 
    end 
    end 
    addEvent("onPlayerPickUpRacePickup",true) 
    addEventHandler("onPlayerPickUpRacePickup",getRootElement(),checkForHunter) 
    

    y el client-side

    local screenWidth, screenHeight = guiGetScreenSize ( ) 
      
    addEvent("callingWinnerMessage", true) 
    addEvent("callingWinnerMessage", root, 
        function ( whoWon ) 
            whoWon = whoWon 
            addEventHandler ( "onClientRender", root, printWinner ) 
            setTimer ( removeEventHandler, 5000, 1, root, printWinner ) 
        end 
    ) 
      
    function printWinner () 
        dxDrawText (whoWon.." ES EL GANADOR!", 44, screenHeight - 43, screenWidth, screenHeight, tocolor ( 255, 255, 255, 255 ), 1, "pricedown" ) 
    end 
    

    El triggerclientevent del sonido de victoria funciona perfecto, pero fijate que dice GetRootElement(), hay cosas que no entiendo bien.

    Gracias por tu ayuda.

  7. Hola que tal, estoy queriendo remplazar un mensaje simple que agregue al server-side, y quiero crear un dxDrawText con mas diseño. Cuestion que se esta funcion es solo para client-side tambien se para que son los triggerclientevent, lo que no se es como usarla de un modo correcto.

    Este es mi server-side actual:

    -- Comprobamos jugadores activos al agarrar el hunter. 
    function checkForHunter(number, sort, model) 
            if sort == "vehiclechange" then 
            if model == 425 then 
            if getActivePlayerCount() <= 1 and getMapDM() then 
             
            -- Creando cuenta regresiva, y definiendo el mensaje. 
            local pName = getPlayerName(source) 
            local text = pName..' ES EL BUEN GANADOR!\n' 
            Countdown.create(5, RaceMode.startNextMapSelect, text,0, 102, 255, 0.5, 2,"default-bold"):start() 
            setTimer ( RaceMode.startNextMapSelect, 8000, 1) 
             
            -- Congelando al agarrar el hunter. 
            local playerVehicle = getPedOccupiedVehicle (source) 
            setElementFrozen(playerVehicle, true ) 
            -- 
    end 
    end 
    end 
    end 
    addEvent("onPlayerPickUpRacePickup",true) 
    addEventHandler("onPlayerPickUpRacePickup",getRootElement(),checkForHunter) 
    ------------------------------------------------------------------------------------------------------------------------------------- 
      
    

    y quiero remplazar esto:

         local pName = getPlayerName(source) 
            local text = pName..' ES EL BUEN GANADOR!\n' 
            Countdown.create(5, RaceMode.startNextMapSelect, text,0, 102, 255, 0.5, 2,"default-bold"):start() 
    

    por esto:

    local screenWidth, screenHeight = guiGetScreenSize ( ) 
    mensajev = dxDrawText (pName.." ES EL GANADOR!", 44, screenHeight - 43, screenWidth, screenHeight, tocolor ( 255, 255, 255, 255 ), 1, "pricedown" )  
      
    

    y nose como realizarlo, alguien que me pueda dar una mano y me explique como llamar al cliente desde el server side

  8. Buenas, vengo a hacer una consulta sobre cambiar la fuente de un GUI, ya que no logro hacerlo, tengo en el meta cargada la fuente con:

      <file src="fuentes/digital.ttf"/> 
    

    y en mi race_client lo tengo a si:

    local myFuente = dxCreateFont("fuentes/digital.ttf", 0) 
      
    g_dxGUI = { 
    timepassed = dxText:create('0:00:00', screenWidth - 10, screenHeight - 25, false, myFuente, 0.7, 'right') 
        } 
      
    

    No tendria que funcionar a si? Gracias.

  9. Hola que tal, tengo un recurso que me muestra una cierta información y quise agregarle esta imagen:

    fondofpsxpg = guiCreateStaticImage(screenWidth-330, 0, 330, 50, 'fondo.png',false, nil) 
    

    Pero me queda encima de los label, y nose como hacer que vaya al fondo, con guiMoveToBack()

    Alguna ayuda¿? Gracias.

  10. Hola buenas,

    Tengo una consulta si quiero hacer un servidor DM Race, con solo cambiar algunas de las variables del race comun default como la respawn, puedo hacer que cuando tome el hunter de como final de mapa, o cuando quede uno solo en hunter vivo despues de una ballata de hunters de como terminado el mapa. O si o si debo modificar el race.endMap?

    Gracias!

  11. PREGUNTA: escuche rumores que no estaban vendiendo; ahora no entiendo para que me afirman por inbox en facebook que puedo enviar... hace 48 horas hice un pago y no tengo respuesta de nungun tipo.

    Estamos evitando vender por que estábamos trabajando en un sistema nuevo y se nos colapsaba si no trabajábamos rápido.

  12. Hola a todos,

    Tengo un resource que tiene un bot - ped que al dispararle te ataca. Es posible hacer que cuando el ped dececte a alguien cerca le dispare? Osea al que tenga mas cerca o algo por el estilo.

    Saludos.

  13. Este no es el firezhost que un día vi por aquí? hahahaha sinceramente yo no recomiendo nada de lo que ofrecen aquí, en buena hora yo no compré ahí hace mucho, es mejor manejarse un vps o buscar otro host con más antiguedad, el ping que ofrecen para un servidor de juegos es malísimo, apuesto a que con un ddos caen, además quienes son los que darán soporte? los 2 críos de aquí? (aprobando con imágenes de galletas, gran seriedad!) antes prefiero poner mi server en mi pc o en uh host que tenga más experiencia, lo barato, sale al final caro, saludos.

    PD: No es un foro de negocios así que no es desvirtuar por si algo me dirán que lo imagino y los ignoraré.

    Primero esto no es ninguno firezhost, es sawhost el cual soy solamente soporte. El servicio de SawHost es optimo y de calidad podes comprobarlo vos mismo hablando con nuestros clientes. En la web ahi una lista de servidores alojados por sawhost puedes comprobar la calidad. Esto es SawHost no Vortexs

  14. 2aaan39.png

    Esta empresa inaugurada ya hace 2 años vuelve con nuevo personal y con muchísimas mejoras en la plataforma, dattacenter, servicios, soporte, etc.

    Servicios

    - SA:MP desde 1.99$ USD

    Fue el primer servicio que tuvo disponible SawHost, en el cual se trabajo demasiado hasta lograr un servicio optimo. Tanto como en su plataforma del panel de control hasta los precios y la seguridad.

    - MTA:SA desde 2.99$ USD

    Este fue el segundo servicio que estuvo disponible en SawHost, el cual también se a mejorado lo suficiente para dar un servicio optimo y de calidad. Con uno de los precios mas bajos del mercado y la mayor calidad.

    - Minecraft 4.99$ USD

    Este servicio es el ultimo añadido a la empresa. El cual podemos ofreces con excelente calidad, gracias al trabajo que realizaron nuestros desarolladores. Con un precio grandioso y accesible a todo el mundo.

    Si te interesa y quieres ver el Panel de Control podes ver los tres servicios ingresando aquí:

    URL: http://demo.sawhost.net/panel/

    Usuario: demo

    Contraseña: demo

    Métodos de Pago

    En SawHost tratamos que nuestros servicios sean baratos y a la vez accesibles a todas las personas del mundo. Por que de que sirve tener buenos precios si no puede ser accesible a la gente. Metodos disponibles:

    PayPal, PayGol, Western Union, Efecty, SuperGiros, DineroMail, Rapipago, Pagofacil.

    Consultas

    Puedes hacernos consultas en:

    Web: http://www.sawhost.net/

    Facebook: http://www.facebook.com/SawHost

    Email: [email protected]

    Ticket: http://sawhost.net/?id=2

    Recomendamos registrarse en http://sawhost.net/clientes/ donde podrás enviar consultas desde esa plataforma y también comprar servicios desde esta plataforma. No necesitas ser cliente para registrarte.

  15. Es que en el getElementModel estas poniendo el player que murio no el que queda.... Tenes que conseguirel player con getActivePlayers() creo que es, y de esa tabla el unico valor, el primero conseguir el getElementModel(getPedOccupiedVehicle(playerese))... se ve que borraste lo que puse yo y estas haciendo algo medio raro

    Este me lo hizo un amigo. Después hablamos

  16. Hola a todos.

    Quiero hacer que si la cantidad de usuarios vivos es 1 y ese jugador toma el hunter llame a la funcion RaceMode.endMap(). Eso se me hizo sencillo ya que hice que al agarrar el pickup del hunter termine el mapa.

    ¿Pero los otros jugadores?

    Quiero que si llegan mas de 1 jugador al hunter, y se matan quedara 1 solo en hunter y 0 jugadores corriendo el mapa. De por terminado el mapa. Pero no lo eh logrado.

    Alguna ayudita, alguien que lo haya echo y pueda guiarme

    function DestructionDerby:getPlayerRank(player) 
        return #getActivePlayers() 
    end 
      
      
    -- Copy of old updateRank 
    function DestructionDerby:updateRanks() 
        for i,player in ipairs(g_Players) do 
            if not isPlayerFinished(player) then 
                local rank = self:getPlayerRank(player) 
                if not rank or rank > 0 then 
                    setElementData(player, 'race rank', rank) 
                end 
            end 
        end 
        -- Make text look good at the start 
        if not self.running then 
            for i,player in ipairs(g_Players) do 
                setElementData(player, 'race rank', '' ) 
                setElementData(player, 'checkpoint', '' ) 
            end 
        end 
    end 
      
    function DestructionDerby:onPlayerWasted(player) 
        if isActivePlayer(player) then 
            self:handleFinishActivePlayer(player) 
            if getActivePlayerCount() < 1 then 
                RaceMode.endMap() 
                return 
            end 
            if getActivePlayerCount() == 1 and getElementModel(player) == 425 then 
                RaceMode.endMap() 
            else 
                TimerManager.createTimerFor("map",player):setTimer(clientCall, 2000, 1, player, 'Spectate.start', 'auto') 
            end 
        end 
        RaceMode.setPlayerIsFinished(player) 
        showBlipsAttachedTo(player, false) 
    end 
      
    function DestructionDerby:onPlayerQuit(player) 
        if isActivePlayer(player) then 
            self:handleFinishActivePlayer(player) 
            if getActivePlayerCount() < 1 then 
                RaceMode.endMap() 
                return 
            end 
            if getActivePlayerCount() <= 1 and getElementModel(player) == 425 then 
                RaceMode.endMap() 
            end 
        end 
    end 
      
      
    addEvent("onPlayerPickUpRacePickup",true) 
    addEventHandler("onPlayerPickUpRacePickup",getRootElement(),someoneReachedHunter) 
      
    function DestructionDerby:handleFinishActivePlayer(player) 
        -- Update ranking board for player being removed 
        if not self.rankingBoard then 
            self.rankingBoard = RankingBoard:create() 
            self.rankingBoard:setDirection( 'up', getActivePlayerCount() ) 
        end 
        local timePassed = self:getTimePassed() 
        self.rankingBoard:add(player, timePassed) 
        -- Do remove 
        finishActivePlayer(player) 
        -- Update ranking board if one player left 
        local activePlayers = getActivePlayers() 
        if #activePlayers == 1 then 
            showMessage(getPlayerName(activePlayers[1]) .. ' es el ganador!', 153, 255, 0) 
        end 
        if #activePlayers == 0 then 
            self.rankingBoard:add(activePlayers[1], timePassed) 
        end 
    end 
    

  17. "race/race_server.lua".
    g_RaceStartCountdown = Countdown.create(6, launchRace) 
    g_RaceStartCountdown:useImages('img/countdown_%d.png', 474, 204) 
    g_RaceStartCountdown:enableFade(true) 
    

    gracias solid!

    yo habia buscado por countdown_0 y no encontraba nada.

  18. Hola a Todos.

    Estuve editando mi gamemode de race y estaba buscando el .lua que cargaba el countdown_0.png, countdown_1.png, countdown_2.png, countdown_3.png.

    Y no lo encontre. Alguien tan amable de decirme donde se cargan. Por que quiero editarle el sonido default.

    Saludos

×
×
  • Create New...