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. 5


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!

Przed wami kolejna część poradnika pisania skryptów w Lua - dziś zajmiemy się menu konfiguracyjnym skryptu.

1. Użycie menu w grze

Menu pozwoli nam rozbudować skrypt oraz pozwolić użytkownikowi ustawić go wg własnego uznania. Do menu wchodzimy, trzymając shift. Następującą linijką kodu dodajemy menu do skryptu:

Config = scriptConfig("Nazwa wyswietlana", "nazwamenu")

Gdzie:

Nazwa wyswietlana - nazwa wyświetlana w grze, pod shiftem na liście konfigurowalnych skryptów.

nazwamenu - nazwa niewidoczna dla użytkownika, jest ona wykorzystywana przez BoLa. MUSI BYĆ UNIKALNA DLA KAŻDEGO SKRYPTU ORAZ ZAWIERAĆ TYLKO 1 SŁOWO!!!

 

Mamy naszą zmienną Config. Czas dodać do niej jakieś opcje. Tak dodajemy opcję, konfigurujemy ją wg. własnego uznania:

Config:addParam("nazwaopcji", "opis", typopcji, status_pocz, klawisz_opt)
  • nazwaopcji - wewnętrzna nazwa opcji - niewidoczna dla użytkownika. Służy do wywoływania funkcji.
  • opis - nazwa wyświetlana w grze
  • typopcji - typ opcji, są 3 możliwości:
  1. SCRIPT_PARAM_ONOFF - Polega na tym, że mamy przełącznik w menu typu ON/OFF i możemy przełączać opcję (np. włącz lub wyłącz auto ignite).
  2. SCRIPT_PARAM_ONKEYTOGGLE - Polega na tym samym, co poprzedni. Jednak zamiast przełącznika on/off mamy klawisz (np. M) by przełączać daną opcję
  3. SCRIPT_PARAM_ONKEYDOWN - Opcja będzie aktywna tylko, gdy przytrzymamy dany klawisz.
  • status_pocz - status początkowy (czy na początku opcja ma być aktywna, czy też nie). Wpisujemy tu false lub true (odpowiednio nie lub tak)
  • klawisz_opt - klawisz służący do aktywacji opcji. Nie podajemy w przypadku użycia SCRIPT_PARAM_ONOFF.

Zróbmy sobie take menu, co będzie zawierało 3 typy opcji.

function OnLoad()
	Config = scriptConfig("Tytul menu", "mojskrypcik")
	Config:addParam("asdfg", "Przelacznik typu ON/OFF", SCRIPT_PARAM_ONOFF, true)
	Config:addParam("jhi", "Przelacznik typu toggle", SCRIPT_PARAM_ONKEYTOGGLE, false, string.byte("A"))
	Config:addParam("combo", "Przelacznik typu klawisz do aktywacji", SCRIPT_PARAM_ONKEYDOWN, false, string.byte(" "))
end

Powinniśmy otrzymać coś takiego: http://i.imgur.com/iYgnfRu.png (znak zapytania jest efektem użycia polskiego znaku - nie róbcie tego)

2. Klawisz opcji

Jak pewnie zauważyliście, 5 parametr zawiera coś dziwnego. To jest właśnie klawisz opcji. W większości skryptów pisze się po prostu numer klawisza (np. 32 dla spacji). Ale nie musicie tego znać na pamięć - jest coś, co wam znacznie pomoże. Możecie użyć funkcji string.byte("x"). Pod x podstawiacie znak, który chcecie użyć w skrypcie. Funkcja została zaznaczona na zielono w wyżej pokazanym skrypcie.

Dla ciekawskich - jak chcecie znać te numerki to polecam http://www.asciitable.com/index/asciifull.gif - interesuje nas kolumna DEC.

3. Menu w skrypcie

Nasze przełączniki działają - czas je wprowadzić do skryptu. Użyjemy do tego instrukcji warunkowej "if" oraz pierwszego parametru naszej opcji. Użyjmy poprzedniego skryptu. Na zielono zaznaczam dodane linijki

 

function OnLoad()
        ts = TargetSelector(TARGET_LOW_HP_PRIORITY,625)
        Config = scriptConfig("Ryze Combo", "ryzecombo77")
        Config:addParam("
combo", "Combo", SCRIPT_PARAM_ONKEYDOWN, false, 32) -- zamiast 32 mozemy wpisac string.byte(" ")
        Config:addParam("
usespellr", "Uzyj R", SCRIPT_PARAM_ONOFF, true)
        Config:addParam("
circle", "Rysuj zasieg Q", SCRIPT_PARAM_ONKEYTOGGLE, true, string.byte("m"))
end

function OnTick()
    ts:update()
    if (ts.target ~= nil) then
        if (Config.combo) then
            if (myHero:CanUseSpell(_Q) == READY) then
                CastSpell(_Q, ts.target)
            end
            if (myHero:CanUseSpell(_R) == READY) then
                if (Config.usespellr) then
                    CastSpell(_R, ts.target)
                end
            end
            if (myHero:CanUseSpell(_E) == READY) then
                CastSpell(_E, ts.target)
            end
            if (myHero:CanUseSpell(_W) == READY) then
                CastSpell(_W, ts.target)
            end
        end
    end
end

function OnDraw()
    if (Config.circle) then
        DrawCircle(myHero.x, myHero.y, myHero.z, 625, 0x00FFFF)
    end
end

 

Przykładem chyba dobrze wyjaśniłem, jak to działa. Jeżeli ktoś nadal nie rozumie, oto, jak to wygląda.

Podczas tworzenia opcji, podawaliśmy niewidoczną dla użytkownika nazwę opcji. Jest ona zaznaczona na żółto w w.w skrypcie.

Aby sprawdzić, czy opcja jest włączona, używamy instrukcji warunkowej "if" i piszemy if (Config.nazwa), gdzie nazwa jest tą niewidoczną zaznaczoną w skrypcie.

Polecam też bardziej zaawansowane poradniki Marcoly'ego:

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

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

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

Credits:

shagratt z forum botoflegends - jego poradnik spolszczyłem

Marcoly
Radi

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

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...