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
 

jumanji - zdjęcie

jumanji

Rejestracja: 11.01.2011
Aktualnie: Nieaktywny
Poza forum Ostatnio: 03.10.2023 15:47
-----

#169833 Radar

Napisane przez CeLeS w 10.09.2010 17:53

Witam w tym tutku pokaze wam jak dodac radar pokazujacy wszystkich zywych graczy ;)

Zaczynamy
najpier dodajemy stale nad plugin_init

new const sound_radar[] = "radar.wav";
new g_msgHostageAdd, g_msgHostageDel, g_maxplayers;
new radar[33];

teraz w plugin_init na samym koncu dodajemy
g_msgHostageAdd = get_user_msgid("HostagePos");
	g_msgHostageDel = get_user_msgid("HostageK");
	g_maxplayers = get_maxplayers();
	for (new i = 1; i<=g_maxplayers;i++) radar[i] = false;	
	set_task (2.0,"radar_scan",_,_,_,"b");

w plugin_precache na koncu
precache_sound(sound_radar);

teraz funkcja odpowiedzialna za radar. Najlepiej na samym koncu pluginu dac
//Radar
public radar_scan()
{
	new PlayerCoords[3];
	new id;
	new Players[32];
	new i;
	new playerCount = 0;

	for (id=1; id<=g_maxplayers; id++)
	{
		if((!is_user_alive(id))||(!radar[id])) continue;
		
		if(get_players(Players, playerCount, "a") &&is_user_alive(id))
		{
		playerCount++; 
		}
		
		for (i=1;i<=playerCount;i++)
		{	
			get_user_origin(i, PlayerCoords)
		
			message_begin(MSG_ONE_UNRELIABLE, g_msgHostageAdd, {0,0,0}, id)
			write_byte(id)
			write_byte(i)		
			write_coord(PlayerCoords[0])
			write_coord(PlayerCoords[1])
			write_coord(PlayerCoords[2])
			message_end()
		
			message_begin(MSG_ONE_UNRELIABLE, g_msgHostageDel, {0,0,0}, id)
			write_byte(i)
			message_end()
		}
		emit_sound(id, CHAN_ITEM, sound_radar, 1.0, ATTN_NORM, 0, PITCH_NORM);
	}
}

Ok mamy radar to teraz wybieramy jak go ustawiamy ;)

Mozemy dac go jako przedmiot
wiec w nazwy_przedmiotow dopisujemy
"Radar"//29
i zapamietujemy na jakiej jest pozycji ( u mnie na 29 )

nastepnie opisy_przedmiotow
"Radar pokazuje wszystkich zywych graczy"

teraz musimy wywolac radar w przedmiocie

w public DajPrzedmiot dodajemy nowy case z numerem przedmiotu i
radar[id] = true;

np.
case 29:
			radar[id] = true;

teraz trzeba ustawic aby radar sie wylaczal po wyrzuceniu itemu

w public UsunPrzedmiot na koncu dodajemy
radar[id] = false;

mozemy takze zrobic postac np telegrafista
majaca radar

tworzymy klase wedlug innego tutka xD
nastepnie

w public Odrodzenie(id) po
case Rambo:
		{
			give_item(id, "weapon_famas");
			give_item(id, "weapon_elite");
			ilosc_skokow_gracza[id]++;
		}

tworzymy nowy case zatytulowany Telegrafista i wstawiamy radarek
case Telegrafista:
		{
			give_item(id, "weapon_deagle");
			radar[id] = true;
		}

teraz trzeba zrobic warunek w UsunPrzedmiot
przed
radar[id] = false;
dodajemy
if(klasa_gracza[id] == Telegrafista)
		radar[id] = true;
	else

pod
public Odrodzenie(id)
{
	if(!is_user_alive(id) || !is_user_connected(id))
		return PLUGIN_CONTINUE;
	
	if(nowa_klasa_gracza[id])
	{
		klasa_gracza[id] = nowa_klasa_gracza[id];
		nowa_klasa_gracza[id] = 0;
		strip_user_weapons(id);

dodajemy
radar[id] = false;

i to koniec ;)

Załączone pliki

  • Załączony plik  radar.wav   22,17 KB  541 Ilość pobrań

  • +
  • -
  • 11


#197962 Dodawanie frakcji

Napisane przez Lopez. w 20.12.2010 16:22

Pierwsze co robimy to dodajemy nową tablicę np. pod:
new const nazwy_klas[][] = {"Brak",
        "Snajper",
        "Komandos",
        "Strzelec wyborowy",
        "Obronca",
        "Medyk",
        "Wsparcie ogniowe",
        "Saper",
        "Demolitions",
        "Rusher",
        "Rambo (Klasa Premium)"
};

dodajemy

new const frakcje[][]={
        "Brak",
        "Polacy",
        "Rosjanie"
}


zawsze pierwsze musi być Brak potem po przecinkach podajemy nazwy frakcji po ostaniej frakcji przecinka nie ma ilość jest dowolna ale nie przesadzajmy bo potem będzie dużo roboty ;)

