Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Pisanie skryptów - cz. 3


Rekomendowane odpowiedzi

Opublikowano

http://www.mpcforum.pl/topic/1274238-pisanie-skryptow-cz-8/ - Część 8
http://www.mpcforum.pl/topic/1273792-pisanie-skryptow-cz-7/ - Część 7
http://www.mpcforum.pl/topic/1273566-pisanie-skryptow-cz-6/ - Część 6
http://www.mpcforum.pl/topic/1232331-pisanie-skryptow-cz-5/ - Część 5
http://www.mpcforum.pl/topic/1231168-pisanie-skryptow-cz-4/ - Część 4
http://www.mpcforum.pl/topic/1230769-pisanie-skryptow-cz-3/ - Część 3
http://www.mpcforum.pl/topic/1230734-pisanie-skryptow-cz-2/ - Część 2
http://www.mpcforum.pl/topic/1230572-pisanie-skryptow-cz-1/ - Część 1

Czołem!

Oto 3 część poradnika o pisaniu skryptów. Dzisiaj napiszemy sobie pierwszy skrypt związany z LoLem. W tej części dowiecie się, jak działa i jak użyć callbacka OnDraw().

Zaczynajmy!

1. Kilka słow o klasach (nie szkolnych)

Dotychczas przechowywaliśmy tylko wartości w zmiennych. Możemy też przechować jakiś obiekt. Klasa jest zbiorem właściwości i funkcji jakiegoś przykładu.

Na przykład:

osoba.wiek

osoba.pochodzenie

osoba.miejsce_zamieszkania

itd.

Właściwości od obiektu oddzielamy kropką. W BoLu istnieje klasa "unit" która określa każdą jednostkę w grze. Oto ich właściwości:

unit.charName
unit.level
unit.visible
unit.x
unit.y
unit.z
unit.team
unit.health
unit.mana
unit.cdr
unit.ap
unit.damage
unit.armor
unit.magicArmor
unit.ms
unit.range
unit.gold


2. Nasz bohater

Kiedyś używało się GetMyHero() aby otrzymać naszego bohatera. Ale teraz nie trzeba i robi to za nas już zdefiniowane myHero.

Aby otrzymać nazwę naszego bohatera, piszemy myHero.charName. Jak to wygląda w kodzie? Tak:

function OnLoad()
    if (myHero.charName == "Gangplank") then
        PrintChat("Grasz Gangplankiem")
    end
end

Jeżeli zagramy Gangplankiem, skrypt napisze taką wiadomość.

3. Nasz pierwszy, prawdziwy skrypt! + Callbacki

Napiszemy sobie teraz skrypt, który napisze nam żebyśmy użyli potiona, gdy mamy mniej niż 200 HP. Użyjemy do tego unit.health.

function OnLoad()
    if (myHero.health < 200) then
        PrintChat("Niski poziom HP, wypij potiona!")
    end
end

Gotowe! Odpalamy skrypt, wchodzimy do gry, i... no właśnie. Jaka postać ma mniej niż 200 HP na starcie? Żadna! Dlatego ten skrypt nigdy nie będzie użyteczny. Zmieńmy OnLoad() na OnTick().

function OnTick()
    if (myHero.health < 200) then
        PrintChat("Niski poziom HP, wypij potiona!")
    end
end

Teraz skrypt zadziała. Dobra, idziemy pod wieżę. Tracimy HP, mamy poniżej 200. I co? I skrypt zaczyna nam spamić na chacie. Nie jest to dobre.

4. Pisanie tekstu na ekranie

Najlepsza możliwość to użycie funkcji DrawText("XXX", TextSize, X, Y, HexColor)

"XXX" - tekst, który chcemy napisać

X i Y - miejsce, gdzie chcemy napisać tekst

HexColor - kolor w formacie szesnastkowym (wygląda mniej więcej tak: 0x + Przezroczystość + Czerwony + Zielony + Niebieski) (np. 0xFFFFFF00 - żółty)

