If you're using the 7.x-5.x version of the Quiz module, you can take advantage of the integration with the Rules module that this new Quiz release comes with (which was not in the 7.x-4.x version version), which doesn't require any custom code at all.
To do so, have a look at the delivered rule, which looks like so:
{ "rules_send_results_at_the_end_of_a_quiz" : {
"LABEL" : "Send quiz results at the end of a quiz",
"PLUGIN" : "reaction rule",
"ACTIVE" : false,
"OWNER" : "rules",
"TAGS" : [ "quiz" ],
"REQUIRES" : [ "rules", "entity" ],
"ON" : { "quiz_result_update" : [] },
"IF" : [
{ "data_is" : { "data" : [ "quiz-result-unchanged:is-evaluated" ], "value" : "0" } },
{ "data_is" : { "data" : [ "quiz-result:is-evaluated" ], "value" : "1" } }
],
"DO" : [
{ "mail" : {
"to" : [ "quiz-result:uid:mail" ],
"subject" : "[site:name]: Your results for [quiz-result:nid:title]",
"message" : "[quiz-result:uid:name],\r\n\r\nYou finished the quiz [quiz-result:nid:title] on [quiz-result:time-start]\r\n\r\nYour score: [quiz-result:score]%\r\n\r\nYou can access the result here: [site:url]node\/[quiz-result:nid:nid]\/quiz-results\/[quiz-result:result-id]",
"language" : [ "" ]
}
},
{ "mail" : {
"to" : [ "quiz-result:nid:author:mail" ],
"subject" : "[site:name]: [quiz-result:uid:name]\u0027s results for [quiz-result:nid:title]",
"message" : "[quiz-result:nid:author:name],\r\n\r\n[quiz-result:uid:name] finished the quiz [quiz-result:nid:title] on [quiz-result:time-start]\r\n\r\nTheir score: [quiz-result:score]%\r\n\r\nYou can access the result here: [site:url]node\/[quiz-result:nid:nid]\/quiz\/results\/[quiz-result:result-id]\/view",
"language" : [ "" ]
}
}
]
}
}
After you enable Rules (and Rules UI, a submodule of it), just clone the above rule (using the Rules UI) and replace both Rules Actions with a Rules Action to grant an amount of User Points that is equal to [quiz-result:score]
(note that this token is also shown in the Rules example above (within the Rules Action).
If you're not familiar with how to use Rules to grant user points, then have a look at the answer to "How to grant userpoints only for modifying nodes last changed at least 20 days ago?" (which also includes a Rules example to make that happen).