Jump to content

[HELP] power script


Agon

Recommended Posts

I made this and hope you understand what i'm trying to make.

    local nukeMarker = createMarker(-345.10000610352, 1612.8000488281, 74.599998474121, "cylinder", 2, 255, 0, 0, 170) 
    local boltMarker = createMarker(-2368, 1550.8000488281, 1.1000000238419, "cylinder", 2, 255, 255, 0, 170) 
    local invisibleMarker = createMarker(585.09997558594, 870.20001220703, -43.5, "cylinder", 2, 255, 255, 255, 170) 
    local powerAccount = getPlayerAccount(source) 
    local myNukePower = getAccountData(powerAccount, "player.nuke") 
    local myBoltPower = getAccountData(powerAccount, "player.bolt") 
    local myInvisiblePower = getAccountData(powerAccount, "player.invisible") 
    local speed = getGameSpeed() 
     
function bindTheKeys(source, commandName) 
  bindKey ( source, "R", "down", togglePowers ) 
end 
addEventHandler( "onPlayerLogin", getRootElements(), bindTheKeys ) 
     
function makeMePowerless() 
    setAccountData(powerAccount, "player.nuke", 0) 
    setAccountData(powerAccount, "player.bolt", 0) 
    setAccountData(powerAccount, "player.invisible", 0) 
    end 
addEventHandler("onPlayerLogin", getRootElement(), makeMePowerless) 
     
function nukeMarkerHit(source, matchingDimension) 
if (myNukePower == 0) then 
if (myBoltPower == 1) or (myBoltPower == 0) then 
if (myInvisiblePower == 1) or (myInvisiblePower == 0) then 
    setAccountData(powerAccount, "player.nuke", 1) 
    setAccountData(powerAccount, "player.bolt", 0) 
    setAccountData(powerAccount, "player.invisible", 0) 
outputChatBox("Nuke Marker", source, 0, 255, 0) 
end 
end 
end 
end 
addEventHandler("onMarkerHit", nukeMarker, nukeMarkerHit) 
  
function BoltMarkerHit(source, matchingDimension) 
if (myBoltPower == 0) then 
if (myNukePower == 1) or (myNukePower == 0) then 
if (myInvisiblePower == 1) or (myInvisiblePower == 0) then 
    setAccountData(powerAccount, "player.nuke", 0) 
    setAccountData(powerAccount, "player.bolt", 1) 
    setAccountData(powerAccount, "player.invisible", 0) 
outputChatBox("Bolt Marker", source, 0, 255, 0) 
end 
end 
end 
end 
addEventHandler("onMarkerHit", nukeMarker, BoltMarkerHit) 
  
function invisibleMarkerHit(source, matchingDimension) 
if (myInvisiblePower == 0) then 
if (myBoltPower == 1) or (myBoltPower == 0) then 
if (myNukePower == 1) or (myNukePower == 0) then 
    setAccountData(powerAccount, "player.nuke", 0) 
    setAccountData(powerAccount, "player.bolt", 0) 
    setAccountData(powerAccount, "player.invisible", 1) 
outputChatBox("Invisible Marker", source, 0, 255, 0) 
end 
end 
end 
end 
addEventHandler("onMarkerHit", nukeMarker, invisibleMarkerHit) 
  
function togglePowers(source) 
    if (myBoltPower == 1) and (speed == 1) then 
        setGameSpeed(3) 
    else setGameSpeed(1) 
    end 
    if (myNukePower == 1) then 
    local blowMarker = createMarker(0, 0, 0, "corona", 1, 255, 255, 0, 255) 
    attachElements(blowMarker, source, 0, 0, 0, 0, 0, 0) 
    function setTheAnim(source) 
    setPedAnimation(source, "BOMBER", "BOM_Plant_Loop", 1000, false, false, false, true) 
    x, y, z = getElementPosition(source) 
    createExplosion(x+x, y-y, z, 10) 
    end 
    setTimer(setTheAnim, 2000, 1) 
    end 
    if (myInvisiblePower == 1) and isPlayerNametagShowing(source) then 
    setPlayerNametagShowing(source, false) 
    setElementAlpha(source, 0) 
    else setPlayerNametagShowing(source, true) 
    setElementAlpha(source, 255) 
    end 
    end 

Everything is fine. Markers are spawned but when i start the script it says:

