Автор Тема: Unity3D + vk.com  (Прочитано 54478 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Июль 23, 2012, 11:36:38 am
Прочитано 54478 раз

Mimi Neko

  • Администратор
  • Старожил форума

  • Оффлайн
  • *****

  • 2456
  • Репутация:
    153
    • Просмотр профиля
Unity3D + vk.com
(перепечатка статьи)


Привет всем,решил написать статью как я делаю Игру про Кирпичи вконтакте, а точнее как я совместил 2 Эти вещи.
 Итак начнем, как работает система :

каждый может написать свою Систему, например Инцилизацию через юити, но у меня Идет от самой Страницы, для меня это более надежней, и так ближе к делу, и так создаем html страницу и пишет туда вот такой Код:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Unity Web Player | WebPlayer</title>
<style type="text/css">
</style>
</head>
<body>
<div class="content">
<div id="unityPlayer">
<div class="missing">
<a href="http://unity3d.com/webplayer/" title="Unity Web Player. Install now!">
<img alt="Unity Web Player. Install now!" src="http://webplayer.unity3d.com/installation/getunity.png" width="193" height="63" />
</a>
</div>
</div>
</div>
<p class="footer">&laquo; created with <a href="http://unity3d.com/unity/" title="Go to unity3d.com">Unity</a> &raquo;</p>

<i style="background:url(//www.tns-counter.ru/V13a****yandex_ru/ru/CP1251/tmsec=narod_total/0)"></i>

</body>
</html>



<!-- Loading Modules -->
<script src="js/jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="http://vkontakte.ru/js/api/xd_connection.js?2" type="text/javascript"></script>
<script src="http://webplayer.unity3d.com/download_webplayer-3.x/3.0/uo/UnityObject.js" type="text/javascript"></script>

<script type="text/javascript" charset="cp1251" >
$(document).ready(function(){ // когда страница загрузится
VK.init(function() {
// получаем flashVars
var parts=document.location.search.substr(1).split("&");
var flashVars={}, curr;
for (i=0; i<parts.length; i++) {
curr = parts[i].split('=');
flashVars[curr[0]] = curr[1];
}

// вытаскиваем viewer_id и auth_key из полученных переменных
var viewer_id = flashVars['viewer_id'];
var auth_key = flashVars['auth_key'];

// выполняем запрос получения профиля
VK.api("getProfiles", {uids:viewer_id,fields:"photo"},
function(data)
{

if(data.response)
{

$.post('http://zombie.devby.ru/Catch_Brick_tries/server/getprofile.php', // Сбда Отправляються данные, записываються Данные
{ "viewer_id": viewer_id,"auth_key": auth_key, "imya": data.response[0].first_name, "famylia": data.response[0].last_name, "photo": data.response[0].photo }, // передаваемые значения
function(data){ // функция после выполнения передачи данных

});






}
});


});

});
</script>

<div id="result">http://devby.ru</div>

<script type="text/javascript">

//тут Инцилизация Юити

var parts=document.location.search.substr(1).split("&");
var flashVars={}, curr;
for (i=0; i<parts.length; i++) {
curr = parts[i].split('=');
flashVars[curr[0]] = curr[1];
}

var viewer_id = flashVars['viewer_id'];
var auth_key = flashVars['auth_key'];

function GetUnity() {
if (typeof unityObject != "undefined") {
return unityObject.getObjectById("unityPlayer");
}
return null;
}
if (typeof unityObject != "undefined") {
unityObject.embedUnity("unityPlayer", "http://devby.ru/game.unity3d", 800, 450); //Ссылка на Приложение

}

//Эти Функции Для Работы с Юити
function _viewer_id ()
{
var unity = unityObject.getObjectById('unityPlayer');
GetUnity().SendMessage('WEBCONNECTOR', '_viewer_id', viewer_id);
}

function _auth_key ()
{
var unity = unityObject.getObjectById('unityPlayer');
GetUnity().SendMessage('WEBCONNECTOR', '_auth_key', auth_key);
}

function Incilization()
{
_viewer_id () ;
_auth_key () ;
}

</script>

Загружаем на сервер, патом вконтакте создаем новое IFrame Приложение, там Добавляем Ссылку на нашу игру, в Адрес IFrame
 устанавливаем Ширину и Высоту в приложении вконтакте в Настройках.

 скачиваем js/jquery-1.4.2.min.js скрипт который будет в Архиве
 и указать ссылку на Скрипт

<!-- Loading Modules -->
<script src="js/jquery-1.4.2.min.js" type="text/javascript"></script> // Тут Указываем
<script src="http://vkontakte.ru/js/api/xd_connection.js?2" type="text/javascript"></script>
<script src="http://webplayer.unity3d.com/download_webplayer-3.x/3.0/uo/UnityObject.js" type="text/javascript"></script>

Когда Инцилизируеться Вконтакте Он посылает данные на Сервер, Функцией getProfiles вот код:
'http://zombie.devby.ru/Catch_Brick_tries/server/getprofile.php'

config.php
<?php

// данные доступа к базе данных
$mysql_host="localhost"// обычно не нужно изменять
$mysql_user=""// имя пользователя БД
$mysql_password=""// пароль БД
$my_database ""// имя БД

// данные приложения
$app_id '1231231'// id приложения
$api_secret 'asddasffasfgga78ga5sgs'// защищенный ключ приложения

?>


Основной файл php:
Include "config.php";

if ((!empty($_POST['viewer_id'])) && (!empty($_POST['auth_key']))) { //Если Данные Пришли записываем

$auth_key = $_POST['auth_key']; //наш Ключ
$viewer_id = $_POST['viewer_id']; //наш Ид вконтакте

$name = $_POST['imya'];
$fam = $_POST['famylia'];
$pic = $_POST['photo'];


$real_key = md5($app_id."_".$viewer_id."_".$api_secret); //Здесь мы шифруем данные реально ли такое что ключ и ид подходит
//Шифрация Происходит так(ИДприложения_ИдПрофиля_СекретПриложения)

if ($auth_key == $real_key){

$link = mysql_connect($mysql_host, $mysql_user, $mysql_password)
or die("Could not connect : " . mysql_error());
mysql_query('SET NAMES utf8');
mysql_select_db($my_database) or die("Could not select database");

$msg = "INSERT INTO users (vk_id, vk_key, vk_photo, vk_name, vk_family)
VALUES ('$viewer_id', '$auth_key', '$pic', '$name', '$fam' )
ON DUPLICATE KEY UPDATE visits = (visits + 1) , last_date=".time()." , vk_name = '$name' , vk_family = '$fam' , vk_photo = '$pic'";
//Тут Создаеться Профиль с Ид, Ключ,ссылка на фото,Имя,Фамилия.
//Если ИД существуетОбновляем Данные Ставим Визитов на +1 Дату Имя Фото
$sql = mysql_query($msg);



echo "OK";

mysql_close($link);

} else {
echo "error_key";
}

} else {
echo "error"; //Ошибка что нечего не удалось
}

?>

Ид приложения и Защищенный Ключ можно узнать в Настройках Приложения

Занесли, теперь как нам общаться Юити?
 в Юити создаем Обьект, подписываем Его WEBCONNECTOR вы можете его подписать как угодно но функция которая используеться с Браузера будет отсылаться на это имя в Скрипте оно подписано, создаем Скрипт C# С любым Именем я его подписал "Unity3D_Start" и пихаем туда вот такой КОД

using UnityEngine;
using System.Collections;

public class Unity3D_Start : MonoBehaviour {

void Awake()
{
Application.ExternalCall("Incilization", ""); // функция передаваемая из пхп страницы в джаваскрипте
}

}

Application.ExternalCall("Incilization", "") - Функция которая Запускает Функцию со Страницы, тоесть когда Юити приложение загрузиться полностью, при старте оно отправит Функцию Incilization
 далее когда функция Сработала на странице,со страницы отправляетються данные
 функцией Incilization которая была описала выше

var unity = unityObject.getObjectById('unityPlayer');
GetUnity().SendMessage('WEBCONNECTOR', '_viewer_id', viewer_id);

SendMessage('ИмяОбьекта', 'Функция', Данные "а это ИД и Ключ")

 и так далее в Юити Создаем скрипт который бедт принимать данные(Ид,Ключ)
 Создаем js скрипт в Юити пишем туда Код:
public var viewer_id : String ;
public var auth_key : String ;

function OnGUI ()
{
//Выводим Ид и Ключ чтобы воскрикнуть Воуля!)
GUI.Label (Rect (25, 25, 200, 300), "viewer_id: " + viewer_id);
GUI.Label (Rect (25, 45, 200, 300), "auth_key: " + auth_key);

}

//Эти Функции Примут Данные и запишуться в viewer_id и , auth_key

//ID Игрока Вконтакте
function _viewer_id ( v_id )
{
viewer_id = v_id ;
}

//Key Игрока Вконтакте
function _auth_key ( v_key )
{
auth_key = v_key ;
}

Переносим Скрипт на наш Обьект 'WEBCONNECTOR' Сохраняем под Веб Браузер.
 Заливаем на сервер, наше .unity3d приложение указываем ссылку на него

unityObject.embedUnity("unityPlayer", "http://devby.ru/game.unity3d", 800, 450); //Ссылка на Приложение

в самой Странице
 сохраняем, Запускаем Приложение, и кричим Эврика!))

 
 Далее выложу как получить список Друзей которые установили Приложение и обновить его через Базу данных.

 Спасибо и Успехов!)
