Jump to content

Hola, me ayudan? xP


Recommended Posts

Hola!

Hace mucho q no posteaba algo, xD

en fin, tenia 3 dudas para ver si me las pueden solucioanr pofa :D

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 xD, 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 :D

Link to comment

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

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

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

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 o.O 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

Que Pena q no te respondi... estaba ocupado..

Bueno, el Problema 1, 3 y 4 xD son en cuanto al LegalSystem, q le andaba haceindo modificaciones para ponerlo Hostia me da algo de pena pedir ayuda.... :oops: .

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 xD 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 :P, 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 :oops: ...

Link to comment
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...