Operacje graficznie nie są dozwolone w OnTick(), dlatego użyjemy OnDraw().

function OnDraw()
	if (myHero.health < 200) then
		DrawText("Niski poziom HP, wypij potiona!", 18, 100, 100, 0xFFFFFF00)
	end
end

Dodajmy jeszcze sprawdzanie many:

function OnDraw()
	if (myHero.health < 200) then
		DrawText("Niski poziom HP, wypij potiona!", 18, 100, 100, 0xFFFF0000) -- czerwony
	end
	if (myHero.mana < 150) then -- zmieniliśmy z myHero.health na myHero.mana
		DrawText("Niski poziom many, wypij potiona!", 18, 100, 120, 0xFFFFFF00) -- żółty
	end
end

I to wszystko na tą część. Kolejna część o castowaniu spelli wieczorem!

Polecam też bardziej zaawansowane poradniki Marcoly'ego:

http://www.mpcforum.pl/topic/1226948-api-sidas-auto-carry/

http://www.mpcforum.pl/topic/1229945-buffy-advanced-callbacks-vip/

http://www.mpcforum.pl/topic/1157768-zastosowanie-lag-free-circles-we-wlasnym-skrypcie/

Credits:

shagratt z forum botoflegends - jego poradnik spolszczyłem

Marcoly
Radi

Skończ proszę się kompromitować. Jesteś nikim.

Opublikowano

Niektórzy próbują tworzyć tekst za pomocą PrintFloatText zapominając o dodaniu delaya między każdym tickiem, dobrze, że pokazałeś DrawText.

Opublikowano

Niektórzy próbują tworzyć tekst za pomocą PrintFloatText zapominając o dodaniu delaya między każdym tickiem, dobrze, że pokazałeś DrawText.

 

 

Ale to tu wszystko jest, nie wiem gdzie są brawa dla samego autora tego poradnika po czym dostał wymarzoną rangę, a @mistake010 można powiedzieć, że to skrócił i zpolszczył.

 

http://botoflegends.com/forum/topic/9918-tutorial-programing-in-bol-for-dummys-lesson-3/

f1a327ea2f.png

Opublikowano

To jest tak wytłumaczone że ja po przeczytaniu tych 3 części dalej nic nie wiem ... 

,,Nawet jeśli nie masz już siły, możesz nadal walczyć i osiągnąć swój cel." <3 

 

29.png

Opublikowano

To jest tak wytłumaczone że ja po przeczytaniu tych 3 części dalej nic nie wiem ... 

Znasz angielski? Jak tak, to http://botoflegends.com/forum/topic/9659-tutorial-programing-in-bol-for-dummys-lesson-1/ i http://botoflegends.com/forum/topic/9737-tutorial-programing-in-bol-for-dummys-lesson-2/ i http://botoflegends.com/forum/topic/9918-tutorial-programing-in-bol-for-dummys-lesson-3/ - poradniki shagratta, który przetłumaczyłem

Jak nie, to proszę, powiedz co jest niezrozumiałego w tym, że PrintChat("x") służy do pisanie tekstu na chacie?

Skończ proszę się kompromitować. Jesteś nikim.

Opublikowano

podstawa w pisaniu skryptów

 

 

if - jeśli

elseif - inaczej ( ja to tak pojmuję i dobrze mi to wychodzi muszę zerknąć )

then - więc

 

 

Brawo! Jest to 5% sukcesu do nauki programowania oby tak dalej!.

f1a327ea2f.png

Opublikowano

podstawa w pisaniu skryptów

 

 

if - jeśli

elseif - inaczej ( ja to tak pojmuję i dobrze mi to wychodzi muszę zerknąć )

then - więc

 

 

Brawo! Jest to 5% sukcesu do nauki programowania oby tak dalej!.

Wiedziałem, że mnie nakryjesz, że przetłumaczyłem poradniki shagratta. Po prostu zapomniałem dodać jego nicku w poście, w pierwszym dałem

