←  Poradniki, Łatki oraz Pluginy

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Nowy
Dywizja CodMod

Zablokowany

UTeam - zdjęcie UTeam 09.06.2014

opis

Witam dzis do zaprezentowania mam swoj dosc stary kod lecz, ktory z powodzeniem zaszczepil sie na moim dawnym serwerze codmod.

Dywizje co to jest ?

To nie jest party,misje czy jakis quest.

Gracz dolaczajac do jednej z 6 dywizji(zaleznych od lvl) dostaje dodatkowy exp wtedy gdy partner z naszej dywizji zabije przeciwnika i odwrotnie.

Kazdy z danej dywizji jezeli jest zywy oczywiscie dostaje dodatkowy exp za zabicie.

 

instalacja

 

Pod:

new bool:freezetime = true;

Dodajemy:

new const nazwy_dywizji[][] = {"Brak", 
	"Dywizja I", //1
	"Dywizja II", //2
	"Dywizja III", //3
	"Dywizja IV", //4
	"Dywizja V", //5
	"Dywizja VI"
	
};
new const lvl_dywizji[] = {0,
	5,
	15,
	30,
	50,
	65,
	85
};

new dywizja_gracza[33];

Dalej w plugin_init() dodajemy:

register_clcmd("say /dywizja", "MenuDywizja");

Nastepnie szukamy public SmiercGraczaPost(id, attacker, shouldgib)

I w tej klamrze

