Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Klasy -Samodzielne tworzenie


  • Zamknięty Temat jest zamknięty
11 odpowiedzi w tym temacie

#1 Itachi

    Pomocny

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:41
  • Imię:Lukasz
  • Lokalizacja:Warszawa
Offline

Napisano 06.06.2011 14:27

A więc, ostatnio mnie zaciekawił skrypting
Jednak nigdzie nie moge znależć poradnika, jak zrobić własną klasę która nie będzie miała nic wspólnego


Chodzi o to żeby wybrać klase i mieć do końca mapy, albo do momentu kiedy wpisze się x i żeby trzymało, a nie na jedną runde

Czyli poprostu klasa jak w Cod, Diablo Zombie o w ogóle

Można dać jakiś poradnik z jakiejs strony albo odpowiednie wycinki, ja szukalem w Diablo Oraz CoD'zie lecz tam jest za duzo tego i troche sie myli
Ciagle brakuje mi w tym elementu ktorego trudno pojac ;/

Bardzo dziekuje za każda pomoc
+ beda

Użytkownik Itachi edytował ten post 06.06.2011 14:29

  • +
  • -
  • 0

#2 JLB. Leo

    Profesjonalista

  • Zbanowany

Reputacja: 59
Pomocny

  • Postów:180
  • Imię:Paweł
  • Lokalizacja:Bielawa
Offline

Napisano 06.06.2011 15:32

po wyborze klasy ustawiasz w jakiejś zmiennej że gracz o tym i tym id ma taką i taką klasę (np. za pomocą tablicy)

i w evencie Roundstartowym ustawiasz klasę graczowi na podstawie tej zmiennej (lub tablicy)

#3 Itachi

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:41
  • Imię:Lukasz
  • Lokalizacja:Warszawa
Offline

Napisano 06.06.2011 15:51

Emmmm....


Jakos troche zrozumialem

Mam stworzyc tablice i event na poczatek rundy, jednak troche nie kumam

Umiem juz zrobic cos tam w amxx'ie lecz nie jestem tak zaawansowany, jednego nie pojmuje

Jak mam to zrobic? dla mnie logika amxx'a jest obca ...

Wiem jak zrobić zmienne, tylko nie wiem jak zapisac by logika Amxx'a to porzeczytala ...

ze co mam zrobic
public RoundStart(){
	for (new i=0; i < 33; i++){
		
		c_mine[i] = 0
		
		x_speed[i]=0
		
		plus_redirect[i] = 0
		
		plus_vampir[i] = 0
		
		plus_obrazenia[i] = 0
		
		losowe_itemy[i] = 0

		
		if(player_class[i] == Skeletal) {
			zmiana_skinu[i] = random_num(0,2)
			if(zmiana_skinu[i] == 1) {
				changeskin(i,0)
				ColorChat(i, TEAM_COLOR, "Wygladasz jak przeciwnik!")
			}
			else
			changeskin(i,1)
		}
		else
		zmiana_skinu[i] = 0
		
		if(player_class[i] == Bryzgacz){
			if(task_exists(i+537)){
				remove_task(i+537)
			}
			set_task(5.0, "hppp", i+537, _, _, "b")
		}
		
		if(player_class[i] == Nemesis)
		bc_jumpx[i] = 5
		else
		bc_jumpx[i] = 0
		
		
		if(player_class[i] == Rakanishu)
		odrodzenie[i] = 3
		else
		odrodzenie[i] = 0
		
		
		used_item[i] = false
		DemageTake1[i]=1
		count_jumps(i)
		give_knife(i)
		JumpsLeft[i]=JumpsMax[i]
		
		if(player_class[i] == Nekromanta) g_haskit[i]=1
		else g_haskit[i]=0
		
		golden_bulet[i]=0
		
		invisible_cast[i]=0
		niewidka[i] = 0
		
		ultra_armor[i]=0
		num_shild[i]=2+floatround(player_intelligence[i]/25.0,floatround_floor)
		
		set_renderchange(i)
		if(is_user_connected(i)&&player_item_id[i]==66)
		{
			changeskin(i,0) 
		}
	}
Widze tutaj tylko umiejetnosci
Nie widze nic do wczytywania klasy :/

Dodano 06 czerwiec 2011 - 16:36:
Moze inaczej


Rozumiem o co ci chodzi tylko jak to zrobic ^^

Proboawlem cos ale nic nie wychodzilo, nie wiem jak mam to zapisac ...

Użytkownik Itachi edytował ten post 06.06.2011 16:10

  • +
  • -
  • 0

#4 stepdub

    Profesjonalista

  • Użytkownik

Reputacja: 43
Pomocny

  • Postów:207
  • Lokalizacja:Kobyłka
Offline

Napisano 06.06.2011 16:44

a może menu zrób - np. zarejestruj komendę /klasa i stwórz menu z wyborem, a w case daj odnośniki do umiejętności
  • +
  • -
  • 0

#5 Itachi

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:41
  • Imię:Lukasz
  • Lokalizacja:Warszawa
Offline

Napisano 06.06.2011 16:48

To akurat umiem zrobić, tylko ze to sie nie trzyma, to jest tylko na raz :/

a nie trzyma

Użytkownik Itachi edytował ten post 06.06.2011 16:49

  • +
  • -
  • 0

#6 JLB. Leo

    Profesjonalista

  • Zbanowany

Reputacja: 59
Pomocny

  • Postów:180
  • Imię:Paweł
  • Lokalizacja:Bielawa
Offline

Napisano 07.06.2011 18:17

Widze tutaj tylko umiejetnosci
Nie widze nic do wczytywania klasy


bo diablo działa na innej zasadzie

zrób tak, że po wybraniu klasy jakaś zmienna zwieksza się o jeden, ale dla każdej innej klasy jest to inna zmienna. Tzn jak gość wybierze Palladyn'a to się zwieksza zmienna "palek[id]" a jak wybierze Barbarzynce to się zwiększa "Barba[id]"
(patrz poniżej to co Svizz napisał)

i w evencie początku rundy ( Eventy - AMXX.pl: Support AMX Mod X ) sprawdz która zmienna jest więksa od zera i na tej podstawie wczytaj klasę :)

