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
 

VertekS - zdjęcie

VertekS

Rejestracja: 17.02.2012
Aktualnie: Nieaktywny
Poza forum Ostatnio: 02.03.2022 16:14
-----

#649705 Szukam pluginów na zm.

Napisane przez VertekS w 13.07.2014 19:54

1. https://forums.allie...08&postcount=99

2. https://forums.allie...ad.php?t=182408


  • +
  • -
  • 1


#644366 Podmiana modelu Zm 4.3

Napisane przez VertekS w 21.06.2014 06:03

Przede wszystkim - zmień nazwę pobranego modelu z terror na jakąkolwiek inną - może to być na przykład terror_2. Czemu tak?

1. Jeśli będziesz miał dwa foldery / dwa modele o nazwie terror, serwer będzie brał pod uwagę domyślny model.

2. Jeśli usuniesz domyślny model z folderu models / player i żaden z modeli nie będzie miał nazwy terror, serwer może się nie włączyć (błąd z brakiem wymaganego modelu, który i tak może być nieużywany przez cfg ZP 4.3).

Linijka ma wyglądać tak (włączając sugestie zmiany nazwy modelu):

HUMAN = terror_2

Plik terror_2.mdl musi się znajdować w folderze models / player / terror_2.


  • +
  • -
  • 1


#643381 Problem z timerem

Napisane przez VertekS w 14.06.2014 16:41

Więc tak...

To co napisze poniżej piszesz w public kickmenu(id).

Tworzysz 31 elementową tablicę na nick gracza (31 elementów = 31 znaków):

new voteplayer[31];

Następnie pobierasz nick gracza, który wpisał komendę:

get_user_name(id, voteplayer, sizeof(voteplayer));

Natyw register_clcmd przekazuje ID gracza jako parametr, więc warto to wykorzystać. Parametry funkcji zobacz w dokumentacji. Operator sizeof sprawdza wielkość łańcucha znaków (i nie tylko jego), co można w tym wypadku użyć do poinformowania get_user_name, ile liter nicku gracza ma pobrać. Warto pamiętać, że nick gracza w CS może mieć maksymalnie 31 liter. 

Następnie przejdź do linii:

client_print(i, print_chat, "Gracz %id% rozpoczal glosowanie o wyrzucenie botow z serwera.");

...która była powodem błędów. ID gracza w CS jest traktowane jak zwykła liczba całkowita. Trzeba tylko pamiętać, że to musi być liczba z zakresu 1 - 32.

W celu wyświetlenia, kto zaczął głosowanie wykorzystaj wcześniej przygotowaną zmienną na nick. Poprawny zapis wygląda tak:

client_print(i, print_chat, "Gracz %s rozpoczal glosowanie o wyrzucenie botow z serwera.", voteplayer);

Plugin będzie działać w 99% poprawnie. Podczas testów zauważyłem, że musisz się zabezpieczyć przed sytuacją, kiedy żaden gracz nie głosuje (obecnie w takiej sytuacji boty są wyrzucane z serwera).


  • +
  • -
  • 1


#643377 własna ikona na ekranie

Napisane przez VertekS w 14.06.2014 16:12

write_string("item_longjump"); // icon - zmieniasz ścieżkę i wgrywasz własną ikonkę żaden problem.

Nieprawda. Nie da się wstawić własnej ikony w ten sposób. Przeczytaj: https://forums.allie...t=52529?t=52529 [ENG] oraz http://amxx.pl/topic/45954-ikonka-statusu/

Dodatkowo, tutaj masz wygląd wszystkich dostępnych ikon: https://plus.google....0913?banner=pwa


  • +
  • -
  • 1


#643184 Problem z timerem

Napisane przez VertekS w 14.06.2014 06:35

1. Nie ma takiej funkcji jak CreateTimer. Użyj set_task.

2. 

Action:kickmenu_wyniki(Handle:timer)

Zamień na:

public kickmenu_wyniki()

3. Funkcja kickmenuhandle nie jest zamknięta (brakuje nawiasu klamrowego na końcu funkcji).

4. W ten sposób nie wyrzuca się botów na serwerach CS'a. Najpierw musisz sprawdzić, czy gracz jest botem i wtedy wykonać na nim komendę AMXX - kick:

server_cmd("kick #%d ^"Gracz jest botem!^"", get_user_userid(id));

5. Po funkcji kickmenu_wyniki jest o jedna klamra za dużo.

6. Funkcja kickmenuhandle powinna zwracać wartość na końcu. Najlepiej zwrócić PLUGIN_HANDLED (i tak już nic nie robisz z tym menu po wybraniu opcji). Dodatkowo jeżeli wartość wybrana w menu to MENU_EXIT, zniszcz menu za pomocą:

