Tag: develop

Presenting World of Achievements

Най-после сайтът е вече факт и може да се посети през менюто горе. Бутончето WOA е негово. Дълго време седя и чакаше своя момент, но най-после е факт и от месец и нещо дори си го ползвам с пълна сила. Има още много PS3 игри за добавяне, но преди 2 дни намерих PSN API, което не е толкова добро и ефикасно като XMLите на Steam, но въпреки това върши работа и ще ми спести адски много мъки :Д

Много съм доволен от свършената работа. Има още няколко неща за довършване като статистиката и няколко допълнителни филтъра, но това също ще стане реалност тези дни 🙂


World of Achievements Phase 2

Последните две седмици работата по сайта определено потръгна много добре (най-вече благодарение, както казах, на прекрасната xml система на steam). Може да се каже, че самата му структура е вече на едно 80% готова и много малко остана до пълното и завършване. Разбира се, след това ще трябва да си поиграя да вкарам всички PS3 и PSN игри и техните трофеи, но… това не е чак толкова зле, при положение, че си спестих поне 60%, че и повече, от това въвеждане за Steam игрите. Едно най-големите подобрения е вградения админски интерфейс в този на потребителите. Реално няма админски интерфейс, а всичко е реализирано с отделни бутончета, които са достъпни само за логнати потребители (тоест мен ;Д)… И така… ето още няколко шота, за тези, които не се вълнуват особено ;Д

Това е jquery прозорче за добавяне на нова игра. Става само през browser-a с игрите, посредством малкото синкаво бутонче горе в дясно. Сметнах за ненужно да вкарвам повече информация от показаната. Всичко останало може да се направи от страницата на самата игра. Снимките се оразмеряват автоматично, когато това е необходимо, като се запазват пропорциите.

Макар и по-голяма част то постиженията да се вкарват след като вече съм ги отключил (или при въвеждане на нова игра), в Steam доста често се добавят и променят постижения. За тази цел, освен бутончето за маркиране на дадена игра като отключена, има такива за редакция и изтриване. Тези бутони са достъпни само за заключени постижения. Веднъж маркирано като отключено, то си остава перманентно. Досега не е имало случай в Steam, който да налага подмяна на активно постижение. Ако подобно нещо се наложи някой ден, тогава ще му мисля ;Д

Съвсем простичък интерфейс за добавяне на ново постижение. Освен стандартното име и описание, могат да се качат и иконките за заключено и отключено положение. Оказа се обаче, че PS3 нямат такива две положения и за момента една и съща иконка просто трябва да се качва два пъти.
Оптимизация за следващата седмица включва интерфейсът да прави разлика между платформите (той го прави в момента реално, защото ако искате да качите трофей, има още едно падащо меню, с което да окажете типа на трофея – бронз, сребро, злато или платина) и ако качвате за PS3, да показва само едно поле за картинка. Освен това при визуализация също да използва само една директория за PS3 трофеите, а не две, както е за тези при Steam.

Тук се вижда споменатото по-горе бутонче за добавяне на ново постижение. До него има и бутон за оказване на урл на xml файл. Този бутон се появява само ако няма нито едно постижение. С него можете да окажете пътя до xml-a на играта (важи само за Steam) и един скрипт ще свърши цялата работа за вас – ще запише името и описанието на постиженията, както и ще копира картинките в правилните места.
Оптимизацията включва да се направи xml обработка (отново само за Steam) и за вече качени постижения. С едно натискане на бутон да може да се маркират отключените, ако има такива, разбира се. Също така да се скрие от PS3/PSN страниците.
На този шот се вижда и малък надпис “Добави”, които го има до полето за трудност, ако тя е 0, както и до жанровете, ако такива липсват. Също така има бутон за маркиране на завършена игра.

И за да е гъзарията пълна, PS3/PSN трофеите ще имат по една иконка в края, само при отключените, която ще оказва типа им – бронз, сребро и тн.

Един бърз поглед и върху профилната страница, която си е изцяло статична и няма кой знае какво по нея.

И един бърз поглед върху страницата с платформите, която и без това след това води обратно към браузера с игрите, като просто подава допълнителен параметър, който се прикача към mysql заявката и ограничава показването.

И така, доста работа успях да свърша последните десетина дена. Обаче има и още неща за вършене. Добавянето на над стотината PS3/PSN игри и техните трофеи дори не го броя. Остана обаче страницата със статистиката, която е лесна работа, защото данните вече са там, само трябва да се изкарат от базата данни. Също така менюто в дясно, което изцяло липса. То ще включва търсене на постижение или трофеи както в името им, така и в описанието. Ще може да се ограничава платформата също така. Освен това искам да добавя браузер по жанрове и години, както и няколко допълнителни филтъра за игрите – показване само на завършените (или незавършените респективно) игри, показване на игрите с платинен трофей само (за PS3/PSN), класация по зададена трудност, когато е различна от 0. И също така каквото още ми хрумне в процес на работа. Има още работа, но краят му вече е реален и скорошен 🙂


