Как работает ММОТОП система

Автор Botka, 2014 Март 24, 13:47

« назад - далее »

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

Ключевые слова [SEO] mu onlineнастройкаскриптысистемаммотопоптимизация

Botka

Здравствуйте, дорогие форумчани. Долгое время уже пользуюсь сайтом DEW, но до сих пор не разобрался с ММОТОП системой. Есть скрипты от профессора, но я не совсем понимаю как поставить. Помогите пожалуйста. Вот сами скрипты.

config.php

Спойлер
$PCPoints['enable']  = 0;    // показывать pcpoints
$MMOTOP['enable'] = 1;                    //
$MMOTOP['reward_type'] = 2;                    // 0 - получим вещь. 1 - получим империалы, 2 - коины, 3 - пс_поинты
$MMOTOP['imperials_reward'] = 10;            // кол-во imperials за голос
$MMOTOP['cspoints_reward'] = 1;            // кол-во wCoins за голос
$MMOTOP['pcpoints_reward'] = 30;            // кол-во PC Points за голос
$MMOTOP['dir'] = "mmotop/";                    // путь файлу статистики
$MMOTOP['file'] = "stats.txt";                // файл статистики
$MMOTOP['timeout'] = 30;                    // обновление файла статистики в секундах.
[свернуть]

Modules/MMOTOP.php

Спойлер
<?
################################################
#                                              #
#          Deathless Engine Web                #
#                                              #
#          Copyright: Deathless                #
#          Skype: MuAntrum                    #
#          E-Mail: [email protected]          #
#                                              #
################################################
?>
<?php

if(!defined('DEW_Engine')) {
Exit;
}

