←  Poradniki oraz Łatki

AMXX.pl: Support AMX Mod X i SourceMod

»

Tutorial
Łatwe dodawanie klas + nowe menu

  • +
  • -
G[o]Q - zdjęcie G[o]Q 18.06.2010

Opisze jak zrobic menu w nowym stylu oraz jak zrobic zeby dodanie pustej klasy ograniczalo sie do edycji 3 linijek bo widze ze niektorzy sobie nie radza z poradnikiem kyku.

1: Wiec zaczynamy na poczatek menu.
Spoiler


2: Teraz zmiany ulatwiajace nam edycje kodu ogranicza sie to w zasadzie do uzycia funkcji sizeof
a) Szukamy funkcji

create_klass(id)

i w niej zamieniamy
for(new i=1;i<9;i++)
na
for(new i=1;i<sizeof(race_heal);i++)
uzylem race_heal dlatego ze jest to tablica jednowymiarowa i majaca tyle elementow ile mamy klas (nie mialem czasu sprawdzic jak dziala sizeof na wielowymiarowych)

B) to samo robimy z petla w funkcji

LoadAVG()


c) teraz podmieniamy funkcje

select_class_query(id) i select_class_handle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize)


na
Spoiler


3. W zasadzie mozemy na tym poprzestac ale chcac jeszcze bardziej ulatwic dodawanie klas mozemy zamienic
new player_class_lvl[33][9]
na
new player_class_lvl[33][33]
oraz
new srv_avg[9] = {1,1,1,1,1,1,1,1,1}
na
new srv_avg[33]

wiem ze to troche nieoptymalne wiec mozna ten etap opuscic jesli jednak chcemy kontynuowac to do plugin_init dodajemy
for(new i=0;i<sizeof(race_heal);i++) srv_avg[i]=1


i to by bylo wszystko trzeba pamietac ze po dodaniu klas potrzebny reset tabeli
zeby dodac klase dodajemy nazwe klasy po przecinku do

new Race[][] = { "None","Mag","Mnich","Paladyn","Zabojca","Nekromanta","Barbarzynca", "Ninja", "Lowca" }//zmienione zakresy tablic na [][]
oraz do
enum { NONE = 0, Mag, Mnich, Paladyn, Zabojca, Nekromanta, Barbarzynca, Ninja, Hunter }// bez ""
i dodajemy hp startowe
new race_heal[] = { 100,95,150,130,100,90,110,170,120 }

EDIT
w zalaczniku daje gotowe sma.

Załączone pliki


Użytkownik G[o]Q edytował ten post 25.06.2010 10:37
Odpowiedz

czarasd - zdjęcie czarasd 18.06.2010

Qoku napracowales sie zaraz to sprawdze. Oczywiscie zasluzony .
Ps: dobrze zebys jeszce mi odpisał PW :)

Robilem jak w tutorialu i przy komplikacji :

../uploaded/4c1be09fd9ac3.sma(4612) : error 055: start of function body without function header
../uploaded/4c1be09fd9ac3.sma(4613) : error 001: expected token: ";", but found "-integer value-"
../uploaded/4c1be09fd9ac3.sma(4614) : error 010: invalid function or declaration
../uploaded/4c1be09fd9ac3.sma(4619) : error 010: invalid function or declaration
../uploaded/4c1be09fd9ac3.sma(4623) : error 010: invalid function or declaration
../uploaded/4c1be09fd9ac3.sma(4625) : error 010: invalid function or declaration
../uploaded/4c1be09fd9ac3.sma(4629) : error 010: invalid function or declaration
../uploaded/4c1be09fd9ac3.sma(4632) : error 010: invalid function or declaration
../uploaded/4c1be09fd9ac3.sma(4636) : error 010: invalid function or declaration
../uploaded/4c1be09fd9ac3.sma(4639) : error 010: invalid function or declaration
../uploaded/4c1be09fd9ac3.sma(4644) : error 010: invalid function or declaration
../uploaded/4c1be09fd9ac3.sma(4648) : error 029: invalid expression, assumed zero
../uploaded/4c1be09fd9ac3.sma(4648 -- 4650) : warning 215: expression has no effect
../uploaded/4c1be09fd9ac3.sma(4650) : error 054: unmatched closing brace
../uploaded/4c1be09fd9ac3.sma(4651) : error 010: invalid function or declaration
../uploaded/4c1be09fd9ac3.sma(4654) : error 021: symbol already defined: "select_class"
../uploaded/4c1be09fd9ac3.sma(8301) : warning 203: symbol is never used: "i"
../uploaded/4c1be09fd9ac3.sma(8301) : warning 203: symbol is never used: "id"
../uploaded/4c1be09fd9ac3.sma(8301) : warning 203: symbol is never used: "lx"

15 Errors.
Could not locate output file ../compiled/4c1be09fd9ac3.amx (compile failed).

sma : http://www.speedysha...ablofullmax.txt
Użytkownik czarasd edytował ten post 18.06.2010 20:22
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 19.06.2010

klamry pozatym masz dzialajace sma w zalaczniku poradnik dobry bo sprawdzalem
Odpowiedz

czarasd - zdjęcie czarasd 19.06.2010

no tak dziala ale teraz co jesli chce dodac moce do klas ?
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 19.06.2010

