←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

A może tak podklasy?

Zablokowany

  • +
  • -
remake - zdjęcie remake 09.08.2011

Witam wszystkich, czy da się stworzyć podklasy do Diablo Moda? Np. gram Magiem, po wbiciu 20lvla zmienia mi się nazwa na Mrocznego Maga i dochodzi mi dodatkowa moc. W oparciu o przykład podany przeze mnie, może można by było stworzyć nową klasę Mroczny Mag która będzie w swoim case posiadała warunek, że uaktywni się jeżeli dany gracz gracz będzie posiadał Maga lvl 20? Ja tak to widzę, może wyprowadzicie mnie z błędu oraz naprowadzicie mnie na dobrą drogę.
Odpowiedz

  • +
  • -
Gh0st - zdjęcie Gh0st 09.08.2011

Da się tak zrobić jak ty mówisz :>
Odpowiedz

  • +
  • -
remake - zdjęcie remake 09.08.2011

Da się tak zrobić jak ty mówisz :>


Skomplikowany kod by to był czy ogranicza się to wszystko do dodania warunku w case klasy?
Odpowiedz

M@nkovsky - zdjęcie M@nkovsky 09.08.2011

Nie jestem żadnym specem , ale mógłbyś zrobić publica z tym ,że (załóżmy) If player_class = mag <20
i tu jakaś zmiana nazwy .Później byś wkleił tego publica do klasy Maga i może coś by chwytało, ale nie wiem czy to by się nie kłóciło z nazwami nadanymi w enum


Jeśli się mylę proszę mnie nie krytykować; )
Odpowiedz

  • +
  • -
remake - zdjęcie remake 09.08.2011

Nie jestem żadnym specem , ale mógłbyś zrobić publica z tym ,że (załóżmy) If player_class = mag <20
i tu jakaś zmiana nazwy .Później byś wkleił tego publica do klasy Maga i może coś by chwytało, ale nie wiem czy to by się nie kłóciło z nazwami nadanymi w enum


Jeśli się mylę proszę mnie nie krytykować; )


Ja myślę, że trzeba by było dodać prawie wszystko, tak jakby się robiło nową klasę tylko nie dodawać jej do menu. Oraz w case tej nowej klasy dać ten warunek, że jeżeli gracz będzie miał Maga 20lvl to uaktywni się ta klasa Mroczny Mag??
Odpowiedz

Dwdov - zdjęcie Dwdov 09.08.2011

Nowa tablica z nazwami klas + np. jakiś boolean który daje false/true czy dana klasa ma awans i ot cała filozofia.
Odpowiedz

  • +
  • -
remake - zdjęcie remake 09.08.2011

Moja propozycja nie byłaby prostsza?
Odpowiedz

  • +
  • -
Onyke - zdjęcie Onyke 09.08.2011

Ewolucje - AMXX.pl: Support AMX Mod X

Ktoś coś tam próbował robić ale czy to działa to nie wiem bo dla mnie to bez sensu ;d
Odpowiedz

Dwdov - zdjęcie Dwdov 09.08.2011

Moja propozycja nie byłaby prostsza?

Po co robić nowe klasy, skoro można dodać tylko nazwy, które zmieniają się w zależności od tego czy gracz na danej klasie ma awans czy nie.
Odpowiedz

  • +
  • -
remake - zdjęcie remake 11.08.2011

Ewolucje - AMXX.pl: Support AMX Mod X

Ktoś coś tam próbował robić ale czy to działa to nie wiem bo dla mnie to bez sensu ;d


Faktycznie bez sensu, bo nie działa... Próbowałem parę sposobów, żeby zrobić te podklasy czy coś w tym stylu ale z niepowodzeniem.

A może działało by coś takiego?:

case 0: 
{
if(player_lvl[id] > 40 && player_class[id] == Mag)
{
set_hudmessage(255, 255, 255, -1.0, 0.25, 0, 3.0, 2.0, 0.2, 0.3, 5)
show_hudmessage(id, "Ewoluowales w Arcymaga!")
Race[player_class[id] == Mag] = Arcymag
}
else
player_class[id] = Mag
}