Starting powers 
  
WARNING: powers\power.lua:4: Bad argument @ 'getPlayerAccount' [Expected element at argument 1, got nil] 
  
WARNING: powers\power.lua:5: Bad argument @ 'getAccountData' [Expected account at argument 1, got boolean] 
  
WARNING: powers\power.lua:6: Bad argument @ 'getAccountData' [Expected account at argument 1, got boolean] 
  
WARNING: powers\power.lua:7: Bad argument @ 'getAccountData' [Expected account at argument 1, got boolean] 
  
ERROR: powers\power.lua:13: attempt to call global 'getRootElements' (a nil value) 
  
powers restarted successfully 

and it doesnt output the messages. Can you help me? :|

Link to comment

oh fixed line 13 :D and made this but getting errors again

function createEverything(source) 
    local nukeMarker = createMarker(-345.10000610352, 1612.8000488281, 74.599998474121, "cylinder", 2, 255, 0, 0, 170) 
    local boltMarker = createMarker(-2368, 1550.8000488281, 1.1000000238419, "cylinder", 2, 255, 255, 0, 170) 
    local invisibleMarker = createMarker(585.09997558594, 870.20001220703, -43.5, "cylinder", 2, 255, 255, 255, 170) 
    local powerAccount = getPlayerAccount(source) 
    local myNukePower = getAccountData(powerAccount, "player.nuke") 
    local myBoltPower = getAccountData(powerAccount, "player.bolt") 
    local myInvisiblePower = getAccountData(powerAccount, "player.invisible") 
    local speed = getGameSpeed() 
end 
addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), createEverything) 

ERRORS:

WARNING: powers\power.lua:37: Bad argument @ 'addEventHandler' [Expected element at argument 2, got nil] 
WARNING: powers\power.lua:51: Bad argument @ 'addEventHandler' [Expected element at argument 2, got nil] 
WARNING: powers\power.lua:65: Bad argument @ 'addEventHandler' [Expected element at argument 2, got nil] 
WARNING: powers\power.lua:5: Bad argument @ 'getPlayerAccount' [Expected element at argument 1, got resource-data] 
WARNING: powers\power.lua:6: Bad argument @ 'getAccountData' [Expected account at argument 1, got boolean] 
WARNING: powers\power.lua:7: Bad argument @ 'getAccountData' [Expected account at argument 1, got boolean] 
WARNING: powers\power.lua:8: Bad argument @ 'getAccountData' [Expected account at argument 1, got boolean] 
powers restarted successfully 

Link to comment
    local powerAccount = getPlayerAccount(source) 
    local myNukePower = getAccountData(powerAccount, "player.nuke") 
    local myBoltPower = getAccountData(powerAccount, "player.bolt") 
    local myInvisiblePower = getAccountData(powerAccount, "player.invisible") 

These should go inside "togglePowers" function.

Link to comment

Here is the current code

function createEverything(source) 
    local nukeMarker = createMarker(-345.10000610352, 1612.8000488281, 74.599998474121, "cylinder", 2, 255, 0, 0, 170) 
    local boltMarker = createMarker(-2368, 1550.8000488281, 1.1000000238419, "cylinder", 2, 255, 255, 0, 170) 
    local invisibleMarker = createMarker(585.09997558594, 870.20001220703, -43.5, "cylinder", 2, 255, 255, 255, 170) 
    local speed = getGameSpeed() 
end 
addEventHandler("onResourceStart", getResourceRootElement(getThisResource()), createEverything) 
     
function bindTheKeys(source, commandName) 
  bindKey ( source, "R", "down", togglePowers ) 
end 
addEventHandler( "onPlayerLogin", getRootElement(), bindTheKeys ) 
     
function makeMePowerless() 
    setAccountData(powerAccount, "player.nuke", 0) 
    setAccountData(powerAccount, "player.bolt", 0) 
    setAccountData(powerAccount, "player.invisible", 0) 
    end 
addEventHandler("onPlayerLogin", getRootElement(), makeMePowerless) 
     
function nukeMarkerHit(source, matchingDimension) 
if (myNukePower == 0) then 
if (myBoltPower == 1) or (myBoltPower == 0) then 
if (myInvisiblePower == 1) or (myInvisiblePower == 0) then 
    setAccountData(powerAccount, "player.nuke", 1) 
    setAccountData(powerAccount, "player.bolt", 0) 
    setAccountData(powerAccount, "player.invisible", 0) 
