GRY-Online.pl --> Archiwum Forum

Tworzenie pluginu do FireFox'a - potrzebna pomoc :)

17.10.2008
20:24
[1]

Grzesiek [ www eRepublik com PL ]

Tworzenie pluginu do FireFox'a - potrzebna pomoc :)

Potrzebujemy z kumplami napisać plugin do FF.

Odnośnie samego silnika, to wiemy co i jak, jakoś to sklecimy.

Jednak problem jest bardzo banalny - ciężko jest nam znaleźć jakiś konkretnie zebrany zbiór informacji dot. tego, jak zacząć pisać plugin :)

Czy ktoś się już zabierał za robienie pluginów do FF 3? Albo 2 chociaż?


Na razie google'uję, ale bez konkretnych efektów :(

17.10.2008
20:29
[2]

Regis [ ]

Kiedy ja szukalem takich informacji, wpisanie w google 'firefox plugin tutorial' zalatwilo sprawe.

17.10.2008
23:25
[3]

Grzesiek [ www eRepublik com PL ]

Jedyne czego się dowiedziałem to to, że nie plugin, ale rozszerzenie chcemy stworzyć :P


@Regis

Jak widać teraz to jakoś nie wystarcza ...

Szukam i szukam, i za cholerę nie mogę znaleźć jakiegoś aktualnego sample'a albo porządnego tutorialu.

Te oficjalne tak napisane, żeby nic nie zrozumieć chyba :P

18.10.2008
11:10
[4]

Grzesiek [ www eRepublik com PL ]

^

18.10.2008
11:14
[5]

Didier z Rivii [ life 4 sound ]

ktoś tutaj kiedys pisał plugin do ukrywania postów na golu, jakbys znalazl jego watek to pewnie dotarlbys do żródła ;)

18.10.2008
11:16
[6]

maviozo [ Man with a movie camera ]

Tak, ale to też było na zasadzie dodatkowego skryptu do pluginu, a nie jako cały plugin:)
to było tutaj https://forumarchiwum.gry-online.pl/S043archiwum.asp?ID=8029220

Didier->wiesz, niby tak, ale Grzesiu nie napisał konkretnie do czego to ma służyć, a skrypt przetwarza tylko otwartą stronę wg schematu..

18.10.2008
11:18
[7]

pecet007 [ - ]

z tego co wiem do tworzenia roszerzeń wystarcza duet JavaScript + XUL, choć samemu nigdy się z tym nie bawiłem ;)

18.10.2008
11:19
[8]

Didier z Rivii [ life 4 sound ]

maviozo --> mysle ze do zastosowania jakie chce zrobic Grzesiek wystarczy taki sam sposob pisania skryptu do tego pluginu :) ale to juz jego decyzja :)

18.10.2008
11:19
[9]

Grzesiek [ www eRepublik com PL ]

Ale to też jest myśl, żeby zainstalować Greasemonkey i w JS to napisać.

Pytanie teraz - jak najlepiej podpiąć bazę danych, tak by ją wykorzystać w skrypcie?

Plik xml?
Plik txt?


@Edit:

Didier - to do quizu z eRepublik :)

18.10.2008
11:21
[10]

pecet007 [ - ]

grzesiek - json

18.10.2008
11:21
[11]

maviozo [ Man with a movie camera ]

To ma pomagać rozwiązywać quizy czy co?:)
Podasz przykład takiego quizu?

[12] Rzuć linka do takiego przykładowego quizu?:)

18.10.2008
11:23
[12]

Grzesiek [ www eRepublik com PL ]

Dokładnie tak :)


Mamy Quiz do rozwiązywania na eRepublik.

Wyświetla się pytanie i 4 możliwe odpowiedzi.
Mamy już bazę z pytaniami i prawidłowymi odpowiedziami.

Myślałem, żeby zaznaczyć część pytania i wtedy skrypt szuka pytania, które zaczyna się mniej więcej tym zaznaczeniem i wyrzuca/podświetla odpowiedź.


@pecet

Dzięki !!!

18.10.2008
11:39
[13]

Grzesiek [ www eRepublik com PL ]

Quiz wizualnie wygląda tak:

Natomiast kod:

<html xmlns="



<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="/css/global.css">
<link rel="stylesheet" type="text/css" href="/css/trivia.css">
<script type="text/javascript" charset="utf-8" src="/js/jquery-1.2.6.min.js"></script>
<script type="text/javascript" charset="utf-8" src="/js/jquery.countdown/jquery.countdown.min.js"></script>
<script type="text/javascript" src="/js/prototype.js"></script>

