Jump to content

[HELP] power script


Agon

Recommended Posts

Posted

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? :|

Posted

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 

Posted
    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.

Posted

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?

Posted

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 

Posted

That's because you got these checks:

if (myNukePower == 0) then 
if (myBoltPower == 1) or (myBoltPower == 0) then 
if (myInvisiblePower == 1) or (myInvisiblePower == 0) then 

But you don't have defined these variables.

Posted

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) 

Guest Guest4401
Posted

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 ) 

Posted

no errors and i can't get the powers :| I think it doesn't make anything when i get into marker or the problem is in the powers

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