Jump to content

Anzo

Members
  • Posts

    276
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by Anzo

  1. Ahh... Que cuando me salgo del servidor se borra la variable, ¿cierto o me equivoco? si es así, ¿por comandos si lo podría hacer o tengo que usar elementData en este caso? Si lo que quiero hacer si se puede hacer con los eventos onPlayerQuit y onPlayerLogin, por favor, dímelo. Pd: La cuenta hit es mía, esta ya no la usaré más pero como el móvil se conecta de una vez a esta no me he fijado y escribí con esta...
  2. Supongo que es porque haces el trigger en la función donde lo creas, ¿por qué no intentas poner la función donde lo creas por separado y en el trigger, usas el onClientRender? No estoyseguro si funcione pero debería hacerlo
  3. Bueno, como saben tocolor es una función client, pero estoy usando un export para crear un dxText editado desde client y server, tiene 4 argumentos: text, color, fontSize y font; rl problema es con el color, en client fácilmente puedo usar tocolor(255,0,0,255) y se le cambia el color, pero, y en server cómo hago para qur el formato sea solo: R, G, B, A sin usar tocolor? Estoy usandoalgo como esto: local color = color or tocolor(255,255,255,255) Eso en la función donde se crea el dx. Si necesitan una mejor explicación cuando esté en la pc explicó mejor, si es necesario.
  4. Try this (not tested) function onQuit() local Team = getPlayerTeam(source) local account = getPlayerAccount(source) if (Team) and (not isGuessAccount(account)) then setAccountData(account, "myTeam", getTeamName(Team)) end end addEventHandler("onPlayerQuit", root, onQuit) addEventHandler("onPlayerLogout", root, onQuit) function onLogin() local account = getPlayerAccount( source ) local theTeam = getAccountData(account, "myTeam") if (theTeam) and (getTeamFromName(theTeam)) then setAccountData(account, "myTeam", getTeamFromName(theTeam)) end end addEventHandler("onPlayerLogin", root, onLogin)
  5. Prueba con esto, no lo he probado (tampoco sé si funciona) local x,y,_ = getElementPosition(localPlayer) local radar = createRadarArea(x, y, 60,60) local colp = createColRectangle(x, y, 60,60) function onHit(hit) if (getElementType(hit) == "player") then addEventHandler ( "onClientPedDamage", getRootElement(), sendHeadshot ) addEventHandler ( "onClientPlayerDamage", getRootElement(), sendHeadshot ) end end addEventHandler("onClientColShapeHit", colp, onHit) function onLeave(leave) if (getElementType(leave) == "player") then removeEventHandler ( "onClientPedDamage", getRootElement(), sendHeadshot ) removeEventHandler ( "onClientPlayerDamage", getRootElement(), sendHeadshot ) end end addEventHandler("onClientColShapeLeave", colp, onLeave) function sendHeadshot ( attacker, weapon, bodypart, loss ) if attacker == getLocalPlayer() then if bodypart == 9 then triggerServerEvent( "onServerHeadshot", getRootElement(), source, attacker, weapon, loss ) setElementHealth ( source, 0 ) setPedHeadless( source, true ) end end end
  6. Si lo hace, solo quería saber si era mejor hacer la col desde server directamente, pero de que sirve, sirve.
  7. Siempre pensé que era obligatorio poner los x,y,z, creo que debo leer más la wiki :'v. Gracias @aka Blue Y lo tengo hecho así: --Client local cols = {} function createCol() if (not autoZombieKillEnabled) then local x,y,_ = getElementPosition(localPlayer) cols[localPlayer] = createColCircle(x,y, 10) attachElements(cols[localPlayer], localPlayer) autoZombieKillEnabled = true outputChatBox("Col creada") else autoZombieKillEnabled = false if isElement((cols[localPlayer])) then destroyElement(cols[localPlayer]) cols[localPlayer] = nil outputChatBox("Col destruida") end end end addCommandHandler("col", createCol) function onClientHit(hit) if (source == cols[localPlayer]) then if (getElementType(hit) == "ped") and (getElementData(hit, "zombie")) then outputChatBox("Zombie ha entrado") triggerServerEvent("autoZombieKill", getLocalPlayer(), hit) end end end addEventHandler("onClientColShapeHit", root, onClientHit) --Server function autoZombieKill(hit) killPed(hit, source) end addEvent("autoZombieKill", true) addEventHandler("autoZombieKill", root, autoZombieKill)
  8. Y cómo sería?... function createCol() if (not autoZombieKillEnabled) then local x,y,_ = getElementPosition(localPlayer) cols[localPlayer] = createColCircle(x,y, 10) attachElements(cols[localPlayer], localPlayer, x,y) autoZombieKillEnabled = true outputChatBox("Col creada") else autoZombieKillEnabled = false if isElement((cols[localPlayer])) then destroyElement(cols[localPlayer]) cols[localPlayer] = nil outputChatBox("Col destruida") end end end addCommandHandler("col", createCol) Ahí crea la col y todo, pero no la pega al jugador (se queda en lugar que se creó y va matando a los zombies)
  9. Bueno, ya lo hice de la manera que me dijiste y funcionó perfecto, gracias. Pero tengo una pregunta, esto no daría lag? local cols = {} function frameCol() if (cols[localPlayer]) then local x,y,z= getElementPosition(localPlayer) setElementPosition(cols[localPlayer], x,y,z) end end addEventHandler("onClientRender", root, frameCol) (La colshape la estoy creando por un comando, esa es solo la parte cuando se actualiza la posición)
  10. Todavía no he probado nada pero tengo una duda, con attachElements no funcionará? la wiki dice que también sirve con colshapes pero busque en unos post y dicen que no se puede usar con colshapes... De todas formas más tarde si probaré de las dos maneras
  11. Mhm... Cierto, como no pense en onClientRender... @aka Blue voy a probar a ver que tal
  12. Hola, estoy tratando de hacer una "zona para matar zombies automáticamente" con una colshape, pero quisiera saber que puedo usar para que la colshape se vaya moviendo según a donde el jugador se mueva, es decir que la posición se actualice o algo así. Lo que quiero es que mientras te muevas (supongamos que es 20 el radio de la colshape) y un zombie entre a la colshape se muera, y si tu te acercas a ellos y haces que entren también se mueren. He leído que es complicado hacer algo como esto (que la colshape te siga) pero nunca he probado así que no puedo decir nada, aunque tampoco se me ocurre nada. Pensaba hacerlo con getDistanceBetweenPoints3D pero creo que es más eficiente hacerlo con la colshape.
  13. Bueno... Use setAccountData y getAccountData para ello y me funciono bien, lo que hice fue que al precionar el botón de guardar use setAccountData para guardar el texto en la cuenta, luego use un trigger a client cuando el panel esté abierto y se colocará el texto que tenias al darle a guardar
  14. Para saber cuál es el skin del zombie al que mataste vas a tener que especificar que el zombie "existe" o que solo obtenga el skin del "zombie" y no el de cualquier ped, para hacerlo hay que utilizar un elementData del recurso de zombies, el cual es: setElementData(zomb, "zombie", true) Eso lo puedes encontrar en varias funciones exportadas del recurso, te dejo una función en donde se encuentra para que veas: Y ahora para obtener el skin del zombie que mataste solo usa: function ZombiSkin(killer) if (getElementType(source) == "ped") then -- Especificamos que el elemento sea un ped if (getElementData(source, "zombie") == true) then -- Sin esta linea tomaria el skin de cualquier ped y no el de los zombies local model = getElementModel(source) -- Obtenemos el id del skin que tiene el zombie outputChatBox("Skin de zombie: #ff0000"..model, killer, 255,255,255,true) end end end addEvent("onZombieWasted", true) addEventHandler("onZombieWasted", root, ZombiSkin) OJO: No es necesario usar esta linea: if (getElementData(source) == true) then porque ya estamos usando el evento que detecta cuando un zombie muere, si usáramos onPedWasted ahí si seria necesario especificar esa linea, porque pues como su nombre lo dice el onPedWasted se activa cuando un ped muere. Al final no era necesario usar el elementData para hacer lo que quieres, pero si en algún momento quieres hacer algo con los zombies en client-side esta linea te servirá (if (getElementData(source) == true) then) porque onZombieWasted es solo para server-side. Espero hayas entendido.
  15. @Chainsaw Las funciones directX creo que se crean por cada frame, así que si usas onClientResourceStart o comando para hacer que aparezca el DX, desaparecerá inmediatamente. Para crearlo se usa onClientRender (este evento se activa cada vez que gta hace un nuevo frame, creo) y para actualizarlo igual porque estás actualizándolo 30-60 veces por segundo con el evento onClientRender. No sé si me he hecho explicar pero te dejo un ejemplo con un guiSetText, esa función normalmente con un timer no se actualizaría como uno quiere, pero si por ejemplo quieres calcular (obtener) el ping o posición de un jugador, con onClientRender lo puedes hacer facilmente. Un ejemplo: mylabel = guiCreateLabel(200,200,200,200, "Ping: ", false) addEventHandler("onClientRender", root, function() local ping = getPlayerPing( getLocalPlayer() ) guiSetText(mylabel, "Ping: "..ping) end) con eso se actualizaría, como dice la wiki, 30-60 veces por segundo; por lo que si va a poder calcular el ping, algo que con un timer no se puede hacer según lo que sé. Igual te recomiendo que no uses onClientRender en un label para obtener el ping o cosas que se actualizarían cada segundo o menos de un segundo porque puede causar lag, es mejor usar un dx simple y ya. De todas formas si dije algo mal que me corrija alguien (?)
  16. Leí en un post que también se puede usar XML para hacer esto. ¿Qué me recomiendan?
  17. ¿Se puede guardar el texto escrito en un memo en la cuenta del jugador con un elementData? algo así.... setElementData(localPlayer, "memo", guiGetText(memo)) Luego en server-side hacer que se guarde el texto del memo con onPlayerQuit, y para cargarlo pues usar onPlayerLogin. Tengo esto hasta ahora pero no me carga el texto escrito al salir del servidor: Client: function savememo() guiSetText(Memo, getElementData(localPlayer, "Memok")) end addEvent("saveText", true) addEventHandler("saveText", root, savememo) Server: function saveOnQuit() local account = getPlayerAccount(source) if (account) then setAccountData(account, "memos", getElementData(source, "Memok")) end end addEventHandler("onPlayerQuit", root, saveOnQuit) addEventHandler("onPlayerLogout", root, saveOnQuit) function loadOnLogin() local account = getPlayerAccount( source ) if (account) then local memoText = getAccountData(account, "memos") if (memoText) then setElementData(source, "Memok", memoText) triggerClientEvent(source, "saveText", root) end end end addEventHandler("onPlayerLogin", root, loadOnLogin) Normalmente con un valor numérico en elementData funcionaría esto (ya lo he hecho), pero para que te ponga el texto que escribiste en el memo al logearte no me funciona, aunque tampoco sé si es la manera correcta de hacerlo. PD: Disculpen por poner el post en esta sección... Es que estaba viendo algo aquí y se me olvidó salirme.
  18. @Lalalu ¿Ya probaste con lo de Gaberiel?
  19. Algo como if godmode[attacker] == true then?
  20. Y si quiero que al tener el godmode no me puedan hacer daño los demás(ya sé que con eso que me pasaron no me harán daño) , pero yo tampoco a ellos? (como dije con elementData ya lo tengo hecho, pero de esa manera es demasiado fácil y pues nada más quiero saber otro método de hacerlo). @aka Blue Si, lo quiero en ambos lados, digamos que la variable y el comando los tengo en server y lo demás en client, lo que no sé hacer es que desde client me pueda leer la variable que tendría en server para así sabes cuando se tiene que activar el godmode. Voy a probar mañana, gracias. Cualquier cosa aviso.
  21. No es por nada, solo quiero aprender un poco más a usar las tablas. La pregunta es la del título, alguien me dijo que se podía hacer un "godmode" pero con tablas en vez de variables o elementData, ya de esos dos métodos digamos que los sé hacer, pero quiero también poder hacer uno con tablas. Daría una explicación de lo que quiero pero no lo tengo muy claro, pero creo que ustedes entienden a que me refiero... ¿Alguien sabe? PD: Otra razón por la que quiero intentar hacerlo por tablas es porque por elementData hasta mi abuelita lo hace
  22. Creo que puedes usar getZoneName cuando el jugador muera cerca de esa zona
  23. Hace tiempo quería hacer uno parecido (solo la parte de selección de ropa), pero nunca lo hice por flojera Te quedo bien (a mi por lo menos me gustó), +rep... Ah no, que no es el foro de samp :v
  24. Eso quiere decir que ese script no deja tener más de 1 persona de pasajero en los autos de 2 puertas?
×
×
  • Create New...