Tłumaczenie ze strony http://forums.tibiabot.com/showthread.php?t=53624
- 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 :
Kod 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 :
Kod 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 :
Kod 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":
Kod 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.
Kod 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".
Kod 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.
Kod 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" :
Kod 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" :
Kod 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.
Kod 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.
Kod 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".
Kod 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.
Kod 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.
Kod 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.
Kod 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.
Kod 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.
Kod 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.
Kod 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".
Kod 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.
Kod PHP:
begin
PlaySound('C:\Windows\Media\notify.wav');
end;
Dodajemy zmienną "HpToAlert".
Kod 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".
Kod 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.
Kod 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.
Kod 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".
Kod PHP:
Const
HpToAlert = 150
while not terminated do
begin
UpdateWorld;
if self.mana <= HpToAlert then
PlaySound('C:\Windows\Media\notify.wav');
Sleep(100);
end;
[b]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.
Kod PHP:
begin
ScreenShot(Path);
end;
Musimy zmienić Patch na "C:\Program Files\TibiaBot NG" i dodajemy "+ '\' + self.name".
Kod 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.
Kod 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.
Kod PHP:
While not terminated do
begin
ScreenShot('C:\Program Files\TibiaBot NG' + '\' + self.name + '.bmp);
end;
Dodajemy UpdateWorld; ponieważ potrzebujemy najnowszych danych.
Kod 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).
Kod 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
Kod 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.
Kod PHP:
Const
SSHp = 0
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.
Kod 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.
Kod 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.
Kod 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 ".
Kod PHP:
while not terminated do
begin
Self.Logout(True);
end;
Dodajemy UpdateWorld; ponieważ potrzebujemy najnowszych danych.
Kod 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)
Kod 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.
Kod 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 6350 expa!