World of Achievements Reborn

Преди много време (сякаш цяла вечност) бях споменал за един свой проект, който имаше за цел да събере на едно място всички мои постижения – Steam, PS3, и т.н. С времето обаче идеята беше забравена, погребана… заебана. Причината – чист и неподправен мързел. Тези дни обаче се активизирах отново и… да живее Steam и тяхната прекрасна XML система. Те ми позволиха да сваля всичката информация за игрите, както и за техните постижения (с това число и картинките) бързо и лесно, след като си написах кратък скрипт, които да обработи вече свалените файлове. Красота. Плейстейшън игрите ще почакат малко, но и техният ред ще дойде… Просто там ще е малко по-трудно и вероятно ще става на ръка (причината, която ме спираше като цяло, защото очаквах и за Steam игрите да правя същото, а те са малко над 200 вече :Д). Ето и резултатите до момента:

Първата картинка показва листинг на всички игри. Има както азбучно ограничаване, така и странициране, съвсем нормалните и задължителни неща. Също така средните 3 колони могат да се сортират във възходящ и низходящ ред.
Втората картинка показва визуализацията на избрана игра. Реших да включа само годината на издаване и жанровата спецификация (според съответната платформа), нужда от описания и други глупости няма. Включил съм поле за степен на сложност, когато се сетя да поставя такава, както и изписва коя по ред завършена на 100% игра е. Малко уточнение: 100% завършена се маркира игра, на която всички постижения са отключени и тя се номерира от мен ръчно. Ако в последствие, при някои промоции или игри (някои разработчици имат този навик), се добавят нови, то играта си запазва поредния номер на завършеност, просто няма да е на 100%.
Третата картинка показва как изглеждат отключени и заключени постижения. А “Mark” бутона служи за отбелязване на дадено постижение като отключено. Този бутон е достъпен само за мен, след като се логна 🙂
Четвъртата картинка е това, което се зарежда след натискане на гореспоменатия бутон. Вписва се timestamp-a, който може да се вземе от XML-а и се записва в базата. Страницата автоматично се опреснява и избраното постижение вече ще е в горната таблица.

Ами това е за момента. Решил съм да го завърша най-после този сайт, а сега вече дори има и изгледи за това да се случи :Д Скоро още…


[] in element name

Не мога да повярвам, че тези две квадратни скоби могат да окажат чак такова влияние на скрипта и да дадат нужния резултат. То е ясно, че [] се ползват за масиви, но… Кой да се досети :Д

(Това си го записвам по-скоро за мене, че да не забравя и да мога лесно да го намеря ако някой ден пак ми потрябва)

Идеята беше да се генерират динамично редове в таблица и всеки ред да е с две клетки – една за актьор и една за роля. След това всичко това да се записва в база данни, като всеки ред от таблицата е ред и в mysql таблицата. За един по опитен програмист това сигурно не е кой знае колко трудно, но за моя милост се оказа сравнително сложно начинание… и голямо предизвикателство, но… В крайна сметка резултатът беше постигнат.

Първо, за генериране на редовете (все пак не знам колко реда ще ни трябват, затова най-елегантно е да позволим на потребителя сам да си слага нов ред като му потрябва) най-лесно става с javascript…

Табличката с формата:


'.$anime_name[0].' New';
?>
Insert Person: Insert Character

tbody-то нарочно съм го сложил преди последния ред с бутона, за да може редовете да се генерират над него. Просто javascript-а слага нов ред в края на таблицата. Сигурно има и по-хубав начин, но не ми се занимаваше да го мисля.

Обработката на всяко едно поле:

if (isset($_POST['character'])) {
$char_post = $_POST['character'];
$character = '';
for($i=0; $i

По този начин имаме два масива, всеки един от които съдържа актьорите и персонажите, разделени със запетайка.

А това вече е самата обработка, която да генерира отделни заявки за всеки един актьор и персонажа му:

$pers_expl = explode(',', $person); //разбиваме масива
$count_pers = count($pers_expl); //броим елементите в масива
$chars_expl = explode(',', $character); //пак - разбиваме другия масив
$count_chars = count($chars_expl); //пак броим елементите

for ($i=0; $i < $count_pers; $i++) { //започваме for цикъл, който да се изпълнява толкова пъти, колкото са елементите на първия масив с актьорите $one_person = $pers_expl[$i]; //записваме всеки елемент в отделна променлива if (trim($one_person) != '') { //проверяваме дали полето не е празно, като trim функцията ще проверява дали полето не е само празни места $counted = count($one_person); while ($counted > 0) { //цикълът ще се изпълнява докато има актьори
$one_character = $chars_expl[$i]; //в цикъла за актьорите вмъкваме и персонажите, за да може на всеки актьор да съответства съответния му ред персонаж
$counted = count($one_character);
while ($counted > 0) {
if (trim($one_character) == '') { //проверка дали и полето за персонаж не е празно или само празни места
echo 'You need to insert a character';
exit;
}
$counted--; //намаляме цикъла с едно и пак го изпълняваме
}
$query = "INSERT INTO anicat_cast (cast_id, cast_anime_id, cast_person, cast_character)
VALUES (NULL, '".$anime_id."', '".trim($one_person)."', '".trim($one_character)."')"; //самата заявка
$counted--;
$writetodb = mysql_query($query); //пишем в базата
}
}
else {
echo 'You need to insert a person';
}
}

