Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Показано с 1 по 8 из 8
  1. #1
    Аватар для Vasya_Pupkin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.02.2016
    Сообщений
    69
    Репутация:
    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,034
    Репутация:
    702 ±
    Уверен, что указал правильный номер MySQL соединения в mysql_tquery?

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

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

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

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

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

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

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

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

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

    Steve Pavlina

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

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

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

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,034
    Репутация:
    702 ±
    Цитата Сообщение от 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,438
    Репутация:
    261 ±
    Не понимать, что в коде? Какой в этом каеф?
    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)

Ваши права

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