Skończ proszę się kompromitować. Jesteś nikim.

Opublikowano

Znam angielski dosyć dobrze, chodzi mi o to że nie rozumiem w jaki sposób to działa, łączy się ze sobą. Pokazałeś tu jak napisać bardzo prosty skrypt, a nie powiedziałeś nic o tym jak działają trudniejsze skrypty (combo, evadee itd). 

,,Nawet jeśli nie masz już siły, możesz nadal walczyć i osiągnąć swój cel." <3 

 

29.png

Opublikowano

Wiedziałem, że mnie nakryjesz, że przetłumaczyłem poradniki shagratta. Po prostu zapomniałem dodać jego nicku w poście, w pierwszym dałem

Nie o to chodzi, możesz napisać przetłumaczone na polski przez ciebie i mi to by wystarczyło ^_^.

 

Tak bo sam czytałem jego dzieła

 

@robak

 

masz problem to zerknij tutaj:

 

http://www.mpcforum.pl/topic/565780-tut-lua-od-zera-do-skryptera/

 

"Instrukcje warunkowe"

 

Ja stanąłem tutaj:

 

 

 

eaba81cae5.png

 

Teraz do każdego callbacku muszę dodać odpowiednie opcje bez tego będzie wydawać masę errorów.

tzn combo - fight, używanie spelli + itemów + ignite,

Harass- wszystko do zmienienia w opcjach ustawiać trzeba wszystko z "if, coś tam then

coś tam

 

 

 

f1a327ea2f.png

Opublikowano

Nie o to chodzi, możesz napisać przetłumaczone na polski przez ciebie i mi to by wystarczyło ^_^.

 

Tak bo sam czytałem jego dzieła

Wiem, nawet raz widziałem Ciebie czytającego ^.^ Na dole stronh byly osoby przegladajace temat

 

A napisałem prosty skrypt, bo zaczyna się od podstaw... W C++ nie zaczynałem od wskaźników (odwołań do pamięci), tylko od podstawowych hello world, potem intów, pętl, if'ów itd.

Skończ proszę się kompromitować. Jesteś nikim.

Opublikowano

Znam angielski dosyć dobrze, chodzi mi o to że nie rozumiem w jaki sposób to działa, łączy się ze sobą. Pokazałeś tu jak napisać bardzo prosty skrypt, a nie powiedziałeś nic o tym jak działają trudniejsze skrypty (combo, evadee itd).

Evadeee renderuje wszystkie skillshoty na polygonie i znajduje martwy punkt pomiędzy nimi, przesuwa się tam za pomocą pakietów. Evadeee wykrywa skillshoty nadchodzące z FoW pakietami, tzn. musisz znaleźć odpowiedni header. Blokuje poruszanie się również pakietami, czyli musisz znaleźć header. Rozumiesz? Nie? Przykro mi.

Jak chcesz zobaczyć jak działa combo itd. to zapraszam do mojego najnowszego skryptu na Evelynn.

http://botoflegends.com/forum/topic/26261-script-w-vpredictions-evelynn-widowmaker/
Opublikowano

Evadeee renderuje wszystkie skillshoty na polygonie i znajduje martwy punkt pomiędzy nimi, przesuwa się tam za pomocą pakietów. Evadeee wykrywa skillshoty nadchodzące z FoW pakietami, tzn. musisz znaleźć odpowiedni header. Blokuje poruszanie się również pakietami, czyli musisz znaleźć header. Rozumiesz? Nie? Przykro mi.

Jak chcesz zobaczyć jak działa combo itd. to zapraszam do mojego najnowszego skryptu na Evelynn.

 

http://botoflegends.com/forum/topic/26261-script-w-vpredictions-evelynn-widowmaker/
 
I dlatego zaczynamy od Hello World.

Skończ proszę się kompromitować. Jesteś nikim.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...