Użytkownik JLB. Leo edytował ten post 07.06.2011 19:14


#7 Svizz

    Zaawansowany

  • Użytkownik

Reputacja: 33
Życzliwy

  • Postów:142
  • GG:
  • Imię:Svizz
  • Lokalizacja:Polska :)
Offline

Napisano 07.06.2011 19:08

Zrób tablicę
klasa_gracza[33]
Później daj menu i co gracz wybierze, to np.:
klasa_gracza[id] = TWOJA_KLASA
Następnie w plugin_init zarejestruj event'a z hamsanwich:
RegisterHam(Ham_Spawn, "player", "HamSpawn")
następnie w HamSpawn(id):
if(klasa_gracza[id] == TWOJA_KLASA)
{
   // co dostaje ta klasa na poczatku rundy, np:
   set_user_footsteps(id, 0) // klasa ma ciche chodzenie
   set_user_health(id, 150) // ustawia hp gracza na 150
}
if(klasa_gracza[id] == TWOJA_KLASA2)
{
   set_user_footsteps(id, 1) // klasa ma odglos chodzenia, zeby nie bugowac
   give_item(id, "weapon_m4a1") // klasa dostaje M4A1
}
// etc, można to zrobić optymalniej, ze na poczatku ustawia wszystkim standardowe wartosci speed, footsteps, etc., a dopiero pozniej w zaleznosci od klasy, ale na 2 klasy wystarczy tak ;p

Użytkownik Svizz edytował ten post 08.06.2011 07:12

  • +
  • -
  • 0

#8 JLB. Leo

    Profesjonalista

  • Zbanowany

Reputacja: 59
Pomocny

  • Postów:180
  • Imię:Paweł
  • Lokalizacja:Bielawa
Offline

Napisano 07.06.2011 19:14

if(klasa_gracza[id] == TWOJA_KLASA)
{
// co dostaje ta klasa na poczatku rundy, np:
set_user_footsteps(id,0) // klasa ma ciche chodzenie
set_user_health(id,150) // ustawia hp gracza na 150
}
if(klasa_gracza[id] == TWOJA_KLASA2)
{
set_user_footsteps(id,1) // klasa ma odglos chodzenia, zeby nie bugowac
give_item(id,CSW_M4A1) // klasa dostaje M4A1
}
// etc, można to zrobić optymalniej, ze na poczatku ustawia wszystkim standardowe wartosci speed, footsteps, etc., a dopiero pozniej w zaleznosci od klasy, ale na 2 klasy wystarczy tak ;P


głupota, jeżeli już to else if a poza tym najlepiej w switchu

#9 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 08.06.2011 00:44