if(get_user_team(id) != get_user_team(attacker) && klasa_gracza[attacker])
	{

na koncu dodajemy:

		new dywizja_doswiadczenie;
		
		for(new i=1;i<33;i++)
		{
			if(!is_user_alive(i))
				continue;
				
			if(attacker == i)
				continue;
			
			if(get_user_team(attacker) != get_user_team(i))
				continue;
			
			if(dywizja_gracza[attacker] == dywizja_gracza[i])
			{				
				if(dywizja_gracza[attacker] == 1) dywizja_doswiadczenie = 10;
				if(dywizja_gracza[attacker] == 2) dywizja_doswiadczenie = 30;
				if(dywizja_gracza[attacker] == 3) dywizja_doswiadczenie = 70;
				if(dywizja_gracza[attacker] == 4) dywizja_doswiadczenie = 150;
				if(dywizja_gracza[attacker] == 5) dywizja_doswiadczenie = 350;
				if(dywizja_gracza[attacker] == 6) dywizja_doswiadczenie = 800;
				
				//set_hudmessage(255, 212, 0, -1.0, 0.63, 1, 6.0, 4.0);
				//ShowSyncHudMsg(i, SyncHudObj4, "Dywizja +%i Expa", dywizja_doswiadczenie);
                                //client_print(i,print_chat,"Dywizja +%i Expa", dywizja_doswiadczenie);
                                // Powyzej znajduje sie kod na wyswietlenie informacji pierwsze 2 to hud a 3 linijka info na czacie poprzez usuniecie // odblokujemy wysylanie informacji o expie dywizji.
				doswiadczenie_gracza[i] += dywizja_doswiadczenie;
			}
			else
			{
				//set_hudmessage(255, 212, 0, -1.0, 0.63, 1, 6.0, 4.0);
				//ShowSyncHudMsg(attacker, SyncHudObj4, "Zaden gracz nie dolaczyl do Dywizji");
				//client_print(attacker,print_chat,"Zaden gracz nie dolaczyl do Dywizji");
                                // To samo co wyzej. Odblokowac wedlug uznania
				
			}
		}

@up

Gdy odblokujemy wysylanie wiadomosci w hud nalezy dodac kolejny kanal hud.

Spoiler

 

Szukamy public UsunUmiejetnosci(id) i na koncu dodajemy:

dywizja_gracza[id] = 0;

Pod koniec szukamy public PokazInformacje(id) i zamieniamy caly public na ten.

public PokazInformacje(id) 
{
	id -= ZADANIE_POKAZ_INFORMACJE;
	
	if(!is_user_connected(id))
	{
		remove_task(id+ZADANIE_POKAZ_INFORMACJE);
		return PLUGIN_CONTINUE;
	}
	
	if(!is_user_alive(id))
	{
		new target = pev(id, pev_iuser2);
		
		if(!target)
			return PLUGIN_CONTINUE;
		
		set_hudmessage(255, 255, 255, 0.6, -1.0, 0, 0.0, 0.3, 0.0, 0.0, 2);
		ShowSyncHudMsg(id, SyncHudObj, "Klasa: %s^nDywizja: %s^nDoswiadczenie: %i / %i^nPoziom: %i^nPerk: %s", nazwy_klas[klasa_gracza[target]], nazwy_dywizji[dywizja_gracza[target]],doswiadczenie_gracza[target], PobierzDoswiadczeniePoziomu(poziom_gracza[target]), poziom_gracza[target], nazwy_perkow[perk_gracza[target]]);
		return PLUGIN_CONTINUE;
	}
	
	set_hudmessage(188, 176, 44, 0.02, 0.23, 0, 0.0, 0.3, 0.0, 0.0);
	ShowSyncHudMsg(id, SyncHudObj, "[ Klasa:  %s ]^n[ Dywizja: %s ]^n[ Doswiadczenie: %i / %i ]^n[ Poziom: %i ]^n[ Perk: %s ]", nazwy_klas[klasa_gracza[id]], nazwy_dywizji[dywizja_gracza[id]], doswiadczenie_gracza[id], PobierzDoswiadczeniePoziomu(poziom_gracza[id]), poziom_gracza[id], nazwy_perkow[perk_gracza[id]]);
	
	return PLUGIN_CONTINUE;
}

Wyzej wersja jest dla zielonych.Jezeli ktos sie zna na pisaniu to wie co dodac i co zmienic jezeli nie chce podmieniac calego publica.

 

I na samym koncu moda dodajemy to.

public MenuDywizja(id)
{
	new menu=menu_create("Dywzija","Dywzija_handler");
	for(new i=1; i<sizeof nazwy_dywizji; i++)
		menu_additem(menu, nazwy_dywizji[i]);
	menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
	menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
	menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
	menu_display(id, menu);
}
public Dywzija_handler(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}
	switch(item)
	{
		case 0:
		{
			if(poziom_gracza[id] < 5)
				client_print(id,print_chat,"%s dostepna od %i Poziomu",nazwy_dywizji[item+1],lvl_dywizji[item+1]);
			else
			{
				client_print(id,print_chat,"Dolaczyles do %s",nazwy_dywizji[item+1]);
				dywizja_gracza[id] = 1
			}
			
		}
		case 1:
		{
			if(poziom_gracza[id] < 15)
				client_print(id,print_chat,"%s dostepna od %i Poziomu",nazwy_dywizji[item+1],lvl_dywizji[item+1]);
			else
			{
				client_print(id,print_chat,"Dolaczyles do %s",nazwy_dywizji[item+1]);
				dywizja_gracza[id] = 2
			}
		}
		case 2:
		{
			if(poziom_gracza[id] < 30)
				client_print(id,print_chat,"%s dostepna od %i Poziomu",nazwy_dywizji[item+1],lvl_dywizji[item+1]);
			else
			{
				client_print(id,print_chat,"Dolaczyles do %s",nazwy_dywizji[item+1]);
				dywizja_gracza[id] = 3
			}
		}
		case 3:
		{
			if(poziom_gracza[id] < 50)
				client_print(id,print_chat,"%s dostepna od %i Poziomu",nazwy_dywizji[item+1],lvl_dywizji[item+1]);
			else
			{
				client_print(id,print_chat,"Dolaczyles do %s",nazwy_dywizji[item+1]);
				dywizja_gracza[id] = 4
			}
		}
		case 4:
		{
			if(poziom_gracza[id] < 65)
				client_print(id,print_chat,"%s dostepna od %i Poziomu",nazwy_dywizji[item+1],lvl_dywizji[item+1]);
			else
			{
				client_print(id,print_chat,"Dolaczyles do %s",nazwy_dywizji[item+1]);
				dywizja_gracza[id] = 5
			}
		}
		case 5:
		{
			if(poziom_gracza[id] < 85)
				client_print(id,print_chat,"%s dostepna od %i Poziomu",nazwy_dywizji[item+1],lvl_dywizji[item+1]);
			else
			{
				client_print(id,print_chat,"Dolaczyles do %s",nazwy_dywizji[item+1]);
				dywizja_gracza[id] = 6
			}
		}
		
	}
	return PLUGIN_CONTINUE;
}

W razie jakis problemow badz ulepszenia,dodania,zmienienia cos w kodzie proszę pisac gdyz ten kod wycinal ze swojego codmoda.

 

ps. Poradnik zostal napisany przeze mnie na odpracowania warna :)

Odpowiedz

  • +
  • -
Ventri - zdjęcie Ventri 09.06.2014

Przyda się :) +

Odpowiedz

  • +
  • -
dredek - zdjęcie dredek 09.06.2014

Ciekawe ciekawe :)

Leci +

 

 

@edit

Możesz dodać do tego zapis dywizji...


Użytkownik dredek edytował ten post 09.06.2014 14:23
Odpowiedz

UTeam - zdjęcie UTeam 09.06.2014

Aktualnie nie mam czasu ale plusik za ciekawy pomysl gdyz to sie przyda. Tak dla leniwych :P
Odpowiedz

  • +
  • -
camelovy - zdjęcie camelovy 09.06.2014

nice +
Odpowiedz

  • +
  • -
