Модуль медалей

Статус
В этой теме нельзя размещать новые ответы.

Fak0s

Новичок
Репутация
0 / 3
Привет всем.
Кто может выложить модуль медалей :)
тыкаю спасибки.Заранее благодраю за помощь . :)



Тема закрыта!

By. RickMan
 
</TD>
 
Привет всем.
Кто может выложить модуль медалей :lol:
тыкаю спасибки.Заранее благодраю за помощь . :rolleyes:
ты можешь записать медали в инф.пхп новые и в базе записать их в строку медалс через ; тоесть 004;dustman
 
Код:
<?
include('connect.php');
mysql_fetch_array(mysql_query("select * from user");
if ($info['sign'] > 0) echo "<img src='i/invisible.gif'>Персонажу вручена грамота за вклад в игру

";
if ($info['admin'] == 1) echo "<img src='i/admin.gif'>Персонаж имеет полномочия Администратора

";
if ($info['veteran'] > 0) echo "<img src='i/www.gif'>Лучший боец. Ветеран Спартака!

";
if ($info['vip'] > 0) echo "<img src='i/vip.gif'>Персонажу присвоен статус VIP персоны

";
?>

Вот тебе пример а дале думай сам ...

p.s Не забуть что нужно в БД добавить поля
 
Код:
<?
include('connect.php');
mysql_fetch_array(mysql_query("select * from user");
if ($info['sign'] > 0) echo "<img src='i/invisible.gif'>Персонажу вручена грамота за вклад в игру

";
if ($info['admin'] == 1) echo "<img src='i/admin.gif'>Персонаж имеет полномочия Администратора

";
if ($info['veteran'] > 0) echo "<img src='i/www.gif'>Лучший боец. Ветеран Спартака!

";
if ($info['vip'] > 0) echo "<img src='i/vip.gif'>Персонажу присвоен статус VIP персоны

";
?>

Вот тебе пример а дале думай сам ...

p.s Не забуть что нужно в БД добавить поля
да он прав поле инфо добавить можно с помощью sql запроса
ALTER TABLE `users` ADD COLUMN `info` и тут или инт или варчар не помню)
 
зачем такие страшные примеры? это же чем больше медалей - тем больше ячеек в БД надо будет делать...
 
предполагают, тaк.

Код:
<?php
$medal_sql = mysql_query("SELECT id, idmedal, (SELECT name FROM Awards WHERE id = idmedal) AS name, (SELECT info FROM Awards WHERE id = idmedal) AS info, (SELECT img FROM Awards WHERE id = idmedal) AS img, date FROM medals WHERE iduser = ".$result_vw1[id]);
$i = 0;
while($medal_row = mysql_fetch_array($medal_sql))
{
$medal_id[$i] = $medal_row['id'];
$medal_name[$i] = $medal_row['name'];
$medal_info[$i] = $medal_row['info'];
$medal_img[$i] = $medal_row['idmedal'].$medal_row['img'];
$medal_date[$i] = substr($medal_row['date'], 8, 2).".".substr($medal_row['date'], 5, 2).".".substr($medal_row['date'], 2, 2);
$i++;
}
echo $medal_id;
echo $medal_name;
echo $medal_info;
echo $medal_img;
?>

SQL:



ps. это идея, не знаю, будет работать правильно.
 
Вам че больше делать некуй как хранить медали в БД ?
но если вы хотите изменить / добавить / удалить медалей (динамически все это), что тогда, рекомендуется в качестве альтернативы?
 
вот вам на размышленин) Например если медаль за 1000 побед, то ненад ниче в бд создавать, а надо лишь проверку в инфе сделать и всё. Вот самый оптимальный вариант. Или же есть ещё один вариант. Я приеду домой выложу код.
 
Неее, ну дак это понятно, если медаль привязана к игровому процессу, то добавляется она одной строкой. А если медаль одноразовая и выдаётся за уникальную фичу - вот тут и обработчик в зубы... Но в БД хранить - это маразм, да. Я сам выше писал. Ну максимум что можно - хранить хэш-строку с перечнем медалек.
 
Начинаем больно бить ногами по почкам!