if(klasa_gracza[id] == TWOJA_KLASA)
{
// co dostaje ta klasa na poczatku rundy, np:
set_user_footsteps(id,0) // klasa ma ciche chodzenie
set_user_health(id,150) // ustawia hp gracza na 150
}
if(klasa_gracza[id] == TWOJA_KLASA2)
{
set_user_footsteps(id,1) // klasa ma odglos chodzenia, zeby nie bugowac
give_item(id,CSW_M4A1) // klasa dostaje M4A1
}
// etc, można to zrobić optymalniej, ze na poczatku ustawia wszystkim standardowe wartosci speed, footsteps, etc., a dopiero pozniej w zaleznosci od klasy, ale na 2 klasy wystarczy tak ;P


głupota, jeżeli już to else if a poza tym najlepiej w switchu

Ale czemu głupota? Zamysł jest jak najbardziej dobry, do tego nie musi być koniecznie "else if", lecz jednak lepiej to napisać z "else if", lub też za pomocą "switch" tak jak napisałeś.

Użytkownik sebul edytował ten post 08.06.2011 00:45

  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#10 Svizz

    Zaawansowany

  • Użytkownik

Reputacja: 33
Życzliwy

  • Postów:142
  • GG:
  • Imię:Svizz
  • Lokalizacja:Polska :)
Offline

Napisano 08.06.2011 07:11

// etc, można to zrobić optymalniej


Niekoniecznie trzeba tu używać switch, bo tak jak napisałem - są tu dwie klasy. Przy większej ilości można to zrobić tak:
   set_user_footsteps(id, 1)
   set_user_gravity(id, 1.0)               //  ustawia standardowe wartosci wszystkim na poczatek
   strip_user_weapons(id)                                     
   set_user_rendering(id, kRenderFxNone, 0,0,0, kRenderTransAlpha, 255) // pelna widocznosc

   switch(klasa_gracza[id])
   {
      case DzikiSnajper:
      {
      give_item(id, "weapon_awp") // daje graczowi AWP, we wczesniejszym poscie sie pomylilem bo podalem nazwe CSW_*
      give_item(id, "weapon_deagle")
      set_user_gravity(id, 1.2) // snajper ciężki to i gravity wysoka
      }
      case Tajniak:
      {
      give_item(id, "weapon_tmp")
      give_item(id, "weapon_p90") // daje mu ten cichy i slaby pistolecik
      set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 50) // malo widzialny (50 z 255)
      }
   }

// itd. dalej klasy

  • +
  • -
  • 0

#11 JLB. Leo

    Profesjonalista

  • Zbanowany

Reputacja: 59
Pomocny

  • Postów:180
  • Imię:Paweł
  • Lokalizacja:Bielawa
Offline

Napisano 08.06.2011 14:14

if(klasa_gracza[id] == TWOJA_KLASA)
{
// co dostaje ta klasa na poczatku rundy, np:
set_user_footsteps(id,0) // klasa ma ciche chodzenie
set_user_health(id,150) // ustawia hp gracza na 150
}
if(klasa_gracza[id] == TWOJA_KLASA2)
{
set_user_footsteps(id,1) // klasa ma odglos chodzenia, zeby nie bugowac
give_item(id,CSW_M4A1) // klasa dostaje M4A1
}
// etc, można to zrobić optymalniej, ze na poczatku ustawia wszystkim standardowe wartosci speed, footsteps, etc., a dopiero pozniej w zaleznosci od klasy, ale na 2 klasy wystarczy tak ;P


głupota, jeżeli już to else if a poza tym najlepiej w switchu

Ale czemu głupota? Zamysł jest jak najbardziej dobry, do tego nie musi być koniecznie "else if", lecz jednak lepiej to napisać z "else if", lub też za pomocą "switch" tak jak napisałeś.


dla mnie jak kod nie jest optymalny to jest beznadziejny

switcha nie musisz robić na 2 klasy ale else if już warto

@down nie do ciebie to było, nie wtrącaj się

Użytkownik JLB. Leo edytował ten post 08.06.2011 16:03


#12 Svizz

    Zaawansowany

  • Użytkownik

Reputacja: 33
Życzliwy

  • Postów:142
  • GG:
  • Imię:Svizz
  • Lokalizacja:Polska :)
Offline

Napisano 08.06.2011 15:51

Niekoniecznie trzeba tu używać switch, bo tak jak napisałem - są tu dwie klasy. Przy większej ilości można to zrobić tak:


Umiesz czytać? Rozumowanie jak u wielbłąda...
  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych