←  Modyfikacja AMXBans

AMXX.pl: Support AMX Mod X i SourceMod

»

GmAMXBans
Automatyczne pobieranie fotek map

  • +
  • -
L0rdS^P0l4K - zdjęcie L0rdS^P0l4K 05.01.2011

Temat ten będzie korespondował z:
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. :-) Rozpoznacie je po literce G w prawym dolnym rogu.

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 :-) Zasymilować ze swoim dodatkiem później opublikowanym szerszej ilości użytkowników, proszę o dodanie do stopki:
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
Odpowiedz

  • +
  • -
Szyfrant - zdjęcie Szyfrant 05.01.2011

Podklejam +
Odpowiedz

  • +
  • -
L0rdS^P0l4K - zdjęcie L0rdS^P0l4K 06.01.2011

A tutaj opcja dla bardziej wymagających.
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.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[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 :-) Zasymilować ze swoim dodatkiem później opublikowanym szerszej ilości użytkowników, proszę o dodanie do stopki:
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.
Odpowiedz

JakubL - zdjęcie JakubL 27.03.2011

Dodaj 2 sposób do 1 postu bo ja nie zauważyłem i najpierw 1 zrobiłem, a potem usunąć itd.

Świetne to jest, na pewno się przyda. +
Odpowiedz

  • +
  • -
Szyfrant - zdjęcie Szyfrant 03.05.2011

Należy również nadać CHMODY 777 na folder maps :)
Odpowiedz

  • +
  • -
Sm0k3ro - zdjęcie Sm0k3ro 04.11.2011

Na jednym hostingu było ok, zmieniłem na inny i wywala błąd

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ć.
Odpowiedz

  • +
  • -
QuahodronN - zdjęcie QuahodronN 18.11.2011

mam ten sam problem co UP
proszę o pomoc (zakładałem już temat ale nikt nie raczy nawet cos choćby i głupiego napisac :()
Odpowiedz

DjThomaseven - zdjęcie DjThomaseven 08.01.2012

mam ten sam blad.
a dodalem chmody na folder maps 777.

panowie juz wiem ;]

ustawic foldera maps oraz cstrike chmody 777
i dziala zadnych błedów.
Odpowiedz

  • +
  • -
QuahodronN - zdjęcie QuahodronN 08.01.2012

na serwie mam ustawic chmody na cstrike? czy jak bo nie czaje :P
Odpowiedz

  • +
  • -
MychaGDP - zdjęcie MychaGDP 25.02.2012

@up w folderze maps na stronie jest folder cstrike to mu też nadaj.
Sry za odkop.
Odpowiedz

  • +
  • -
mis - zdjęcie mis 16.03.2012

To jak już odkopałeś, to podam ciut inne rozwiązanie, według mnie trochę wydajeniejsze:

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
Odpowiedz

  • +
  • -
Zabijaka Gryps - zdjęcie 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!

Odpowiedz

  • +
  • -
NoSleep - zdjęcie 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

 

Odpowiedz

  • +
  • -
GodOfPeople - zdjęcie 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.php
w 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";
				}
			}
Odpowiedz