Serginix Posted July 5, 2011 Share Posted July 5, 2011 Hola! Hace mucho q no posteaba algo, en fin, tenia 3 dudas para ver si me las pueden solucioanr pofa 1. Cual es la funcion para q el Ped, deje la animacion? Digamos q tengo un resource, y en tal funcion tiene q estar la animacion un rato, y luego quitarse como le ago? un setTimer? 2.Vi un resource en el MTA Resources, valga la rebundancia , q pone el dinero de los jugadores en la Scoreboard, Tomando el principio de este, quize hacerlo para q tambien, mostrara las estrellas de buscado, quedo asi (el client side, en el server side solo llama a la resource Scoreboard) --el Dinero. local starttick, currenttick local player = getLocalPlayer() addEventHandler("onClientRender",getRootElement(), function() if not starttick then starttick = getTickCount() end currenttick = getTickCount() if currenttick - starttick >= 1000 then setElementData(player,"Dinero",getPlayerMoney( player ) ) starttick = getTickCount() end end ) function updateMoney() for k, v in ipairs(getElementsByType('player')) do local money = getPlayerMoney(v) setElementData(v,"Dinero",money ) end end setTimer(updateMoney, 10000, 0) ----------------------------------------------------------------------------------------------------------------------------- --Las Estrellas. local starttick, currenttick local player = getLocalPlayer() addEventHandler("onClientRender",getRootElement(), function() if not starttick then starttick = getTickCount() end currenttick = getTickCount() if currenttick - starttick >= 1000 then setElementData(player,"Estrellas",getPlayerWantedLevel( player ) ) starttick = getTickCount() end end ) function updateWanted() for k, v in ipairs(getElementsByType('player')) do local wanted = getPlayerWantedLevel(v) setElementData(v,"Estrellas",wanted ) end end setTimer(updateWanted, 10000, 0) El resource funciona bien, la cosa esque me gustaria añadir el simbolo de dinero ($) antes del Dinero del jugador, y la otra cosa esq, en la consola me saca este error q se Spamea (la saca infinidades de veces): [2011-07-05 17:00:44] ERROR: admin\server\admin_server.lua:1405: Admin security - Client/player mismatch from 190.134.187.42 (onElementDataChange Dinero) [2011-07-05 17:00:44] ERROR: admin\server\admin_server.lua:1405: Admin security - Client/player mismatch from 190.134.187.42 (onElementDataChange Estrellas)] Obviamente NO puede ser culpa del resource Admin.... Realmente incomoda... 3. Y la ultima esq, en el resource del Legal Sistem, cuando un jugador es arrestado, persigue al Poli, pero solo por sierta distancia, me gustaria q digamos a X distancia, el arrestado se Warpeara al poli, para q no se aleje mucho y quede libre, la parte q controla eso es esto: --FORCES A PRISONER TO FOLLOW THE COP function walktheprisoner(thecop, theprisoner) if (getElementData ( theprisoner, "currentstatus" ) == "underarrest") and (getPedOccupiedVehicle ( theprisoner ) == false ) then local copx, copy, copz = getElementPosition ( thecop ) local prisonerx, prisonery, prisonerz = getElementPosition ( theprisoner ) copangle = ( 360 - math.deg ( math.atan2 ( ( copx - prisonerx ), ( copy - prisonery ) ) ) ) % 360 setPedRotation ( theprisoner, copangle ) setCameraTarget ( theprisoner, theprisoner ) local dist = getDistanceBetweenPoints2D ( copx, copy, prisonerx, prisonery ) if ( dist > 35 ) then freetheguy ( theprisoner ) --FREES PRISONER IF HE GETS FAR AWAY elseif ( dist > 17 ) then setControlState ( theprisoner, "sprint", true ) setControlState ( theprisoner, "walk", false ) setControlState ( theprisoner, "forwards", true ) local zombify = setTimer ( walktheprisoner, 500, 1, thecop, theprisoner ) elseif ( dist > 10 ) then setControlState ( theprisoner, "sprint", false ) setControlState ( theprisoner, "walk", false ) setControlState ( theprisoner, "forwards", true ) local zombify = setTimer ( walktheprisoner, 500, 1, thecop, theprisoner ) elseif ( dist > 5 ) then setControlState ( theprisoner, "sprint", false ) setControlState ( theprisoner, "walk", true ) setControlState ( theprisoner, "forwards", true ) local zombify = setTimer ( walktheprisoner, 500, 1, thecop, theprisoner ) elseif ( dist < 2 ) then setControlState ( theprisoner, "sprint", false ) setControlState ( theprisoner, "walk", false ) setControlState ( theprisoner, "forwards", false ) local zombify = setTimer ( walktheprisoner, 500, 1, thecop, theprisoner ) end end end eh modificado las distancias originales... el gran problema, y por eso deseo q digamos en una distancia 25 se warpee al Cop, la vdd no se como hacerlo, lo ago, porque si el cop salta un pequeño muro, el prisionero se queda pegado en el murito, hasta q quede libre, en la distancia 35 como lo deje indicado... Bueno eso serian mis 3 dudas, no se no pude D: Muchas gracias a todos Link to comment
Gothem Posted July 6, 2011 Share Posted July 6, 2011 1. Para quitarle la función simplemente usas la función setPedAnimation(ped) y nada mas. 2. Eso es por hacerlo client-side. Si quieres hacer alguna modificación al scoreboard es preferible hacerlo desde el servidor. 3. Puedes explicar mejor cual era el problema? Link to comment
Serginix Posted July 6, 2011 Author Share Posted July 6, 2011 Lol, la primera respuesta... 1. Ya un man del BOSS me estaba yudando, pero gracias 2. no sabia, lo intentare, gracias man, pero como le aria para q saliera el $ antes del dinero del jugador? --> Edit: La funcion de getLocalPlayer, solo funciona en un Client-Side... q Ago? 3.Queria q el jugador Arrestado, si se aleja bastante, se warpee al lado del cop, para evitar q por alguna razon quede por alla atras y sea liberado, o q almenos la distancia sea mejor, y q funcione bien.. gracias man Link to comment
Gothem Posted July 6, 2011 Share Posted July 6, 2011 2. hace un timer que se repita cada cierto tiempo. en donde se vea el dinero del jugador, vea si es que cambia y lo ponga en el scoreboard. (Eso es lo que hace el recurso admin para ver el dinero de los jugadores) 3. function walktheprisoner(thecop, theprisoner) if (getElementData ( theprisoner, "currentstatus" ) == "underarrest") and (getPedOccupiedVehicle ( theprisoner ) == false ) then local copx, copy, copz = getElementPosition ( thecop ) local prisonerx, prisonery, prisonerz = getElementPosition ( theprisoner ) copangle = ( 360 - math.deg ( math.atan2 ( ( copx - prisonerx ), ( copy - prisonery ) ) ) ) % 360 setPedRotation ( theprisoner, copangle ) setCameraTarget ( theprisoner, theprisoner ) local dist = getDistanceBetweenPoints2D ( copx, copy, prisonerx, prisonery ) if ( dist > 35 ) then -- Aqui es cuando el jugador se aleja bastante setElementPosition( theprisoner, copx, copy+1, copz ) --Teletransportamos el jugador al lado del policia elseif ( dist > 17 ) then setControlState ( theprisoner, "sprint", true ) setControlState ( theprisoner, "walk", false ) setControlState ( theprisoner, "forwards", true ) local zombify = setTimer ( walktheprisoner, 500, 1, thecop, theprisoner ) elseif ( dist > 10 ) then setControlState ( theprisoner, "sprint", false ) setControlState ( theprisoner, "walk", false ) setControlState ( theprisoner, "forwards", true ) local zombify = setTimer ( walktheprisoner, 500, 1, thecop, theprisoner ) elseif ( dist > 5 ) then setControlState ( theprisoner, "sprint", false ) setControlState ( theprisoner, "walk", true ) setControlState ( theprisoner, "forwards", true ) local zombify = setTimer ( walktheprisoner, 500, 1, thecop, theprisoner ) elseif ( dist < 2 ) then setControlState ( theprisoner, "sprint", false ) setControlState ( theprisoner, "walk", false ) setControlState ( theprisoner, "forwards", false ) local zombify = setTimer ( walktheprisoner, 500, 1, thecop, theprisoner ) end end end Eso era lo que buscabas o no? o: Link to comment
Serginix Posted July 7, 2011 Author Share Posted July 7, 2011 Mmmmmm... En cuanto al 2, el dinero funciona bien, cada 10 segundos se actualiza la info, lo pondre de 3 para estar mejor informados En cuanto al 3, ire a Testear, aver q tal.. Gracias , cuando testeo miro aver q tal... xP Link to comment
Serginix Posted July 7, 2011 Author Share Posted July 7, 2011 Hola, Perdoden el "Re-Post" pero no se porque no me daba el Boton de Edit... 1. No eh Popido con el 1... la animacion se repete infinidad de veces D: 2.No puede ser Server Side, el error continua... 3. Funciono bien, las primeras veces o cuando se le da la gana el codigo quedo asi (tuve q modificar las distancias porque ocacionaba bugs...) queda asi: EDITO: Ya Solicione este (creo) solamente hize esto function walktheprisoner(thecop, theprisoner) if (getElementData ( theprisoner, "currentstatus" ) == "underarrest") and (getPedOccupiedVehicle ( theprisoner ) == false ) then local copx, copy, copz = getElementPosition ( thecop ) local prisonerx, prisonery, prisonerz = getElementPosition ( theprisoner ) copangle = ( 360 - math.deg ( math.atan2 ( ( copx - prisonerx ), ( copy - prisonery ) ) ) ) % 360 setPedRotation ( theprisoner, copangle ) setCameraTarget ( theprisoner, theprisoner ) local dist = getDistanceBetweenPoints2D ( copx, copy, prisonerx, prisonery ) if ( dist > 20 ) then freetheguy ( theprisoner ) elseif ( dist > 17 ) then setElementPosition( theprisoner, copx, copy+1, copz ) local zombify = setTimer ( walktheprisoner, 500, 1, thecop, theprisoner ) -- agrege esta linea ! elseif ( dist > 13 ) then setControlState ( theprisoner, "sprint", true ) setControlState ( theprisoner, "walk", false ) setControlState ( theprisoner, "forwards", true ) local zombify = setTimer ( walktheprisoner, 500, 1, thecop, theprisoner ) elseif ( dist > 4 ) then setControlState ( theprisoner, "sprint", false ) setControlState ( theprisoner, "walk", false ) setControlState ( theprisoner, "forwards", true ) local zombify = setTimer ( walktheprisoner, 500, 1, thecop, theprisoner ) elseif ( dist > 1.5 ) then setControlState ( theprisoner, "sprint", false ) setControlState ( theprisoner, "walk", true ) setControlState ( theprisoner, "forwards", true ) local zombify = setTimer ( walktheprisoner, 500, 1, thecop, theprisoner ) elseif ( dist < 1.5 ) then setControlState ( theprisoner, "sprint", false ) setControlState ( theprisoner, "walk", false ) setControlState ( theprisoner, "forwards", false ) local zombify = setTimer ( walktheprisoner, 500, 1, thecop, theprisoner ) end end end Link to comment
Gothem Posted July 8, 2011 Share Posted July 8, 2011 podrías mostrar el código del primero y del segundo para ver los errores? Link to comment
Serginix Posted July 10, 2011 Author Share Posted July 10, 2011 Que Pena q no te respondi... estaba ocupado.. Bueno, el Problema 1, 3 y 4 son en cuanto al LegalSystem, q le andaba haceindo modificaciones para ponerlo Hostia me da algo de pena pedir ayuda.... . Bueno, lo del 2 asi va el codigo. ----------------------------------------------------------------------------------------------------- local starttick, currenttick local player = getLocalPlayer() addEventHandler("onClientRender",getRootElement(), function() if not starttick then starttick = getTickCount() end currenttick = getTickCount() if currenttick - starttick >= 1000 then setElementData(player,"Dinero",getPlayerMoney( player ) ) starttick = getTickCount() end end ) function updateMoney() for k, v in ipairs(getElementsByType('player')) do local money = getPlayerMoney(v) setElementData(v,"Dinero",money ) end end setTimer(updateMoney, 3000, 0) ----------------------------------------------------------------------------------------------------------------------------- local starttick, currenttick local player = getLocalPlayer() addEventHandler("onClientRender",getRootElement(), function() if not starttick then starttick = getTickCount() end currenttick = getTickCount() if currenttick - starttick >= 1000 then setElementData(player,"Estrellas",getPlayerWantedLevel( player ) ) starttick = getTickCount() end end ) function updateWanted() for k, v in ipairs(getElementsByType('player')) do local wanted = getPlayerWantedLevel(v) setElementData(v,"Estrellas",wanted ) end end setTimer(updateWanted, 3000, 0) y bueno.. de los problemas del legal system irian estas funciones... La del la Animacion, el Unico prolblema esq el ped queda Animado. --ARREST PLAYERS BY HOLDING THEM AT GUNPOINT IF THEY HAVE LOW HP function sightscheck ( element ) if isElement(element) then if ( getElementType ( element ) == "player" ) then if ( getControlState ( source, "aim_weapon" ) ) then local currentgun = getPedWeapon ( source ) local wlevel = getPlayerWantedLevel( element ) if (currentgun > 19) and (currentgun < 39) and (wlevel > 0) then if getElementParent(source) == kingCOP then local thecop = source local theprisoner = element local cx, cy, cz = getElementPosition ( source ) local px, py, pz = getElementPosition ( element ) if ( getElementHealth ( element ) < 15 ) and ( getDistanceBetweenPoints3D ( cx, cy, cz, px, py, pz ) < 8 ) then -------------------------- Aqui va la modificacion setPedAnimation( theprisoner, "ped", "handsup", 3000, false, true, true) setElementHealth ( element, 79 ) setTimer (setPedAnimation(theprisioner) ,3000, 1) outputChatBox ( "Arrestaste a #FFFFFF"..getPlayerName(element)..", #00FF00Buen Trabajo Man!", thecop , 0, 255, 0, true) outputChatBox ( "Jajaja Por Pendejo, #FFFFFF"..getPlayerName(source).." #FF0000Te Arresto!", theprisoner, 255, 0, 0, true) -- ... fue por un amigo ------------------------------------------------------------------------------------------Aqui Termina. if (getElementData ( theprisoner, "currentstatus" ) ~= "underarrest" ) then if (getElementData ( thecop, "currentarrests" ) ~= "single" ) and (getElementData ( thecop, "currentarrests" ) ~= "double" ) then triggerClientEvent(thecop,"copdirections",thecop) setElementData ( thecop, "currentarrests", "single" ) elseif (getElementData ( thecop, "currentarrests" ) == "single" ) then setElementData ( thecop, "currentarrests", "double" ) end setElementData ( theprisoner, "currentstatus", "underarrest" ) setElementData ( theprisoner, "captor", thecop ) showCursor ( theprisoner, true ) toggleAllControls ( theprisoner, false, true, false ) walktheprisoner ( thecop, theprisoner ) setElementData ( theprisoner, "arrestTimeout", setTimer ( freetheguy, 180000, 1, theprisoner )) -- local arresttoolong = setTimer ( freetheguy, 180000, 1, theprisoner ) end end end end end end end end addEventHandler ( "onPlayerTarget", getRootElement(), sightscheck ) Tengo otro problema de outputChatBox pero no importan luego los reparo yo solo y el q te dije q es el nuevo problema, q intente todo y casi q funciona. la cosa es q al arrestar a alguien , y el Cop entre en un auto CUALQUIERA, el prisionero se warpee adentro el auto. asi va la funcion function copcarenter (vehicle, seat, jacked ) local carid = getElementModel( vehicle ) if carid == [AQUI IRIAN LAS ID DE LSO VEHICULOS DE POLI PERO LOS BORRE] or carid == [asi suseviamente, los cambie en mi intento, al final explico] then if getElementParent(source) == kingCOP then if (getElementData ( source, "currentarrests" ) == "single" ) or (getElementData ( source, "currentarrests" ) == "double" ) then local players = getElementsByType ( "player" ) for theKey,thePlayer in ipairs(players) do if (getElementData ( thePlayer, "captor" ) == source ) then local copx, copy, copz = getElementPosition ( source ) local prisonerx, prisonery, prisonerz = getElementPosition ( thePlayer ) local dist = getDistanceBetweenPoints2D ( copx, copy, prisonerx, prisonery ) if ( dist < 6 ) then if (getVehicleOccupant ( vehicle, 2 ) == false) then warpPedIntoVehicle ( thePlayer, vehicle, 2 ) elseif (getVehicleOccupant ( vehicle, 3 ) == false) then warpPedIntoVehicle ( thePlayer, vehicle, 3 ) end end end end end end elseif carid == 599 then if getElementParent(source) == kingCOP then if (getElementData ( source, "currentarrests" ) == "single" ) or (getElementData ( source, "currentarrests" ) == "double" ) then local players = getElementsByType ( "player" ) for theKey,thePlayer in ipairs(players) do if (getElementData ( thePlayer, "captor" ) == source ) then local copx, copy, copz = getElementPosition ( source ) local prisonerx, prisonery, prisonerz = getElementPosition ( thePlayer ) local dist = getDistanceBetweenPoints2D ( copx, copy, prisonerx, prisonery ) if ( dist < 6 ) then if (getVehicleOccupant ( vehicle, 2 ) == false) then warpPedIntoVehicle ( thePlayer, vehicle, 1 ) end end end end end end end end addEventHandler ( "onPlayerVehicleEnter", getRootElement(), copcarenter ) La Funcion, funciona correctamente, con los vehiculos de policia, lo q intente ahcer, fue colocar el principio donde va el "carid" fue: function copcarenter (vehicle, seat, jacked ) local carid = getElementModel( vehicle ) if carid > 400 and < 611 then if getElementParent(source) == kingCOP then -- Aqui el resto de carreta del script. Entonces hize una colura, como eran por ejemplo "if carid == 400 or carid == 401 ...." decidi colocar las 211 ID de los vehiculos aver q pasaba , no me deremoche Mucho, unos 3 minutos, usaba un trukito con el F3 (Buscar siguiente) + Control V. termine rapido. y tampoco funciono... no al 100%, sino con algunos pocos, como el Maveric y otros pocos vehiculos normales... pero casi ninguno. Entonces no se q hacer... creo q las ufnciones estan bien o q falta? no quiero ser molestia, q pena con uds gente ... Link to comment
Recommended Posts