T?umaczenie poradnika dotycz?cego pisania skrypt?w w NG

Michalekk

Senior User
Zarejestrowany
Dołączył
Sierpień 3, 2008
Posty
752
Liczba reakcji
159
Wiek
32
T?umaczenie ze strony Scripting Guide - NGSoft Forums

* 1. Pisanie wiadomo?ci
* 2. D?wi?ki i alarmy
* 3. Robienie ScreenShot?w
* 4. Wylogowywanie

1. Pisanie wiadomo?ci


W tym dziale nauczysz si? :

* Wypowiadania s??w przez posta?.


Skrypty jakie zrobisz :

* Leczenie zatrucia przy pomocy czaru exana pox.
* U?ywanie haste kiedy czar jest nieaktywny.
* Leczenie je?li hp spadnie poni?ej danej warto?ci.


Zaczynam poradnik tak jak ka?dy kurs programowania.... Pierwsz? rzecz? jakiej si? nauczysz b?dzie m?wienie przez posta? s??w "Hello World". Oto skrypt :
PHP:
begin
   self.say('Hello world');
end;
Wypr?buj ten skrypt. Twoja posta? raz powie "Hello World". Je?li chcesz aby posta? powtarza?a w k??ko dodaj "while not terminated do" przed begin. Skrypt teraz wygl?da tak :
PHP:
while not terminated do
begin
   self.say('Hello World');
end;
Wypr?buj ten skrypt. Posta? b?dzie spamowa?. Je?li chcesz doda? odst?py czasowe dodaj do skryptu "sleep(2000);". Skrypt teraz wygl?da tak, a twoja posta? nie zostanie wyciszona :
PHP:
while not terminated do
begin
   self.say('Hello World');
sleep(2000);
end;
Teraz wiesz co zrobi? aby posta? pisa?a, spr?bujmy napisa? troch? bardziej przydatny skrypt. Nie posta? rzuca "exana pox" kiedy jest zatruta. Zacznie tak samo jak w naszym pierwszym skrypcie zmieniaj?c "Hello World" na "exana pox":
PHP:
begin
   self.say('exana pox');
end;
Chcemy aby skrypt sprawdza? czy jeste?my zatruci, musimy doda? if "self.poisoned then" co oznacza je?li (if) posta? jest zatruta wtedy (then) wykona pozosta?? cz??? kodu.
PHP:
begin
if self.poisoned then
   self.say('exana pox');
end;
Chcemy aby skrypt dzia?am nie tylko raz, tylko w k??ko, wi?c dodajemy na pocz?tku "while not terminated do".
PHP:
while not terminated do 
begin
if self.poisoned then
   self.say('exana pox');
end;
Chcemy te? aby skrypt sprawdza?, czy mamy wymagane 30 many do u?ycia czaru. Dodajemy "if self.mana >= 30 then" co oznacza je?li (if) posta? ma ponad 30 many wtedy (then) wykona pozosta?? cz??? kodu.
PHP:
while not terminated do 
begin
if self.poisoned then
if self.mana >= 30 then
   self.say('exana pox');
end;
Dodajemy "Sleep(100);" ?eby nie by?o lag?w. Musimy doda? jeszcze "Update the world" :
PHP:
while not terminated do 
begin
UpdateWorld;
if self.poisoned then
if self.mana >= 30 then
   self.say('exana pox');
Sleep(100);
end;
Mamy dzia?aj?cy skrypt na leczenie zatrucia.

Skrypt kt?ry napisa?e? (albo skopiowa?e?) pos?u?y nam jako wz?r do naszego nast?pnego skryptu. Oto wskaz?wki jak zmieni? nasz skrypt na nowy, kt?ry
b?dzie automatycznie rzuca? "utani hur":
PHP:
while not terminated do 
begin
UpdateWorld;
if self.poisoned then
if self.mana >= 30 then
   self.say('exana pox');