dobrze idziemy dalej

dodajemy

enum { NONE = 0,polacy,rosjanie}


dodajemy tablice :

new const nalezy_do[]={
        NONE,
        polacy,
        rosjanie,
        polacy,
        rosjanie,
        polacy,
        polacy,
        rosjanie,
        polacy,
        polacy,
        rosjanie
}

to tutaj ustalamy do której frakcji należy klasa i tak w tym przykładzie Snajper należy do polaków a Komandos do Rosjan

Następnie musimy podmienić funkcje

public WybierzKlase(id)


na tą
public WybierzKlase(id)
{
        new menu = menu_create("Wybierz frakcje:", "Wybierzfrakcje_Handle");
        for(new i = 1;i<sizeof(frakcje);i++){
                menu_additem(menu, frakcje[i]);
        }
        menu_display(id, menu);
}

i dodać tą

public Wybierzfrakcje_Handle(id, menu2, item)
{       
        if(item == MENU_EXIT)
        {
                menu_destroy(menu2);
                return PLUGIN_CONTINUE;
        }       

        item++;
        frakcja_gracza[id] = item;
        new menu = menu_create("Wybierz klase:", "WybierzKlase_Handle");
        new klasa[50];
        for(new i=1; i<sizeof nazwy_klas; i++)
        {
                if(nalezy_do[i] == item){
                        WczytajDane(id, i);
                        format(klasa, 49, "%s \yPoziom: %i", nazwy_klas[i], poziom_gracza[id]);
                        menu_additem(menu, klasa);
                }
        }
       
        WczytajDane(id, klasa_gracza[id]);
       
        menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
        menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
        menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
        menu_display(id, menu);
       
        client_cmd(id, "spk QTM_CodMod/select");
        #if defined BOTY
        if(is_user_bot2(id))
                WybierzKlase_Handle(id, menu, random(sizeof nazwy_klas-1));
        #endif
       
        return PLUGIN_CONTINUE;
}

w zmiennych globalnych musimy jeszcze dodać

new frakcja_gracza[33]

możemy pod np new const nalezy_do :)

i na koniec musimy podmienić

WybierzKlase_Handle(id, menu, item)

na

public WybierzKlase_Handle(id, menu, item)
{
        client_cmd(id, "spk QTM_CodMod/select");
       
        if(item == MENU_EXIT)
        {
                menu_destroy(menu);
                return PLUGIN_CONTINUE;
        }       
       
        item++;
       
        new ile = 0;
        for(new i=1; i<sizeof nazwy_klas; i++)
        {
                if(nalezy_do[i] == frakcja_gracza[id]){
                        ile++;
                }
                if(ile == item){
                        item = i;
                        break;
                }
        }
       
       
        if(item == klasa_gracza[id])
                return PLUGIN_CONTINUE;
       
        if(item == Rambo && !(get_user_flags(id) & ADMIN_LEVEL_H))
        {
                client_print(id, print_chat, "[COD:MW] Nie masz uprawnien aby kozystac z klasy premium.");
                WybierzKlase(id);
                return PLUGIN_CONTINUE;
        }
       
        if(klasa_gracza[id])
        {
                nowa_klasa_gracza[id] = item;
                client_print(id, print_chat, "[COD:MW] Klasa zostanie zmieniona w nastepnej rundzie.");
        }
        else
        {
                klasa_gracza[id] = item;
                WczytajDane(id, klasa_gracza[id]);
                Odrodzenie(id);
        }
        return PLUGIN_CONTINUE;
}

no i kompilujemy i praca skończona ;)

źródło : www.darkgl.amxx.pl

[uwaga=DarkGL]Drobna poprawka[/uwaga]
  • +
  • -
  • 19