Скрипт поощрения
Скрипт поощрения для Mu Online
Данный скрипт предназначен для игры Mu Online, для хранения голосов использует, в качестве базы данных, MSSQL.Для успешного начисления кредитов в таблицу MEMB_CREDITS, при голосовании игрок должен вводить ник персонажа.
При правильной установке, скрипт на экран ничего выводить не должен, в таблицу должны занестись голоса, игрокам начислены кредиты.
Установка
Для установки потребуется наличие: базы данных (в примере используется MSSQL) и планировщик Cron на хостинге (для автоматического выполнения скрипта, можно и без него вручную выполнять).- Скачать исходные файлы
- Пароль на архиве: q-top.ru
- Необходимо создать таблицу в базе данных MSSQL, выполнив следующий код в Server Management Studio.
USE [MuOnline] на первой строчке означает, в какую базу данных (в нашем случае это MuOnline), создавать новую таблицу qtop_vote.USE [MuOnline] GO /****** Object: Table [dbo].[qtop_vote] ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[qtop_vote]( [id] [int] IDENTITY(1,1) NOT NULL, [v_id] [bigint] NOT NULL, [v_username] [varchar](50) COLLATE Cyrillic_General_CI_AS NULL, [v_date] [varchar](50) COLLATE Cyrillic_General_CI_AS NULL, [v_time] [varchar](50) COLLATE Cyrillic_General_CI_AS NULL, [v_type] [int] NULL, [v_ip] [varchar](50) COLLATE Cyrillic_General_CI_AS NULL ) ON [PRIMARY] GO SET ANSI_PADDING OFF
- Необходимо поместить файл qtop_vote_reward.php на свой сайт в корень сайта или в любую из директорий,
но не в пустую папку! Иначе смогут скачать php файл и узнать ваши данные от базы.
Если папка пустая, то защитите ее наличием рядом индексного файла или .htaccess.
/* Скрипт без копирования статистики, для игры MuOnline, с использованием MSSQL Данный скрипт подготовлен администраторами Q-top.ru */ # Данные, для соединения с базой данных (БД) $connect['host_name'] = 'localhost'; # Где расположенна БД $connect['user_name'] = 'sa'; # Имя пользователя БД $connect['password'] = ''; # Пароль пользователя БД $connect['db_name'] = 'MuOnline'; # Имя БД (name_db) # Адрес статистики, его можно посмотреть в услугах на сайте # Например /profiles/10/100/f96s94yfx68819s00v77asxv.txt $v_config['statistic_url'] = '/profiles/12213/1212/337ff21126f0ac23c75befdcdb50b.txt'; # Сколько бонусов за обычный голос $v_config['reward'] = 2; # Сколько бонусов за vip голос $v_config['reward_sms'] = 4; # Максимальная длина ника/логина игрока $v_config['user_max_length'] = 20; /* Подключение к БД */ # Устанавливаем соединение с базой данных (в данном примере используется MSSQL) $db = @mssql_connect($connect['host_name'], $connect['user_name'], $connect['password']); if(!$db) die('Ошибка в подключении базы данных'); mssql_select_db($connect['db_name'], $db); # Открываем файл статистики $fd = fopen($v_config['statistic_url'], 'r'); while (!feof($fd)) { # Считываем построчно данные из блокнота $str = fgets($fd, 1024); # Разбиваем строку $str на отдельные элементы, используя в качестве разделителя || list($vote['id'], $vote['date'], $vote['time'], $vote['ip'], $vote['user_name'], $vote['type']) = explode('||', $str); # Обрезаем возможные пробелы в типе голоса $vote['type'] = trim($vote['type']); # Голоса без ников/логинов не обрабатываем, т.к. начислять поощрение некому. Переходим к следующему голосу if (empty($vote['user_name'])) continue; # Проверяем длину ника/логина, если она не удолетворяет заданному значению, то данный ник будет игнорироваться и цикл перейдет к следующему голосу if (mb_strlen($vote['user_name'], 'UTF-8') > $v_config['user_max_length']) continue; # В нике/логине допустимы следующие символы: a-zA-Z0-9 $vote['user_name'] = preg_replace("/[^a-zA-Z0-9]/", '', $vote['user_name']); # Проверяем по таблице qtop_vote, был ли уже учтен голос, проверка по id голосу (он всегда уникальный, даже после сброса месячной статистики) if (mssql_num_rows(mssql_query("SELECT v_id FROM qtop_vote WHERE v_id='".$vote['id']."' ")) > 0) continue; # Вставляем в базу qtop_vote новый голос $insert = mssql_query("INSERT INTO qtop_vote (v_id, v_date, v_time, v_ip, v_username, v_type) VALUES ('".$vote['id']."', '".$vote['date']."', '".$vote['time']."', '".$vote['ip']."', '".$vote['user_name']."', '".$vote['type']."')"); # Если запрос вставки прошел успешно, то переходим к начислению поощрения if ($insert) { # Получаем логин данного персонажа, для поощрения $user = mssql_fetch_assoc(mssql_query("SELECT AccountID, Name FROM Character WHERE Name='".$vote['user_name']."' ")); # Если не существует или пустое имя/логин то, прерываем текущий и переходим к следующему голосу if (!isset($user['AccountID']) or empty($user['AccountID'])) continue; # Начисление бонусов в таблицу MEMB_CREDITS, для простых голосов if($vote['type'] == 1) mssql_query ("UPDATE MEMB_CREDITS SET credits=credits+'".$v_config['reward']."' WHERE memb___id='".$user['AccountID']."'"); # Начисление бонусов в таблицу MEMB_CREDITS, для vip голосов if($vote['type'] == 2) mssql_query ("UPDATE MEMB_CREDITS SET credits=credits+'".$v_config['reward_sms']."' WHERE memb___id='".$user['AccountID']."'"); } } /* Если у вас имеются вопросы, проблемы, идеи по улучшению, сообщайте по скайпу: q-top.ru или в группу в vk: https://vk.com/club36638011 рассмотрим! */
- Теперь необходимо настроить Cron (для автоматического выполнения скрипта). Cron находится на вашем хостинге сайта, задайте промежуток времени, по прошествии которого скрипт будет автоматически выполняться, например каждый день, раз в 4 часа.
Описание Cron при использовании панели ISP manager.