Sleep(100);
end;
Zmie? "if self.poisoned then" na "if not self.hasting then" co oznacza je?li (if) posta? nie ma haste (then) wykona pozosta?? cz??? kodu.
PHP:
while not terminated do 
begin
UpdateWorld;
if not self.hasting then
if self.mana >= 30 then
   self.say('exana pox');
Sleep(100);
end;
Zmie? ilo?? wymaganej many z 30 na 60.:
PHP:
while not terminated do 
begin
UpdateWorld;
if not self.hasting then
if self.mana >= 60 then
   self.say('exana pox');
Sleep(100);
end;
Zmie? "exana pox" na "utani hur".
PHP:
while not terminated do 
begin
UpdateWorld;
if not self.hasting then
if self.mana >= 60 then
   self.say('utani hur');
Sleep(100);
end;
Oto gotowy skrypt na automatyczne rzucanie haste.

Tym razem zrobimy co? trudniejszego a mianowicie skrypt na leczenie. U?yjemy skryptu na exan? pox jako wzoru. Tym razem u?yjemy sta?ych. Sta?e s? bardzo przydatne kiedy nie chcemy u?ywa? tej samej liczby kilkukrotnie wi?c nie musimy zmienia? wszystkich liczb tylko warto?? sta?ej.
PHP:
while not terminated do 
begin
UpdateWorld;
if self.poisoned then
if self.mana >= 30 then
   self.say('exana pox');
Sleep(100);
end;
Robimy sta?e z liczbami wymaganej many, minimalnej ilo?ci hp oraz samego czaru.
PHP:
Const
    MinHealth = 300
    ManaNeeded = 20
    HealingSpell = 'exura'

while not terminated do 
begin
UpdateWorld;
if self.poisoned then
if self.mana >= 30 then
   self.say('exana pox');
Sleep(100);
end;
Zamie? "if self.poisoned then" na "if self.health is <= MinHealth then" co oznacza je?li (if) posta? ma tyle samo lub wi?cej hp ni? HealthNeeded wtedy (then) wykona pozosta?? cz??? kodu.
PHP:
Const
    MinHealth = 300
    ManaNeeded = 20
    HealingSpell = 'exura'

while not terminated do 
begin
UpdateWorld;
if self.health <= MinHealth then
if self.mana >= 30 then
   self.say('exana pox');
Sleep(100);
end;
Zamie? "if self.mana" >= 30 then" na "if self.mana >= ManaNeeded" co oznacza je?li (if) posta? ma tyle samo lub wi?cej hp ni? ManaNeeded wtedy (then) wykona pozosta?? cz??? kodu.
PHP:
Const
    MinHealth = 300
    ManaNeeded = 20
    HealingSpell = 'exura'

while not terminated do 
begin
UpdateWorld;
if self.health <= MinHealth then
if self.mana >= ManaNeeded then
   self.say('exana pox');
Sleep(100);
end;
Change ('exana pox') to (HealingSpell) Nie musisz u?ywa? ' znak?w obok HealingSpell poniwa? s? obok exury.
PHP:
Const
    MinHealth = 300
    ManaNeeded = 20
    HealingSpell = 'exura'

while not terminated do 
begin
UpdateWorld;
if self.health <= MinHealth then
if self.mana >= ManaNeeded then
   self.say(HealingSpell);
Sleep(100);
end;

2. D?wi?ki i alarmy

W tym dziale nauczysz si? :

* Odtwarzanie d?wi?k?w i alarm?w.


Skrypty jakie zrobisz :

* Alarm kiedy hp spadnie poni?ej danej liczby.
* Alarm kiedy mana spadnie poni?ej danej liczby.