Накрая, като го гледах този код, осъзнах, че не е чак толкова труден, но все пак, докато се сетя за него, много нерви бяха... и страшно главоболие в края на вечерта :Д


Simple Reviews Category Hack

Понякога нещо толкова елементарно може да вземе здравето на човек. Вчера над четири часа се мъчех да постигна нещо, което за програмист с малко повече опит (от моя) би било вероятно лесна работа, но аз супер много се изнервих… Но… в крайна сметка постигнах желания резултат, което си беше и целта… Сега смятам да го опиша тук, че не се знае кога и как ще ми потрябва пак 🙂
Идеята: При листване на една категория, всяко ревю се появява във формата на таблица, която показва заглавието (или колкото заглавия сте определили – в моя случай това са ‘Изпълнител’, ‘Заглавие’ и ‘Година’) и оценката на албума, за който е писано. Таблицата е съвсем обикновена и се описва в темплейт файл, който се намира в:
/administrator/components/com_sipmle_reviews/addons/modules/Category_Module/templates
и се нарича: CategoryMain.html.php
В него е описано горното меню с буквите, филтрирането на таблицата, самата таблица с ревютата и футъра, който е под формата на пейджинг, бройка на показване и прочие ненужни глупости.
Това, което на мене лично ми взе здравето, беше описването на отделните елементи, които се взимат за всяко ревю. Всички нужни параметри, функции и класове за този модул (почти всички всъщност) се описват една директория по-нагоре във файла: Category_Module.php.
Целта на занятието е до второто заглавие на всяко ревю, което е името на албума в случая, да се повява малка (50х50) картинка на обложката.
Първо тази обложка трябва да бъде описана във втория файл, за да знае първия как и откъде да си я вземе. Параметрите за темплейта се намират във функцията: _DisplayReviews(), която започва от 277 ред. В случая е необходимо да се опише променлива за обложката, която, ако се разгледа функцията, ще се види, че липсва. Това може да се направи във foreach цикъла… да речем под 333ти ред. Добавя се следното:

$reviewDetails->imageURL = Review_Module_SHOW_IMAGE ? $row->imageURL: “”;

Вече имаме променлива imageURL, която може да се извика в първия файл…

Оригиналната таблица изглежда така:

function AddReview(&$r)
{
$css = $this->_Alt ? “reviewRowAlt” : “reviewRow”;
?>
<tr class=”<?php echo $css;?>”>
<td><?php echo $r->title1;?></td>
<td><?php echo $r->title2;?></td>
<td><?php echo $r->title3;?></td>
<td><?php echo $r->rating;?></td>
<td><?php echo $r->reviewer;?></td>
<td><?php echo $r->date;?></td>
</tr>
<?php
$this->_Alt = !$this->_Alt;
}

Просто на желаното място трябва да се добави още едно ехо, което да извиква $r->imageURL… проста работа, ама на мене ми отне над 4 часа и именно затова кефът от крайният резултат е много голям.
А самият резултат може да бъде видян тук:
http://gothic.bg/releases.html?category=2-Reviews


Beyond The Coil v.4

Просто трябваше да направя нещо, с което да покажа, че не съм забравил, че не съм се отказал и щом съм казал, че този сайт ще се върне отново, то това ще стане… Резултатът е главната страница в момента:

http://lacunacoil-bg.com

С малко играчка на фотошоп, днес заглавната страница е вече факт. Колко време ще остане с това “В процес на разработване” не е ясно, но поне се разработва :Д
Чувствам се добре след добре свършената работа днес. Време е за бира, много бира… Особено като е безплатна… Хубаво е да познаваш хора, които работят в Каменица :ДДД


Beyond The Coil Guestbook

И макар активността на децата във форума на лакуна койл да замря, аз не съм се отказал да съживя сайта и макар нещата да се развиват по-бавно от предвиденото, те се все пак се развиват 🙂
След малко играчка на фотошоп миналата седмица, лого, което ще краси повечето раздели на сайта, беше изградено и се получи сравнително добре (по мое скромно мнение :Д) – малко по-мрачно и по-семпло от предвиденото и никакво място за сравнение с предните, но какво от това :Д
И днес, след още малко играчка, беше завършена и книгата за гости. Всеки фен на групата може да се разпише в нея ако желае 🙂 Адресът е тук:
Beyond The Coil Guestbook

Засега толкова 🙂 Но бъдеще има и аз не съм се отказал… Особено сега, когато идеята вече малко или много за дизайна се избистри :Д


best ark server hosting