←  Prośby o modyfikacje silników/klas/perków

AMXX.pl: Support AMX Mod X i SourceMod

»

Silnik
Mała zmiana w silniku - Cod Awanse klas.

  • +
  • -
question? - zdjęcie question? 29.12.2013

Prosiłbym o poradę jak zmienić rejestrację awansu. Chciałbym by klasa awansowała np. od 500lvl i po awansie klasa miałby statystyki i moce z klasy Ulepszonej natomiast LVL szedł by dalej czyli 501, 502 itp. Teraz mam zrobione, że klasa po awansie startuje znów z 1 lvla. Z góry dziękuję za pomoc.

public ZarejestrujAwans(plugin, params)
{
	if(params != 9)
		return PLUGIN_CONTINUE;
	
	if(++ilosc_klas > MAX_ILOSC_KLAS)
		return -1;
	
	pluginy_klas[ilosc_klas] = plugin;
	
	new awans_z = get_param(1);
	awansuje_do[awans_z] = ilosc_klas;
	awansuje_z[ilosc_klas] = awans_z;
	ilosc_awansow++;
	awanse[ilosc_awansow][1] = ilosc_klas;
	awanse[ilosc_awansow][0] = awans_z;
	awanse[ilosc_awansow][2] = get_param(2);
	get_string(3, nazwy_klas[ilosc_klas], MAX_WIELKOSC_NAZWY);
	get_string(4, opisy_klas[ilosc_klas], MAX_WIELKOSC_OPISU);
	
	bronie_klasy[ilosc_klas] = get_param(5);
	zdrowie_klas[ilosc_klas] = get_param(6);
	kondycja_klas[ilosc_klas] = get_param(7);
	inteligencja_klas[ilosc_klas] = get_param(8);
	wytrzymalosc_klas[ilosc_klas] = get_param(9);
	for(new i=0;i<klasid;i++){
		if(equali(nazwy_klas[ilosc_klas],nazwa_klasy[i])){
			frakcja_klas[ilosc_klas] = nazwa_frakcji[i];
		}
	}


	return ilosc_klas;
}
Odpowiedz

  • +
  • -
O'Zone - zdjęcie O'Zone 29.12.2013

Zajrzyj do poradnika o dodaniu awansów: http://amxx.pl/topic...63-awanse-klas/, a dokładniej na fragment pod "Jeżeli chcesz, aby na nową klasę przechodził poziom, exp, statystyki itd., zastąp w/w funkcję tą" :)

Odpowiedz

  • +
  • -
question? - zdjęcie question? 29.12.2013

Poradnik "przestudiowałem" nie ma tam informacji tych których jas potrzebuje. NIE chcę by przechodizło wszystko. Potrzebuję tylko by level szedł dalej nie powracał znów do 1.

Odpowiedz

  • +
  • -
O'Zone - zdjęcie O'Zone 29.12.2013

Wystarczy drobna korekta podanej tam funkcji. Nie wszystko musi być zawsze podane na tacę, wystarczy trochę wysilić szare komórki :)

if(awansuje_do[klasa_gracza[id]])
		{
				if(poziom_gracza[id] >= awanse[ZnajdzAwans(klasa_gracza[id], awansuje_do[klasa_gracza[id]])][2])
				{
						set_hudmessage(212, 255, 85, 0.31, 0.32, 0, 6.0, 5.0);
						ShowSyncHudMsg(id, SyncHudObj2,"Osiagajac poziom %i, awansowales do klasy %s!", poziom_gracza[id], nazwy_klas[awansuje_do[klasa_gracza[id]]]);
						new temp_exp = doswiadczenie_gracza[id], temp_lvl = poziom_gracza[id];
						nowa_klasa_gracza[id] = awansuje_do[klasa_gracza[id]];
						UstawNowaKlase(id);
						poziom_gracza[id] = temp_lvl;
						doswiadczenie_gracza[id] = temp_exp;
						punkty_gracza[id] = (poziom_gracza[id]-1)*2-inteligencja_gracza[id]-zdrowie_gracza[id]-wytrzymalosc_gracza[id]-kondycja_gracza[id];
						DajBronie(id);
						ZastosujAtrybuty(id);
						ZapiszDane(id);
				}
		}
Odpowiedz

  • +
  • -
question? - zdjęcie question? 29.12.2013

Dziękuje bardzo udało sie lvl idzie dalej nie wraca do 1, ale pojawił się kolejny problem: mogę rozdac pkt do statystyk te za ten 500lvl a chiałbym by znow klasa miała w każdej statystyce bazowe pkt....

Odpowiedz

  • +
  • -
O'Zone - zdjęcie O'Zone 30.12.2013

Logiczną rzeczą jest, że jeśli klasa ma określony poziom, to może także rozdać odpowiednie dla tego poziomu punkty. Można by to zmienić, ale wymaga to już większych modyfikacji w silniku.

Odpowiedz