Wiesz ju? jak pisa? wiadomo?ci postaci?, nauczmy si? teraz jak pisa? skrypty otwarzaj?ce d?wi?ki.
PHP:
begin
PlaySound('C:\Windows\Media\notify.wav');
end;
Wypr?buj ten skrypt. Powiniene? ju? wiedzie?, ?e ten skrypt wykona si? tylko raz. ?eby odtwarza? ten d?wi?k w k??ko trzeba doda? "while not terminated do".
PHP:
while not terminated do
begin
PlaySound('C:\Windows\Media\notify.wav');
end;
Ten skrypt b?dzie otwarza? d?wi?k do momentu w kt?rym zatrzymasz skrypt. Teraz napiszemy skrypt kt?ry zaalarmuje nas kiedy hp spadnie poni?ej 150. Cofniemy si? do naszego poprzedniego skryptu.
PHP:
begin
PlaySound('C:\Windows\Media\notify.wav');
end;
Dodajemy zmienn? "HpToAlert".
PHP:
Const
HpToAlert = 150

begin
PlaySound('C:\Windows\Media\notify.wav');
end;
Chcemy ?eby skrypt sam sprawdza? nasze hp wi?c dodajemy "while not terminated do".
PHP:
Const
HpToAlert = 150

while not terminated do
begin
PlaySound('C:\Windows\Media\notify.wav');
end;
Musimy stworzy? warunek if/then. Musimy doda? "if self.health <= HpToAlert then". Pewnie ju? wiesz, ?e (if) masz mniej lub tyle samo hp co sta?a "HpToAlert" (then) wykona pozosta?? cz??? kodu.
PHP:
Const
HpToAlert = 150

while not terminated do
begin
if self.health <= HpToAlert then
PlaySound('C:\Windows\Media\notify.wav');
end;
Potrzebujemy "updateworld" aby uzyska? aktualne warto?ci. R?wnie? dodaj Sleep(100); na ko?cu ?eby nie robi? lag?w.
PHP:
Const
HpToAlert = 150

while not terminated do
begin
UpdateWorld;
if self.health <= HpToAlert then
PlaySound('C:\Windows\Media\notify.wav');
Sleep(100);
end;
Teraz masz skrypt kt?ry alarmuje kiedy masz mniej ni? 150 hp. Je?li chcesz aby skrypt alarmowa? o stanie many wystarczy zmieni? "self.health" na "self.mana".
PHP:
Const
HpToAlert = 150

while not terminated do
begin
UpdateWorld;
if self.mana <= HpToAlert then
PlaySound('C:\Windows\Media\notify.wav');
Sleep(100);
end;
Napisa?e? (lub skopiowa?e?) skrypt na alarmowanie, gdy mana spadnie poni?ej 150.
3. Robienie ScreenShot?w

W tym dziale nauczysz si? :

* Robienia screenshot?w przy pomocy skryptu.


Skrypty jakie zrobisz :

* Robienie screenshota w momencie ?mierci.


Robienie SS?w jest bardzo proste. Trudniejsz? rzecz? jest wybranie miejsca do zapisania obrazu. Za nasz? lokalizacj? przyjmiemy sobie "C:\Program Files\TibiaBot NG". Zaczniemy od prostego skryptu robienia screenshota.
PHP:
begin
ScreenShot(Path);
end;
Musimy zmieni? Patch na "C:\Program Files\TibiaBot NG" i dodajemy "+ '\' + self.name".
PHP:
begin
ScreenShot('C:\Program Files\TibiaBot NG' + '\' + self.name + '.bmp);
end;
Mo?esz zauwa?y? ?e je?eli u?yjesz tego ekranu to stworzy on zrzut ekranu i plik b?dzie formatu bmp i obrazek b?dzie opisany. Zaczynamy od skryptu kt?ry zrobili?my wcze?niej.
PHP:
begin
ScreenShot('C:\Program Files\TibiaBot NG' + '\' + self.name + '.bmp);
end;
Dodaj "While not terminated do", poniewa? chcemy ca?y czas sprawdza? czy nie padli?my.
PHP:
While not terminated do
begin
ScreenShot('C:\Program Files\TibiaBot NG' + '\' + self.name + '.bmp);
end;
Dodajemy UpdateWorld; poniewa? potrzebujemy najnowszych danych.
PHP:
While not terminated do
begin
UpdateWorld;
ScreenShot('C:\Program Files\TibiaBot NG' + '\' + self.name + '.bmp);
end;
Musimy stworzy? sta?? dla ilo?ci hp, tak aby ?atwo by?o j? zmieni?. Dodajemy SSHp = 0 (kiedy nie mamy hp to robi screenshota).
PHP:
Const
SSHp = 0