to juz musisz zrobic sam oczywiscie mozna zrobic ze po naladowaniu noza kazda nowa klasa bedzie miala ta sama umiejetnosc ale nie o to tu chodzi po instrukcje dodawania mocy zapraszam do poradnikow Vertricus'a i kyku
Użytkownik G[o]Q edytował ten post 19.06.2010 13:58
Odpowiedz

czarasd - zdjęcie czarasd 19.06.2010

Goku nowe klasy dzialaja ale jak je wybiore to pisze : none i lvl:1 \, exp nie leci...Na wszystkich tak jest klasach ?
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 19.06.2010

res tabeli :?:

19 czerwiec 2010 - 15:57:
new Race[][] = { "None","Mag","Mnich","Paladyn","Zabojca","Nekromanta","Barbarzynca", "Ninja", "Lowca" }
enum { NONE = 0, Mag, Mnich, Paladyn, Zabojca, Nekromanta, Barbarzynca, Ninja, Hunter}
new race_heal[] = { 100,95,150,130,100,90,110,170,120 }

zamien na

new Race[][] = { "None","Mag","Mnich","Paladyn","Zabojca","Nekromanta","Barbarzynca", "Ninja", "Lowca","bot" }
enum { NONE = 0, Mag, Mnich, Paladyn, Zabojca, Nekromanta, Barbarzynca, Ninja, Hunter,Bot}
new race_heal[] = { 100,95,150,130,100,90,110,170,120 ,150}
Odpowiedz

czarasd - zdjęcie czarasd 19.06.2010

zmienilem i nic...logi:
L 06/19/2010 - 15:57:31: [AMXX] Displaying debug trace (plugin "diablobygoku.amxx")
L 06/19/2010 - 15:57:31: [AMXX] Run time error 4: index out of bounds
L 06/19/2010 - 15:57:31: [AMXX] [0] 4c1be4c22a753.sma::write_hud (line 2083)
L 06/19/2010 - 15:57:31: [AMXX] [1] 4c1be4c22a753.sma::UpdateHUD (line 2105)
Użytkownik czarasd edytował ten post 19.06.2010 15:00
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 19.06.2010

brakuje ci w tych funkcjach warunku if(is_user_alive(id) ) ale to nie wina mojego skryptu raczej bo tam nic nie bylo zmieniane xD
Odpowiedz

czarasd - zdjęcie czarasd 19.06.2010

cczyli moze troche dokladniej ? jakies porady co zmienic dodac ?
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 19.06.2010

wklej na poczatku funkcji

if(!is_user_alive(id)) return PLUGIN_CONTINUE
Odpowiedz

czarasd - zdjęcie czarasd 19.06.2010

Byc moze pomyslisz ze jestem ostatnim nobem ale dopiero bawie sie w te klocki...gdzie dokladnie to wkleic ?
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 19.06.2010

wklej na poczatku funkcji

Odpowiedz

czarasd - zdjęcie czarasd 19.06.2010

Goku wstaw jak mozesz:

Załączone pliki


Użytkownik czarasd edytował ten post 19.06.2010 19:41
Odpowiedz

STRAZAK - zdjęcie STRAZAK 20.06.2010

No dobra robota :) Reput leci!
Odpowiedz

  • +
  • -
Vertricus - zdjęcie Vertricus 20.06.2010

        new menuname[128]
format(menuname,127,"Wybierz Klase:")
create_class = menu_create(menuname, "handle_create_class")

->
create_class = menu_create("Wybierz klase:", "handle_create_class")

Ps. nie musi być to zmienna globalna jak i tak za każdym razem tworzysz menu

Odnośnie reszty korzystam z tego rozwiązania już jakieś 4miechy i radziłbym sprawdzić
to:
        if(item>6) strona++

player_class[id]=item+(6*strona)+1

Ps2. Poczytaj o łączeniu enum'a z tablicami, pętlami.
Ps3.
        if(item>6) strona++
jak już korzystamy z tego :> i myślimy że działa to co jak strona = 3? ;>

Ale ogólnie gites :>
Odpowiedz

czarasd - zdjęcie czarasd 20.06.2010

nie wiem teraz juz czy taka dobra jak nie dziala...i pelno bledow !
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 20.06.2010

        new menuname[128]
format(menuname,127,"Wybierz Klase:")
create_class = menu_create(menuname, "handle_create_class")

->
create_class = menu_create("Wybierz klase:", "handle_create_class")

Ps. nie musi być to zmienna globalna jak i tak za każdym razem tworzysz menu

Odnośnie reszty korzystam z tego rozwiązania już jakieś 4miechy i radziłbym sprawdzić
to:
        if(item>6) strona++

player_class[id]=item+(6*strona)+1

Ps2. Poczytaj o łączeniu enum'a z tablicami, pętlami.
Ps3.
        if(item>6) strona++
jak już korzystamy z tego :> i myślimy że działa to co jak strona = 3? ;>

Ale ogólnie gites :>


Poprawilem xD ale nie wiem o co ci chodzi z tym enum'em xP
Odpowiedz

  • +
  • -
Vertricus - zdjęcie Vertricus 20.06.2010

np.
enum _:Klasy
{
aa,
bb,
cc
}
new Race[Klasy][] = {"", "", ""};
new race_health[Klasy] = { 10, 5, 6 };

for (new i=0; i<Klasy; i++)
{

}
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 20.06.2010

aa o to ci chodzi nie chcialem juz zmieniac tego enuma na "nie animowany" zreszta tak tez jest dobrze bo race_heal ma tyle samo elementow co enum xP
Odpowiedz