Jump to content

alex17

Members
  • Posts

    302
  • Joined

  • Last visited

Everything posted by alex17

  1. Prueva de esta forma corriganme si cometí algún error local n = { [1] = { 500, 10, 50, 25, 25, 25, 25, 20, 50, 0, 0, 0 },--Nivel 1 [2] = { 550, 20, 100, 50, 50, 50, 50, 30, 100, 15, 15, 0 },--Nivel 2 } local func_lvl = setmetatable({}, {__index = function (t, k) return n[#n] end}) local lvl_tbl = setmetatable( n, {__index=func_lvl}) local fallback_t = setmetatable({}, {__index=lvl_tbl}) function level( ) local n = tonumber( getElementData(source, "level")) setPedStat(source, 24, fallback_t[n][1]) for i = 69, 79 do setPedStat(source, i, fallback_t[n][i-67]) end outputChatBox("Nivel "..n, source, 255, 255, 255, true) end addEvent ( "onPlayerLevelUP", true ) addEventHandler ( "onPlayerLevelUP", getRootElement(), level) addEventHandler("onPlayerLogin", getRootElement(), level)
  2. Te paso el que yo utiliso esta para Admins por acl client local Superman = {} -- Settings local ZERO_TOLERANCE = 0.00001 local MAX_ANGLE_SPEED = 6 -- In degrees per frame local MAX_SPEED = 1.0 local EXTRA_SPEED_FACTOR = 1.85 local LOW_SPEED_FACTOR = 0.40 local ACCELERATION = 0.025 local EXTRA_ACCELERATION_FACTOR = 1.8 local LOW_ACCELERATION_FACTOR = 0.85 local TAKEOFF_VELOCITY = 1.75 local TAKEOFF_FLIGHT_DELAY = 750 local SMOKING_SPEED = 1.25 local GROUND_ZERO_TOLERANCE = 0.18 local LANDING_DISTANCE = 3.2 local FLIGHT_ANIMLIB = "swim" local FLIGHT_ANIMATION = "Swim_Dive_Under" local FLIGHT_ANIM_LOOP = false local IDLE_ANIMLIB = "cop_ambient" local IDLE_ANIMATION = "Coplook_loop" local IDLE_ANIM_LOOP = true local MAX_Y_ROTATION = 55 local ROTATION_Y_SPEED = 3.8 -- Static global variables local thisResource = getThisResource() local rootElement = getRootElement() local localPlayer = getLocalPlayer() local serverGravity = getGravity() -- -- Utility functions -- local function isPlayerFlying(player) local data = getElementData(player, "superman:flying") if not data or data == false then return false else return true end end local function setPlayerFlying(player, state) if state == true then state = true else state = false end setElementData(player, "superman:flying", state) end local function iterateFlyingPlayers() local current = 1 local allPlayers = getElementsByType("player") return function() local player repeat player = allPlayers[current] current = current + 1 until not player or (isPlayerFlying(player) and isElementStreamedIn(player)) return player end end function Superman:restorePlayer(player) setPlayerFlying(player, false) setPedAnimation(player, false) setElementVelocity(player, 0, 0, 0) setElementRotation(player, 0, 0, 0) --setPedRotation(player, getPedRotation(player)) setElementCollisionsEnabled(player, true) self:destroySmokeGenerators(player) self.rotations[player] = nil self.previousVelocity[player] = nil end function Superman:createSmokeGenerator(player) local generator = createObject(2780, getElementPosition(player)) setElementCollisionsEnabled(generator, false) setObjectScale(generator, 0) return generator end function Superman:createSmokeGenerators(player) if not self.smokeGenerators[player] then local smokeGenerators = {} smokeGenerators[1] = self:createSmokeGenerator(player) attachElements(smokeGenerators[1], player, 0.75, -0.2, -0.4, -40, 0, 60) smokeGenerators[2] = self:createSmokeGenerator(player) attachElements(smokeGenerators[2], player, -0.75, -0.2, -0.4, -40, 0, -60) self.smokeGenerators[player] = smokeGenerators end end function Superman:destroySmokeGenerators(player) if self.smokeGenerators[player] then for k, v in ipairs(self.smokeGenerators[player]) do destroyElement(v) end self.smokeGenerators[player] = nil end end function angleDiff(angle1, angle2) angle1, angle2 = angle1 % 360, angle2 % 360 local diff = (angle1 - angle2) % 360 if diff <= 180 then return diff else return -(360 - diff) end end local function isElementInWater(ped) local pedPosition = Vector3D:new(getElementPosition(ped)) if pedPosition.z <= 0 then return true end local waterLevel = getWaterLevel(pedPosition.x, pedPosition.y, pedPosition.z) if not isElementStreamedIn(ped) or not waterLevel or waterLevel < pedPosition.z then return false else return true end end local function isnan(x) math.inf = 1/0 if x == math.inf or x == -math.inf or x ~= x then return true end return false end local function getVector2DAngle(vec) if vec.x == 0 and vec.y == 0 then return 0 end local angle = math.deg(math.atan(vec.x / vec.y)) + 90 if vec.y < 0 then angle = angle + 180 end return angle end -- -- Initialization and shutdown functions -- function Superman.Start() local self = Superman -- Register events addEventHandler("onClientResourceStop", getResourceRootElement(thisResource), Superman.Stop, false) addEventHandler("onPlayerJoin", rootElement, Superman.onJoin) addEventHandler("onPlayerQuit", rootElement, Superman.onQuit) addEventHandler("onClientRender", rootElement, Superman.processControls) addEventHandler("onClientRender", rootElement, Superman.processFlight) addEventHandler("onClientPlayerDamage", localPlayer, Superman.onDamage, false) addEventHandler("onClientElementDataChange", rootElement, Superman.onDataChange) addEventHandler("onClientElementStreamIn", rootElement, Superman.onStreamIn) addEventHandler("onClientElementStreamOut", rootElement, Superman.onStreamOut) -- Initializate attributes self.smokeGenerators = {} self.rotations = {} self.previousVelocity = {} end addEventHandler("onClientResourceStart", getResourceRootElement(thisResource), Superman.Start, false) function Superman.Stop() local self = Superman setGravity(serverGravity) -- Restore all players animations, collisions, etc for player in iterateFlyingPlayers() do self:restorePlayer(player) end end -- -- Join/Quit -- function Superman.onJoin(player) local self = Superman local player = player or source setPlayerFlying(player, false) end function Superman.onQuit(reason, player) local self = Superman local player = player or source if isPlayerFlying(player) then self:restorePlayer(player) end end -- -- onDamage: superman is invulnerable -- function Superman.onDamage() local self = Superman if isPlayerFlying(localPlayer) then cancelEvent() end end -- -- onStreamIn: Reset rotation attribute for player -- function Superman.onStreamIn() local self = Superman end function Superman.onStreamOut() local self = Superman if source and isElement(source) and getElementType(source) == "player" and isPlayerFlying(source) then self.rotations[source] = nil self.previousVelocity[source] = nil end end -- -- onDataChange: Check if somebody who is out of stream stops being superman -- function Superman.onDataChange(dataName, oldValue) local self = Superman if dataName == "superman:flying" and isElement(source) and getElementType(source) == "player" and oldValue ~= getElementData(source, dataName) and oldValue == true and getElementData(source, dataName) == false then self:restorePlayer(source) end end -- -- onJump: Combo to start flight without any command -- function Superman.onJump(key, keyState) local self = Superman local task = getPedSimplestTask(localPlayer) if not isPlayerFlying(localPlayer) then if task == "TASK_SIMPLE_IN_AIR" then
  3. creo que seria bueno que le dejes una breve explicación asi el pueda entender y sepa que hacer ..
  4. si utilisas el exp system de castillo14 la manera mas facil de hacerlo podría ser haci addEvent ( "onPlayerLevelUP", true ) addEventHandler ( "onPlayerLevelUP", root, function ( ) level = getElementData(source, "level") setPedStat(source, 24, 500) setPedStat(source, 69, 10) setPedStat(source, 70, 50) setPedStat(source, 71, 25) setPedStat(source, 72, 25) setPedStat(source, 73, 25) setPedStat(source, 74, 25) setPedStat(source, 75, 20) setPedStat(source, 76, 50) setPedStat(source, 77, 0) setPedStat(source, 78, 0) setPedStat(source, 79, 0) outputChatBox("Nivel "..level, source, 255, 255, 255, true) end )
  5. mm what kind of script you need for zombie server ?
  6. tienes razon Narutimmy esa funcion sirve para ver el nombre del arma creo qe no esposible poner invisibles las armas por otro lado esperemos que dicen los demas D:
  7. hay un scrip en la comunidad llamado shells si no me equivoco y hace lo que tu quieres https://community.multitheftauto.com/in ... ils&id=635
  8. nop si quieres que sea invisible el alpha debe ser a 0 no 255
  9. necesariamente quieres que bote granadas o solo que las balas hagan explosiones ?
  10. function Parado () local elements = getAttachedElements ( source ) setElementAlpha(elements,0) local armas = getPedWeapon (source) setElementAlpha(armas ,0) ---Liinea 262 end mm aver prueva con esto
  11. puedes utilisar getPedWeapon setElementAlpha
  12. no hay problema que bueno que hayas solucionado tus problemas D: PD: lol no tiene cabeza tu skin en la foto e_e
  13. añado por si no quieres que se vea el color hexadecimal D: local r, g, b = getPlayerNametagColor ( player ) dxDrawText(getPlayerName(player), Nombre, posX+posY*20, tocolor ( r, g, b, 255), false,false,false,true)
  14. los slothbot no necesitan de una animación para correr asia los players no es necesario darle una animación como dice Tomasito si le pones una animación impedirá que ataquen
  15. puedes utlizar el codigo que te di addEventHandler ( "onPlayerWasted", root, function( totalAmmo, killer, killerWeapon, bodypart, stealth ) if killer then local account = getPlayerAccount ( killer ) if killer ~= source then setAccountData( account,"totalkillsdeaths.Kills",tonumber( getAccountData( account,"totalkillsdeaths.Kills" ) or 0 ) +1 ) setElementData( killer, "Kills", tonumber( getAccountData( account,"totalkillsdeaths.Kills" ) ) ) end else local accountSource = getPlayerAccount ( source ) setAccountData( accountSource,"totalkillsdeaths.Deaths",tonumber( getAccountData(accountSource,"totalkillsdeaths.Deaths") or 0 ) +1 ) setElementData( source, "Deaths", tonumber( getAccountData( accountSource,"totalkillsdeaths.Deaths" ) ) ) end end ) addEventHandler( "onPlayerLogin",root, function( thePreviousAccount, theCurrentAccount, autoLogin ) local account = getPlayerAccount ( source ) if not getAccountData( account,"totalkillsdeaths.Kills" ) and not getAccountData( account,"totalkillsdeaths.Deaths" ) then setAccountData( account,"totalkillsdeaths.Kills",0 ) setAccountData( account,"totalkillsdeaths.Deaths",0 ) end setElementData( source,"Deaths",tonumber( getAccountData( account,"totalkillsdeaths.Deaths" ) or 0 ) ) setElementData( source,"Kills",tonumber( getAccountData( account,"totalkillsdeaths.Kills" ) or 0 ) ) end ) y para añadirlo a tu escoreboard puedes utilizar esto como ejemplo dxDrawText(getElementData(player, "Kills"), Kills, posX+posY*20) dxDrawText(getElementData(player, "Deaths"), Deaths, posX+posY*20)
  16. mmm usted tiene su propio scoreboard desde cero si posteas tu codigo tal ves podria ayudarte
  17. si no me equivoco mas abajo hay un post sobre el mismo problema puedes darle una revisada D:
  18. prueva con esto aver si te sirve D: server.lua addEventHandler ( "onPlayerWasted", root, function( totalAmmo, killer, killerWeapon, bodypart, stealth ) if killer then local account = getPlayerAccount ( killer ) if killer ~= source then setAccountData( account,"totalkillsdeaths.Kills",tonumber( getAccountData( account,"totalkillsdeaths.Kills" ) or 0 ) +1 ) setElementData( killer, "Kills", tonumber( getAccountData( account,"totalkillsdeaths.Kills" ) ) ) end else local accountSource = getPlayerAccount ( source ) setAccountData( accountSource,"totalkillsdeaths.Deaths",tonumber( getAccountData(accountSource,"totalkillsdeaths.Deaths") or 0 ) +1 ) setElementData( source, "Deaths", tonumber( getAccountData( accountSource,"totalkillsdeaths.Deaths" ) ) ) end end ) addEventHandler( "onPlayerLogin",root, function( thePreviousAccount, theCurrentAccount, autoLogin ) local account = getPlayerAccount ( source ) if not getAccountData( account,"totalkillsdeaths.Kills" ) and not getAccountData( account,"totalkillsdeaths.Deaths" ) then setAccountData( account,"totalkillsdeaths.Kills",0 ) setAccountData( account,"totalkillsdeaths.Deaths",0 ) end setElementData( source,"Deaths",tonumber( getAccountData( account,"totalkillsdeaths.Deaths" ) or 0 ) ) setElementData( source,"Kills",tonumber( getAccountData( account,"totalkillsdeaths.Kills" ) or 0 ) ) end ) addEventHandler( "onResourceStart",resourceRoot, function( ) outputDebugString( "add Total Kills to scoreboard Return: "..tostring( call( getResourceFromName("Scoreboard"), "addScoreboardColumn", "Kills",root,2, 0.07 ) ) ) outputDebugString( "add Total Deaths to scoreboard Return: "..tostring( call( getResourceFromName("Scoreboard"), "addScoreboardColumn", "Deaths",root,3, 0.09 ) ) ) end )
  19. en resumen para que no te hagas problemas .. edita el acl como te dijo tomasito y luego solo reinicia tu servidor D:
  20. no e_e como hago eso ._.
  21. creaste el grupo de acl VIP y te añadiste ?
  22. si publicas el scrip te ayudo no quiero descargarlo D:
  23. mira te dare un ejemplo simple de como lo puedes hacer local map = { [1]={980,-2118,1577,16},-- aca pones todos los objetos el id y las coordenadas-- [2]={980,-2128,1577,16}, [3]={980,-2128,1577,16}, [4]={980,-2128,1577,16}, .. [100]={980,-2128,1577,16} } for _,object in ipairs( map ) do local modelo,x,y,z = unpack(object) local newObject = createObject( unpack( object ) ) addCommandHandler( "1", function( player, cmd ) moveObject( newObject, 1000, x, y, z + 20 ) -- aca pones primero el tiempo y luego las cordenadas y solo le sumas a donde quieres mover todo en este caso le sume 20 a las altura asi que sibiran todos los objetos -- end ) end espero te sirva de algo D:
×
×
  • Create New...