##########
Код:
 if ($user['align']>=0)
Исполняется всегда при любых условиях. Так как отрицательных алигнов нет. Нафиг?

##########
Код:
if ($user['medals']>=1) {
    echo ' [img]inf/2.gif[/img] ';
    echo ' [img]inf/2.gif[/img] ';
}

if ($user['medals']>=2) {
    echo ' [img]inf/5.gif[/img] ';
}

if ($user['medals']>=3) {
    echo ' [img]inf/3.gif[/img] ';
}
Надо ли говорить что эти условия по одному - не исполнятся. Ведь если, скажем, $medals=4, то срабатывают все три правила одновременно. То есть дать вторую и третью без первой - нет возможности. Даже поменять порядок выдачи нет возможности.

##########
Код:
if ($user['align']==1.1 ) {
    echo ' [img]inf/svets.gif[/img] ';
}
if ($user['align']==1.2 ) {
    echo ' [img]inf/svets.gif[/img] ';
}
if ($user['align']==1.4 ) {
    echo ' [img]inf/svets.gif[/img] ';
}
if ($user['align']==1.5 ) {
    echo ' [img]inf/svets.gif[/img] ';
}
if ($user['align']==1.7 ) {
    echo ' [img]inf/svets.gif[/img] ';
}
if ($user['align']==1.75 ) {
    echo ' [img]inf/svets.gif[/img] ';
}
if ($user['align']==1.9 ) {
    echo ' [img]inf/svets.gif[/img] ';
}
if ($user['align']==1.91 ) {
    echo ' [img]inf/svets.gif[/img] ';
}
if ($user['align']==1.92 ) {
    echo ' [img]inf/svets.gif[/img] ';
}

Это просто монструозно! Невероятно монструозно! Можно сделать намного проще:

Код:
if ((int)$user['align']==1 ) {
    echo ' [img]inf/svets.gif[/img] ';
}
То есть берется число с точкой, отметается всё после точки и сравнивается. Бинго!

##########
Код:
if ($user['medala1']>=1 ) {
    echo ' [img]inf/medala1.gif[/img] ';
}
if ($user['medala2']>=1 ) {
    echo ' [img]inf/medala2.gif[/img] ';
}
if ($user['medala3']>=1 ) {
    echo ' [img]inf/medala3.gif[/img] ';
}
if ($user['medala4']>=1 ) {
    echo ' [img]inf/medala4.gif[/img] ';
}
if ($user['medala5']>=1 ) {
    echo ' [img]inf/medala5.gif[/img] ';
}
if ($user['medala6']>=1 ) {
    echo ' [img]inf/medala6.gif[/img] ';
}
if ($user['zadaniya1']==1 ) {
    echo ' [img]zadaniya1.gif[/img] ';
}
if ($user['medala8']>=1 ) {
    echo ' [img]inf/medala8.gif[/img] ';
}
if ($user['medala9']>=1 ) {
    echo ' [img]inf/medala9.gif[/img] ';
}
if ($user['medala10']>=1 ) {
    echo ' [img]inf/medala10.gif[/img] ';
}
if ($user['medala11']>=1 ) {
    echo ' [img]inf/medala11.gif[/img] ';
}
if ($user['medala12']>=1 ) {
    echo ' [img]inf/medala12.gif[/img] ';
}
if ($user['podarokAD']==1 ) {
    echo ' [img]inf/adgunu.gif[/img] ';
}
Что мы тут имеем? 13! ТРИНАДЦАТЬ!!! Новых. Строк в базе. На каждого пользователя! И для чего? Чтобы отобразить одну иконку! И при условии, что в базе может стоять любое NOT NULL. А если еще 10-15 медалей добавить, что тогда? Еще ячейки? А выборки как проводить? SELECT * FROM users? А потом все удивляются - почему игра тормозит, почему не каждый хостинг подходит, почему процессор забивается?

Руки отрывать надобно. Если учитесь думать и писать - учитесь делать это хорошо с самого начала.
 
Начинаем больно бить ногами по почкам!

##########
Код:
 if ($user['align']>=0)
Исполняется всегда при любых условиях. Так как отрицательных алигнов нет. Нафиг?