Użytkownik remake edytował ten post 11.08.2011 18:28
Odpowiedz

Zkont?! - zdjęcie Zkont?! 11.08.2011

Nowa tablica z nazwami klas + np. jakiś boolean który daje false/true czy dana klasa ma awans i ot cała filozofia.


Ten gość mówi z Was wszystkich najbardziej z sensem. Z jego wypowiedzi zbędna jest tylko zmienna boolean, która ustala true/false.

Moim algorytmem na zrobienie tego jest:

1. Utworzenie enum'a, który trzyma dane o ewolucjach (zrobione na zasadzie default'owych klas). Ewentualnie dołączenie awansowanych klas do standardowego.
2. Utworzenie public'a, który trzyma informacje o zmianach(tj. 'gracz ewoluuje - TAK, NIE').
3. Edycja 'select_class_menu', tak aby był w nim odpowiedni warunek if przy awansie.
4. Ugryź się w język. ;]

PS. Co do postu wyżej. Polecam korzystanie z operatorów warunkowych, gdyż zwykła metoda - if+else, schodzi na psy ^^

EDITED:

Możecie zawsze skorzystać z tego linku:
[CoD Nowy] Awanse klas
Użytkownik Zkont?! edytował ten post 11.08.2011 19:14
Odpowiedz

Dwdov - zdjęcie Dwdov 11.08.2011

Ja podałem najprostrzy moim zdaniem sposób, a nie najlepszy. W sumie racja boolean nie jest potrzebny, ale to moim zdaniem nie robi wielkiej różnicy czy raz sobie walniemy i będziemy trzymać w pamięci czy wołać ciągle o sprawdzenie. Takie coś wystarczy jeżeli awans każdej klasy jest na tym samym poziomie.

public bool:has_advance( id )
return gPlayerLevel[id] > 50 ? true : false

Jeżeli nie to

new const gLevelToAdvance[]
{
30,
50,
21,
40,
50,
34,
90
}
public bool:has_advance( id )
return gPlayerLevel[id] > gLevelToAdvance[gPlayerClass[id]] ? true : false
i tyle.
Innego pomysłu nie mam.


Odpowiedz

  • +
  • -
remake - zdjęcie remake 11.08.2011

Próbowałem zrobić coś takiego ale nie wyszło:

Pod
new race_heal[9] = { 100,95,150,130,100,90,110,170,120 }

Dodałem
new Evo[9][33] = {"None", "Mroczny Mag", "Druid", "Mroczny Paladyn", "Mroczny Zabojca", "Mroczny Nekromanta", "Mroczny Barbarzynca", "Mroczny Ninja", "Mroczny Lowca"}
new ewolucja[33]

W
public Give_Xp(id,amount)

Dodałem
if(player_lvl[id]==40)
evolution(id)

W
public write_hud(id)

Pod
last_update_perc[id] = perc

Dodałem
if(ewolucja[id]==1)
set_hudmessage(255, 255, 255, 0.03, 0.20, 0, 6.0, 1.0)
show_hudmessage(id, "Zycie: %i^nKlasa: %s^nPoziom: %i (%0.0f%s)^nPrzedmiot: %s^nWytrzymalosc: %i",get_user_health(id), Evo[player_class[id]], player_lvl[id], perc,"%%", player_item_name[id],item_durability[id])

Oraz na końcu pluginy dodałem
public evolution(id)
{
ewolucja[id]=1
set_hudmessage(60, 200, 25, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2)
show_hudmessage(id, "Ewoluowałeś w %s'a ", Evo[player_class[id]])
}
Odpowiedz

  • +
  • -
Stachuu :D ?? - zdjęcie Stachuu :D ?? 11.08.2011

ewolucja[id] zapisujesz gdzieś wg sql ?
Odpowiedz

  • +
  • -
remake - zdjęcie remake 11.08.2011

ewolucja[id] zapisujesz gdzieś wg sql ?


Nie, ja robię tylko tak jak podałem wyżej, dopiero zaczynam przygodę z PAWN'em więc wszystkiego nie wiem.

Dodano 17 sierpień 2011 - 20:28:
??
Odpowiedz
Zablokowany