</head><body>
<!-- begin: ob -->
<div id="trivia" class="trivia-start" style="width: 640px; height: 480px; display: none;">
<div class="goright"><a href="/en/do_work?_tresh=2df46884cb09d378f18d4b74d1ffe2db&amp;_rfh=c6ba63d2c52d1c8eaa4284bf220e7e5a" onclick="this.style.display = 'none';" class="btn-skip btn-skip_gray" title="skip">Skip</a></div>
<div style="padding-top: 190px; width: 100%; float: left;"><a href="#" class="btn-trivia-start" title="">Start</a></div>
</div>

<div id="trivia" class="trivia-questions" style="overflow: hidden; width: 640px; height: 480px;">
<div class="holder"><div class="goright"><a href="/en/do_work?_tresh=2df46884cb09d378f18d4b74d1ffe2db&amp;_rfh=c6ba63d2c52d1c8eaa4284bf220e7e5a" onclick="this.style.display = 'none';" class="btn-skip" title="skip">Skip</a></div></div>

<div class="trivia-container" style="padding-left: 30px; padding-right: 0pt;"><div class="show-questions">
<ul class="questions largepadded">
<li id="0qmarker" class="on">1</li>
<li id="1qmarker">2</li>
<li id="2qmarker">3</li>
<li id="3qmarker">4</li>
<li id="4qmarker">5</li>

</ul>
<div id="trivia_countdown" class="question-bar-end largepadded hasCountdown"><div class="countdown_row countdown_show1"><div class="countdown_section"><span class="countdown_amount">14</span></div></div></div>
</div><div id="trivia_question_container" style="float: left; width: 100%;">
<p id="trivia_question" class="special largepadded">When the percentage change in quantity demanded is greater than the percentage change in price, the demand for the good is _.</p>
<ul class="answer-blocks">
<li><a id="0trivia_answer" href="#" title=""><span><span>perfectly inelastic</span></span></a></li>
<li><a id="1trivia_answer" href="#" title="" class="last"><span><span>inelastic</span></span></a></li>

<li><a id="2trivia_answer" href="#" title=""><span><span>elastic</span></span></a></li>
<li><a id="3trivia_answer" href="#" title="" class="last"><span><span>unit elastic</span></span></a></li>
</ul>
</div></div>
</div>
<!-- end: ob -->

<script type="text/javascript" charset="utf-8">
$j(document).ready(function() ‹
with ($j("a.btn-trivia-start")) ‹
html("Start");
click(function() ‹
$j("div.trivia-start").hide();
$j("div.trivia-questions").show();
nextQuestion();
›);


$j("ul.answer-blocks li a").click(function() ‹
nextQuestion( parseInt($j(this).attr("id")) );
return false;
›);
›);

function nextQuestion(answer) ‹
$j("div#trivia_question_container").hide();
$j("div#trivia_countdown").countdown('destroy');

if (typeof(answer) != "undefined") ‹
trivia_answer_end_time = new Date();
trivia_answer_time_diff = trivia_answer_end_time - trivia_answer_start_time;
trivia_answer_time_diff = Math.floor(trivia_answer_time_diff / 1000);
if (trivia_answer_time_diff >= 0 && trivia_answer_time_diff <= 20) ‹
if (trivia_session[trivia_index-1]) ‹
trivia_session[trivia_index-1]["answered_in"] = trivia_answer_time_diff;
trivia_session[trivia_index-1]["answer"] = answer;




if (trivia_session[trivia_index]) ‹
$j("p#trivia_question").html(trivia_session[trivia_index]["question"]);
$j.each(trivia_session[trivia_index]["answers"], function(idx, val) ‹
$j("a#"+idx+"trivia_answer").html("<span><span>"+val+"</span></span>");
›);

if (trivia_index > 0 && trivia_index < 5) ‹
$j("li#"+(trivia_index-1)+"qmarker").attr("class", "off");
$j("li#"+trivia_index+"qmarker").attr("class", "on");

trivia_index++;

