Automatyczne pobieranie fotek map
L0rdS^P0l4K
05.01.2011
Obrazki Map
Wdrażam dopiero skrypt GM 1.5 u siebie i od razu modyfikuję co znajdę.
Trochę irytujące wydało mi się pobieranie i wrzucanie ręcznie fotek z map skoro mamy je wszystkie lub praktycznie wszystkie na gametrackerze.
Ten sposób będzie zwłaszcza przydatny dla dużych sieci serwerów gdzie skompletowanie obrazków dla każdej użytej mapy na serwerach będzie problemem. Wiadomo że jakiś tam zestaw najczęściej granych map tzn ich obrazków będziemy mieli w swoim katalogu z fotkami - ze wszystkimi innymi przychodzi z pomocą gametracker.
UWAGA!! Proszę spojrzeć na POST nr #3 może okazać się że jest tam lepsze dla Ciebie rozwiązanie

Otwieramy plik:
.\templates\NAZWA_TWOJEGO_STYLU\view.tpl
Wyszukujemy kod:
<td class="_center" colspan="2"> <img style="border:1px #000000 solid;" src="images/maps/{$serv.mod}/{$serv.mappic}.jpg" alt="{$serv.map}" width="80%"> </td>
Podmieniamy go na:
<td class="_center" colspan="2"> {if $serv.mappic != "noimage"} <img style="border:1px #000000 solid;" src="images/maps/{$serv.mod}/{$serv.mappic}.jpg" alt="{$serv.map}" width="80%"> {else} <img style="border:1px #000000 solid;" src="http://image.www.gametracker.com/images/maps/160x120/cs/{$serv.map}.jpg" alt="{$serv.map}" width="80%"> {/if} </td>
Zapisujemy i wrzucamy na serwer.
Wynik możemy zobaczyć na [AMXBans GM 1.5] PoByku.com - Aktualny Status Serwera
Zwłaszcza przy mapkach które nie są standardowe.

Pozdrawiam, jeżeli ktoś ma pomysł jak ulepszyć kod, bo nie wiem czy nie będę mieć jakiś błędów związanych np. z serwerem offline, to od razu pisać

L0rd$^P0|4K
Jeżeli ktoś chciałby wykorzystać moje modyfikacje do czegokolwiek masowego

Edited by <a target="_blank" href="http://www.webpolak.pl">L0rd$^P0|4K - webpolak.pl</a>
Użytkownik L0rdS^P0l4K edytował ten post 28.03.2011 11:16
L0rdS^P0l4K
06.01.2011
Musimy edytować plik view.php Skrypt będzie automatycznie pobierał na nasz serwer fotki map, jeżeli nie mamy go u siebie na serwerze, oczywiście do razu obrazek będzie wyświetlany z naszego serwera.
Jest to o tyle lepsze, że wcześniej gdy nie mieliśmy obrazka, ten zawsze wyświetlał się z zew. serwera co zazwyczaj powoduje utratę cennego czasu, serwery gametrackera nie działają extra szybko

Jeżeli chcemy korzystać z tego sposobu, najlepiej będzie jeżeli cofniemy modyfikację którą podałem u góry.
Ta modyfikacja uwzględnia brak pliku na serwerze gametrackera, jeżeli nawet tam nie ma, to wyświetli się nam standardowy obrazek "braku fotki". [Wcześniejsza modyfikacja tego nie uwzględnia]
Zaczynamy!
Otwieramy plik z głównego katalogu amxbans
./view.phpWyszukujemy kod:
//check if mappic exists if(file_exists("images/maps/".$infos[mod]."/".$infos[map].".jpg")) { $mappic = $infos[map]; } else { $mappic = "noimage"; }Zamieniamy go na:
//check if mappic exists, if not download from gametracker if(file_exists("images/maps/".$infos[mod]."/".$infos[map].".jpg")) { $mappic = $infos[map]; } else { if ( @fopen("http://image.www.gametracker.com/images/maps/160x120/cs/".$infos[map].".jpg", "r") ) { copy('http://image.www.gametracker.com/images/maps/160x120/cs/'.$infos[map].'.jpg', './images/maps/cstrike/'.$infos[map].'.jpg'); $mappic = $infos[map]; } else { $mappic = "noimage"; } }
Pozdrawiam, L0rd$^P0|4K
oooups, nie wiedziałem

Jeżeli ktoś chciałby wykorzystać moje modyfikacje do czegokolwiek masowego