if ($_SESSION['DEW_UserName'] == true AND $IsOnline == '0') {

include_once    "Includes/Warehouse.php";
error_reporting(E_ALL);

if ( file_exists($MMOTOP['dir'].$MMOTOP['file']) )
{
$file_time = ( time() - filemtime($MMOTOP['dir'].$MMOTOP['file']) ) / 60;

if ( $file_time > $MMOTOP['timeout'] )
{
//copy( $MMOTOP['list'] , $MMOTOP['dir'].$MMOTOP['file'] );
file_put_contents($MMOTOP['dir'].$MMOTOP['file'], file_get_contents($MMOTOP['list']));
}

}
else
{
if ( !is_dir($MMOTOP['dir']) )
{
mkdir($MMOTOP['dir']);
}
//copy( $MMOTOP['list'] , $MMOTOP['dir'].$MMOTOP['file'] );
file_put_contents($MMOTOP['dir'].$MMOTOP['file'], file_get_contents($MMOTOP['list']));
}


$mmotop_db        = file($MMOTOP['dir'].$MMOTOP['file']);
foreach($mmotop_db as $mmotop_line) {
$vote_db    = explode("    ",$mmotop_line);
$vote_id    = $vote_db
  • ;
$vote_time    = strtotime($vote_db[1]);
$vote_ip    = $vote_db[2];
$vote_char    = $vote_db[3];
$vote_type    = substr($vote_db[4],0,1);    //    1 - Простой; 2 - SMS

// если ввели имя игрового персонажа $char_name
$char_check    = $DB->NumRows($DB->Query("SELECT Name FROM Character WHERE Name = '".$vote_char."'"));


if ($char_check > 0) {
$check_vote    = $DB->NumRows($DB->Query("SELECT * FROM DEW_mmotop WHERE vote_id = '".$vote_id."' AND vote_time = '".$vote_time."' AND vote_char = '".$vote_char."' AND vote_type = '".$vote_type."'"));
if ($check_vote <= 0) {
$mmo_acc    = $DB->FetchRow($DB->Query("SELECT AccountID FROM Character WHERE Name = '".$vote_char."'"));
$DB->Query("UPDATE MEMB_INFO SET mmotop = mmotop+'".$vote_type."' WHERE memb___id = '".$mmo_acc
  • ."'");
$DB->Query("INSERT INTO DEW_mmotop (vote_id,vote_time,vote_ip,vote_char,vote_type) VALUES ('$vote_id','$vote_time','$vote_ip','$vote_char','$vote_type')");
}
}
else // если ввели аккаунт
{
$char_check    = $DB->NumRows($DB->Query("SELECT Name FROM Character WHERE AccountID = '".$vote_char."'"));
if ($char_check > 0) {
$check_vote    = $DB->NumRows($DB->Query("SELECT * FROM DEW_mmotop WHERE vote_id = '".$vote_id."' AND vote_time = '".$vote_time."' AND vote_char = '".$vote_char."' AND vote_type = '".$vote_type."'"));
if ($check_vote <= 0) {
$mmo_acc = $vote_char;
$DB->Query("UPDATE MEMB_INFO SET mmotop = mmotop+'".$vote_type."' WHERE memb___id = '".$mmo_acc."'");
$DB->Query("INSERT INTO DEW_mmotop (vote_id,vote_time,vote_ip,vote_char,vote_type) VALUES ('$vote_id','$vote_time','$vote_ip','$vote_char','$vote_type')");
}
}
}




}

$mmo_votes    = $DB->FetchRow($DB->Query("SELECT mmotop FROM MEMB_INFO WHERE memb___id = '".$username."'"));
$mmo_points    = $mmo_votes
  • ;
// item reward
if ( $MMOTOP['reward_type'] == 0 )
{
if(isset($_POST['mmotop_prize'])) {
$level        = rand($MMOTOP['level']['min'],$MMOTOP['level']['max']);
$option        = rand($MMOTOP['option']['min'],$MMOTOP['option']['max']);
$luck        = rand($MMOTOP['luck']['min'],$MMOTOP['luck']['max']);
$skill        = rand($MMOTOP['skill']['min'],$MMOTOP['skill']['max']);
$id            = rand($MMOTOP['item_id']['min'],$MMOTOP['item_id']['max']);
$type        = rand($MMOTOP['i_type']['min'],$MMOTOP['i_type']['max']);
$opt1        = rand($MMOTOP['exc_op_1']['min'],$MMOTOP['exc_op_1']['max']);
$opt2        = rand($MMOTOP['exc_op_2']['min'],$MMOTOP['exc_op_2']['max']);
$opt3        = rand($MMOTOP['exc_op_3']['min'],$MMOTOP['exc_op_3']['max']);
$opt4        = rand($MMOTOP['exc_op_4']['min'],$MMOTOP['exc_op_4']['max']);
$opt5        = rand($MMOTOP['exc_op_5']['min'],$MMOTOP['exc_op_5']['max']);
$opt6        = rand($MMOTOP['exc_op_6']['min'],$MMOTOP['exc_op_6']['max']);
$query        = $DB->Query("exec WZ_GetItemSerial");
$credita    = $DB->FetchRow($query);
$credita    = sprintf("%08X", $credita
  • ,00000000);
$DDEE        = $credita;
$AA            = sprintf("%02X", $id,00);
$BB            = 0;
$CC            = sprintf("%02X", $MMOTOP['durab'],00);
$FF            = sprintf("%02X", ($type*16),00);
$HH        = 0;
$ZZ            = 0;
$BB            += $level*8;
if ($opt >= 4) {
$BB    += $opt - 4;
$HH    += 64;
}
else    $BB    += $opt;
if ($luck == '1')    $BB    += 4;
if ($skill == '1')    $BB    += 128;
if ($BB < 0)        $BB = 0;
if (@$opt1 == '1')    $HH    += 1;
if (@$opt2 == '1')    $HH    += 2;
if (@$opt3 == '1')    $HH    += 4;
if (@$opt4 == '1')    $HH    += 8;
if (@$opt5 == '1')    $HH    += 16;
if (@$opt6 == '1')    $HH    += 32;
$BB            = sprintf("%02X", $BB,00);
$HH            = sprintf("%02X", $HH,00);
$ZZ            = sprintf("%02X", $ZZ,00);
$thAitem    = $AA.$BB.$CC.$DDEE.$HH.$ZZ.$FF.'000000000000';
$query        = $DB->Query("declare @it varbinary(1920); set @it=(select [Items] from [warehouse] where [AccountID]='$username'); print @it");
$mycuritems    = $DB->GetLastMessage();
$test        = 0;
$item_info    = ItemInfo($thAitem);
$slot        = smartsearch($mycuritems,$item_info['X'],$item_info['Y']);
$test        = $slot*32;

$new_points    = $mmo_points - $MMOTOP['price'];

if ($new_points < 0) {
$message_error    = "Голосуйте ещё!";
}
elseif ($slot == 1337) {
$message_error    = "В вашем банке не хватает места!";
}
else {
$DB->Query("UPDATE MEMB_INFO SET mmotop = '$new_points' WHERE memb___id = '".$username."'");
$mynewitems    = substr_replace($mycuritems, $thAitem, ($test+2), 32);
$add        = $DB->Query("update [warehouse] set [Items]=".$mynewitems." where [AccountId] = '$username'");
$item_info    = ItemInfo($thAitem);
$message_ok    = "Вы получили ".$item_info['name']."!";
$server_time = date("H:i:s", time());
$log_content = "[MMOTOP][$server_time] $char_name ($username) Item: ".$item_info['name']."n";
Security::WriteLog('Char',$log_content);
}
}
echo    DEW_Message('ok',$message_ok);
echo    DEW_Message('error',$message_error);

if ($mmo_points < $MMOTOP['price']) {
$points    = $MMOTOP['price'] - $mmo_points;
}
else {
$points    = "<font color='#3CA445'><b>Приз</b></font>";
}

/*    Deathless Engine Web © 2010    */

?>

<table width="100%" class="info_table">
<tr>
<td class="text_default" >
<center><div style="width:88px; padding:2px; margin:5px;background:#0b0e11;border:1px solid #D26300;">
<a href="<? echo $MMOTOP['link']; ?>" target="_blank"><img src="https://mu.mmotop.ru/images/anim_mu.gif" title="Рейтинг серверов MU Online" alt="Рейтинг серверов MU Online"></a>
</div></center>
<font color="darkgreen">Здесь вы можете получить случайную вещь за <font color="green"><b><? echo $MMOTOP['price']; ?></b></font> MMOTOP голосов.</font><br>
<center>-</center></br>
<font color="purple">Чтобы получать очки, вам необходимо голосовать за наш сервер. За каждый голос вы получаете 1 MMOTOP очко, а за каждое SMS - 2 MMOTOP очка.</font><br>
<center>-</center></br>
<font color="darkred">При голосовании не забудьте написать имя своего персонажа или аккаунт, иначе очки не будут зачислены.</font>
</td>
</tr>
</table>
<br>

<table align="center" border="0" cellpadding="2" cellspacing="2" class="form_table">
<tr class="bgcol1">
<td class="text_default" align="right" width="50%"><b>Всего очков:</b></td>
<td class="text_default"><? echo $mmo_points; ?></td>
</tr>

<tr>
<td class="text_default" align="right" width="50%"><b>Надо очков:</b></td>
<td class="text_default"><? echo $mmo_points; ?></td>
</tr>
</table>

<form method="post" action="" name="getprize_start">
<table align="center" class="form_table">
<tr>
<td>
<input type="hidden" name="mmotop_prize" value="1">
<input type="button" class="submit-form" onclick="this.disabled=true; this.value='Loading...'; getprize_start.submit();" value="Получить MMOTOP приз">
</td>
</tr>
</table>
</form>

<?php
}
// imperials reward (Profesor08)
if ($MMOTOP['reward_type'] == 1) {

$total_credits = $mmo_points * $MMOTOP['imperials_reward'];

if(isset($_POST['mmotop_prize_imperials'])) {

$result = $DB->Query("SELECT credits FROM MEMB_CREDITS WHERE memb___id = '".$username."'");
$current_credits = $DB->FetchRow($result);

$current_credits = $current_credits
  • + $total_credits;

$DB->Query("UPDATE MEMB_INFO SET mmotop = 0 WHERE memb___id = '".$username."'");
$DB->Query("UPDATE MEMB_CREDITS SET credits = ".$current_credits." WHERE memb___id = '".$username."'");

echo    DEW_Message('ok','Вы получили: '.$total_credits.' Imperials.');
$mmo_points = 0;
$total_credits = 0;

}
?>
<table width="100%" class="info_table">
<tr>
<td class="text_default">
<center><div style="width:88px; padding:2px; margin:5px;background:#0b0e11;border:1px solid #D26300;">
<a href="<? echo $MMOTOP['link']; ?>" target="_blank"><img src="https://mu.mmotop.ru/images/anim_mu.gif" title="Рейтинг серверов MU Online" alt="Рейтинг серверов MU Online"></a>
</div></center>
<font color="darkgreen">Здесь вы можете получить <?=$MMOTOP['imperials_reward'];?> Imperials  за <font color="green"><b>1</b></font> MMOTOP голос.</font><br>
<center>-</center></br>
<font color="purple">Чтобы получать очки, вам необходимо голосовать за наш сервер. За каждый голос вы получаете 1 MMOTOP очко, а за каждое SMS - 2 MMOTOP очка.</font><br>
<center>-</center></br>
<font color="darkred">При голосовании не забудьте написать свой аккаунт или имя персонажа, иначе очки не будут зачислены.</font>
</td>
</tr>
</table>
<br>
<div align="center">
<table align="center" border="0" cellpadding="2" cellspacing="2" class="form_table">
<tr class="bgcol1">
<td class="text_default" align="right" width="50%"><b>Всего очков: </b></td>
<td class="text_default"><? echo $mmo_points; ?></td>
</tr>

<tr>
<td class="text_default" align="right" width="50%"><b>Получите: </b></td>
<td class="text_default"><? echo $total_credits; ?> <b> Imperials</b></td>
</tr>
</table>

<? if ( $mmo_points > 0 ) { ?>
<form method="post" action="" name="getprize_credits">
<table align="center" class="form_table">
<tr>
<td>
<input type="hidden" name="mmotop_prize_imperials" value="1">
<input type="button" class="submit-form" onclick="this.disabled=true; this.value='Loading...'; getprize_credits.submit();" value="Получить MMOTOP приз">
</td>
</tr>
</table>
</form>
<? } ?>
</div>


<?
}
// cspoints reward (Profesor08)
if ($MMOTOP['reward_type'] == 2) {

$total_cspoints = $mmo_points * $MMOTOP['cspoints_reward'];

if(isset($_POST['mmotop_prize_cspoints'])) {

$result = $DB->Query("SELECT cspoints FROM MEMB_INFO WHERE memb___id = '".$username."'");
$current_cspoints = $DB->FetchRow($result);

$current_cspoints = $current_cspoints
  • + $total_cspoints;

$DB->Query("UPDATE MEMB_INFO SET mmotop = 0 WHERE memb___id = '".$username."'");
$DB->Query("UPDATE MEMB_INFO SET cspoints = ".$current_cspoints." WHERE memb___id = '".$username."'");

echo    DEW_Message('ok','Вы получили: '.$total_cspoints.' wCoins.');

$mmo_points = 0;
$total_cspoints = 0;



}
?>
<table width="100%" class="info_table">
<tr>
<td class="text_default" >
<center><div style="width:88px; padding:2px; margin:5px;background:#0b0e11;border:1px solid #D26300;">
<a href="<? echo $MMOTOP['link']; ?>" target="_blank"><img src="https://mu.mmotop.ru/images/anim_mu.gif" title="Рейтинг серверов MU Online" alt="Рейтинг серверов MU Online"></a>
</div></center>
<font color="darkgreen">Здесь вы можете получить <?=$MMOTOP['cspoints_reward'];?> wCoins  за <font color="green"><b>1</b></font> MMOTOP голос.</font><br>
<center>-</center></br>
<font color="purple">Чтобы получать очки, вам необходимо голосовать за наш сервер. За каждый голос вы получаете 1 MMOTOP очко, а за каждое SMS - 2 MMOTOP очка.</font><br>
<center>-</center></br>
<font color="darkred">При голосовании не забудьте написать свой аккаунт или имя персонажа, иначе очки не будут зачислены.</font>
</td>
</tr>
</table>
<br>
<div align="center">
<table align="center" border="0" cellpadding="2" cellspacing="2" class="form_table">
<tr class="bgcol1">
<td class="text_default" align="right" width="50%"><b>Всего очков:</b></td>
<td class="text_default"><? echo $mmo_points; ?></td>
</tr>

<tr>
<td class="text_default" align="right" width="50%"><b>Получите:</b></td>
<td class="text_default"><? echo $total_cspoints; ?> <b> wCoins</b></td>
</tr>
</table>

<? if ( $mmo_points > 0 ) { ?>
<form method="post" action="" name="getprize_credits">
<table align="center" class="form_table">
<tr>
<td>
<input type="hidden" name="mmotop_prize_cspoints" value="1">
<input type="button" class="submit-form" onclick="this.disabled=true; this.value='Loading...'; getprize_credits.submit();" value="Получить MMOTOP приз">
</td>
</tr>
</table>
</form>
<? } ?>
</div>

<?
}
// pcpoints reward (Profesor08)
if ($MMOTOP['reward_type'] == 3) {

$total_pcpoints = $mmo_points * $MMOTOP['pcpoints_reward'];

if(isset($_POST['mmotop_prize_credits'])) {

$result = $DB->Query("SELECT PCPoint FROM Character WHERE Name = '".$char_name."'");
$current_pcpoints = $DB->FetchRow($result);

$current_pcpoints = $current_pcpoints
  • + $total_pcpoints;

$DB->Query("UPDATE MEMB_INFO SET mmotop = 0 WHERE memb___id = '".$username."'");
$DB->Query("UPDATE Character SET PCPoint = ".$current_pcpoints." WHERE Name = '".$char_name."'");

echo    DEW_Message('ok','Вы получили: '.$total_pcpoints.' PC Points.');
$mmo_points = 0;
$total_pcpoints = 0;

}
?>
<table width="100%" class="info_table">
<tr>
<td class="text_default">
<center><div style="width:88px; padding:2px; margin:5px;background:#0b0e11;border:1px solid #D26300;">
<a href="<? echo $MMOTOP['link']; ?>" target="_blank"><img src="https://mu.mmotop.ru/images/anim_mu.gif" title="Рейтинг серверов MU Online" alt="Рейтинг серверов MU Online"></a>
</div></center>
<font color="darkgreen">Здесь вы можете получить <?=$MMOTOP['pcpoints_reward'];?> PC Points  за <font color="green"><b>1</b></font> MMOTOP голос.</font><br>
<center>-</center></br>
<font color="purple">Чтобы получать очки, вам необходимо голосовать за наш сервер. За каждый голос вы получаете 1 MMOTOP очко, а за каждое SMS - 2 MMOTOP очка.</font><br>
<center>-</center></br>
<font color="darkred">При голосовании не забудьте написать свой аккаунт или имя персонажа, иначе очки не будут зачислены.</font>
</td>
</tr>
</table>
<br>
<div align="center">
<table align="center" border="0" cellpadding="2" cellspacing="2" class="form_table">
<tr class="bgcol1">
<td class="text_default" align="right" width="50%"><b>Всего очков:</b></td>
<td class="text_default"><? echo $mmo_points; ?></td>
</tr>

<tr>
<td class="text_default" align="right" width="50%"><b>Получите:</b></td>
<td class="text_default"><? echo $total_pcpoints; ?> <b> PC Points</b></td>
</tr>
</table>

<? if ( $mmo_points > 0 ) { ?>
<form method="post" action="" name="getprize_credits">
<table align="center" class="form_table">
<tr>
<td>
<input type="hidden" name="mmotop_prize_credits" value="1">
<input type="button" class="submit-form" onclick="this.disabled=true; this.value='Loading...'; getprize_credits.submit();" value="Получить MMOTOP приз">
</td>
</tr>
</table>
</form>
<?}?>
</div>

<?
}
}
else {
if ($IsOnline == '1') {
echo    DEW_Message('error',phrase_login_logout_first);
}
if ($_SESSION['DEW_UserName'] != true) {
echo    DEW_Message('error',phrase_please_login_first);
}
}

