-
Posts
186 -
Joined
-
Last visited
Everything posted by Sensacion
-
This is for samp, using: SetPlayerSpecialAction(playerid, SPECIAL_ACTION_CUFFED);
-
Podrías convertir a string, usar string.find para encontrar la posición del ".", luego usar una variable que sea igual a: 6 - la posición + 1, y mandar esta variable al segundo argumento del math.round no creo que eso sirva.... ademas ya eh encontrado otra manera de sacar lo que quieria gracias de todos modos Creeme que sirve, te di el algoritmo, más no el script, pero que bueno que lo hayas resuelto de otro modo, saludos.
-
Podrías convertir a string, usar string.find para encontrar la posición del ".", luego usar una variable que sea igual a: 6 - la posición + 1, y mandar esta variable al segundo argumento del math.round
-
Modifiqué un poco la función luces y le agregué para que no se te activen varios timers a la vez si alguien le da repetidas veces al botón enter. Reemplaza la función luces por esto: local vlr = 1 function luces( veh ) if not isTimer( tim ) then tim = setTimer( function() if ( vlr%2 == 0 ) then setVehicleOverrideLights( veh, vlr ) vlr = vlr - 1 else setVehicleOverrideLights( veh, vlr ) vlr = vlr + 1 end end , 1000, 6) end end addEvent( "luces",true ) addEventHandler( "luces", root, luces )
-
eso se bugeara. mayor que 1, es 2, 3 4 y asi todos.. si tienes 6 estrellas, te dara dinero por cada una de esas. local cWL = getPlayerWantedLevel(player) if cWL == 1 then .. elseif cWL == 2 then. nose que devuelve el wantedlevel si un string o algo. Dependera del evento que la definmicion de player sea source u otra cosa que tu definas suerte No, no se bugea, siempre le daría 3000 si tiene más de 1 estrella porque la primera parte se está cumpliendo, y para lo del dinero por estrellas podrías establecer un valor fijo al dinero, por ejemplo 1500 por estrella, obtener el número de estrellas y multiplicarlo por 1500, luego darle el dinero.
-
Server: function zona ( attacker, weapon, bodypart ) if ( isElementWithinColShape ( source, colshape ) ) then zombiesMatados = ( zombiesMatados + 1 ) if ( zombiesMatados == 5 ) then --Numero de Zombis por Matar if ( not isElement ( slothbot1 ) ) then local x, y, z = getElementPosition(attacker) local skin = math.random ( 33, 36 ) slothbot1 = exports [ "slothbot" ]:spawnBot ( -175.610, 57.66, 3.2, 0, skin, 0, 0, _, _, "hunting" ) myBlip = createBlipAttachedTo ( slothbot1, 23 ) setElementData(slothbot1, "Witch", true) local id = getElementModel ( slothbot1 ) if id == 33 then exports.extra_health:setElementExtraHealth(slothbot1, 30000) outputChatBox ( "#ff0000Nemesis: #eeff00S.T.A.R.S!!!", getRootElement(), 255, 255, 255, true) elseif id == 34 then exports.extra_health:setElementExtraHealth(slothbot1, 100000) outputChatBox ( "#ff0000Tyrant a Spawneado, Corre!", getRootElement(), 255, 255, 255, true) elseif id == 35 then exports.extra_health:setElementExtraHealth(slothbot1, 15000) outputChatBox("[bOSS]:Boss low spawned", getRootElement(), 155, 155, 155, false) elseif id == 36 then exports.extra_health:setElementExtraHealth(slothbot1, 400000) outputChatBox("Lincker a Spawneado...", getRootElement(), 155, 155, 155, false) end setElementData( slothbot1, "currenthealth", exports.extra_health:getElementExtraHealth( slothbot1 ) ) end end end end addEventHandler ( "onZombieWasted", getRootElement(), zona ) Client: local maxDist = 60 function witchNameTag() local witchs = getElementsByType ( "ped",getRootElement(),true ) local Px,Py,Pz = getCameraMatrix( ) for theKey,theWitch in ipairs(witchs) do if ( isElement( theWitch ) ) then local Zx,Zy,Zz = getElementPosition( theWitch ) local zhx,zhy,zhz = getPedBonePosition( theWitch,6 ) if (getDistanceBetweenPoints3D( Px, Py, Pz, Zx, Zy, Zz ) < maxDist ) then if ( getElementData (theWitch, "Witch") == true) then local sxx,syy = getScreenFromWorldPosition(zhx,zhy,zhz+0.3) local currentDistance = getDistanceBetweenPoints3D(Px, Py, Pz, Zx, Zy, Zz) --local zombieHealth = getElementHealth(theWitch) local maxHP = exports.extra_health:getElementExtraHealth(theWitch) local currentHealth = getElementData(theWitch, "currenthealth") if sxx and getElementHealth(theWitch) > 0 then sx,sy = sxx-60,syy-10 dxDrawRectangle(sx+5,sy+25,131.0/maxHP*currentHealth,12.0,tocolor(255,0,0,200),false) -- health dxDrawRectangle(sx,sy,146.0,46.0,tocolor(0,0,0,0),false) -- background dxDrawRectangle(sx+5,sy+25,131.0,12.0,tocolor(0,0,0,100),false) -- bg health dxDrawText("Witch",sx+26,sy,596.0,236.0,tocolor(255,0,0,255),1.0,"default","left","top",false,false,false) -- z name end end end end end end addEventHandler( "onClientRender", root, witchNameTag )
-
Contigo realmente no se puede... @AlvareZ_ te lo dejo hecho para que este tipo deje de molestar: addEventHandler( "onClientRender", root, function() for k, i in pairs( myPeds ) do --'k' es el ped, 'i' es el nombre. if isElementOnScreen ( k ) then local x, y, z = getPedBonePosition( k, 6 ) local dx, dy = getScreenFromWorldPosition ( x, y, z + 0.4 ) local px, py, pz = getElementPosition( localPlayer ) if dx and dy then if getDistanceBetweenPoints3D(x, y, z, px, py, pz) < 10 then --Cambie tus números por [b]variables numéricas[/b], ahí reemplazas por las coordenadas si no es lo que buscas. dxDrawText( i, dx - (#i * 2 ), dy - 3, dx + (#i * 2), dy + 2, tocolor( 156, 255, 0, 255 ), 2, "arial", "center", "center", false, false, false, false, true ) end end end end end ) molestar? trato de hacerte ver que no puedes dártelas de grande, menos conmigo, ya en el otro post me di cuenta de tu nivel en programación, en fin, dejo de contestar para evitar offtopic, ya que estoy así: leyendo tus comentarios.
-
que en tu script estás colocando números en los argumentos de getDistanceBetweenPoints3D, lo que hace esta función es devolver el valor de la distancia entre 2 puntos, por ejemplo sacas las coordenadas de un player, luego de un auto, colocas esto en los argumentos y debe devolver el valor de la distancia. Estas mal, esa función si usa números en los argumentos: ( float x1, float y1, float z1, float x2, float y2, float z2 ) @AlvareZ_ haz un estamento para comparar: if getDistanceBetweenPoints3D( bla bla ) < 7 then --7 como ejemplo. --bla bla end Aprende a leer, dije: "que en tu script", le dije que él está usando números en su script, para que se de cuenta y coloque variables.
-
que en tu script estás colocando números en los argumentos de getDistanceBetweenPoints3D, lo que hace esta función es devolver el valor de la distancia entre 2 puntos, por ejemplo sacas las coordenadas de un player, luego de un auto, colocas esto en los argumentos y debe devolver el valor de la distancia.
-
addCommandHandler( "intentar", function( thePlayer, _ ) outputChatBox ( getPlayerName( thePlayer ).." intenta mirar el reloj y "..results[math.random( 1, #results )], getRootElement(), 255, 255, 255, true ) end )
-
Tu función debe tener esta forma: function nombreFuncion ( player, commandName, arg1 ) outputChatBox ( AQUIELTEXTO, QUIENESPODRANVERLO, R, G, B, true ) end addCommandHandler ( "nombrecomando", nombreFuncion )
-
precioSkin = 5000 function buy( id ) if ( getPlayerMoney( source ) >= precioSkin ) then setElementModel( source, id ) takePlayerMoney( source, precioSkin ) outputChatBox ( "Has comprado tu Skin Satisfactoriamente", source, 0, 255, 0, true ) else outputChatBox ( "Tu dinero no es suficiente para comprar este skin", source, 255, 0, 0, true ) end end addEvent( "useSkin", true ) addEventHandler( "useSkin", root, buy )
-
No lo suplantes, solamente bórralo junto a su "end"
-
No uses "if theType == 0 then", eso se usa en el evento onPlayerChat.
-
1. No, está en client side, por lo tanto los marker no los podrá "usar" otro player, ya con lo que tienes cada usuario ve su marker 2. Para el lado del cliente puedes usar este evento onClientVehicleExit y destruir el marker u ocultar su visibilidad, y cuando entra usar onClientVehicleEnter y hacer lo contrario.
-
es que es clientside y solo usa 1 argumento, cambialo a esto: givePlayerMoney ( 50 )
-
Usando tu código: addEventHandler("onClientVehicleEnter", getRootElement(), function(thePlayer, seat) if thePlayer == getLocalPlayer() then if ( getElementModel ( source ) == 574 ) then Marker1 = createMarker ( -2350.89, 2469.5, 5, "checkpoint", 2.5, 255, 255, 0, 255 ) end end end ) function Marker20 ( hitPlayer, matchingDimension ) if source == Marker1 then Marker2 = createMarker ( -2281.30, 2403.80, 4.9, "checkpoint", 2.5, 0, 255, 0, 255 ) destroyElement ( Marker1 ) end end addEventHandler ( "onClientMarkerHit", getRootElement(), Marker20 ) function Marker50 ( hitPlayer, matchingDimension ) if source == Marker2 then Marker3 = createMarker ( -2281.30, 2403.80, 4.9, "checkpoint", 2.5, 0, 255, 255, 255 ) givePlayerMoney ( thePlayer, 50 ) destroyElement ( Marker2 ) end end addEventHandler ( "onClientMarkerHit", getRootElement(), Marker50 ) pero si sigues así el código será más grande, mejor usa tablas para las posiciones x,y,z de los marker.
-
me olvidé el table.concat, pero igual, no usaría el tuyo, prefiero "complicarme" y que sean menos líneas. Simple, pon todo el contenido de la tabla en una linea hacia el lado. En programación se prefiere optimizar el código, más líneas y carácteres en una sola línea, más kb, se que la diferencia es mínima en este ejemplo pero esa es la idea en cualquier lenguaje.
-
me olvidé el table.concat, pero igual, no usaría el tuyo, prefiero "complicarme" y que sean menos líneas.
-
No es lo misma, en tu script no puedes dar armas que lleven espacio en su nombre, es decir: colt 45 combat shotgun rocket launcher rocket launcher hs fire extinguisher Ademas de que escribir los nombres en español es mas sencillo. Ah bueno, no me fijé en eso, él solo pedía arma asi que se podría suprimir el argumento de la cantidad de arma y ponerle un número o también usar esto: addCommandHandler( "arma", function( thePlayer, _, ammo, weapName, arg1, arg2 ) if ( arg1 and arg2 ) then weapName = tostring( weapName.." "..arg1.." "..arg2 ) elseif ( arg1 ) then weapName = tostring( weapName.." "..arg1 ) end local ID = getWeaponIDFromName ( weapName ) if (ID and ammo) then giveWeapon( thePlayer, ID, tonumber( ammo ), true ) end end ) ahora sería: /arma 50000 rocket launcher hs /arma 400 m4
-
Prueba esto: addEventHandler ( "onResourceStart", resourceRoot, function() local ped1 = createPed ( 211, -2494.5, 2511.89, 18.5 ) setTimer( setPedRotation, 150, 1, ped1, 270 ) setTimer( setPedAnimation, 150, 1, ped1, "INT_OFFICE", "OFF_Sit_Idle_Loop", -1, false, true, false, true ) end )
-
No es necesario usar una tabla para un simple código addCommandHandler( "arma", function( thePlayer, _, weapName, ammo ) local ID = getWeaponIDFromName ( weapName ) if (ID and ammo) then giveWeapon( thePlayer, ID, tonumber( ammo ), true ) end end ) La sintaxis es la misma, ejemplo /arma minigun 5000
-
te refieres a abrir el capote de un vehículo? o a retirarlo por completo.
-
que raro, a mi me funcionó la explosión, no lo usé con un zombie, sino con un player normal, y con el otro evento, y no es el mismo, el tuyo es "posY,posY" doble coordenada. "Y"