##########
Код:
if ($user['medals']>=1) {
    echo ' [img]inf/2.gif[/img] ';
    echo ' [img]inf/2.gif[/img] ';
}

if ($user['medals']>=2) {
    echo ' [img]inf/5.gif[/img] ';
}

if ($user['medals']>=3) {
    echo ' [img]inf/3.gif[/img] ';
}
Надо ли говорить что эти условия по одному - не исполнятся. Ведь если, скажем, $medals=4, то срабатывают все три правила одновременно. То есть дать вторую и третью без первой - нет возможности. Даже поменять порядок выдачи нет возможности.

##########
Код:
if ($user['align']==1.1 ) {
    echo ' [img]inf/svets.gif[/img] ';
}
if ($user['align']==1.2 ) {
    echo ' [img]inf/svets.gif[/img] ';
}
if ($user['align']==1.4 ) {
    echo ' [img]inf/svets.gif[/img] ';
}
if ($user['align']==1.5 ) {
    echo ' [img]inf/svets.gif[/img] ';
}
if ($user['align']==1.7 ) {
    echo ' [img]inf/svets.gif[/img] ';
}
if ($user['align']==1.75 ) {
    echo ' [img]inf/svets.gif[/img] ';
}
if ($user['align']==1.9 ) {
    echo ' [img]inf/svets.gif[/img] ';
}
if ($user['align']==1.91 ) {
    echo ' [img]inf/svets.gif[/img] ';
}
if ($user['align']==1.92 ) {
    echo ' [img]inf/svets.gif[/img] ';
}

Это просто монструозно! Невероятно монструозно! Можно сделать намного проще:

Код:
if ((int)$user['align']==1 ) {
    echo ' [img]inf/svets.gif[/img] ';
}
То есть берется число с точкой, отметается всё после точки и сравнивается. Бинго!

##########
Код:
if ($user['medala1']>=1 ) {
    echo ' [img]inf/medala1.gif[/img] ';
}
if ($user['medala2']>=1 ) {
    echo ' [img]inf/medala2.gif[/img] ';
}
if ($user['medala3']>=1 ) {
    echo ' [img]inf/medala3.gif[/img] ';
}
if ($user['medala4']>=1 ) {
    echo ' [img]inf/medala4.gif[/img] ';
}
if ($user['medala5']>=1 ) {
    echo ' [img]inf/medala5.gif[/img] ';
}
if ($user['medala6']>=1 ) {
    echo ' [img]inf/medala6.gif[/img] ';
}
if ($user['zadaniya1']==1 ) {
    echo ' [img]zadaniya1.gif[/img] ';
}
if ($user['medala8']>=1 ) {
    echo ' [img]inf/medala8.gif[/img] ';
}
if ($user['medala9']>=1 ) {
    echo ' [img]inf/medala9.gif[/img] ';
}
if ($user['medala10']>=1 ) {
    echo ' [img]inf/medala10.gif[/img] ';
}
if ($user['medala11']>=1 ) {
    echo ' [img]inf/medala11.gif[/img] ';
}
if ($user['medala12']>=1 ) {
    echo ' [img]inf/medala12.gif[/img] ';
}
if ($user['podarokAD']==1 ) {
    echo ' [img]inf/adgunu.gif[/img] ';
}
Что мы тут имеем? 13! ТРИНАДЦАТЬ!!! Новых. Строк в базе. На каждого пользователя! И для чего? Чтобы отобразить одну иконку! И при условии, что в базе может стоять любое NOT NULL. А если еще 10-15 медалей добавить, что тогда? Еще ячейки? А выборки как проводить? SELECT * FROM users? А потом все удивляются - почему игра тормозит, почему не каждый хостинг подходит, почему процессор забивается?

Руки отрывать надобно. Если учитесь думать и писать - учитесь делать это хорошо с самого начала.

умнягя неучи прошу....
я до тебя ещё учился и знал..
12 строк я делал для новичка одного как пример чтобы он понял ... ехх...
 