Прикрепленные файлы

js.rar

Автор: zAvaTARz
(источник)

Июль 23, 2012, 12:04:32 pm
Ответ #1

Mimi Neko

  • Администратор
  • Старожил форума

  • Оффлайн
  • *****

  • 2456
  • Репутация:
    153
    • Просмотр профиля
+ некоторые детали:





1.Вводим “Название”
 У меня “eNemboo demo”

2.Выбираем “Тип”
Flash\IFrame приложения
 (для работы с Unity3D)

3.Выбираем Категорию

4.Нажимаем “Перейти к загрузке приложения”



Далее вам придет SMS на Моб.Телефон с кодом. Этот код нужно ввести и подтвердить

Поздравляю вы создали приложение.

После этого скачиваем Архив vkframe.zip разархивируем, и скидываем на свой сервер.
 в архиве 2 файла.
1.vkframe.php – это исходник файла, он открываем и загружает приложение Unity3D, он нам ещё понадобиться для работы в дальнейшем.
2.demo.unity3d – это само приложение.

Лично я для удобства,создал каталог “e_demo” и закинул туда эти файлы.

Далее заходим в приложение которыое мы создали,выбираем Редактирование



Нажимаем Настройки



Выбираем вкладку IFrame указываем Адресс IFrame: (ссылку на файл vk_frame.php)

