Try to extend u'r code like that and inspect the error that is returned.
If DriveMapAdd() function is fail, then Exit code is 1, and a MsgBox with @extended error code will be displayed.
Depending on the number of this @extended error u can make more decisions, like using "net helpmsg <errorcode>"
;
;### map network drives
;
Exit _MapDriveDiffUser("TheLetterYouChoose","YourServerNameHere","YourShareHere", "YourUserNameHere", "YourPasswordHere")
Func _MapDriveDiffUser ($driveletter, $servername, $servershare, $serverusrname, $serverusrpasswd)
$result = 0
If DriveMapGet($driveletter & ":") <> "\\" & $servername & "\" & $servershare Then
DriveMapDel($driveletter & ":")
Sleep(250)
EndIf
If Not DriveMapAdd($driveletter & ":", "\\" & $servername & "\" & $servershare, 0, $serverusrname, $serverusrpasswd) Then
$result = @error
MsgBox (0, "Extended error", "Error " & $result & " with extended code " & @extended)
EndIf
Return $result
EndFunc;==>_MapDriveDiffUser
p.s. Your code looks fine, think the problem not in it is.
upd. forgot to delete passwords etc.