←  Tutoriale

AMXX.pl: Support AMX Mod X i SourceMod

»

Wykorzystanie JavaScript w motd na steam –...

  • +
  • -
DarkGL's Photo DarkGL 04.09.2014

http://darkgl.amxx.pl/index.php/2014/09/04/wykorzystanie-javascript-w-motd-na-steam/

W jednej z aktualizacji CS 1.6 zmienione przeglądarkę używana w okienku motd ( widżet Internet Explorera ) na dużo nowocześniejszą.
Obsługującą JavaScript , daje nam to kilka ciekawych możliwości.

Sama przeglądarka posługuje się takim user agentem

Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; Valve Half-Life/0; ) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/18.0.989.0 Safari/535.11
10_screenshots_2014-09-03_00010

User agent może być inny na innych komputerach.

Jednak widać ze gra korzysta tutaj z najnowszej wersji Chrome i Silnika WebKit co daje nam dostęp do JS i HTML5 ;).

Używając alert z javascript możemy uzyskać daw ciekawe efekty
Kiedy alert jest wyświetlany wraz z jakąś treścią np.
alert( 'Napis' )
10_screenshots_2014-09-03_00003

jednak użycie alert z pustym ciągiem znaków daje jeszcze ciekawszy efekt

alert( '' )
Untitled1231231312

Warto zauważyć że jest to osobne okno nie połączone z oknem cs'a które łapie focus i staje się aktywnym aktualnie oknem , w przeciwieństwie do alert z ciągiem znaków gdzie okno alertu jest wbudowane w gui gry.

I jeszcze confirm
confirm( 'test' )
10_screenshots_2014-09-03_00004

prompt nie udało mi się uruchomić

http://www.w3schools.com/js/js_popup.asp

warto zauważyć że wykorzystując alert możemy zmusić gracza do nie zamykania okna motd , po prostu trzeba wyświetlać ciągle alert za każdym razem kiedy gracz go zamknie , kiedy alert jest wyświetlany nie można zamknąć okna motd przyciskiem OK dopóki box alerta jest widoczny.

HTML5 oraz JavaScript posiada w sobie możliwości obsługi plików ( odczytywanie itp. ) tak zwany file api ( http://www.html5rocks.com/en/tutorials/file/dndfiles/ ).

Niestety mimo że JavaScript posiada w sobie obiekty

  • window.File

  • window.FileReader

  • window.FileList

  • window.Blob



To dodanie takiego kodu html


powoduje taki efekt

10_screenshots_2014-09-03_00011

dlatego nie możemy wybrać pliku do wczytania , warto zauważyć ze przy próbie wybrania pliku CS zaczynał dziwnie się zachowywać i musiałem restartować całego steam'a.

JavaScript pozwala na otwieranie nowy okien/kart poprzez window.open( http://www.w3schools.com/jsref/met_win_open.asp ) i to akurat działa co daje ciekawe efekty ;).

Kilka testowanych przeze mnie ustawień ( komentarze są specjalnie )
//var printOut = window.open("http://www.google.com","_blank", 'height=200, width=200');
			
//var printOut = window.open("http&://www.google.com","_parent", 'height=200, width=200');
			
//var printOut = window.open("http&://www.google.com","_self", 'height=200, width=200');
			
//var printOut = window.open("http&://www.google.com","_top", 'height=200, width=200');
			
//var printOut = window.open("http&:///www.google.com","asd", 'height=200, width=200');
			
//var printOut = window.open("http&://www.google.com","_blank", 'fullscreen=1');
Niestety przesuwanie itp. nie działa
printOut.moveTo(500, 100);
printOut.focus();
_blank daje ciekawy efekt w postaci nowego okna
10_screenshots_2014-09-03_00008
motd można wtedy zamknąć a okno zostaje
10_screenshots_2014-09-03_00006

10_screenshots_2014-09-03_00005

_parent , _self , _top i własna nazwa odswieża po prostu strone w standardowym miejscu w motd

10_screenshots_2014-09-03_00007

fullscreen=1
nie działało ale już ustawianie height i width tak

Wykorzystując JavaScript możemy też odczytać gdzie na dyskuj znajduje się jego folder gry poprzez
document.location
np.
2014-09-04_00001

Możemy też wysłać tą wartość do np. skryptu php przez otworzenie nowej karty sposobem wyżej( window.open ) z odpowiednimi parametrami GET.

Lub możemy użyć
<meta http-equiv="refresh" content="0;url=http://google.pl?test=1/">
lub iframe



Dzięki dostępowi JavaScript możemy też ładować JQuery
np.
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>


Niestety zapytania ajax nie działają.
Plugin którego używałem do testowania był bardzo prosty.
#include 
#include 

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "DarkGL"


public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_clcmd( "say /testMotd" , "testMotd" );
}

public testMotd( id ){
	show_motd( id , "testMotdJavaScript.txt" , "Testowy motd" );
}

Wszystkie ustawienia pokazane w tym wpisie mogą dać inne efekty na innych komputerach.
Quote

  • +
  • -
GwynBleidD's Photo GwynBleidD 04.09.2014

Dodam jeszcze jedną rzecz, silnik otwierający MOTD jest zaciągany bezpośrednio ze steama, czyli dokładnie na tym samym silniku otwierany jest sklep steam itp. Dlatego musiałeś zamknąć całego steama, aby przestał się "dziwnie" zachowywać (bo biblioteka była cały czas załadowana). A to jest potencjalnym exploitem ;)
Quote

  • +
  • -
DarkGL's Photo DarkGL 04.09.2014

Troche to wszystko działa w dziwny sposób nie do końca logiczny niektóre rzeczy są zablokowane niektóre nie a jak już są zablokowane to nie wpełni
Quote

  • +
  • -
tytusek's Photo tytusek 01.10.2014

napisze ktoś mi cały kod html żeby tylko go wkleić do swojego pliku txt ?

 

chodzi mi o to 

10_screenshots_2014-09-03_00008-300x225.jpg

Quote

  • +
  • -
DarkGL's Photo DarkGL 02.10.2014

var printOut = window.open("http://www.google.com","_blank", 'height=200, width=200');

wystarczy to w tagi script wrzucic

Quote