Адресс IFrame: – это адресс где будет находиться ваше приложение Юнити в моем случае это http://enemboo.devby.ru/e_demo/vk_frame.php
 Выбираем размер нашего окна Размер IFrame 600х500 нажимаем “Сохранить изменеия“.

Если все сделано правильно. то мы видим такую картинку:



Ну вот и все! Здесь я вам описал, как создать приложение ВКонтакте с использованием Юнити3D.

Вы можете изменять,усовершенствовать, Файлы vkframe.php,demo.unity3d и так далее. Удачи!

Все проверил, работает исправно!

Автор: Жерносек Андрей
(источник)

Июль 23, 2012, 12:19:11 pm
Ответ #2

Mimi Neko

  • Администратор
  • Старожил форума

  • Оффлайн
  • *****

  • 2456
  • Репутация:
    153
    • Просмотр профиля
Создание приложений в контакте VK.com + Unity3D урок 1. Регистрация пользователя, и передаем данные в Unity3D

Здравствуйте! Если Вы не читали как создать приложение ВКонтакте, то она находится здесь.
 В этом unity3d tutorial мы добавим автоматическую регистрацию пользователя. и передача ключа и ид пользователя в приложение Unity3D, для дальнейшей работы.



Для начала нам нужно изменить файл vkframe.php (код страницы)

