Anzo Posted November 18, 2016 Share Posted November 18, 2016 (edited) 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. Edited November 18, 2016 by Anzo Link to comment
Anzo Posted November 18, 2016 Author Share Posted November 18, 2016 Mhm... Cierto, como no pense en onClientRender... @aka Blue voy a probar a ver que tal Link to comment
aka Blue Posted November 18, 2016 Share Posted November 18, 2016 Ten en cuenta algo: Usa una variable para comprobar si el colshape esta creado o no, para que no cree miles en el onClientRender. Y otra, actualiza la posicion con setElementPosition. Link to comment
Anzo Posted November 18, 2016 Author Share Posted November 18, 2016 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 Link to comment
Anzo Posted November 18, 2016 Author Share Posted November 18, 2016 (edited) 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) Edited November 18, 2016 by Anzo Link to comment
aka Blue Posted November 18, 2016 Share Posted November 18, 2016 Si que puedes hacerlo con attachElements disculpa, acabo de ver u un script que tenia de detectar la velocidad de otros coches con la patrulla me funcionaba con eso mismo. Link to comment
Anzo Posted November 18, 2016 Author Share Posted November 18, 2016 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) Link to comment
aka Blue Posted November 18, 2016 Share Posted November 18, 2016 (edited) attachElements(cols[localPlayer], localPlayer) No sé si tiene mucho que ver, pero pruébalo. De todos modos, te aconsejaría que lo hagas server-side y triggees en caso de que entre un zombie (no sé que lado usa el script de zombies, pero supongo que se puede hacer sincronización). Edited November 18, 2016 by aka Blue Link to comment
Anzo Posted November 18, 2016 Author Share Posted November 18, 2016 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) Link to comment
Tomas Posted November 18, 2016 Share Posted November 18, 2016 32 minutes ago, Anzo said: 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) Eso no funciona? Link to comment
Anzo Posted November 18, 2016 Author Share Posted November 18, 2016 Si lo hace, solo quería saber si era mejor hacer la col desde server directamente, pero de que sirve, sirve. Link to comment
Tomas Posted November 18, 2016 Share Posted November 18, 2016 2 hours ago, Anzo said: Si lo hace, solo quería saber si era mejor hacer la col desde server directamente, pero de que sirve, sirve. No, no es necesario, así está bien y es mejor opción que hacerlo en el server. 1 Link to comment
Recommended Posts