$j("div#trivia_question_container").fadeIn("fast");
$j("div#trivia_question_container").queue(function() ‹
var answer_time = new Date();
trivia_answer_start_time = new Date();
answer_time.setSeconds(answer_time.getSeconds() + 20);
$j("div#trivia_countdown").countdown('destroy');
$j("div#trivia_countdown").countdown(‹until: answer_time, format: "S", onExpiry: nextQuestion›);
$j(this).dequeue();
›);
› else ‹
var answer_form = '<form id="results_form" method="post" action="/en/trivia-results"><input type="hidden" id="_token" name="_token" value="da6d1dd1fb91d436363a37f1e70177a5" />' +
'<input type="hidden" name="ts" value="722561f64c917c8b8c3510c1d9709f78" />' +
'<input type="hidden" name="tt" value="work" />' +
'<input type="hidden" name="pbu" value="JTJGZW4lMkZkb193b3Jr" />' +
'<input type="hidden" name="rfh" value="c6ba63d2c52d1c8eaa4284bf220e7e5a" />';
jQuery.each(trivia_session, function(idx, val) ‹
if (trivia_session[idx]) ‹
answer_form += '<input type="hidden" name="answers['+idx+']" value="'+(typeof(trivia_session[idx]["answer"]) != "undefined" ? trivia_session[idx]["answer"]:"")+'" />';
answer_form += '<input type="hidden" name="answers_in['+idx+']" value="'+(typeof(trivia_session[idx]["answered_in"]) != "undefined" ? trivia_session[idx]["answered_in"]:"")+'" />';

›);
answer_form += '</form>';
$j("div#trivia_question_container").append(answer_form);
$j("form#results_form").submit();



var trivia_index = 0;
var trivia_answer_start_time = NaN;
var trivia_answer_end_time = NaN;
var trivia_session = ([

"question": "When the percentage change in quantity demanded is greater than the percentage change in price, the demand for the good is _.",
"answers": [
"perfectly inelastic",
"inelastic",
"elastic",
"unit elastic" ]
›,

"question": "What American philosopher wrote “A Theory of Justice”?",
"answers": [
"David Hume",
"John Dewey",
"John Rawls",
"William James" ]
›,

"question": "A copyright creates a monopoly by restricting _.",
"answers": [
"demand for the product",
"entry into the market",
"the number of creators and inventors",
"the prices that can be charged" ]
›,

"question": "Who was the longest serving ruler of Italy out of these four?",
"answers": [
"Benito Mussolini",
"Ivanoe Bonomi",
"Francesco Nitti",
"Giovanni Giolitti" ]
›,

"question": "Who in the 1800's said, 'Democracy means simply the bludgeoning of the people by the people for the people.'?",
"answers": [
"Cecil Rhodes",
"Vladimir Lenin",
"Oscar Wilde",
"Henry James" ]
›,
]);
</script>

</body></html>


Tworzenie pluginu do FireFox'a - potrzebna pomoc :) - Grzesiek
18.10.2008
12:28
[14]

Grzesiek [ www eRepublik com PL ]

Czy metodą evaluate:

document.evaluate


mogę wydobyć te pytania, które są zawarte w skrypcie JS kodu strony?

18.10.2008
12:31
smile
[15]

maviozo [ Man with a movie camera ]

Faktycznie zajrzyj do tego skryptu napisanego przez peceta - tam jest właśnie document.evaluate wykorzystane. I do dziś mi nie odpowiedziałeś na jakim sprzęcie pracujesz, tzn jakiej kamerze:)

18.10.2008
12:39
[16]

Grzesiek [ www eRepublik com PL ]

Ah faktycznie zapomniałem :)

Aż wstyd mówić - Panas NV-GS70.

Ty pewnie masz bardziej profesjonalny sprzęt :) Też dalej nie wiem jaki :P



Edit:

No doszedłem na razie do tego:
var x = document.evaluate("/html/body/form/div[@id='trivia']/script", document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);


I nie wiem jak dobrać się do zmiennej
trivia_session

18.10.2008
12:48
[17]

Grzesiek [ www eRepublik com PL ]

Okej, muszę się dostać do tego:

<p id="trivia_question" class="special largepadded">When the percentage change in quantity demanded is greater than the percentage change in price, the demand for the good is _.</p>


Czy to jest okej?
var x = document.evaluate("/html/body/form/p[@id='trivia_question']", document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);


Edit:
Muszę trochę poczytać o tym XPath :P


Edit 2:

XPather pomoga :)

18.10.2008
13:22
[18]

maviozo [ Man with a movie camera ]

Napisałem Ci dawno, że Sony FX1:)

Myślę, że dobieranie się do <p ..> nic Ci nie da, bo JS zmieni zawartość tego pytania i pola odpowiedzi dynamicznie, a kod pozostanie taki sam..chociaż nieco gubię się w tym kodzie..mimo to uważam, że byłoby głupie podać wszystkie pięć pytań w kodzie, skoro "next" miałby generować się i tak od nowa.

Dlatego ja rzuciłbym wszelkie światło podejrzeń na

"question": "When(...)"
"answers: [
(...)
]›,‹

