Frakcje do Diablo Moda!
MaDaFaKa 28.09.2010
Witam.
W dzisiejszym poradniku opiszę Wam jak zrobić menu z podziałem na frakcje. Dobrym przykładem tego jest menu potwory - ludzie, o które padało tyle pytań na amxx.pl! Więc zaczynajmy!
Na początek rejestujemy menu w plugin_init(). W tym celu szukamy:
I pod tym dodajemy:
Następnie szukamy public'a select_class(id,lx[]) i select_class_menu(id, key) oraz następnie zamieniamy go na ten kodzik poniżej:
Następnie pod tym dodajemy publiki, które odpowiadają za te dwie strony.
W tym celu pod kodem dodanym wyżej wklejamy:
Wszelkie problemy i pytania związane z tym pytaniem proszę zamieszcząć tutaj.
To mój pierwszy poradnik, więc proszę nie być zbytnio surowym.
Z podrowieniami, MaDaFaKa
Użytkownik MaDaFaKa edytował ten post 03.10.2010 14:10
W dzisiejszym poradniku opiszę Wam jak zrobić menu z podziałem na frakcje. Dobrym przykładem tego jest menu potwory - ludzie, o które padało tyle pytań na amxx.pl! Więc zaczynajmy!
Na początek rejestujemy menu w plugin_init(). W tym celu szukamy:
register_menucmd(register_menuid("Nowe Itemy"), 1023, "nowe_itemy")
I pod tym dodajemy:
register_menucmd(register_menuid("Klasy"), 1023, "PressedKlasy")
register_menucmd(register_menuid("Lok"), 1023, "PokazMeni")
Następnie szukamy public'a select_class(id,lx[]) i select_class_menu(id, key) oraz następnie zamieniamy go na ten kodzik poniżej:
public select_class(id,lx[])
{
new text4[512]
format(text4, 511,"\yWybierz Rodzaj Klas: ^n\r1. \wBohaterowie^n\r2. \wPotwory")
new keysczwarta
keysczwarta = (1<<0)|(1<<1)
show_menu(id, keysczwarta,text4, -1, "Wybierz Klase")
}
public select_class_menu(id, key)
{
new lx[17] // <-- w nawiasie wpisz liczbę swoich klas + 1(none)
g_haskit[id] = 0
switch(key)
{
case 0:
{
PokazKlasy(id,lx)
}
case 1:
{
ShowKlasy(id,lx)
}
}
LoadXP(id, player_class[id])
CurWeapon(id)
give_knife(id)
return PLUGIN_HANDLED
}
Następnie pod tym dodajemy publiki, które odpowiadają za te dwie strony.
W tym celu pod kodem dodanym wyżej wklejamy:
public PokazKlasy(id,lx[])
{
new flags[17]
get_cvar_string("diablo_classes",flags,16) //<--- tu, gdzie jest 16 wpisz liczbę swoich klas
new text3[512]
asked_klass[id]=0
for(new i=0;i<8;i++) //Tego masz nigdy nie zmieniać!!!!
{
format(text3, 512,"\yBohaterowie: ^n\w1. \yMag^t\wLevel: \r%i^n\w2. \yMnich^t\wLevel: \r%i^n\w3. \yPaladyn^t\wLevel: \r%i^n\w4. \yZabojca^t\wLevel: \r%i^n\w5. \yNekromanta^t\wLevel: \r%i^n\w6. \yBarbarzynca^t\wLevel: \r%i^n\w7. \yNinja^t\wLevel: \r%i^n\w8. \yLowca^t\wLevel: \r%i^n^n\r9. \wWstecz",player_class_lvl[id][1],player_class_lvl[id][2],player_class_lvl[id][3],player_class_lvl[id][4],player_class_lvl[id][5],player_class_lvl[id][6],player_class_lvl[id][7],player_class_lvl[id][8])
}
new keyspiata
keyspiata = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)
show_menu(id, keyspiata, text3, -1, "Lok")
}
public PokazMeni(id, key)
{
/* Menu:
* Wybierz klase:
* 1:Mag
* 2:Mnich
* 3:Paladyn
* 4:Zabojca
* 5:Nekromanta
* 6:Barbarzynca
* 7:Ninja
* 8:Lowca
* 9:Wstecz
*/
new lx[17] // <-- tutaj wpisz liczbę swoich klas + 1(none)
g_haskit[id] = 0
switch(key)
{
case 0:
{
player_class[id] = Mag
LoadXP(id, player_class[id])
}
case 1:
{
player_class[id] = Mnich
LoadXP(id, player_class[id])
}
case 2:
{
player_class[id] = Paladyn
LoadXP(id, player_class[id])
}
case 3:
{
player_class[id] = Zabojca
LoadXP(id, player_class[id])
}
case 4:
{
player_class[id] = Nekromanta
g_haskit[id] = 1
LoadXP(id, player_class[id])
}
case 5:
{
player_class[id] = Barbarzynca
LoadXP(id, player_class[id])
}
case 6:
{
player_class[id] = Ninja
LoadXP(id, player_class[id])
}
case 7:
{
player_class[id] = Hunter
g_GrenadeTrap[id] = 1
LoadXP(id, player_class[id])
}
case 8:
{
select_class(id,lx)
}
}
CurWeapon(id)
give_knife(id)
return PLUGIN_HANDLED
}
public ShowKlasy(id,lx[]) {
new text2[512]
asked_klass[id]=0
format(text2, 511,"\yPotwory: ^n\w1. \yklasa1^t\wLevel: \r%i^n\w2. \yklasa2^t\wLevel: \r%i^n\w3. \yklasa3^t\wLevel: \r%i^n\w4. \yklasa4^t\wLevel: \r%i^n\w5. \yklasa5^t\wLevel: \r%i^n\w6. \yklasa6^t\wLevel: \r%i^n\w7. \yklasa7^t\wLevel: \r%i^n\w8. \yklasa8^t\wLevel: \r%i^n^n\r9. \wWstecz",player_class_lvl[id][9],player_class_lvl[id][10],player_class_lvl[id][11],player_class_lvl[id][12],player_class_lvl[id][13],player_class_lvl[id][14],player_class_lvl[id][15],player_class_lvl[id][16])
new szosta
szosta = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)
show_menu(id, szosta,text2, -1, "Klasy")
}
public PressedKlasy(id, key) {
/* Menu:
* Wybierz klase:
* 1:klasa1
* 2:klasa2
* 3:klasa3
* 4:klasa4
* 5:klasa5
* 6:klasa6
* 7:klasa7
* 8:klasa8
* 9:Wstecz
*/
new lx[17] // <-- tutaj wpisz liczbę swoich klas + 1(none)
g_haskit[id] = 0
switch (key) {
case 0:
{
///Tu daj kod do klasy!
}
case 1:
{
///Tu daj kod do klasy!
}
case 2:
{
///Tu daj kod do klasy!
}
case 3:
{
///Tu daj kod do klasy!
}
case 4:
{
///Tu daj kod do klasy!
}
case 5:
{
///Tu daj kod do klasy!
}
case 6:
{
///Tu daj kod do klasy!
}
case 7:
{
///Tu daj kod do klasy!
}
case 8:
{
select_class(id,lx)
}
}
CurWeapon(id)
give_knife(id)
return PLUGIN_HANDLED
}
Wszelkie problemy i pytania związane z tym pytaniem proszę zamieszcząć tutaj.
To mój pierwszy poradnik, więc proszę nie być zbytnio surowym.
Z podrowieniami, MaDaFaKa
Użytkownik MaDaFaKa edytował ten post 03.10.2010 14:10
sebul
28.09.2010
Powinno być chyba tak:Następnie szukamy public'a select_class(id,lx[]) i zamieniamy go na ten kodzik poniżej:
;]Następnie szukamy public'a select_class(id,lx[]) i public select_class_menu(id, key), następnie zamieniamy go na ten kodzik poniżej:
Użytkownik sebul edytował ten post 28.09.2010 18:18
MaDaFaKa 28.09.2010
To nie robi różnicy Kto ma to ogarnąć to i tak ogarnie, ale dzięki za przypomnienie.
Dodano 28 wrzesień 2010 - 18:25:
EDIT:
Proszę admina o poprawienie treści tematu na to, co napisał Sebul, bo ja nie mogę(aczkolwiek nie wiem dlaczego) edytować tematu.
Dodano 28 wrzesień 2010 - 18:25:
EDIT:
Proszę admina o poprawienie treści tematu na to, co napisał Sebul, bo ja nie mogę(aczkolwiek nie wiem dlaczego) edytować tematu.
DarkGL
28.09.2010
traga traga traga ! żadnej dynamiczności dodawanie frakcji powinno się ograniczać tylko do dodawania nazwy frakcji enum i ustalanie jakie klasy są w niej także mi ten kod się niepodoba
sebul
28.09.2010
Welcome to the AMX Mod X 1.8.1-300 Compiler. Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team Error: Array index out of bounds (variable "player_class_lvl") on line 4709 1 Error. Could not locate output file C:\Documents and Settings\user\Pulpit\dbmod_5.9l.amx (compile failed).Ehhh... coś nie tak jest jeszcze w dodatku ;/
A nie... już wiem ocb, mój błąd ;]
Użytkownik sebul edytował ten post 28.09.2010 18:33
Weed
29.09.2010
Sebul sprobuj:
A ten kod dziala na pewno? a define keys jakie dodales?
Użytkownik Weed edytował ten post 29.09.2010 14:33
new player_class_lvl[33][20]
A ten kod dziala na pewno? a define keys jakie dodales?
Użytkownik Weed edytował ten post 29.09.2010 14:33
MaDaFaKa 29.09.2010
Sebul już napisał, że mu działa i to była Jego pomyłka. Co do kodu, to nie ma w nim błędów i działa bez problemów.
W kodzie nie ma definiów, ponieważ keys'y tworze w samym public'u.
Użytkownik MaDaFaKa edytował ten post 29.09.2010 16:02
W kodzie nie ma definiów, ponieważ keys'y tworze w samym public'u.
Użytkownik MaDaFaKa edytował ten post 29.09.2010 16:02
PlaCCek
01.10.2010
Error: Array index out of bounds (variable "player_class_lvl") on line 4733 1 Error. Could not locate output file C:\Documents and Settings\user\Pulpit\dbmod_5.9l.amx (compile failed).
Mi również wyskoczył ten błąd, lecz nie wiem jak to poprawić.
O to ta linijka w której coś nie gra.
format(text2, 511,"\yPotwory: ^n\w1. \yklasa1^t\wLevel: \r%i^n\w2. \yklasa2^t\wLevel: \r%i^n\w3. \yklasa3^t\wLevel: \r%i^n\w4. \yklasa4^t\wLevel: \r%i^n\w5. \yklasa5^t\wLevel: \r%i^n\w6. \yklasa6^t\wLevel: \r%i^n\w7. \yklasa7^t\wLevel: \r%i^n\w8. \yklasa8^t\wLevel: \r%i^n^n\r9. \wWstecz",player_class_lvl[id][9],player_class_lvl[id][10],player_class_lvl[id][11],player_class_lvl[id][12],player_class_lvl[id][13],player_class_lvl[id][14],player_class_lvl[id][15],player_class_lvl[id][16])
dRewNoo 02.10.2010
Mam ten sam błąd co placek... MaDaFaKa możesz mi to wyjaśnić w co w tym źle??
Weed
02.10.2010
jak nie rozumiecie najprostrzych rzeczy to to zostawcie...;] nowosc, nowosc... zaraz all bd to miec i nowosc bedzi estare menu;P
MaDaFaKa 02.10.2010
Zadeklarowana zmienna ma zbyt mały rozmiar lub błędnie próbujesz się odwołać do zbyt dużego elementu.
Zamień w swoim .sma:
Na:
Ta linijka znajduje się prosto pod tabelką exp'a i nad:
Zamień w swoim .sma:
new player_class_lvl[33][9]
Na:
new player_class_lvl[33][17]
Ta linijka znajduje się prosto pod tabelką exp'a i nad:
new player_class_lvl_save[33]
zbyszeq
04.10.2010
Madafaka - jak będziesz mieć czas bardzo Cię proszę abyś zrobił poradnik na 3 rodzaje klas. Ponieważ gdy ja zrobiłem 3 rodzaje klas to na 3 było wszystko dobrze lecz gdy się dawało np 1: to klasa się wybierała jak w 2 rodzaju klas.
Ale oczywiscie reput dla Cb.
Pozdrawiam i czekam.
Ale oczywiscie reput dla Cb.
Pozdrawiam i czekam.
Weed
04.10.2010
przeciez to jest proste-.- kopiuj wklej... i zmien tylko niektore nazwy... omg;| nie rozumiesz nie rob...
Pawex
04.10.2010
Weed nie badz taki kozaczek... Moze oni sa nowi i tego jeszcze nie ogarniaja?
I zrobcie cos takiego:
I tam nizej:
Cos takiego :}
EDIT: Nie dzialaly mi spoilery.
Użytkownik Pawex edytował ten post 08.10.2010 20:50
Spoiler
I zrobcie cos takiego:
Spoiler
I tam nizej:
Spoiler
Cos takiego :}
EDIT: Nie dzialaly mi spoilery.
Użytkownik Pawex edytował ten post 08.10.2010 20:50
Death_Player
05.10.2010
Czy moglibyście mi pomóc podczas kompilacji
Error: Array index out of bounds (variable "player_class_lvl") on line 4758
wszystko jest ustawione na 10 i 9 z klasami
Pilnie proszę o pomoc !
Dodano 05 październik 2010 - 16:39:
no ludzie zlitujcie się i pomóżcie!
Dodano 05 październik 2010 - 17:17:
dbra sam se dalem rade <gosh>
Użytkownik Death_Player edytował ten post 05.10.2010 09:35
Error: Array index out of bounds (variable "player_class_lvl") on line 4758
wszystko jest ustawione na 10 i 9 z klasami
Pilnie proszę o pomoc !
Dodano 05 październik 2010 - 16:39:
no ludzie zlitujcie się i pomóżcie!
Dodano 05 październik 2010 - 17:17:
dbra sam se dalem rade <gosh>
Załączone pliki
Użytkownik Death_Player edytował ten post 05.10.2010 09:35
Nenczoks 09.10.2010
case 1: { ///Tu daj kod do klasy! } case 2: { ///Tu daj kod do klasy! } case 3: { ///Tu daj kod do klasy! } case 4: { ///Tu daj kod do klasy! } case 5: { ///Tu daj kod do klasy! } case 6: { ///Tu daj kod do klasy! } case 7: { ///Tu daj kod do klasy! } case 8:
Bo żeś tutaj klas nie dodał...
szczepaneto 10.10.2010
all sweet gdy by nie to że po pewnym czasie nie pojawia się menu pograliśmy z 4 min potem jak ktoś wbił to po wpisaniu klasy reconectach różnych sposobach menu się nie pojawia o co kaman ?
Edit : Sory już all działa dzięki Ci bardzo
Dodano 11 październik 2010 - 18:04:
niestety pojawił się problem
Użytkownik szczepaneto edytował ten post 10.10.2010 19:12
Edit : Sory już all działa dzięki Ci bardzo
Dodano 11 październik 2010 - 18:04:
niestety pojawił się problem
L 10/11/2010 - 19:01:33: [AMXX] Run time error 10: native error (native "get_user_attacker") L 10/11/2010 - 19:01:33: [AMXX] [0] text3p1Uqk.sma::on_damage (line 27) L 10/11/2010 - 19:01:48: Invalid player id 0 L 10/11/2010 - 19:01:48: [AMXX] Displaying debug trace (plugin "bulletdamage.amxx") L 10/11/2010 - 19:01:48: [AMXX] Run time error 10: native error (native "get_user_attacker") L 10/11/2010 - 19:01:48: [AMXX] [0] text3p1Uqk.sma::on_damage (line 27) L 10/11/2010 - 19:03:13: [MySQL] Thread worker was unable to start. L 10/11/2010 - 19:03:13: [AMXX] Displaying debug trace (plugin "dbmod_5.9l.amxx") L 10/11/2010 - 19:03:13: [AMXX] Run time error 10: native error (native "SQL_ThreadQuery") L 10/11/2010 - 19:03:13: [AMXX] [0] dbmod_5.9l.sma::create_klass (line 719) L 10/11/2010 - 19:03:13: [AMXX] [1] dbmod_5.9l.sma::SelectHandle (line 817) L 10/11/2010 - 19:03:13: [MySQL] Thread worker was unable to start. L 10/11/2010 - 19:03:13: [AMXX] Displaying debug trace (plugin "dbmod_5.9l.amxx") L 10/11/2010 - 19:03:13: [AMXX] Run time error 10: native error (native "SQL_ThreadQuery") L 10/11/2010 - 19:03:13: [AMXX] [0] dbmod_5.9l.sma::create_klass (line 719) L 10/11/2010 - 19:03:13: [AMXX] [1] dbmod_5.9l.sma::SelectHandle (line 817) L 10/11/2010 - 19:08:52: Start of error session. L 10/11/2010 - 19:08:52: Info (map "de_dust2") (file "addons/amxmodx/logs/error_20101011.log") L 10/11/2010 - 19:08:52: Invalid player id 0 L 10/11/2010 - 19:08:52: [AMXX] Displaying debug trace (plugin "bulletdamage.amxx") L 10/11/2010 - 19:08:52: [AMXX] Run time error 10: native error (native "get_user_attacker") L 10/11/2010 - 19:08:52: [AMXX] [0] text3p1Uqk.sma::on_damage (line 27) L 10/11/2010 - 19:20:00: [MySQL] Thread worker was unable to start. L 10/11/2010 - 19:20:00: [AMXX] Displaying debug trace (plugin "dbmod_5.9l.amxx") L 10/11/2010 - 19:20:00: [AMXX] Run time error 10: native error (native "SQL_ThreadQuery") L 10/11/2010 - 19:20:00: [AMXX] [0] dbmod_5.9l.sma::create_klass (line 719) L 10/11/2010 - 19:20:00: [AMXX] [1] dbmod_5.9l.sma::SelectHandle (line 817)proszę o pomoc ;/
Użytkownik szczepaneto edytował ten post 10.10.2010 19:12