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.

San Andreas Utopia RPG (SAUR) Owner & Developer.

560x95_FFFFFF_FF9900_000000_000000.png

Education is the most powerful weapon which you can use to change the world.

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 

San Andreas Utopia RPG (SAUR) Owner & Developer.

560x95_FFFFFF_FF9900_000000_000000.png

Education is the most powerful weapon which you can use to change the world.

Posted

You know that when you use setGameSpeed server side you are doing it globally? not just for you.

San Andreas Utopia RPG (SAUR) Owner & Developer.

560x95_FFFFFF_FF9900_000000_000000.png

Education is the most powerful weapon which you can use to change the world.

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.

San Andreas Utopia RPG (SAUR) Owner & Developer.

560x95_FFFFFF_FF9900_000000_000000.png

Education is the most powerful weapon which you can use to change the world.

Posted

You have to define them on the marker functions as well.

San Andreas Utopia RPG (SAUR) Owner & Developer.

560x95_FFFFFF_FF9900_000000_000000.png

Education is the most powerful weapon which you can use to change the world.

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