outputChatBox("Nuke Marker", source, 0, 255, 0) 
end 
end 
end 
end 
addEventHandler("onMarkerHit", nukeMarker, nukeMarkerHit) 
  
function BoltMarkerHit(source, matchingDimension) 
if (myBoltPower == 0) then 
if (myNukePower == 1) or (myNukePower == 0) then 
if (myInvisiblePower == 1) or (myInvisiblePower == 0) then 
    setAccountData(powerAccount, "player.nuke", 0) 
    setAccountData(powerAccount, "player.bolt", 1) 
    setAccountData(powerAccount, "player.invisible", 0) 
outputChatBox("Bolt Marker", source, 0, 255, 0) 
end 
end 
end 
end 
addEventHandler("onMarkerHit", nukeMarker, BoltMarkerHit) 
  
function invisibleMarkerHit(source, matchingDimension) 
if (myInvisiblePower == 0) then 
if (myBoltPower == 1) or (myBoltPower == 0) then 
if (myNukePower == 1) or (myNukePower == 0) then 
    setAccountData(powerAccount, "player.nuke", 0) 
    setAccountData(powerAccount, "player.bolt", 0) 
    setAccountData(powerAccount, "player.invisible", 1) 
outputChatBox("Invisible Marker", source, 0, 255, 0) 
end 
end 
end 
end 
addEventHandler("onMarkerHit", nukeMarker, invisibleMarkerHit) 
  
function togglePowers(source) 
    local powerAccount = getPlayerAccount(source) 
    local myNukePower = getAccountData(powerAccount, "player.nuke") 
    local myBoltPower = getAccountData(powerAccount, "player.bolt") 
    local myInvisiblePower = getAccountData(powerAccount, "player.invisible") 
    if (myBoltPower == 1) and (speed == 1) then 
        setGameSpeed(3) 
    else setGameSpeed(1) 
    end 
    if (myNukePower == 1) then 
    local blowMarker = createMarker(0, 0, 0, "corona", 1, 255, 255, 0, 255) 
    attachElements(blowMarker, source, 0, 0, 0, 0, 0, 0) 
    function setTheAnim(source) 
    setPedAnimation(source, "BOMBER", "BOM_Plant_Loop", 1000, false, false, false, true) 
    x, y, z = getElementPosition(source) 
    createExplosion(x+x, y-y, z, 10) 
    end 
    setTimer(setTheAnim, 2000, 1) 
    end 
    if (myInvisiblePower == 1) and isPlayerNametagShowing(source) then 
    setPlayerNametagShowing(source, false) 
    setElementAlpha(source, 0) 
    else setPlayerNametagShowing(source, true) 
    setElementAlpha(source, 255) 
    end 
    end 

and current errors:

WARNING: powers\power.lua:33: Bad argument @ 'addEventHandler' [Expected element at argument 2, got nil] 
WARNING: powers\power.lua:47: Bad argument @ 'addEventHandler' [Expected element at argument 2, got nil] 
WARNING: powers\power.lua:61: Bad argument @ 'addEventHandler' [Expected element at argument 2, got nil] 

and i couldn't get my powers :|

doesnt "local" mean i can use it anyline in the script?

Link to comment

No, it's vice versa of what you said: https://wiki.multitheftauto.com/wiki/Local

function createEverything() 
    local nukeMarker = createMarker(-345.10000610352, 1612.8000488281, 74.599998474121, "cylinder", 2, 255, 0, 0, 170) 
    local boltMarker = createMarker(-2368, 1550.8000488281, 1.1000000238419, "cylinder", 2, 255, 255, 0, 170) 
    local invisibleMarker = createMarker(585.09997558594, 870.20001220703, -43.5, "cylinder", 2, 255, 255, 255, 170) 
    speed = getGameSpeed() 
    addEventHandler("onMarkerHit", nukeMarker, nukeMarkerHit) 
    addEventHandler("onMarkerHit", nukeMarker, BoltMarkerHit) 
    addEventHandler("onMarkerHit", nukeMarker, invisibleMarkerHit) 
end 
addEventHandler("onResourceStart", resourceRoot, createEverything) 
    