12 строк я делал для новичка одного как пример чтобы он понял
вот из за таких как ты и быдлокодерство процветает. ну нафига спрашивается показывать новичку заведомо кривой, неправильный вариант, при этом умея лучше? ЧСВ потешить?
я бы еще понял, если бы ты сам думал, что это - хороший вариант...
 
А к чему весь срач? Имхо можно поступить умней. Все медали ведь выдаются через админку, верно? Ну, личные, именные, персональные... Значит надо:
1. Добавляем сразу в код angel.php нужные строчки (для примера приведу)
Код:
<option value='first_bam'>Участник первого БАМ турнира</option>
и, соответственно:
Код:
case first_bam: $medalinfo = 'Участник первого БАМ-турнира'; break;
Данным шагом мы добавили необходимую нам медаль за какой-либо турнир/действие. Закрываете, сохраняете.
2. В строке inf.php добавляем строку типа:
Код:
case "first_bam": echo ' [img]i/first_bam.gif[/img] '; break;
3. Заливаем картинку с расширением *.gif в необходимую папку
Вуаля, всё работает11
 
А к чему весь срач? Имхо можно поступить умней. Все медали ведь выдаются через админку, верно?
хорошо. а хранить ты записи где будешь? В базе!
А если медалей штук 40 уникальных или больше - по ячейке на медаль - база однажды умрёт.

Если нужно штук 8 медалей, которые никогда не обновляются - тут твой вариант хороший, да.
 
А записывать медали в одно поле с разделителем не вариант? К примеру: 1;2;3;4;5; в одном поле. А потом через регулярку вытягмвать.
 
Этот вариант я использовал в последнем прооекте. Регулярка почти везде хороша кроме случая, когда надо добавлять %RandomImage% - %RandomText%. Тут шаблоны просто не катят.

Самый тупой вариант - добавить таблицу с двумя полями: img, text.
img - картинка медали. При заливке на сервер генерируется уникальное имя картинки.
text - описание награды.

В админке: кого наградить, выбрать и загрузить медаль, ввести описание.

Параллельно рассматриваются две модификации:
1. Медали заливаются в папку на сервере и парсятся админкой. То есть вместо загрузки медали напрямик - показывается выборка из уже залитых. Конечно это не так гибко как в прошлом варианте, зато гарантированно не даёт что-то заливать на сервер в принципе.
2. Банальный вывод награждения в инфу персонажа. Этим перенесением функций из админи в инфу - экономим на запросаз в базу для поиска пользователя.

К сожалению дальше теории это не зашло, так как играми я практически не занимаюсь и если и накатываю подобные фичи, то на играх друзей в качестве экспериментов. :)
 
Этот вариант я использовал в последнем прооекте. Регулярка почти везде хороша кроме случая, когда надо добавлять %RandomImage% - %RandomText%. Тут шаблоны просто не катят.

Самый тупой вариант - добавить таблицу с двумя полями: img, text.
img - картинка медали. При заливке на сервер генерируется уникальное имя картинки.
text - описание награды.

В админке: кого наградить, выбрать и загрузить медаль, ввести описание.

Параллельно рассматриваются две модификации:
1. Медали заливаются в папку на сервере и парсятся админкой. То есть вместо загрузки медали напрямик - показывается выборка из уже залитых. Конечно это не так гибко как в прошлом варианте, зато гарантированно не даёт что-то заливать на сервер в принципе.
2. Банальный вывод награждения в инфу персонажа. Этим перенесением функций из админи в инфу - экономим на запросаз в базу для поиска пользователя.

К сожалению дальше теории это не зашло, так как играми я практически не занимаюсь и если и накатываю подобные фичи, то на играх друзей в качестве экспериментов. :)
Как бы через админку в ручном режиме награждать я и предложил. Код написал - где что подправить. Или ты что-то другое имел в виду?
Кстать, проблема с награждением повторным, другой медалью - первая пропадает. Пока не копался, скорей всего это при запросе в БД заменяется строка "medals" - имхо подправить запрос при награждении в самом angel.php - что не заменяло значение(название), а добавляло.
 
Я не знаю какой у тебя angel.php поэтому без кода ничего не скажу.
 
Статус
В этой теме нельзя размещать новые ответы.

Похожие темы

Сверху