vkframe.php Описание внутри
 Загружаем его на сервер заменяем на старый.
 Заходим в phpmyadmin создание базы
 Далее создаем таблицу в phpMyAdmin

CREATE TABLE `e_users` (
`USER_ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`vk_id` varchar(32) DEFAULT NULL, //Ид игрока
`vk_key` varchar(32) DEFAULT NULL, //Ключ от контакта
`vk_photo` varchar(255) NOT NULL DEFAULT '', //ссылка на фото
`vk_name` varchar(16) NOT NULL DEFAULT 'no name', //Имя
`vk_family` varchar(16) NOT NULL DEFAULT 'no family', //Фамилия
`visits` int(32) NOT NULL DEFAULT '1', //Колл-во визитов
PRIMARY KEY (`USER_ID`),
UNIQUE KEY `vk_id` (`vk_id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=14 ;

Далее создаем getprofile.php файл. И вставляем туда код:



Все подробно описано в файле.
getprofile.php архив с файлом Заливаем на сервер.

И создаем файл с конфигурациями. config.php

// данные доступа к базе данных
$mysql_host="localhost"; // обычно не нужно изменять
$mysql_user="user"; // имя пользователя БД
$mysql_password="pass"; // пароль БД
$my_database = "name_bd"; // имя БД
 
// данные приложения
$app_id = '2222222'; // id приложения
$api_secret = 'HHHHHHHHHHHHHHHHHHHH'; // защищенный ключ приложения

Ид приложения и ключ находиться ВКонтакте в Настройках.

Теперь заходим в Unity3D Создаем новый проект.
 Далее создаем GameObject с именем WEBCONNECTOR



WEBCONNECTOR – имя на которое будут посылаться данные Ключ и ИД
 Подробнее в файле vkframe.php

Занесли, теперь как нам общаться с Юити?
 Создаем скрипт C# с любым именем я его подписал “Unity3D_Start” и пихаем туда вот такой КОД:

using UnityEngine;
using System.Collections;
 
public class Unity3D_Start : MonoBehaviour {
 
void Awake() {
// функция вызывает функцию которую мы создали в файле <strong>vkframe.php</strong>
Application.ExternalCall("Incilization", "");
}
 
}

Переносим скрипт на сбъект WEBCONNECTOR

Тоесть когда приложение загрузилось, оно при старте посылает функцию Incilization.
 Оно же в ответ шлет данные:

var unity = unityObject.getObjectById('unityPlayer');
GetUnity().SendMessage('WEBCONNECTOR', '_viewer_id', viewer_id);

WEBCONNECTOR – Имя обьекта которого мы создали.
_viewer_id – Функция которую мы создадим в Юити.
viewer_id – Это данные ну тут наш ИД.

Такс далее в Юити создаем скрипт который бедт принимать данные(Ид,Ключ)
 Создаем js скрипт в Юити пишем туда код:

var viewer_id : String ; //наш ид
var auth_key : String ; // наш ключ
 
function OnGUI () {
//Выводим Ид и Ключ чтобы воскрикнуть Воуля!)
GUI.Label (Rect (25, 25, 200, 300), "viewer_id: " + viewer_id);
GUI.Label (Rect (25, 45, 200, 300), "auth_key: " + auth_key);
}
 
//Эти функции примут данные и запишуться в viewer_id и , auth_key
 
//ID Игрока Вконтакте
function _viewer_id ( v_id ) {
viewer_id = v_id ;
}
 
//Key Игрока Вконтакте
function _auth_key ( v_key ) {
auth_key = v_key ;
}

Переносим скрипт на сбъект WEBCONNECTOR

Сохраняем, под WebPlayer, сохраненный файл заливаем на сервер.

 Запускаем приложеие ВКонтакте и все готово.



Теперь с этим ИД и Ключом можно взаимодействовать с phpMyAdmin
 Как логин и пароль.А и ещё, через flashVars файл vkframe.php можно получать разные данные.
 Ну вот и подошел к концу наш unity3d tutorial пробуйте эксперементируйте. Удачи!

Все проверил, работает исправно!

Автор: Жерносек Андрей
(источник)
« Последнее редактирование: Июль 23, 2012, 12:32:25 pm от NewBee »

Июль 23, 2012, 12:31:30 pm
Ответ #3

Mimi Neko

  • Администратор
  • Старожил форума

  • Оффлайн
  • *****

  • 2456
  • Репутация:
    153
    • Просмотр профиля
Создание приложений в контакте VK.com + Unity3D урок 2. php mysql база данных через Unity3D
(перепечатка)

Здравствуйте! Если вы не читали 2 статьи, как создать приложение и создание автрорегистрации, 2 статьи первая и  вторая.
 В этом unity3d tutorial мы будем соединяться с php MySQL будем считывать данные которые занесли через контакт.


Заходим в наш проект, который мы создавали во 2-м уроке.



И так тут вопрос, вы наверно думаете что, при изменении проекта нужно будет перезаливать файл на сервер, патом ждать загрузки его и это все каждый раз при изменении проекта…

На это есть простое решение, через контакт мы просто входим и создаем авторегистрацию игрока, поэтому для простоты нужно ввести ИД и Ключ
 в 2 поля, Viewer_id Auth_key в Unity3d.



Этот ключ и Ид заноситься автоматически при 1-м входе ВКонтакт.
 Чтобы узнать свой Ключ и ИД нужно зайти в phpMyAdmin который находиться в php MySQL выбрать:

php mysql база данных

таблицу e_users
 Обзор

Видим нашу запись о входе через контакт.


Копируем vk_id и vk_key
vk_id – это ид игрока вконтакте
vk_key – это ключ который мы создали через MD5

Вставляем в Unity3D как показано на картинке ввыше.

Далее у нас будет соединение с базой, и считывание данных о себе.
 Создаем PHP скрипт можно любой но у меня getprofiles.php
 Заходим в редактирование и вставляем туда вот такой код:

Файл конфигурации config.php мы создавали в прошлом уроке.

<?php  
  
Include "config.php"// Загружаем файл конфигурации 
  
if ((!empty($_GET['id'])) ) {//Есди Пришёл ИД то... 
  
 
$_id $_GET['id']; //Считываем ID пришедшего 
  
 //Соединяемся с базой данных. 
 
$link mysql_connect($mysql_host$mysql_user$mysql_password
 or die(
"Could not connect : " mysql_error()); 
 
mysql_query("SET NAMES 'cp1251';"); 
 
mysql_select_db($my_database) or die("Could not select database");  
  
 
//Выделяем игрока с пришедшим ид. 
 
$query "SELECT * FROM e_users where vk_id ='$_id'"
  
 
//Запускаем команду 
 
$result mysql_query($query) or die("Query failed : " mysql_error()); 
 
//через $line мы сожем считать данные. 
 
$line mysql_fetch_array($result); 
  
 
$vk_id $line["vk_id"]; //ID Игрока 
 
$_name $line["vk_name"]; //Nick 
 
$_family $line["vk_family"]; //Rating 
 
$_photo_avatar $line["vk_photo"]; //Home 
  
 
if ($vk_id == $_id) { //Если ник существует. 
 
echo "[msg]"."1"."[/msg]"//Код Ник Существует 
 
echo "[vk_id]" $vk_id "[/vk_id] "//ID 
 
echo "[photo]" $_photo_avatar "[/photo] "//Фото и вигре 
 
echo "[name]" $_name "[/name] "//Имя  
 
echo "[family]" $_family "[/family] "//Фамилия 
 
} else { 
 echo 
"[msg]"."0"."[/msg]"//Нечего не получилось 

Вот мы и поработали с php mysql база данных

Мы будем через Юити посылать комманду в скрипт getprofiles.php и там будем получат ответ о профиле.
 Заходим в Юити изменяем файл profile_view.js (Скрипт где находиться вывод данных)

Изменяем его.

public var viewer_id : String ; //наш ид
public var auth_key : String ; // наш ключ
 
private var connectSQL : int ; //Было ли 1-е соединение или нет
private var message : String ; //Текст который мы отправляем
 
var photo : GUITexture ; //Текстуру которую мы создали GUI
private var vk_id : String ; //ИД вконтакте
 
function OnGUI () {
//Выводим Ид и Ключ чтобы воскрикнуть Воуля!)
GUI.Label (Rect (20, 85, 200, 300), "viewer_id:" + viewer_id);
GUI.Label (Rect (20, 105, 200, 400), "auth_key: " + auth_key);
}
 
function Update () {
 
//Если ид и ключ не пусты, то...
if (viewer_id != "" && auth_key != "") {
//если мы не соединялись то соединяемся
if(connectSQL == 0) {
//Соединяемся 1 сайт, 2 имя файла 3 данные
connect_server ("http://enemboo.devby.ru/e_demo/","getprofiles.php","id="+viewer_id) ;
//Назначем что уже отправили данные на сервер.
connectSQL = 1 ;
}
 
}
 
}
 
function connect_server (site,phpfile,msg) {
//Создаем кооманду запоса
message = site + phpfile + "?" + msg ;
//Отправляем
hs_GET = WWW(message);
yield hs_GET; //Получаем
 
//Если ошибка
if(hs_GET.error) {
print("There was an error posting the high score: " + hs_GET.error); //Выводим об ошибке
} else { //Если нету оибшки то...
//Вот здесь моя функция GetPar созданная мною, в файле AvaFU она вырезает фразу между, 2-мя строчками
sql_msg = AvaFU.GetPar(hs_GET.data,"[msg]","[/msg]") ;
 
//Если Сообщение слуществует
if (sql_msg == "1") {
//Считываем данные.
//Между строчками Фото
sql_photo = AvaFU.GetPar(hs_GET.data,"[photo]","[/photo]") ;
//Между строчками ИД
sql_id = AvaFU.GetPar(hs_GET.data,"[vk_id]","[/vk_id]") ;
//Начинаем скачивать
download_photo (sql_photo) ;
} else if (sql_msg == "0"){
//Если ошибка то выводим об ошибке
Debug.Log("Error");
}
 
}
}
 
function download_photo (http) {
 
hs_photo = WWW(http);
yield hs_photo; //тут все тоже самое
 
photo.texture = hs_photo.texture; //Тут назначаем текстуру которую скачали на GUI текстуру которую мы создадим в сцене.
 
}
 
//Эти функции примут данные и запишуться в viewer_id и , auth_key
 
//ID Игрока Вконтакте
function _viewer_id ( v_id ) {
viewer_id = v_id ;
}
 
//Key Игрока Вконтакте
function _auth_key ( v_key ) {
auth_key = v_key ;
}

Создаем файл AvaFU.js и вставляем туда:
//AvaFU нахождение между Строчками
static function GetPar(msg,one_msg,two_msg) {
var fs = msg ;
two_ofs = fs.IndexOf(two_msg);
 
if(two_ofs != -1)
{
fs = fs.Substring(0,two_ofs);
}
 
one_ofs = fs.IndexOf(one_msg);
max_len = fs.Length ;
len_string = one_ofs + one_msg.Length ;
 
if(one_ofs != -1)
{
fs = fs.Substring(len_string);
}
 
return fs ;
}

Эта функция вырезает данные между строчками.
 Создаем GUITexture


Называем его как угодно (у меня photo), Устанавливаем параметры.



И переносим его. Как на картинке:


Теперь при скачивании вашего аватара будет назначаться на ваш GUI объект
 Запускаем, и Видим что все работает!



Пакет с исходником unitypackage скачать здесь. Прямая ссылка

При заливании файла с Юити на сервер, не забывайте обнулять View_id Auth_key
 Иначе при загрузки вконтакте всегда будет включатся профиль с вашей страницы.

Все проверил, работает исправно!

Автор: Жерносек Андрей
источник
« Последнее редактирование: Июль 23, 2012, 12:33:58 pm от NewBee »

Июль 23, 2012, 19:43:52 pm
Ответ #4

Alcatraz

  • Администратор
  • Старожил форума

  • Оффлайн
  • *****

  • 1851
  • Репутация:
    123
    • Просмотр профиля
    • Flight Dream Studio
Отличные уроки  ;)

Июль 23, 2012, 22:13:31 pm
Ответ #5

graniza

  • Пользователь

  • Оффлайн
  • **

  • 20
  • Репутация:
    0
    • Просмотр профиля
Опупеть!!!! Это статья моей мечта!! ВОТ ОНА! ВОООТ ОНА! спасибо

Июль 23, 2012, 22:32:55 pm
Ответ #6

Mimi Neko

  • Администратор
  • Старожил форума

  • Оффлайн
  • *****

  • 2456
  • Репутация:
    153
    • Просмотр профиля

Сентябрь 22, 2012, 21:10:44 pm
Ответ #7

Ru_lon

  • Активный участник

  • Оффлайн
  • ****

  • 390
  • Репутация:
    9
    • Просмотр профиля
Отлично, но блин так все сложно, если делать большой проект
Сильное государство угнетает нас, при слабом государстве погибаем мы сами.

Сентябрь 29, 2012, 15:23:20 pm
Ответ #8

siriushard

  • Новичок

  • Оффлайн
  • *

  • 19
  • Репутация:
    0
    • Просмотр профиля
Самая лучшая статья, ибо нигде нет такой) , для вконтакте нигде еще такой статьи не находил, спасибо )

Октябрь 29, 2012, 10:13:49 am
Ответ #9

evgenis

  • Новичок

  • Оффлайн
  • *

  • 2
  • Репутация:
    0
    • Просмотр профиля
 :( Сломал голову, как заставить понимать скрипт русские буквы из базы мускуля, не читает имена и фамилии от вк((

Октябрь 29, 2012, 11:54:53 am
Ответ #10

Mimi Neko

  • Администратор
  • Старожил форума

  • Оффлайн
  • *****

  • 2456
  • Репутация:
    153
    • Просмотр профиля
:( Сломал голову, как заставить понимать скрипт русские буквы из базы мускуля, не читает имена и фамилии от вк((

При подключении к mysql, правильно задавай кодировку!

mysql_query("SET NAMES 'cp1251';");

или

mysql _ query ("SET  NAMES  'utf8';");

ещё можно попробовать разные вариации синтаксиса:
mysql_query("SET NAMES 'cp1251'");
или
mysql _ query ("SET  NAMES  'utf8'");

mysql_query("SET NAMES cp1251");
или
mysql _ query ("SET  NAMES  utf8");

 - В разных примерах пор азному пишут, и неизвестно, какой сейчас корректно работает с вк.

есть ещё и с обратными апострофами вариант:
mysql_query("SET NAMES `cp1251`");
или
mysql _ query ("SET  NAMES  `utf8`");

Или установка ещё и нужной кодировки шрифта, при подключении:
mysql_query(”SET NAMES `utf8`”);
mysql_query(”SET CHARACTER SET ‘utf8`”);

(так же куча вариантов с кавычками)

Короче это всё проблемы самого mysql.
http://dev.ezoterik.info/mysql-i-russkaya-kodirovka

Октябрь 30, 2012, 07:34:01 am
Ответ #11

evgenis

  • Новичок

  • Оффлайн
  • *

  • 2
  • Репутация:
    0
    • Просмотр профиля
Видимо многие попадают на  такую ошибку, я не исключение)) кодировка таблицы одна, обращение в пхп другое.
Провел эксперимент, сделал разные таблицы и по разному обращался.Правильно будет если кодировка таблицы и обращение пхп к ней в одной кодировке.
Правда получилось кодировка в cp1251--отображает в самой таблице кириллицу ироглифами, а utf8 --нормально, но работает отображение рус.букв в скрипте и в том и в другом случае.
Исправте у себя, в создание таблицы ( ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=14 ;)а обращение в getprofile.php (mysql_query('SET NAMES utf8');) , лично у меня при таком не работает.

Вопрос ,
//ID Игрока Вконтакте
function _viewer_id ( v_id ) {
viewer_id = v_id ;
}
 
//Key Игрока Вконтакте
function _auth_key ( v_key ) {
auth_key = v_key ;

 v_id и  v_key откуда?

Октябрь 30, 2012, 09:25:11 am
Ответ #12

Mimi Neko

  • Администратор
  • Старожил форума

  • Оффлайн
  • *****

  • 2456
  • Репутация:
    153
    • Просмотр профиля
v_id и  v_key откуда?

Ну человек запускает приложение в контакте, будучи авторизованым там, а значит, эти данные есть в странице, в которую это приложение встроено. И значит они приложению доступны. Оно их и получает из контакта, с помощью этих двух функций.
Смотри тут несколько вариантов, обобщай. Я этим пока не занимался.

Вот:
var unity = unityObject.getObjectById('unityPlayer');
GetUnity().SendMessage('WEBCONNECTOR', '_viewer_id', viewer_id);

И видимо, для получения ключа тоже надо:
GetUnity().SendMessage('WEBCONNECTOR', '_auth_key', auth_key);
Вот в самом первом варианте  даже поясняется выше:
Цитировать
SendMessage('ИмяОбьекта', 'Функция', Данные "а это ИД и Ключ")

 и так далее в Юити Создаем скрипт который будет принимать данные(Ид,Ключ)


А насчёт кодировок, эта проблемка существует нередко и в php, и часто используют либо функции php5 для преобразования кодировок, либо, если php4 - пишут свою функцию перекодировки по таблице, через которую и пропускают все нужные  данные.  Так же и в юнити можно, при необходимости.
« Последнее редактирование: Октябрь 30, 2012, 09:37:28 am от NewBee »

Ноябрь 14, 2012, 00:11:30 am
Ответ #13

nbg

  • Новичок

  • Оффлайн
  • *

  • 3
  • Репутация:
    0
    • Просмотр профиля
Цитировать
Чтобы узнать свой Ключ и ИД нужно зайти в phpMyAdmin который находиться в php MySQL выбрать:

php mysql база данных

таблицу e_users
 Обзор

Видим нашу запись о входе через контакт.


Я нифига не вижу, может я както нетак создал таблицу... я просто ее сохранил как sql и импортировал... Кароче вот что я вижу и всё:


Ноябрь 14, 2012, 09:07:15 am
Ответ #14

Mimi Neko

  • Администратор
  • Старожил форума

  • Оффлайн
  • *****

  • 2456
  • Репутация:
    153
    • Просмотр профиля

Я нифига не вижу, может я както нетак создал таблицу... я просто ее сохранил как sql и импортировал...

 У тебя на скрине вкладка структуры бд! Конечно там не показаны сами данные.
 а чтоб посмотреть содержимое  - жми на вкладку "Обзор".

 И ещё, чтобы что-то в  базе увидеть, надо прежде, то самое в базу занести! (само по себе, там ничего не появится).
 а вот заносить должны функции, которые описаны в статье выше.
« Последнее редактирование: Ноябрь 14, 2012, 09:10:16 am от NewBee »