function bindTheKeys(source, commandName) 
  bindKey ( source, "R", "down", togglePowers ) 
end 
addEventHandler( "onPlayerLogin", getRootElement(), bindTheKeys ) 
    
function makeMePowerless() 
    setAccountData(powerAccount, "player.nuke", 0) 
    setAccountData(powerAccount, "player.bolt", 0) 
    setAccountData(powerAccount, "player.invisible", 0) 
    end 
addEventHandler("onPlayerLogin", getRootElement(), makeMePowerless) 
    
function nukeMarkerHit(source, matchingDimension) 
if (myNukePower == 0) then 
if (myBoltPower == 1) or (myBoltPower == 0) then 
if (myInvisiblePower == 1) or (myInvisiblePower == 0) then 
    setAccountData(powerAccount, "player.nuke", 1) 
    setAccountData(powerAccount, "player.bolt", 0) 
    setAccountData(powerAccount, "player.invisible", 0) 
outputChatBox("Nuke Marker", source, 0, 255, 0) 
end 
end 
end 
end 
  
function BoltMarkerHit(source, matchingDimension) 
if (myBoltPower == 0) then 
if (myNukePower == 1) or (myNukePower == 0) then 
if (myInvisiblePower == 1) or (myInvisiblePower == 0) then 
    setAccountData(powerAccount, "player.nuke", 0) 
    setAccountData(powerAccount, "player.bolt", 1) 
    setAccountData(powerAccount, "player.invisible", 0) 
outputChatBox("Bolt Marker", source, 0, 255, 0) 
end 
end 
end 
end 
  
function invisibleMarkerHit(source, matchingDimension) 
if (myInvisiblePower == 0) then 
if (myBoltPower == 1) or (myBoltPower == 0) then 
if (myNukePower == 1) or (myNukePower == 0) then 
    setAccountData(powerAccount, "player.nuke", 0) 
    setAccountData(powerAccount, "player.bolt", 0) 
    setAccountData(powerAccount, "player.invisible", 1) 
outputChatBox("Invisible Marker", source, 0, 255, 0) 
end 
end 
end 
end 
  
function togglePowers(source) 
    local powerAccount = getPlayerAccount(source) 
    local myNukePower = getAccountData(powerAccount, "player.nuke") 
    local myBoltPower = getAccountData(powerAccount, "player.bolt") 
    local myInvisiblePower = getAccountData(powerAccount, "player.invisible") 
    if (myBoltPower == 1) and (speed == 1) then 
        setGameSpeed(3) 
    else setGameSpeed(1) 
    end 
    if (myNukePower == 1) then 
    local blowMarker = createMarker(0, 0, 0, "corona", 1, 255, 255, 0, 255) 
    attachElements(blowMarker, source, 0, 0, 0, 0, 0, 0) 
    function setTheAnim(source) 
    setPedAnimation(source, "BOMBER", "BOM_Plant_Loop", 1000, false, false, false, true) 
    x, y, z = getElementPosition(source) 
    createExplosion(x+x, y-y, z, 10) 
    end 
    setTimer(setTheAnim, 2000, 1) 
    end 
    if (myInvisiblePower == 1) and isPlayerNametagShowing(source) then 
    setPlayerNametagShowing(source, false) 
    setElementAlpha(source, 0) 
    else setPlayerNametagShowing(source, true) 
    setElementAlpha(source, 255) 
    end 
    end 

Link to comment

This is the code (I defined them in marker functions as well and hope did it right :P ) and I also defined powerAccount in makeMePowerless function

function createEverything() 
    local nukeMarker = createMarker(-345.10000610352, 1612.8000488281, 74.599998474121, "cylinder", 2, 255, 0, 0, 170) 
    local boltMarker = createMarker(-2368, 1550.8000488281, 1.1000000238419, "cylinder", 2, 255, 255, 0, 170) 
    local invisibleMarker = createMarker(585.09997558594, 870.20001220703, -43.5, "cylinder", 2, 255, 255, 255, 170) 
    speed = getGameSpeed() 
    addEventHandler("onMarkerHit", nukeMarker, nukeMarkerHit) 
    addEventHandler("onMarkerHit", nukeMarker, BoltMarkerHit) 
    addEventHandler("onMarkerHit", nukeMarker, invisibleMarkerHit) 
end 
addEventHandler("onResourceStart", resourceRoot, createEverything) 
    