While not terminated do
begin
UpdateWorld;
ScreenShot('C:\Program Files\TibiaBot NG' + '\' + self.name + '.bmp);
end;
Kiedy mamy tyle samo lub mniej hp ni? 0 to skrypt robi screenshota. W tym celu dodajemy sprawdzanie aktualnego stanu hp if Self.Health <= SSHp then
PHP:
Const
SSHp = 0

While not terminated do
begin
UpdateWorld;
if Self.Health <= SSHp then
ScreenShot('C:\Program Files\TibiaBot NG' + '\' + self.name + '.bmp);
end;
Potrzebujemy tylko jednego screenshota wi?c dodajemy exit; po zrobieniu jednego ssa, skrypt nie b?dzie pr?bowa? robi? nast?pnego. Znowu dodajemy Sleep(100); aby nie by?o lag?w.
Const
SSHp = 0

PHP:
While not terminated do
begin
UpdateWorld;
if Self.Health <= SSHp then
begin
ScreenShot('C:\Program Files\TibiaBot NG' + '\' + self.name + '.bmp);
exit;
end;
Sleep(100);
end;
Teraz skrypt zrobi screenshota kiedy jeste?my martwi. P?jdziemy o krok dalej i zmienimy nazw? SSa na Death, aby od razu by?o wiadomo co to za screenshot.
PHP:
Const
SSHp = 0


While not terminated do
begin
UpdateWorld;
if Self.Health <= SSHp then
begin
ScreenShot('C:\Program Files\TibiaBot NG' + '\' + self.name +  ' Death' + '.bmp);
exit;
end;
Sleep(100);
end;
4. Wylogowywanie

W tym dziale nauczysz si? :

* Wylogowywania swojej postaci


Skrypty jakie zrobisz :

* Wylogowywanie kiedy mamy prawie 9 lvl


My?lisz sobie - "Jak wylogowywanie si? mo?e by? przydatne?" Jest wiele skrypt?w z wylogowywaniem i s? przydatne. Najpierw nauczymy si? je pisa?. Oto skrypt na wylogowywanie. Wypr?buj go - wyloguje ci? (nie pr?buj je?li grasz na Harmonii i jest godzina 20:00, zaufaj mi). Pewnie si? zastanawiasz co
oznacza True. True oznacza bezwarunkowe wykopanie z gry. Wi?c je?li masz battle to zadzia?a tak samo jak zrobienie exita. Je?li wpiszesz False i b?dziesz mia? battle posta? si? nie wyloguje.
PHP:
begin
Self.Logout(True); 
end;
To wszystko co musisz wiedzie? o skrypcie na wylogowywanie. Najtrudniejsz? rzecz? w pisaniu skrypt?w jest pomys?. Ludzie nie chc? wbija? 9 lvli na rooku (postaciami kt?re wychodz? na maina). Napiszemy skrypt kt?ry wyloguje nas kiedy mamy prawie 9 lvl. Zaczniemy z naszym skryptem, kt?ry napisali?my na pocz?tku. Wpisujemy True na wypadek gdyby potwory nas atakowa?y.
PHP:
begin
Self.Logout(True);
end;
Chcemy aby bot ca?y czas sprawdza? czy mamy odpowiedni? ilo?? expa wi?c jak zwykle dodajemy "while not terminated do ".
PHP:
while not terminated do 
begin
Self.Logout(True);
end;
Dodajemy UpdateWorld; poniewa? potrzebujemy najnowszych danych.
PHP:
while not terminated do 
begin
UpdateWorld;
Self.Logout(True);
end;
Dodajemy sta?? z liczb? expa przy kt?rej mamy si? wylogowa?. (Exp na 9 lvl to 6400)
PHP:
Const
   ExpToLog = 6250