ex0 - zdjęcie ex0 10.06.2014

Zapis przynależności do dywizji to moim zdaniem podstawa.

Ponadto zauważyłem, że po osiągnięciu pierwszego poziomu możliwości dołączenia odblokuje się nam nie tylko pierwszy ale stopień wyżej lub całokształt, to zauważyliśmy na dwóch różnych serwerach z moim kolegą.

Nie wiem czy to celowe, czy błąd w kodzie ale także mógłbyś nad tym zerknąć, bo bardziej ambitne osoby sobie z tym poradzą a jeżeli już robimy coś tu na forum to musimy się liczyć, że większość sobie nie poradzi ...

Odpowiedz

  • +
  • -
FunnyeRss - zdjęcie FunnyeRss 13.06.2014

Wgrałbyś mi to? Bo jak ja to wgrywam to od razu 17 errorów przy kompilacji.

 

Załączony plik  QTM_CodMod.sma   41,46 KB   77 Ilość pobrań

 

 

Odpowiedz

UTeam - zdjęcie UTeam 13.06.2014

proszę.

 

Załączony plik  QTM_CodMod.sma   45,58 KB   97 Ilość pobrań

Odpowiedz

Gryzon - zdjęcie Gryzon 13.06.2014

A pytanie po co SyncHudObj4 skoro do niczego nie zostało wykorzystane.

Odpowiedz

UTeam - zdjęcie UTeam 13.06.2014

Przeczytaj komentarze przy kodzie. Dałem wybór do odblokowania czy hud czy czat. A nie odblokowalem huda ponieważ nie wiem ile poszczególny użytkownik ma kanałów wykorzystanych w swoim cod modzie
Odpowiedz

UTeam - zdjęcie UTeam 18.06.2014

Tutaj macie skrocona wersje Dywizja_handler z wykorzystaniem tablicy z levelami (ta pierwsza wersje pisalem dawno i tylko dla siebie wiec nie dopieszczalem kodu).

public Dywzija_handler(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}
	switch(item)
	{
		case 0..5:
		{
			if(poziom_gracza[id] < lvl_dywizji[item+1])
				client_print(id,print_chat,"%s dostepna od %i Poziomu",nazwy_dywizji[item+1],lvl_dywizji[item+1]);
			else
			{
				client_print(id,print_chat,"Dolaczyles do %s",nazwy_dywizji[item+1]);
				dywizja_gracza[id] = item+1
			}
			
		}	
	}
	return PLUGIN_CONTINUE;
}
Odpowiedz

`izcoN - zdjęcie `izcoN 19.06.2014

Przetestuje u siebie i dam znać ;)

Odpowiedz

  • +
  • -
TSUBA - zdjęcie TSUBA 02.07.2014

Umiałby ktoś to przerobić że na przykład osiągamy 10 poziom dołączamy do dywizji numer 1 i po zmianie mapy nadal jesteśmy w tej dywizji? bo obecnie jest tak ze po dołączeniu i zmianie mapy na inną mamy Dywizja: Brak. Ewentualnie będę wdzięczny gdyby ktoś napisał jak to zmienić gdyż mam pewna koncepcje ulepszenia tego pluginu jednak nie potrafie sobie poradzić z tym kasowaniem dywizji po zmianie mapy.Z góry dzięki

Odpowiedz

  • +
  • -
ex0 - zdjęcie ex0 02.07.2014

Umiałby ktoś to przerobić że na przykład osiągamy 10 poziom dołączamy do dywizji numer 1 i po zmianie mapy nadal jesteśmy w tej dywizji? bo obecnie jest tak ze po dołączeniu i zmianie mapy na inną mamy Dywizja: Brak. Ewentualnie będę wdzięczny gdyby ktoś napisał jak to zmienić gdyż mam pewna koncepcje ulepszenia tego pluginu jednak nie potrafie sobie poradzić z tym kasowaniem dywizji po zmianie mapy.Z góry Dzięki

Zapis nVault lub SQL jak kto woli wystarczy dodać, a poziomy potrzebne do osiągnięcia dywizji już musisz dodać sam, analogicznie do tego co jest w .sma 

Odpowiedz

  • +
  • -
TSUBA - zdjęcie TSUBA 02.07.2014

Lost właśnie ja nie mam pojęcia jak dodać ten zapis nvault właśnie co do poziomów to ogarnę ale ten zapis dzięki któremu nie będzie po dołączeniu do drużyny i zmianie mapy widniał napis Dywizja: Brak...

Odpowiedz

rMentos - zdjęcie rMentos 05.07.2014

był by ktoś w stanie dodać zapis vault ?

Odpowiedz

  • +
  • -
Misiaczek ;c - zdjęcie Misiaczek ;c 06.07.2014

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Autor tematu zbanowany

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Odpowiedz
Zablokowany