как вариант vkurske org взял чисто для веб проектов (форум и блог) 147 руб в мес. за впску. Для игр конфигурация будет подороже, но в целом там цены приемлемые и тех поддержка пока радует.
ну вроде получилось, хоть с голосованиями ни разу не работал, но надеюсь сделал все как нужно. [IMG] вот сам код скрипта учета голосов, может будут советы по усовершенствованию? <?php include_once('../configure.php'); $link = new mysqli($configure['db_host'], $configure['db_user'], $configure['db_pass'], $configure['db_name']); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $configure['url_stat_voice']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($ch); curl_close($ch); $list = explode("\n",$result); foreach($list as $key => $vol) { $inf = explode("\t",$vol); $rows = mysqli_query($link, "SELECT * FROM top_stats WHERE idv='{$inf[0]}' ORDER BY ids DESC LIMIT 1"); if(!mysqli_num_rows($rows)){ $result = mysqli_query($link, "SELECT ID,name,coins FROM users WHERE name='{$inf[3]}' ORDER BY ID DESC LIMIT 1"); if(mysqli_num_rows($result)){ $row = mysqli_fetch_array($result, MYSQL_ASSOC); if($inf[4] == 1 && $configure['norm_voice'] >0){$sum = $row['coins']+$configure['norm_voice']; $getkurs = $configure['norm_voice'];} elseif($inf[4] == 2 && $configure['sms_voice'] >0){$sum = $row['coins']+$configure['sms_voice']; $getkurs = $configure['sms_voice'];} else{$sum = $row['coins'];} mysqli_query($link, "UPDATE users SET coins = '$sum' WHERE ID='{$row['ID']}' ORDER BY ID DESC LIMIT 1"); mysqli_query($link, "INSERT IGNORE INTO top_stats SET idv='{$inf[0]}', dat='{$inf[1]}', ip='{$inf[2]}', user='{$inf[3]}', type='{$inf[4]}', get_kurs='{$getkurs}'"); } } } mysqli_close($link); ?>
Кстати, там табуляция стоит т.е. ммтоп использует именно табуляцию в качестве разделителя а не пробелы? пробел как вижу только дату от времени отделяет...
чтож, всем спасибо, вроде все довольно просто, попробую дальше сам разобраться. Просто несколько смутил тот факт, что логин в виде хеша. Всегда думал, что в статистике он открыто пишется. Хеш надеюсь md5? Открытый он, 1 в 1 текст который введешь в поле "ник" при голосовании. Просто текущие администраторы мудрят что-бы ммотоп не сливал их базу логинов и заставляют вводить в поле не ник, а хеш ника. ах вот оно что, ну я и сам параноик в этом плане )) Спасибо
чтож, всем спасибо, вроде все довольно просто, попробую дальше сам разобраться. Просто несколько смутил тот факт, что логин в виде хеша. Всегда думал, что в статистике он открыто пишется. Хеш надеюсь md5?
1 - ID голоса, 2 - Дата Время, 3 - Текст при голосовании, 4 - Тип голоса (1 обычный, 2 смс) Интервал обновления 2 часа (я себе сделал каждые 6 часов обновление) P.S. Я приложил файл с некоторой статистикой, убрал логины, оставил только с хешами спасибо, но вы указали 4 значения из листинга, но я как понимаю их там 5? [IMG] ид голоса - время голоса - ип адрес (если не ошибаюсь?) - какой то хеш? - тип голоса честно не совсем понял 3 и 4 запись. 3 вроде айпи? 4 хеш чтоли? 1 - ID 2 - Дата + Время 3 - IP Адрес голосовавшего 4 - То, что указывается при голосовании. Обычно логин\никнейм, тут он заменил на хэш. 5 - Тип голоса (1 обычный, 2 смс) хм, т.е. логин всегда кодируется в хеш на ммтопе? или вообще он открыто записывается?
1 - ID голоса, 2 - Дата Время, 3 - Текст при голосовании, 4 - Тип голоса (1 обычный, 2 смс) Интервал обновления 2 часа (я себе сделал каждые 6 часов обновление) P.S. Я приложил файл с некоторой статистикой, убрал логины, оставил только с хешами спасибо, но вы указали 4 значения из листинга, но я как понимаю их там 5? [IMG] ид голоса - время голоса - ип адрес (если не ошибаюсь?) - какой то хеш? - тип голоса честно не совсем понял 3 и 4 запись. 3 вроде айпи? 4 хеш чтоли?
В общем реализовав многие функции ЛК, теперь приблизился к возможности учета голосов на ммтопе, но для этого нужна следующая информация: 1. листинг файла статистики (его пример или ссылка на него) 2. что означает каждое из значений в его записи. 3. порядок обработки информации (интервал обновления этого файла статистики на ммтопе и прочая информация связанная с генерацией статистики). Увы я не клиент ммтопа и не имею "боевых" игровых серверов, поэтому регистрация там исключена, да и сама модерация на ммтопе просто может не пропустить если добавлю тестовый проект. Потому мне просто нужна информация по статистике, что я указал выше, остальное (методы, парсинг и т.д. по обработке файла статистики) уже реализовать сам попробую. Заранее спасибо за информацию.
хм, почитал темку, ну чего вы напустились на ТС? Его право искать лохов, ну а если такого найдет и кинет, то попадет в ЧС морга, делов то... Я вот сомневаюсь, что найдет такого, кто согласится всю работу делать на его сервере?
из движков, которые так или иначе поддерживают работу с форумами и имеют модульное наращивание, могу предложить ещё instantcms, slaed cms, eleanor cms.
скажу за себя - привык использовать движок mkportal, ставится поверх любого из поддерживаемых форумов, включая IPB3.4, но к сожалению не поддерживает форум XENFORO и наврятли будет поддерживать, так как проект мкпортал в настоящее время уже никем не поддерживается и не ведется активных разработок и его обновлений, однако мне не мешает использовать его в связке с IPB 3.4.6. Сам портальный движок именно так и построен, чтоб работать как надстройка форума, но со своим ядром и своей модульной системой. Конечно, то что активной официальной поддержки данного движка уже нет, то приходится главным образом полагаться на свои знания в области программирования в пхп, но для себя считаю данный движок наиболее удобным. Лично для меня там понятна модульная структура портала, что позволило мне разрабатывать те модули портала, которые я посчитал нужным проекту, это и биллинг центр и магазины и даже личный кабинет PW [IMG] конечно есть движки и покруче и с постоянной поддержкой разработчиков, но пока лично я остановился на мкпортал, если в будущем понадобится менять движок, то буду непременно искать похожий на мкпортал. PS касательно укоза, о котором выше писалось, ну да все просто замечательно, но плохо, что там нет возможности ставить свои пхп скрипты да и не все любят пользоваться тем, что нельзя "потрогать" в редакторе, что то переписать под себя.
ну в целом да, но оформляйте тут код в тег CODE. Так понимаю генерируете хеш для версии 144? --- добавлено: 16 мар 2015 в 21:46 --- ну и в вашем случае лучше делать проверку(выборку) нужной таблицы по логину аккаунта mysql_query("UPDATE users SET passwd='$hash' WHERE name='".$_POST['login']."'");
ребят, как поставить лк? погодь минутку, только телепатию врублю...
вот такой кусок кода: $Salt = $Login.$Pass; $Salt = md5($Salt); $Salt = "0x".$Salt; есть как сделать смену такого пароля? П.С. версия сборки другая но разработчик тот же П.П.С если кто знает помогите советом плиз давно уже пытаюсь сделать:) Для удобства можно написать примерно такую функцию генерации нужного хеша пароля. function hashpwd($login,$passw,$h) { switch ($h) { default: $pass = false; break; case 1: $pass = base64_encode(md5($login.$passw, true)); break; case 2: $pass = "0x".md5($login.$passw); break; } return $pass; } в данную функцию можно конечно ещё добавить методы шифрования пароля, главное её удобство в том, что не потребуется в итоге эти методы писать непосредственно в коде ЛК, хватит и данной функции. Например для генерации хеша пароля на версию 1.5.1, вызываем функцию... hashpwd("testuser","12345",1); это мы вызывали метод 1, для генерации хеша для версии 1.5.1, метод 2 генерирует хеш для 1.4.4. в итоге смена пароля аккаунта может выглядеть так, например получаем данные из формы изменения пароля методом POST и сохраняем новый пароль: $hash = hashpwd($_POST['login'],$_POST['pass'],1); mysql_query("UPDATE users SET passwd='$hash' WHERE ID='$IDUSER'");
я думаю, ТС считает про себя, что он пуп земли и все разбегутся к нему в скайп, видите из темы испарился... наивное дитя. ничего подобного) просто он сам знает реальные цены и ищет бомжелоха) ну шанс у него есть найти, но при условии, если из запроса на функции лк он выбросит покупку скиллов )
я думаю, ТС считает про себя, что он пуп земли и все разбегутся к нему в скайп, видите из темы испарился... наивное дитя.
Ищу человека который сможет написать лк для 1.3.6 Функции нужны : покупка предметов/скилов/голосование/иконка клану, ну и админ панель. За 1000 рублей Skype: barosha1995 зачем писать таким шрифтом, будто на форуме все инвалиды по зрению сидят? )) По теме, тут немало людей кодеров в данном направлении, но 1к руб для ЛК слишком уж маленький бюджет. Самая проблема, это покупка скиллов в 1.3.6 отличается структура и опкоды. Думаю ЛК под ключ(ваши запросы) минимум обойдется в 2.5-3к рублей не меньше.
так как вопрос решен, советую тему переместить в документацию )
во! теперь все пашет. Вот оно что, китайцы намудрили )) Их понять можно только с их интеллектом... Хм, Десмонд, ты случаем не Китаец? )))
Пакет 3005, в ответе структура GRoleDetail с помощью класса от Desmond Hume удалось получить следующий код, по идее, который позволяет получить айди клана, но... айди не получаю, что странно... <? require_once("packet_class.php"); $GetRole = new WritePacket(); $GetRole -> WriteUInt32(-1); $GetRole -> WriteUInt32(1024); $GetRole -> WriteUInt32(0); // mask ??? $GetRole -> Pack(0xBBD); if (!$GetRole -> Send("localhost", 29400)) return; $GetRole_Re = new ReadPacket($GetRole); $GetRole_Re -> ReadPacketInfo(); $GetRole_Re -> ReadUInt32(); $GetRole_Re -> ReadUInt32(); // retcode $GetRole_Re -> ReadUInt32(); // mask ??? $GetRole_Re -> ReadUByte(); // gameserver_id ??? // GRoleDetail start $GetRole_Re -> ReadUByte(); // char $GetRole_Re -> ReadUInt32(); // id $GetRole_Re -> ReadUInt32(); // userid // GRoleStatus start $GetRole_Re -> ReadUByte(); // version $GetRole_Re -> ReadUInt32(); // level $GetRole_Re -> ReadUInt32(); // level2 $GetRole_Re -> ReadUInt32(); // exp $GetRole_Re -> ReadUInt32(); // sp $GetRole_Re -> ReadUInt32(); // pp $GetRole_Re -> ReadUInt32(); // hp $GetRole_Re -> ReadUInt32(); // mp $GetRole_Re -> ReadFloat(); // posx $GetRole_Re -> ReadFloat(); // posy $GetRole_Re -> ReadFloat(); // posz $GetRole_Re -> ReadUInt32(); // worldtag $GetRole_Re -> ReadUInt32(); // invader_state $GetRole_Re -> ReadUInt32(); // invader_time $GetRole_Re -> ReadUInt32(); // pariah_time $GetRole_Re -> ReadUInt32(); // reputation $GetRole_Re -> ReadOctets(); // custom_status $GetRole_Re -> ReadOctets(); // filter_data $GetRole_Re -> ReadOctets(); // charactermode $GetRole_Re -> ReadOctets(); // instancekeylist $GetRole_Re -> ReadUInt32(); // dbltime_expire $GetRole_Re -> ReadUInt32(); // dbltime_mode $GetRole_Re -> ReadUInt32(); // dbltime_begin $GetRole_Re -> ReadUInt32(); // dbltime_used $GetRole_Re -> ReadUInt32(); // dbltime_max $GetRole_Re -> ReadUInt32(); // time_used $GetRole_Re -> ReadOctets(); // dbltime_data $GetRole_Re -> ReadUInt16(); // storesize $GetRole_Re -> ReadOctets(); // petcorral $GetRole_Re -> ReadOctets(); // property $GetRole_Re -> ReadOctets(); // var_data $GetRole_Re -> ReadOctets(); // skills $GetRole_Re -> ReadOctets(); // storehousepasswd $GetRole_Re -> ReadOctets(); // waypointlist $GetRole_Re -> ReadOctets(); // coolingtime $GetRole_Re -> ReadOctets(); // npc_relation $GetRole_Re -> ReadOctets(); // multi_exp_ctrl $GetRole_Re -> ReadOctets(); // storage_task $GetRole_Re -> ReadOctets(); // faction_contrib $GetRole_Re -> ReadOctets(); // force_data $GetRole_Re -> ReadOctets(); // online_award $GetRole_Re -> ReadOctets(); // profit_time_data $GetRole_Re -> ReadOctets(); // country_data $GetRole_Re -> ReadOctets(); // king_data $GetRole_Re -> ReadOctets(); // meridian_data $GetRole_Re -> ReadOctets(); // extraprop $GetRole_Re -> ReadOctets(); // title_data $GetRole_Re -> ReadOctets(); // reincarnation_data $GetRole_Re -> ReadOctets(); // realm_data $GetRole_Re -> ReadUByte(); // reserved2 $GetRole_Re -> ReadUByte(); // reserved3 // GRoleStatus end $GetRole_Re -> ReadUString(); // name $GetRole_Re -> ReadUInt32(); // race $GetRole_Re -> ReadUInt32(); // cls $GetRole_Re -> ReadUInt32(); // spouse $GetRole_Re -> ReadUByte(); // gender $GetRole_Re -> ReadUInt32(); // create_time $GetRole_Re -> ReadUInt32(); // lastlogin_time $GetRole_Re -> ReadUInt32(); // cash_add $GetRole_Re -> ReadUInt32(); // cash_total $GetRole_Re -> ReadUInt32(); // cash_used $GetRole_Re -> ReadUInt32(); // cash_serial echo "FactionID: " . $GetRole_Re -> ReadUInt32() . "<br>"; // factionid echo "FactionRole: ". $GetRole_Re -> ReadUInt32(); // factionrole ?>
Имена участников (разделяйте запятой).