while not terminated do 
begin
UpdateWorld;
Self.Logout(True);
end;
Teraz dodaj if Self.Experience >= ExpToLog then. Wiesz ju? dok?adnie o co chodzi (je?li nie to zacznij czyta? poradnik od pocz?tku). Jak zwykle dodajemy Sleep(1000); aby nie by?o lag?w.
PHP:
Const
   ExpToLog = 6250

while not terminated do 
begin
UpdateWorld;
if Self.Experience >= ExpToLog then
Self.Logout(True);
Sleep(1000); 
end;
Oto nasz skrypt do wylogowywania kiedy nasza posta? ma 6250 expa!
 
Odp: Pisanie skrypt?w w NG.

Odp: Pisanie skrypt?w w NG.

Na pewno przyda si? poradnik.
?adnie i estetycznie przet?umaczony.
if Self.Health <= SSHp then
Wydaje mi si? ?e tu niepotrzebny jest znak "<" poniewa? nie da si? mie? mniej ni? 0 hp.
Jednak Ty tylko to przet?umaczy?e?.
 
Odp: Pisanie skrypt?w w NG.

Odp: Pisanie skrypt?w w NG.

#Refresh
Przecie? tyle os?b chcia?o si? nauczy? tego pisania i co ?
Prosz? o komentarze !
 
Odp: Pisanie skrypt?w w NG.

Odp: Pisanie skrypt?w w NG.

Ca?kiem to ?atwe... Nie wiedzia?em, ?e jest to takie proste. Ze skrypt?w przedstawionych w temacie skorzystam tylko z tego ostatniego.
Je?eli masz wi?cej poradnik?w tego typu (np. jak pisa? nieco trudniejsze skrypty) prosi?bym, aby? do mnie napisa? na PW.

PS.
Oto nasz skrypt do wylogowywania kiedy nasza posta? ma 6350 expa!
Popraw to, bo w skrypcie jest 6250 expa.
 
Odp: Pisanie skrypt?w w NG.

Odp: Pisanie skrypt?w w NG.

6 - 174
Co daje: 0,034 posta na wizyt?. ;/ Po co ja to pisa?em ? -.-
*odp na pogrubione
Zapewne po to aby pom?c u?ytkownikom, chyba ?e robi?e? to po reputy i komentarze to ok.

@toppic
Poradnik przejrzysty i przydatny, jednak dotyczy on najprostszych i naj?atwiejszych skrypt?w, ale od czego? trzeba zacz??. Na pewno przyda si? nie jednemu pocz?tkuj?cemu.
 
Odp: Pisanie skrypt?w w NG.

Odp: Pisanie skrypt?w w NG.

?wietny poradnik !
Przeczyta?em od deski do deski i musze stwierdzi?, ?e to dobra robota - pisany z g?ow?, a nie 'dla reputa'. Oby wi?cej takich poradnik?w - wko?cu rzadko trzeba naprawde profesjonalnych skrypt?w, a takich ?atwych ma?o os?b pisze ;) Teraz nie b?d? musia? wchodzi? na google, tylko samemu wklepie w konsoli :D
 
Odp: Pisanie skrypt?w w NG.

Odp: Pisanie skrypt?w w NG.

Zapewne po to aby pom?c u?ytkownikom, chyba ?e robi?e? to po reputy i komentarze to ok.
Nie dla reput?w. Podczas pomagania dla innych w zwi?zku z NG, u?ytkownicy prosili mnie ?ebym ich nauczy? pisa? skrypty. Wtedy pop?d by? ogromny. Gdy za?o?y?em ten temat, nagle wszystko umilk?o. ;/