/*    Deathless Engine Web © 2010    */

?>
[свернуть]

Ещё есть файл web/mmotop/stats.txt
Но почему то он всегда пустой....

Вообщем такой вопрос к Вам, хочу сделать чтобы всё бралось ссылки на ммотопе - где храняться голоса, объясните как должно это всё работать, очень надеюсь на вашу помощь, больше жду ответа от Вас уважаемый Professor.


Everybody

/index.php?topic=18515.0 - [php] Класс - парсер для ММО ТОП И QTOP, для тех, кто понимает
п.с. Вариат неготовый темболее для ДЕВ. зато свежее решение, остается допилить расброс бонусов
Спойлер
[свернуть]

epmak

#2

$mmotop_["price"]="скока вешать в граммах";
$mmotop_["adress"]="до топа";

include "parse.php";//подключаем класс

$obj1 = new TopParse($mmotop_["adress"],' '); //создаем экземпляр
$array1 = $obj1->parce();


if(!empty($array1))
{
$q="";
$st = 0;
foreach ($array1 as $ar) //тут стоит использовать на самом деле итератор, но для небольшого кол-ва народа хватит
{
if (!empty($ar) && isset($ar[4]) && isset($ar[3]) && isset($ar[2]))
{
$ar[3] = substr(trim($ar[3]),0,10);
$ar[4] =  (int)$ar[4];

$q.="магический запрос ";
$st++;
if($st>99)
{
$db->query($q);
$st =0;
$q="";
}
}
}
if($st>0)
$db->query($q);
}
примерно так выглядит.
это  к той теме. вырезка из рабочего модуля

Похожие темы (5)