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

    Статус
    Оффлайн
    Регистрация
    10.12.2013
    Сообщений
    35
    Репутация:
    7 ±

    Сохранение позиции при выходе [ MySQL R7+ ]

    PHP код:
    #define TABLE_ACCOUNT "" 
        // таблица аккаунтов 
    #define PosX "" 
        // названия в структуре таблице колонки позиции по иксу
    #define PosY "" 
        // названия в структуре таблице колонки позиции по игрику
    #define PosZ "" 
        // названия в структуре таблице колонки позиции по зэт
    #define Int "" 
        // названия в структуре таблице колонки интерьера
    #define World ""
        // названия в структуре таблице колонки вирт. мира
    #define Name "" 
        // названия в структуре таблице колонки имя 
    В OnPlayerDisconnect ( Сохраняем значения )
    PHP код:
    stock SavePositionExit(playerid

        new 
    FloatSavePosition[3],
            
    query_string[128]; 
            
        
    GetPlayerPos(playeridSavePosition[0], SavePosition[1], SavePosition[2]); 
        
        
    format(query_stringsizeof(query_string), 
        
    "UPDATE "TABLE_ACCOUNT" SET `"PosX"` = '%f', `"PosY"` = '%f', `"PosZ"` = '%f', \ 
        `"
    Int"` = '%d', `"World"` = '%d' WHERE `"Name"` = '%s'"
        
    SavePosition[0], 
        
    SavePosition[1], 
        
    SavePosition[2],
        
    GetPlayerInterior(playerid),
        
    GetPlayerVirtualWorld(playerid)); 
        
    mysql_function_query(connectionHandlequery_string0"",""); 

    В сток или функции , там где логинится игрок ( где нужно телепортировать игрока )
    PHP код:
    stock SetPositionExit(playerid
    {  
        
    SetPlayerPos(playerid
        
    cache_get_field_content_float(0,""PosX"",connectionHandle),
        
    cache_get_field_content_float(0,""PosY"",connectionHandle),
        
    cache_get_field_content_float(0,""PosZ"",connectionHandle)); 
        
    SetPlayerVirtualWorld(playeridcache_get_field_content_int(0,""World"",connectionHandle)); 
        
    SetPlayerInterior(playeridcache_get_field_content_int(0,""Int"",connectionHandle)); 
        return 
    1

    Не-то чтобы баян.
    Но вполне рабочая, и функциональная система. Которая работать будет под любой мод на MySQL.
    Если вы что-то не поняли пишите в теме.


    Перевел в инклуд. Ссылка: Кликабельно
    Как использовать с инклудом:


    PHP код:
    #define TABLE_ACCOUNT "accounts" 
    #define PosX "PosX" 
    #define PosY "PosY" 
    #define PosZ "PosZ" 
    #define Int "Int" 
    #define World "World"
    #define Name "player_name"
    #include <t_teleport> 
    Макросы (#define) меняем на свои.

    Там где вы хотите ТП игрока:
    PHP код:
    SetPositionExit(playerid); 
    Последний раз редактировалось Valera_Trefilov; 28.10.2014 в 16:09.

  2. #2
    Аватар для wAx
    ¯\_(ツ)_/¯

    Статус
    Оффлайн
    Регистрация
    13.12.2013
    Сообщений
    377
    Репутация:
    146 ±
    Не знаю как по скорости, но на переменных выглядело бы лучше, это точно..

    PHP код:
    #define TABLE_ACCOUNT "" // таблица аккаунтов 
    #define PosX "" // названия в структуре таблице колонки позиции по иксу
    #define PosY "" // названия в структуре таблице колонки позиции по игрику
    #define PosZ "" // названия в структуре таблице колонки позиции по зэт
    #define Int "" // названия в структуре таблице колонки интерьера
    #define World ""// названия в структуре таблице колонки вирт. мира
    #define Name "" // названия в структуре таблице колонки имя 
    Зачем все усложнять?

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

    Статус
    Оффлайн
    Регистрация
    10.12.2013
    Сообщений
    35
    Репутация:
    7 ±
    Цитата Сообщение от wAx Посмотреть сообщение
    Не знаю как по скорости, но на переменных выглядело бы лучше, это точно..

    PHP код:
    #define TABLE_ACCOUNT "" // таблица аккаунтов 
    #define PosX "" // названия в структуре таблице колонки позиции по иксу
    #define PosY "" // названия в структуре таблице колонки позиции по игрику
    #define PosZ "" // названия в структуре таблице колонки позиции по зэт
    #define Int "" // названия в структуре таблице колонки интерьера
    #define World ""// названия в структуре таблице колонки вирт. мира
    #define Name "" // названия в структуре таблице колонки имя 
    Зачем все усложнять?
    Ну мало-ли ты новичек?

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от wAx Посмотреть сообщение
    Не знаю как по скорости, но на переменных выглядело бы лучше, это точно..
    А ещё проще было бы вызвать функции "cache_get_field_content..." напрямую в SetPlayerPos и т.п.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  5. #5
    Аватар для Valera_Trefilov
    Пользователь

    Статус
    Оффлайн
    Регистрация
    10.12.2013
    Сообщений
    35
    Репутация:
    7 ±
    Обновлено.
    Переписан код.
    Также сделан инклуд для удобства.

 

 

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

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

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

Ваши права

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