menu_destroy(menu)

Kod jest brzydko napisany, ale to będziesz potrafił zoptymalizować sam p przeczytaniu artykułów w dziale tutoriale na tym forum (nie zawsze się operuje na 32 graczach / używa do tego pętli for). 


  • +
  • -
  • 1


#642999 Pukawka.pl, modele

Napisane przez VertekS w 12.06.2014 16:29

Zmień nazwę pliku zpa_zombieclasses.ini na inną (będzie to swoista kopia zapasowa). Uruchom serwer, a plik zpa_zombieclasses.ini stworzy się sam z istniejących klas zombie (jeżeli zmieniałeś model w sma i skompilowałeś, uwzględni go). Jeżeli jednak coś będzie nie tak, usuwasz plik utworzony przez serwer i przywracasz stary plik.


  • +
  • -
  • 1


#640652 [ROZWIĄZANE] Odliczanie czasu do końca rundy + wiadomość w chat - problem

Napisane przez VertekS w 28.05.2014 17:25

remove_taskset_task z własnym id taska (parametr 3).

Ponad plugin_init używasz dyrektywy preprocesora #define (będzie to ID taska, ważne aby było wyższe niż 32, żeby uniknąć błędów):

#define task_odliczanie 667

Przy ustawianiu taska:

set_task(1.0, "odliczanie", task_odliczanie,_,_,"b");

Następnie, jeśli zostało 11 sekund do końca rundy, to usuń task:

public odliczanie()
{
    new g_czas =  floatround(g_licznik - get_gametime(), floatround_floor);
    if(g_czas == 11)
    {
        for(new i = 1; i < maxPlayers; i++)
        {
            if(is_user_connected(i) && cs_get_user_team(i) == CS_TEAM_T)
            {    
                client_print(i,print_chat, "Czas")
                remove_task(task_odliczanie)
            }
        }
    }
}

  • +
  • -
  • 1


#640597 [ROZWIĄZANE] Respawn Zombie 3 razy

Napisane przez VertekS w 28.05.2014 13:53

Dodatkowo na początku rundy / przy wyjściu gracza resetuj wszystkie komórki tablicy.

W plugin_init dodajesz obsługę eventu nowej rundy:

register_event("HLTV", "newRound", "a", "1=0", "2=0")

Na początku rundy ustawiasz wszystkim graczom ilość respawnów na 3:

public newRound(id){
    g_respawn3times[id] = 3
}

To samo, co przy evencie HLTV, robisz przy wyjściu gracza z serwera:

public client_disconnect(id){
    g_respawn3times[id] = 3
}

Można też dodać resetowanie możliwych respawnów przy wzięciu antidotum (w ZP 4.3 funkcja zp_user_humanized_post).

EDIT: Pomysł Vasto_Lorde jest bardziej przejrzysty dla człowieka. Odejmowanie licznika i sprawdzanie, czy jest większy niż zero, to lepsze rozwiązanie.


  • +
  • -
  • 1


#640415 [ROZWIĄZANE] Sprawdzanie drużyny po końcu rundy - problem

Napisane przez VertekS w 27.05.2014 06:16

Mam taki kod:

public event_roundend_t(id)
{
	if(is_user_connected(id) && xTeam[id] == CS_TEAM_T) 
	{	
		//client_cmd(id, "mp3 play sound/misc/win")
		client_print(id,print_center, "Jestes TT")
	}
}

Przy odrodzeniu działa, natomiast po wygraniu rundy przez TT nadal nic.

get_user_team w ogóle nie działa (nawet przy respawnie)

 

Może są jeszcze inne sposoby sprawdzenia tego kto wygrał/przegrał rundę?

W tym evencie nie sprawdzisz graczy po ID w ten sposób. Musisz zrobić pętle for:

for(new i = 1; i < 33; i++){
		if(is_user_connected(i) && xTeam[i] == CS_TEAM_T) 
		{	
			client_cmd(i, "mp3 play sound/misc/win")
			client_print(i,print_center, "Jestes TT")
		}
		
		if(is_user_connected(i) && xTeam[i] == CS_TEAM_CT) 
		{	
			client_cmd(i, "mp3 play sound/misc/lose")
			client_print(i,print_center, "Jestes CT")
		}
	}

Pętlę for możesz usprawnić jeszcze poprzez użycie funkcji get_maxplayers() w plugin_precache i podstawienie wartości zwracanej przez nią w miejsce liczby 33.


  • +
  • -
  • 2


