Zobacz koniecznie!
Navigation » Botting.pl - Botowanie to przecież nie przestępstwo > TibiaBot NG > Ogólne o TibiaBot NG » Podstawy pisania skrypt??w w NG

Odpowiedz
 
Narzędzia tematu Wygląd tematu
Stary 15-04-09, 21:20   #1
Qbee
Zasłużony
 
Data dołączenia: May 2008
Skąd: Bydgoszcz
Posty: 568
Podziękowań: 19
Podziękowano mu 89 razy w 27 postach.
Qbee jest na ustach wieluQbee jest na ustach wieluQbee jest na ustach wielu
Standardowy Podstawy pisania skryptów w NG

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!
__________________
I'm not botting, I'm just sharing my account with my computer.

Ostatnio edytowany przez Qbee : 15-04-09 o 23:01
Qbee jest offline   Reply With Quote
Ten użytkownik dziękuje Qbee za jego pomocny post.
Piesek (15-04-09)
Stary 15-04-09, 22:31   #2
Piesek
Zaawansowany botter
 
Piesek's Avatar
 
Data dołączenia: Apr 2008
Skąd: Wrocław
Posty: 341
Podziękowań: 53
Podziękowano mu 20 razy w 12 postach.
Piesek jest na ustach wieluPiesek jest na ustach wielu
Standardowy

Cytat:
Zmień "if self.poisoned then" na "if not self.hasting then" co oznacza jeśli (if) postać ma haste (then) wykona pozostałą część kodu.
PHP Code:
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 Code:
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 Code:
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.
Wydaje mi się, że miało być "jeśli postać nie ma haste", bo tak to skrypt byłby bez sensu :) Wiem, że to tylko literówka, bo jest "not", ale warto poprawić;) Poradniczek bardzo dobry, ładnie wszystko opisane jak dla blondynki i myślę, że każdy zrozumie ocb z NG teraz :) Świetna robota!

Dzięki, poprawione ~Qbee

Ostatnio edytowany przez Qbee : 15-04-09 o 23:02
Piesek jest offline   Reply With Quote
Stary 16-04-09, 07:47   #3
Sarox
Newbie
 
Data dołączenia: Mar 2009
Posty: 24
Podziękowań: 0
Podziękowano mu 0 razy w 0 postach.
Sarox jeszcze nie znają
Standardowy

Dzięki za poradnik xD Dzisiaj się wezmę za pisanie jakiegoś skryptu może mi się uda :)
Sarox jest offline   Reply With Quote
Stary 13-02-10, 01:51   #4
szamanking
Newbie
 
Data dołączenia: Feb 2010
Posty: 1
Podziękowań: 0
Podziękowano mu 0 razy w 0 postach.
szamanking jeszcze nie znają
Standardowy

moze ktos napisac dzialajacy skrypt do wpisywania utamo vita??
plz
bede bardzo wdzieczny :D
szamanking jest offline   Reply With Quote
Odpowiedz

Tagi
pisania, podstawy, skryptów, skryptw

Narzędzia tematu
Wygląd tematu

Zasady Postowania
Nie możesz tworzyć nowych tematów
Nie możesz pisać odpowiedzi.
Nie możesz dodawać załączników
Nie możesz edytować swoich postów

BB code jest włączone
Emotikonywłączone
Kod [IMG] jest włączone
Kod HTML jest wyłączony

Skocz do


no new posts