drk Posted December 21, 2011 Posted December 21, 2011 Hey, i've made a point system for my race server but it gives me a error: ERROR: server.lua:14: function arguments expected near ')' The code is: function database:SQLTable() local gRR_Element = getResourceRootElement(getThisResource()) executeSQLCreateTable ( 'Money', 'player_serial STRING, money INT' ) executeSQLCreateTable ( 'Points', 'player_serial STRING, points INT' ) end addEventHandler('onResourceStart', gRR_Element, database:SQLTable ) EPT Team Server Development: 0% Learning C++ | C++ is amazing
drk Posted December 21, 2011 Author Posted December 21, 2011 Line 14 wih the complete code, line 14 is line 6 here. EPT Team Server Development: 0% Learning C++ | C++ is amazing
drk Posted December 21, 2011 Author Posted December 21, 2011 Anyone help? EPT Team Server Development: 0% Learning C++ | C++ is amazing
Xeno Posted December 21, 2011 Posted December 21, 2011 I have no clue what you going on about, but try this instead: addEventHandler('onResourceStart', getRootElement(), database:SQLTable )
drk Posted December 21, 2011 Author Posted December 21, 2011 Same error EPT Team Server Development: 0% Learning C++ | C++ is amazing
Carlossg Posted December 21, 2011 Posted December 21, 2011 I'm not sure,try whit this: function database:SQLTable() executeSQLCreateTable ( 'Money', 'player_serial STRING, money INT' ) executeSQLCreateTable ( 'Points', 'player_serial STRING, points INT' ) end addEventHandler('onResourceStart', getResourceRootElement(getThisResource()), database:SQLTable ) Then, more you can simplify your script ,better. PD:To a very very sure to we can fix script you need to post complete code.
drk Posted December 21, 2011 Author Posted December 21, 2011 I've tried first getResourceRootElement and don't work. Thanks for trying to help. The complete code is: --[[ -- made by Shick -- credits to -------- for helping -- 22/12/2011 --]] -- getResourceRootElement local gRR_Element = getResourceRootElement(getThisResource()) -- SQL Database function database:SQLTable() executeSQLCreateTable ( 'Money', 'player_serial STRING, money INT' ) executeSQLCreateTable ( 'Points', 'player_serial STRING, points INT' ) addEventHandler('onResourceStart', gRR_Element, database:SQLTable ) -- Dx Scoreboard function scoreboard:addAColumn() call(getResourceFromName('dxscoreboard'), "addScoreboardColumn", "Money") call(getResourceFromName('dxscoreboard'), "addScoreboardColumn", "Points") end addEventHandler('onResourceStart', gRR_Element, scoreboard:addAColumn ) EPT Team Server Development: 0% Learning C++ | C++ is amazing
myonlake Posted December 21, 2011 Posted December 21, 2011 (edited) In the first script version you showed us, you had a problem with the rootElement stuff. Script always runs the non-functions first, then functions. The local was inside the function, so the event cannot reach the data because it's triggered after the event is started. It outputs an error. Here you hadn't specified the 'database:' and 'scoreboard:'. That's why you need to put tables for it. --[[ -- made by Shick -- credits to -------- for helping -- 22/12/2011 --]] -- getResourceRootElement local gRR_Element = getResourceRootElement(getThisResource()) local database = { } local scoreboard = { } -- SQL Database function database:SQLTable() executeSQLCreateTable ( 'Money', 'player_serial STRING, money INT' ) executeSQLCreateTable ( 'Points', 'player_serial STRING, points INT' ) addEventHandler('onResourceStart', gRR_Element, database:SQLTable ) -- Dx Scoreboard function scoreboard:addAColumn() call(getResourceFromName('dxscoreboard'), "addScoreboardColumn", "Money") call(getResourceFromName('dxscoreboard'), "addScoreboardColumn", "Points") end addEventHandler('onResourceStart', gRR_Element, scoreboard:addAColumn ) Edited December 21, 2011 by Guest If I helped you, please click the like button on the right Thanks!
drk Posted December 21, 2011 Author Posted December 21, 2011 myonlake you saved my life '-' It worked, thanks. EPT Team Server Development: 0% Learning C++ | C++ is amazing
myonlake Posted December 21, 2011 Posted December 21, 2011 No problem, remember to specify the special function names first If I helped you, please click the like button on the right Thanks!
drk Posted December 21, 2011 Author Posted December 21, 2011 -- money / points reward function reward() getPlayerWithSerial = executeSQLSelect( 'Money', 'player_serial', 'player_serial = "' .. getPlayerSerial() ..'"' ) if ( type (getPlayerWithSerial) == 'table' and #getPlayerWithSerial == 0 ) or not getPlayerWithSerial then setElementData ( source, 'Money', "0" ) else getMoneyFromPlayer = executeSQLSelect ( 'Money', 'money', 'money = "' .. getMoneyFromThePlayer .. '"' ) if ( type (getMoneyFromPlayer) == 'table' and #getMoneyFromPlayer == 1 ) then setElementData ( source, 'Money', getMoneyFromThePlayer ) end end end end '' expected near 'end'. I don't know why it gives me this. I have the four end's to close if, else and the function. EPT Team Server Development: 0% Learning C++ | C++ is amazing
drk Posted December 21, 2011 Author Posted December 21, 2011 Now, I get this error: ERROR: server.lua:8: attempt to call global 'getThisResource' (a nil value) In debug I get: stack traceback: server.lua:8: in main chunk [C]: ? quitting debugger Line 8 is local gRR_Element = getResourceRootElement(getThisResource()) EPT Team Server Development: 0% Learning C++ | C++ is amazing
drk Posted December 21, 2011 Author Posted December 21, 2011 Hey, now it worked, SciTE has some bugs EPT Team Server Development: 0% Learning C++ | C++ is amazing
drk Posted December 21, 2011 Author Posted December 21, 2011 Anyone can help and say to me if this code is correct: function getAliveCount () aliveAmount = 0 for i,v in ipairs (getAlivePlayers()) do aliveAmount = aliveAmount +1 end return aliveAmount end function rewardIfWin(source) local alive = getAliveCount() local money = getElementData ( source, 'Money' ) if ( isPedDead(source) ~= false ) and ( alive == 1 ) then grana = math.random ( 100, 2000 ) setElementData ( source, 'Money', money+#grana ) outputChatBox ( "#ABCDEF* #ffffffYou gain #00ff00" .. tostring(grana) .. "$ for winning the deathmatch !", source, 255, 255, 255, true ) end end function ifPlayerQuitSaveTheMoney(source) saveTheMoney = executeSQLInsert ( 'Money', getElementData ( source, 'Money' ) ) if ( type (saveTheMoney) == 'table' and #saveTheMoney == 1 ) then outputDebugString (getPlayerName(source) .. " money saved in SQL database.") end end addEventHandler ( "onPlayerQuit", getRootElement(), ifPlayerQuitSaveTheMoney ) EPT Team Server Development: 0% Learning C++ | C++ is amazing
Castillo Posted December 21, 2011 Posted December 21, 2011 function getAliveCount () local aliveAmount = 0 for i,v in ipairs (getAlivePlayers()) do aliveAmount = aliveAmount +1 end return aliveAmount end function rewardIfWin(source) local alive = getAliveCount() local money = getElementData ( source, 'Money' ) if ( isPedDead(source) ~= false ) and ( alive == 1 ) then local grana = math.random ( 100, 2000 ) setElementData ( source, 'Money', money+grana ) outputChatBox ( "#ABCDEF* #ffffffYou gain #00ff00" .. tostring(grana) .. "$ for winning the deathmatch !", source, 255, 255, 255, true ) end end function ifPlayerQuitSaveTheMoney(source) saveTheMoney = executeSQLInsert ( 'Money', getElementData ( source, 'Money' ) ) if ( type (saveTheMoney) == 'table' and #saveTheMoney == 1 ) then outputDebugString (getPlayerName(source) .. " money saved in SQL database.") end end addEventHandler ( "onPlayerQuit", getRootElement(), ifPlayerQuitSaveTheMoney ) San Andreas Utopia RPG (SAUR) Owner & Developer. Education is the most powerful weapon which you can use to change the world.
drk Posted December 21, 2011 Author Posted December 21, 2011 LOL ? '-' EPT Team Server Development: 0% Learning C++ | C++ is amazing
drk Posted December 21, 2011 Author Posted December 21, 2011 What u have changed ? Nothing ? Code is correct? EPT Team Server Development: 0% Learning C++ | C++ is amazing
Castillo Posted December 21, 2011 Posted December 21, 2011 Your line: 14: setElementData ( source, 'Money', money+#grana ) My line 14: setElementData ( source, 'Money', money+grana ) San Andreas Utopia RPG (SAUR) Owner & Developer. Education is the most powerful weapon which you can use to change the world.
drk Posted December 21, 2011 Author Posted December 21, 2011 LOL dont need # ? EPT Team Server Development: 0% Learning C++ | C++ is amazing
Castillo Posted December 21, 2011 Posted December 21, 2011 No, because the result of math.random is already a number, not a table. San Andreas Utopia RPG (SAUR) Owner & Developer. Education is the most powerful weapon which you can use to change the world.
drk Posted December 21, 2011 Author Posted December 21, 2011 Aww .... Ok. Thanks for helping. EPT Team Server Development: 0% Learning C++ | C++ is amazing
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now