#639672 [ROZWIĄZANE] Respawn Zombie 3 razy

Napisane przez VertekS w 21.05.2014 15:11

Linia 2271:

if (get_pcvar_num(cvar_deathmatch) == 2 || (get_pcvar_num(cvar_deathmatch) == 3 && random_num(0, 1)) || (get_pcvar_num(cvar_deathmatch) == 4 && fnGetZombies() < fnGetAlive()/2))

Utwórz globalną tablicę 33 - elementową (np. moznaRespic[33]), dodaj warunek w linii 2271, bądź w jej pobliżu, że jeżeli moznaRespic[id] jest mniejsze niż 3, to respisz gracza i powiększ moznaRespic[id] o 1. Dodatkowo na początku rundy / przy wyjściu gracza resetuj wszystkie komórki tablicy.


  • +
  • -
  • 1


#637292 Bomba antidotum ZP 4.3

Napisane przez VertekS w 08.05.2014 20:31

https://forums.allie...697&postcount=1


  • +
  • -
  • 1


#637173 Jak dodać dodatkowe obrażenia dla klasy

Napisane przez VertekS w 07.05.2014 20:56

Spoiler

Obrażenia zadawane przez gracza z klasą wojownik ciemności obecnie są zwiększone dwukrotnie, wartość zmieniasz tutaj:

SetHamParamFloat(4, damage * 2.0)

Po damage może być tez inne działanie matematyczne (na przykład dodawanie), jednak liczba, o którą jest zmieniona wartość obrażeń, musi być liczbą zmiennoprzecinkową (to znaczy mieć przecinek - tak jak ta wyżej). Sama liczba 2 nie przejdzie, musi to być koniecznie 2.0.

Załączone pliki


  • +
  • -
  • 1


#637038 DMG po stracie HP gracza

Napisane przez VertekS w 07.05.2014 10:41

Kod pluginu:

Spoiler

Załączone pliki


  • +
  • -
  • 1


#636956 [ROZWIĄZANE] EXP za pake podczas pustego serwera.

Napisane przez VertekS w 06.05.2014 16:01

To co napiszę tyczy się postu #1 w tamtym temacie (wypowiedź użytkownika sebul):

if(zablokuj < 2 && amount < 200) return PLUGIN_CONTINUE;

Interesuje cię konkretnie to:

if(zablokuj < 2 ...)

Gdzie 2 to ilość graczy, od której exp jest dawany normalnie.


  • +
  • -
  • 1


#636861 Wybór szkoły ponadgimbazjalnej

Napisane przez VertekS w 05.05.2014 20:13


czy wiecie może co się ma po wyjściu z LO

Nic. Jedynie papierek, że zdałeś maturę (jeżeli zdałeś) i świadectwo ukończenia LO.

 

 

 


a co się ma po wyjściu z technikum z kierunkiem technik informatyk

Masz zawód (jeśli zdasz egzamin zawodowy) - możesz iść do pracy + ewentualnie matura. Jednak, po pierwsze nie będzie ci łatwo dostać pracę choćby przy składaniu komputerów, a po drugie jeśli uda się zdobyć pracę, to nie będziesz zarabiał kokosów. Takie realia rynku pracy są w małej mieścinie, w dużych miastach zapewne jest lepiej.

 

Co do nauki - w technikum są dłuższe zajęcia, jednak nauczysz się dużo więcej informacji dotyczących zawodu niż w liceum. Żadna z tych szkół nie kształci w kierunku programowania (słyszałem, że w mojej szkole wycofali lekcje dotyczące tego działu informatyki, szkoda gadać), możesz liczyć tylko na ogarniętego nauczyciela, który będzie chciał się podzielić wiedzą.

 

lecz nwm czy samo technikum wystarczy na dobrą pracę z dobrymi zarobkami

Nie sądzę, będzie ciężko. Może by coś znajomości pomogły.

 

To co napisałem powyżej, jest to subiektywne zdanie ucznia 1 klasy technikum informatycznego ukształtowane między innymi poprzez rozmowę z ludźmi, którzy więcej przeżyli i widzieli oraz wiedzą co mówią (oczywiście o informatyce i przyszłej pracy w tym zawodzie).

 

EDIT: Uzupełnienie "co do nauki" - najistotniejsze jest to, czego uczysz się po godzinach szkolnych, szkoła uczy mało konkretów. Warto być ubermeisterem w jednej, konkretnej dziedzinie i wiedzieć co nieco na temat innych zagadnień.

Poza tym liceum trwa 3 lata, a technikum 4 lata - LO + studia, to zawsze rok krócej nauki niż technikum + studia.


  • +
  • -
  • 2