Edited by <a target="_blank" href="http://www.webpolak.pl">L0rd$^P0|4K - webpolak.pl</a>
Użytkownik L0rdS^P0l4K edytował ten post 03.03.2011 22:16
Upraszanie się o punkty reputacji jest niemile widziane a w konsekwencji może zostać nagrodzone ujemnymi punktami lub ostrzeżeniem.
JakubL
27.03.2011
Świetne to jest, na pewno się przyda. +
Sm0k3ro
04.11.2011
Warning: copy() [function.copy]: Unable to access http://image.www.gam...cs/de_dust2.jpg in /home/arenaffa/domains/arena-ffa.pl/public_html/amxbans/view.php on line 44
Da radę coś z tym zrobić ustawiłem chmody na images, maps, cstrike na 777 i cały czas to samo. Nie mam pojęcia co może być.
QuahodronN
18.11.2011
proszę o pomoc (zakładałem już temat ale nikt nie raczy nawet cos choćby i głupiego napisac

DjThomaseven
08.01.2012
a dodalem chmody na folder maps 777.
panowie juz wiem ;]
ustawic foldera maps oraz cstrike chmody 777
i dziala zadnych błedów.
MychaGDP
25.02.2012
Sry za odkop.
mis
16.03.2012
if(file_exists("images/maps/".$infos[mod]."/".$infos[map].".jpg")) { $mappic = $infos[map]; } else { if (@fopen("http://image.www.gametracker.com/images/maps/160x120/cs/".$infos[map].".jpg", "r")) { $ch = curl_init("http://image.www.gametracker.com/images/maps/160x120/cs/".$infos[map].".jpg"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); file_put_contents('./images/maps/cstrike/'.$infos[map].'.jpg',curl_exec($ch)); $mappic = $infos[map]; } else $mappic = "noimage"; }
Użytkownik mis edytował ten post 16.03.2012 22:59
Zabijaka Gryps
20.05.2013
Wiem że mega odkop, sory, ale sam miałem problem dziś z tym, że zastosowałem się do poradnika z postu 3 i nie działało (po wejściu w amxbans w dany serwer zamiast obrazka pisała tylko nazwa mapy czyli jako nazwa alternatywna obrazka). Dziwiłem się o co chodzi, pliczki normalnie ściągały się do dobrego folderu, w przeglądzie strony w przeglądarce adres do obrazka był dobry więc nie mogłem znaleźć rozwiązania czemu nie wyświetla mi w przeglądarce tego obrazka. Chodziło oczywiście o brak uprawnień do odczytu (chmody były standardowo ustawiane na 0660). Niby rozwiązaniem jest nadanie chmodów na folder maps i cstrike oraz na pliki, ale nie jest to skuteczne rozwiązanie, gdyż gdy wgramy jakąś nową mapę, lub włączymy na serwie mapę która nie była do tej pory używana (czyli nie była ściągana na amxbans) to jej obrazek po zapisie będzie bez uprawnień odczytu, więc co chwilę musielibyśmy nadawać te chmody. Najłatwiejszym posobem na rozwiązanie tego problemu jest dodanie automatycznego ustawiania chmodów, czyli podanię ulepszoną wersję metody z postu nr 3:
Otwieramy plik z głównego katalogu amxbans
./view.php
Wyszukujemy kod:
//check if mappic exists
if(file_exists("images/maps/".$infos[mod]."/".$infos[map].".jpg")) {
$mappic = $infos[map];
} else {
$mappic = "noimage";
}
Zamieniamy go na:
//check if mappic exists, if not download from gametracker
if(file_exists("images/maps/".$infos[mod]."/".$infos[map].".jpg")) {
$mappic = $infos[map];
} else {
if ( @fopen("http://image.www.gametracker.com/images/maps/160x120/cs/".$infos[map].".jpg", "r") ) {
copy('http://image.www.gametracker.com/images/maps/160x120/cs/.$infos%5Bmap%5D..jpg' './images/maps/cstrike/'.$infos[map].'.jpg');
$mappic = $infos[map];
$plik = "images/maps/".$infos[mod]."/".$infos[map].".jpg";
chmod($plik,0777);
} else {
$mappic = "noimage";
}
}
Po tym zabiegu obrazki będą się poprawnie pobierać i automatycznie ustawiać na odpowiednie prawa, przez co osiągniemy rezultat oczekiwany przy wejściu w ten temat.
Pozdrawiam!
NoSleep
29.04.2015
Wiem, ze Jeszcze większy odkop. do UP
polecenie
chmod($plik,0777);
Działa wyłącznie na systemy UNIXowe, więc jak ktoś ma na windowsie serwer postawiony będą błędy, polecam od z postu numer 3
GodOfPeople
16.01.2016
Postanowiłem ulepszyć kod użytkownika, bo gametracker dodaje swoje logo do grafiki z mapą Tutaj podaje przykład jak pobierać grafikę bez tego "G" na grafice
Edytujemy plik
view.phpw głównym katalogu.
Zamieniamy:
//check if mappic exists if(file_exists("images/maps/".$infos[mod]."/".$infos[map].".jpg")) { $mappic = $infos[map]; } else { $mappic = "noimage"; }
na:
//check if mappic exists, if not download from gametracker if(file_exists("images/maps/".$infos[mod]."/".$infos[map].".jpg")) { $mappic = $infos[map]; } else { if ( @fopen("http://static.cssetti.pl/MapThumbnails/".$infos[map].".png", "r") ) { copy('http://static.cssetti.pl/MapThumbnails/'.$infos[map].'.png', './images/maps/cstrike/'.$infos[map].'.jpg'); } else if ( @fopen("http://image.www.gametracker.com/images/maps/160x120/cs/".$infos[map].".jpg", "r") ) { copy('http://image.www.gametracker.com/images/maps/160x120/cs/'.$infos[map].'.jpg', './images/maps/cstrike/'.$infos[map].'.jpg'); $mappic = $infos[map]; } else { $mappic = "noimage"; } }