Strona 1 z 1

Błędy przy uruchamianiu serwera mta z modyfikacją paradis

: 12 marca 2011, 22:51
autor: mateusz880
Witam.
Dzisiaj chciałem uruchomić sobie na vps serwer mta z modyfikacją paradis.
Sprawdzałem na swoim komputerze jak to zainstalować. Wszystko działało po za ircem.
Teraz chciałem to uruchomić na vpsie. Przerzuciłem pliki na serwer odpowiednie dla wersji po Linuksa. Z jednym problemem dałem radę, teraz jest kolejny, z którym nie mogę sobie poradzić. A jest to o ten

Kod: Zaznacz cały

[22:47:10] Starting players
[22:47:10] ERROR: sql/mysql.lua:35: bad argument #4 to 'mysql_connect' (string e
xpected, got nil)
[22:47:10] ERROR: call: failed to call 'sql:create_table' [string "?"]
Było tego więcej ale wszystko się powtarzało do każdego modułu, a jest 30 modułów.

Czy ktoś by mógł zobaczyć co jest źle zrobione.
Niżej przesyłam treść tego pliku.
Hasło i użytkownik, host baza zostały poprawnie wpisane w ustawieniach na serwerze.

Kod: Zaznacz cały

--[[
Copyright (c) 2010 MTA: Paradise

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
]]

local connection = nil
local connection = nil
local null = nil
local results = { }
local max_results = 128

-- connection functions
local function connect( )
    -- retrieve the settings
    local server = get( "server" ) or "10.249.1.2"
    local user = get( "user" ) or "użytkownik"
    local password = get( "password" ) or "hasło"
    local db = get( "database" ) or "baza"
    local port = get( "port" ) or 3306
    local socket = get( "socket" ) or nil
    
    -- connect
    connection = mysql_connect ( server, user, password, database, port, socket )
    if connection then
        if user == "root" then
            setTimer( outputDebugString, 100, 1, "Connecting to your MySQL as 'root' is strongly discouraged.", 2 )
        end
        return true
    else
        outputDebugString ( "Connection to MySQL Failed.", 1 )
        return false
    end
end

local function disconnect( )
    if connection and mysql_ping( connection ) then
        mysql_close( connection )
    end
end

local function checkConnection( )
    if not connection or not mysql_ping( connection ) then
        return connect( )
    end
    return true
end

addEventHandler( "onResourceStart", resourceRoot,
    function( )
        if not mysql_connect then
            if hasObjectPermissionTo( resource, "function.shutdown" ) then
                shutdown( "MySQL module missing." )
            end
            cancelEvent( true, "MySQL module missing." )
        elseif not hasObjectPermissionTo( resource, "function.mysql_connect" ) then
            if hasObjectPermissionTo( resource, "function.shutdown" ) then
                shutdown( "Insufficient ACL rights for mysql resource." )
            end
            cancelEvent( true, "Insufficient ACL rights for mysql resource." )
        elseif not connect( ) then
            if connection then
                outputDebugString( mysql_error( connection ), 1 )
            end
            
            if hasObjectPermissionTo( resource, "function.shutdown" ) then
                shutdown( "MySQL failed to connect." )
            end
            cancelEvent( true, "MySQL failed to connect." )
        else
            null = mysql_null( )
        end
    end
)

addEventHandler( "onResourceStop", resourceRoot,
    function( )
        for key, value in pairs( results ) do
            mysql_free_result( value.r )
            outputDebugString( "Query not free()'d: " .. value.q, 2 )
        end
        
        disconnect( )
    end
)

--

function escape_string( str )
    if type( str ) == "string" then
        return mysql_escape_string( connection, str )
    elseif type( str ) == "number" then
        return tostring( str )
    end
end

local function query( str, ... )
    checkConnection( )
    
    if ( ... ) then
        local t = { ... }
        for k, v in ipairs( t ) do
            t[ k ] = escape_string( tostring( v ) ) or ""
        end
        str = str:format( unpack( t ) )
    end
    
    local result = mysql_query( connection, str )
    if result then
        for num = 1, max_results do
            if not results[ num ] then
                results[ num ] = { r = result, q = str }
                return num
            end
        end
        mysql_free_result( result )
        return false, "Unable to allocate result in pool"
    end
    return false, mysql_error( connection )
end

function query_free( str, ... )
    if sourceResource == getResourceFromName( "runcode" ) then
        return false
    end
    
    checkConnection( )
    
    if ( ... ) then
        local t = { ... }
        for k, v in ipairs( t ) do
            t[ k ] = escape_string( tostring( v ) ) or ""
        end
        str = str:format( unpack( t ) )
    end
    
    local result = mysql_query( connection, str )
    if result then
        mysql_free_result( result )
        return true
    end
    return false, mysql_error( connection )
end

function free_result( result )
    if results[ result ] then
        mysql_free_result( results[ result ].r )
        results[ result ] = nil
    end
end

function query_assoc( str, ... )
    if sourceResource == getResourceFromName( "runcode" ) then
        return false
    end
    
    local t = { }
    local result, error = query( str, ... )
    if result then
        for result, row in mysql_rows_assoc( results[ result ].r ) do
            local num = #t + 1
            t[ num ] = { }
            for key, value in pairs( row ) do
                if value ~= null then
                    t[ num ][ key ] = tonumber( value ) or value
                end
            end
        end
        free_result( result )
        return t
    end
    return false, error
end

function query_assoc_single( str, ... )
    if sourceResource == getResourceFromName( "runcode" ) then
        return false
    end
    
    local t = { }
    local result, error = query( str, ... )
    if result then
        local row = mysql_fetch_assoc( results[ result ].r )
        if row then
            for key, value in pairs( row ) do
                if value ~= null then
                    t[ key ] = tonumber( value ) or value
                end
            end
            free_result( result )
            return t
        end
        free_result( result )
        return false
    end
    return false, error
end

function query_insertid( str, ... )
    if sourceResource == getResourceFromName( "runcode" ) then
        return false
    end
    
    local result, error = query( str, ... )
    if result then
        local id = mysql_insert_id( connection )
        free_result( result )
        return id
    end
    return false, error
end

function query_affected_rows( str, ... )
    if sourceResource == getResourceFromName( "runcode" ) then
        return false
    end
    
    local result, error = query( str, ... )
    if result then
        local rows = mysql_affected_rows( connection )
        free_result( result )
        return rows
    end
    return false, error
end