@Magic Heroes
Dzi?ki :)
 
Odp: Pisanie skrypt?w w NG.

Odp: Pisanie skrypt?w w NG.

Hmm... A gdzie t?umaczenie innych funkcji? Przecie?, nie wszyscy wiedz? co jest w bibliotekach NG, a nie ma tu ka?dego skryptu o jakim u?ytkownik zamarzy. U?ywanie dw?ch warunk?w w wyra?eniu warunkowym nie jest tu pokazane. Poradnik mi si? nie podoba, bo nie ma t?umaczenia innych funkcji.
1/10
Pozdrawiam,
Daniolki
PS.
To jest tw?j skrypt:
while not terminated do
begin
UpdateWorld;
if self.poisoned then
if self.mana >= 30 then
self.say('exana pox');
Sleep(100);
end;
To jest m?j:
while not terminated do
begin
UpdateWorld;
if self.poisoned and self.mana >=30 then self.say('exana pox');
Sleep(100);
end;

Tu d?u?sza wersja tego skryptu, ale mam nadziej?, ?e lepsza dla pocz?tkuj?cych. Wszystko konfiguruje si? w jednym miejscu:
const
mana='30'; (mana potrzebna na czar)
spell='exana pox'; (czar kt?rego u?yje posta?)
slp='100'; (czas jaki ma odczeka? mi?dzy powt?rzeniami, w milisekundach "1000 milisekund = 1 sekunda")

while not terminated do
begin
UpdateWorld;
if self.poisoned and self.mana >=mana then self.say(spell);
Sleep(slp);
end;
 
Ostatnia edycja:
Odp: Pisanie skrypt?w w NG.

Odp: Pisanie skrypt?w w NG.

@zioomek3
T? opcje w bocie ju? masz : Options > Logout > GM Detected ... : d nigdy nie korzysta?em ale my?l?, ?e jak masz battle to nie zadzia?a (lub kicknie) :p

Troch? od?wie?anie starych temat?w..ale ;d poradnik jest super 5/5 wszystko po kolei pokazane jak si? robi ; ) Mi najbardziej przyda? sie ten scrypt z rookgaardem (my?le, ?e 90% spo?eczno?ci tibii przegl?dajacej to forum tez ; } ) Troch? to ?api?, nie doko?ca ale jak jeszcze posiedz? to b?dzie ok :D.
 
Ostatnia edycja:
Odp: Pisanie skrypt?w w NG.

Odp: Pisanie skrypt?w w NG.

?wietny poradnik dla laik?w.
Ja wcze?niej mia?em do czynienia z j?zykami programowania (Pascal, Delphi, itp.), a to si? zbyt wiele od siebie nei r??nie, wi?c jestem samoukiem, ale kilku nowych rzeczy si? dowiedzia?em.
Dzi?ki bardzo i gratuluj? dobrej roboty : P

boloo.​
 
Odp: Pisanie skrypt?w w NG.

Odp: Pisanie skrypt?w w NG.

@up
a z?apa?e? go za r?k?, ?e tak m?wisz?? mo?e to on jest tym "Qbee" z botting.pl to, ?e tutaj ma moda nie znaczy, ?e ma kompletny zakaz wchodzenia na inne fora i pokazywanie swoich poradnik?w poza tym my?l?, ?e jako mod nie robi? by plagiatu xD zanim zn?w napiszesz co? takiego pomy?l 2 razy

@topic
Co do poradnika przyda? mi si? niezmiernie ju? kiedy? si? bawi?em w skrypty ale za dobrze mi nie szlo a ten poradnik rozwia? moje w?tpliwo?ci wiec wielkie dzi?ki dla Ciebie i powodzenia w nast?pnych takich poradnikach bo ch?tnie bym zobaczy? co? ci??szego do robienia.
 
Back
Do góry