CeKiT
-
Posts
152 -
Joined
-
Last visited
Posts posted by CeKiT
-
-
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.
-
Postea los dos sides completos así veo que hiciste.
Tomas ayudame :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.
-
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
-
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
-
¿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.
-
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
-
Ya logre solucionaro gracias gente!
-
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.
-
Simplemente pon la función de imagen antes de las de label....
Ya lo hice y no funciona
-
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.
-
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!
-
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.
-
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.
-
Nuevas mejoras en la plataforma, ya esta disponible el nuevo panel y la web.
-
Estamos modificando unas cositas para largar un panel beta nuevo que les encantara con todo integrado.
-
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
-
Phant ya esta habilitado hace rato.
Y los pagos de venezuela van a ser activados proximamente.
-
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:
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.
-
Hola a todos.
Alguien sabe donde esta el mensaje que en el race default dice Alive que indica los jugadores vivos? por ejmplo si ahi 1:
1Alive
Saludos.
-
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
-
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
-
"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.
-
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
Crear variable global
in Scripting
Posted
Gracias capo, me solucionaste la vida varias veces. Al igual que solid