function bindTheKeys(source, commandName) 
  bindKey ( source, "R", "down", togglePowers ) 
end 
addEventHandler( "onPlayerLogin", getRootElement(), bindTheKeys ) 
    
function makeMePowerless(powerAccount) 
    setAccountData(powerAccount, "player.nuke", 0) 
    setAccountData(powerAccount, "player.bolt", 0) 
    setAccountData(powerAccount, "player.invisible", 0) 
    end 
addEventHandler("onPlayerLogin", getRootElement(), makeMePowerless) 
    
function nukeMarkerHit(source, matchingDimension, myNukePower, myBoltPower, myInvisiblePower, powerAccount) 
if (myNukePower == 0) then 
if (myBoltPower == 1) or (myBoltPower == 0) then 
if (myInvisiblePower == 1) or (myInvisiblePower == 0) then 
    setAccountData(powerAccount, "player.nuke", 1) 
    setAccountData(powerAccount, "player.bolt", 0) 
    setAccountData(powerAccount, "player.invisible", 0) 
outputChatBox("Nuke Marker", source, 0, 255, 0) 
end 
end 
end 
end 
  
function BoltMarkerHit(source, matchingDimension, myNukePower, myBoltPower, myInvisiblePower, powerAccount) 
if (myBoltPower == 0) then 
if (myNukePower == 1) or (myNukePower == 0) then 
if (myInvisiblePower == 1) or (myInvisiblePower == 0) then 
    setAccountData(powerAccount, "player.nuke", 0) 
    setAccountData(powerAccount, "player.bolt", 1) 
    setAccountData(powerAccount, "player.invisible", 0) 
outputChatBox("Bolt Marker", source, 0, 255, 0) 
end 
end 
end 
end 
  
function invisibleMarkerHit(source, matchingDimension, myNukePower, myBoltPower, myInvisiblePower, powerAccount) 
if (myInvisiblePower == 0) then 
if (myBoltPower == 1) or (myBoltPower == 0) then 
if (myNukePower == 1) or (myNukePower == 0) then 
    setAccountData(powerAccount, "player.nuke", 0) 
    setAccountData(powerAccount, "player.bolt", 0) 
    setAccountData(powerAccount, "player.invisible", 1) 
outputChatBox("Invisible Marker", source, 0, 255, 0) 
end 
end 
end 
end 
  
function togglePowers(source, myNukePower, myBoltPower, myInvisiblePower, powerAccount) 
    local powerAccount = getPlayerAccount(source) 
    local myNukePower = getAccountData(powerAccount, "player.nuke") 
    local myBoltPower = getAccountData(powerAccount, "player.bolt") 
    local myInvisiblePower = getAccountData(powerAccount, "player.invisible") 
    if (myBoltPower == 1) and (speed == 1) then 
        setGameSpeed(3) 
    else setGameSpeed(1) 
    end 
    if (myNukePower == 1) then 
    local blowMarker = createMarker(0, 0, 0, "corona", 1, 255, 255, 0, 255) 
    attachElements(blowMarker, source, 0, 0, 0, 0, 0, 0) 
    function setTheAnim(source) 
    setPedAnimation(source, "BOMBER", "BOM_Plant_Loop", 1000, false, false, false, true) 
    x, y, z = getElementPosition(source) 
    createExplosion(x+x, y-y, z, 10) 
    end 
    setTimer(setTheAnim, 2000, 1) 
    end 
    if (myInvisiblePower == 1) and isPlayerNametagShowing(source) then 
    setPlayerNametagShowing(source, false) 
    setElementAlpha(source, 0) 
    else setPlayerNametagShowing(source, true) 
    setElementAlpha(source, 255) 
    end 
    end 

I defined them (imo) but when i log in it says:

WARNING: powers\power.lua:13: Bad 'player' pointer @ 'bindKey'(1) 

Link to comment
Guest Guest4401

Change

function bindTheKeys(source, commandName) 
  bindKey ( source, "R", "down", togglePowers ) 
end 
addEventHandler( "onPlayerLogin", getRootElement(), bindTheKeys ) 

to

function bindTheKeys() 
  bindKey ( source, "R", "down", togglePowers ) 
end 
addEventHandler( "onPlayerLogin", getRootElement(), bindTheKeys ) 

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

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