18.10.2008
13:23
[19]

Grzesiek [ www eRepublik com PL ]

Do pytania z id="trivia_question" dostałem się bez problemu, ale wolałbym dostać się do tej zmiennej w skrypcie strony.

Da radę?


Edit:

Ale zapomniałem jaki tytuł miał wątek, gdzie się o to pytałem :P

Dobrze myślisz - dobieranie z <p> nic nie daje :(

18.10.2008
14:41
[20]

Grzesiek [ www eRepublik com PL ]

No dobra.

Niech mi ktoś powie tylko, czy mogę się dostać do tej zmiennej trivia_session z poziomu swojego kodu JS.

Zaznaczam, że zmienna ta jest w kodzie JS strony.

18.10.2008
14:47
[21]

maviozo [ Man with a movie camera ]

Gdybyś pytał jak zrobić to w php to odpowiedź miałbyś od razu:)

musisz poszukać funkcji porównującej tekst do wzoru. Ja na logikę wziąłbym to tak.

Utworzył tablicę pytania
za pomocą funkcji wyszukał fragmenty strony od ‹"question": do ]›
następnie w każdej z tablic oddzielił wszystkie zaczynące się od " i na " kończące, dałoby Ci to pięć wyników - pierwsze to pytanie, pozostałe odpowiedzi.
Efekt byłby tablica[3][3]="Ivanoe Bonomi"

18.10.2008
15:10
[22]

Grzesiek [ www eRepublik com PL ]

Okej, zmienną dostaję w postaci łańcucha dzięki:

var x = document.evaluate("/html/body/script", document, null, XPathResult.ANY_TYPE, null);

var thisHeading = x.iterateNext();
var alertText = "";

while (thisHeading) ‹
alertText = thisHeading.textContent
alertText = alertText.slice(alertText.indexOf("var trivia_session = (["));
thisHeading = x.iterateNext();



alert(alertText);


Teraz pozostaje to, co mówisz - do tablicy pytania, a odpowiedzi odrzucić :)

18.10.2008
15:17
smile
[23]

maviozo [ Man with a movie camera ]

ahaaa, Tobie tylko na pytaniach zależało:)

18.10.2008
15:19
[24]

Grzesiek [ www eRepublik com PL ]

Si :)


Rzuciłbyś mi wyrażeniem regularnym, które zebrałoby mi tekst między

"question": "TEN TEKST",
"answers":

Czyli ("question": ")Pytanko(","answers":)?

Piwo postawię przy okazji :)

23.10.2008
23:48
[25]

Grzesiek [ www eRepublik com PL ]

Mógłbym jeszcze raz prosić o pomoc?


Da radę to jakoś odszyfrować?

<script type="text/javascript">document.write("<fpevcg glcr=\"grkg/wninfpevcg\" punefrg=\"hgs-8\" fep=\"/wf/wdhrel.pbhagqbja/wdhrel.pbhagqbja.zva.wf\"></fpevcg>".replace(/[a-zA-Z]/g, function(c)‹return String.fromCharCode((c<="Z"?90:122)>=(c=c.charCodeAt(0)+13)?c:c-26);›))</script>

23.10.2008
23:50
smile
[26]

maviozo [ Man with a movie camera ]

Osz ty w mordę, komuś się chciało utrudnić..
Zobaczę czy coś się uda wymyślić.
Mógłbyś wkleić to na dpaste.com?

23.10.2008
23:53
smile
[27]

Grzesiek [ www eRepublik com PL ]

Siur :)



Chciałbym tylko wiedzieć, czy jest sposób, by jakoś to odszyfrować?

Z tego co widzę, to zaszyfrowali ścieżkę do skryptu JS z funkcją prepare_form.


Takie głupie pytanie chyba - czy to jest litera za literę szyfr?

23.10.2008
23:58
[28]

maviozo [ Man with a movie camera ]

Chcesz poznać prawdziwe wartości?
To bardzo proste:)

zamieniasz
document.write("
na
zmienna="
i usuwasz ostatni okrągły nawias z końca linijki.
Efekt-------->
A potem przepisać.
To za komentarzem // to oryginalna linijka.

I to wcale nie jest funkcją prepare_form, tylko właśnie tymi dwoma które pogrubiłeś w poście [25].


Tworzenie pluginu do FireFox'a - potrzebna pomoc :) - maviozo
24.10.2008
00:05
smile
[29]

Grzesiek [ www eRepublik com PL ]

Jesteś wielki maviozo :)

To już drugi browar masz u mnie :)

© 2000-2025 GRY-OnLine S.A.