Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 8 из 8
  1. #1
    Аватар для Vasya_Pupkin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.02.2016
    Сообщений
    77
    Репутация:
    0 ±

    обновляет отдельно данные поля в таблице!

    Сама функция:
    Код:
    nowUpdateInfo ( playerid , const type [ ] , db_table [ ] , db_name_field [ ] , field [ ] , {Float, _}:...) {
        static const STATIC_ARGS = 0x5 ;
        new query [ 255 ] , result [ 128 ] , g_szName [ MAX_PLAYER_NAME ] ;
        GetPlayerName ( playerid , g_szName , sizeof ( g_szName ) ) ;
        mysql_real_escape_string ( g_szName , g_szName ) ;
        for ( new i , x = numargs ( ) - STATIC_ARGS ; i != x ; i++ ) {
            switch ( type [ i ] ) {
                case 'i','d' : format ( query , sizeof query , "update `%s` set `%s`=%d where BINARY `%s`='%s' limit 1;" , db_table , field , getarg (i + STATIC_ARGS ) , db_name_field , g_szName );
                case 'f' : format ( query , sizeof query , "update `%s` set `%s`=%f where BINARY `%s`='%s' limit 1;" , db_table , field , Float:getarg ( i + STATIC_ARGS ) , db_name_field , g_szName );
                case 's' : {
                    for ( new a ; getarg ( i + STATIC_ARGS , a ) != 0x0 ; a++) {
                        result [ a ] = getarg ( i+STATIC_ARGS , a ) ;
                    }
                    format ( query , sizeof query , "update `%s` set `%s`='%s' where BINARY `%s`='%s' limit 1;" , db_table , field , result , db_name_field , g_szName ) ;
                }
            }
        }
        return mysql_tquery ( 1, query, "", "" ) ;
    }
    в 1 секундный таймер
    nowUpdateInfo(i, "d" , "accounts" , "Name" , "Job_Timer" , PlayerInfo[i][Job_Timer]);
    Время при выходи сохраняется но не обновляется в оффлайне

    В логах не чего не пишет варнингов нет
    В чем может быть проблема ?
    mysql R39-4

  2. #2
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Уверен, что указал правильный номер MySQL соединения в mysql_tquery?

    P.S. Сама функция очень плохая:
    - Непонятно зачем написана вся эта ерунда с numargs, если всё-равно обновляется только одно поле;
    - Вместо того, чтобы отправить один запрос, она отправляет по запросу на каждый указанный параметр;
    - Поиск записи идёт по нику игрока, а не по уникальному ID аккаунта, что заметно замедляет скорость выполнения запроса.

  3. #3
    Аватар для Vasya_Pupkin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.02.2016
    Сообщений
    77
    Репутация:
    0 ±
    Да там все так и должно быть.
    А чем данную функцию можно заменить?

  4. #4
    Аватар для Prolific
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.12.2013
    Сообщений
    116
    Репутация:
    14 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    Уверен, что указал правильный номер MySQL соединения в mysql_tquery?

    P.S. Сама функция очень плохая:
    - Непонятно зачем написана вся эта ерунда с numargs, если всё-равно обновляется только одно поле;
    - Вместо того, чтобы отправить один запрос, она отправляет по запросу на каждый указанный параметр;
    - Поиск записи идёт по нику игрока, а не по уникальному ID аккаунта, что заметно замедляет скорость выполнения запроса.
    Я заметил, что сейчас модно искать строки по нику игрока, а не по иду. И кстати это в 99% модов.

  5. #5
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Prolific Посмотреть сообщение
    Я заметил, что сейчас модно искать строки по нику игрока, а не по иду. И кстати это в 99% модов.
    То же самое и с проверками "if(IsPlayerConnected(playerid))" в каждой команде. Но смысла или пользы от этого у такой проверки не появилось
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  6. #6
    Аватар для Prolific
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.12.2013
    Сообщений
    116
    Репутация:
    14 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    То же самое и с проверками "if(IsPlayerConnected(playerid))" в каждой команде. Но смысла или пользы от этого у такой проверки не появилось
    Может тебе инклудик написать, как говорил DC с хэшированием функций типа: IsPlayerConnected, GetPlayerVehicleID, GetPlayerName, GetPlayerInterior etc.
    А то я перехваты как не понимал так и не пойму, а в обществе не поддержат вставку по 2 строки кода в каждый коллбэк.

  7. #7
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от Prolific Посмотреть сообщение
    Может тебе инклудик написать, как говорил DC с хэшированием функций типа: IsPlayerConnected, GetPlayerVehicleID, GetPlayerName, GetPlayerInterior etc.
    А то я перехваты как не понимал так и не пойму, а в обществе не поддержат вставку по 2 строки кода в каждый коллбэк.
    Он говорил про кэширование. А перехваты можно и не понимать, просто возьми нормальный текстовый редактор (Sublime Text, Atom), там есть сниппеты, с помощью которых можно очень просто создавать все эти перехваты.

    Вот так это просто (для функций точно также):

  8. 2 пользователя(ей) сказали cпасибо:
    DeimoS (14.07.2016) Prolific (26.04.2016)
  9. #8
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Не понимать, что в коде? Какой в этом каеф?
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •