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
 

Sooldierr - zdjęcie

Sooldierr

Rejestracja: 10.03.2014
Aktualnie: Nieaktywny
Poza forum Ostatnio: 05.05.2022 19:56
-----

#689921 Łapanie eventu - pocisk trafiający w byt/model

Napisane przez radim w 22.02.2015 21:52

RegisterHam(Ham_TakeDamage, "player", "Fw_PlayerTakeDamage", 0)
->
RegisterHam(Ham_TakeDamage, "func_wall", "Fw_PlayerTakeDamage", 0)

  • +
  • -
  • 1


#665111 [ROZWIĄZANE] Galileo - zmiana klawiszy głosowania w vote menu

Napisane przez GwynBleidD w 25.09.2014 09:33

1. W linii:
            charCnt += formatex(voteStatus[charCnt], sizeof(voteStatus)-1-charCnt, "^n%s%i. %s%s%s", CLR_RED, choiceIdx+1, CLR_WHITE, g_mapChoice[choiceIdx], voteTally);
zamień choiceIdx+1 na choiceIdx+5.
2. Linię:
            keys |= (1<<choiceIdx);
zamień na:
            keys |= (1<<(choiceIdx+4));
3. W liniach:
                charCnt += formatex(voteStatus[charCnt], sizeof(voteStatus)-1-charCnt, "^n%s%i. %s%L%s", CLR_RED, g_choiceCnt+1, CLR_WHITE, LANG_SERVER, "GAL_OPTION_EXTEND", g_currentMap, floatround(get_pcvar_float(cvar_extendmapStep)), voteTally);
                charCnt += formatex(voteStatus[charCnt], sizeof(voteStatus)-1-charCnt, "^n%s%i. %s%L%s", CLR_RED, g_choiceCnt+1, CLR_WHITE, LANG_SERVER, "GAL_OPTION_STAY", voteTally);
Zamień g_choiceCnt+1 na g_ChoiceCnt+5

4. Linię:
            keys |= (1<<g_choiceCnt);
zamień na:
            keys |= (1<<(g_choiceCnt+4));
5. Linię:
            if (key == g_choiceCnt)
zamień na:
            if (key-4 == g_choiceCnt)
6. W liniach:
                dbg_log(4, "      %-32s %s", name, g_mapChoice[key]);
                    client_print(0, print_chat, "%L", LANG_PLAYER, "GAL_CHOICE_MAP_ALL", name, g_mapChoice[key]);
                    client_print(id, print_chat, "%L", id, "GAL_CHOICE_MAP", g_mapChoice[key]);
                g_mapVote[key] += voteWeight;
                g_mapVote[key]++;
Zamień g_mapVote[key] na g_mapVote[key-4]
  • +
  • -
  • 2


#632936 Rozdzielne Ammopacki dla Ludzi i Zombie

Napisane przez xXxBoy4GirlxXx w 18.04.2014 18:23

Jadek, jak sie nie znasz to lepiej sie nie udzielaj. W zombie apocalypse uzywany jest system ammo packow i zombie ammo packow. To wspanialy sposob, teraz siedze na tablecie, jak wejde na kompa to pomoge szukac. Gdzies spotkalem sie z ta paczka, ale trzeba duzo szukac.
  • +
  • -
  • 1


#632361 Funkcja: jeśli gracz ma daną broń, to zostaje mu ona odebrana

Napisane przez Drago36 w 16.04.2014 12:12

Nie lepiej w CurWeapon?

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fun>


public plugin_init() {
	register_event("CurWeapon","CurWeapon","be", "1=1")
}

public CurWeapon(id) 
{
	new wid = read_data(2)
	
	if(!is_user_alive(id))
		return PLUGIN_CONTINUE

	if(wid == CSW_SG550)
	{
		strip_user_weapons(id)
		give_item(id, "weapon_knife")
	}
	return PLUGIN_CONTINUE
}

  • +
  • -
  • 2


#620547 Canvas

Napisane przez R3X w 26.02.2014 21:56

Canvas

 

w ramach eksperymentu i `for the lolz` pracuję nad własnym rendererem wewnątrz serwera hlds. Canvas, czyli płótno. O co chodzi?

 

Plugin oddaje do dyspozycji API, dzięki któremu stworzymy płótno o dowolnych (niestety ograniczonych) rozmiarach. Na tym płótnie możemy rysować ustawiając odpowiednio kolor każdego z pikseli. Rysowaniem zajmuje się Program, rejestrując go podajemy nazwę publicznej funkcji, która będzie wołana co ramkę serwera i w ten sposób możemy aktualizować stan płótna.

 

Aktualnie płótna można dodawać i konfigurować jedyne z menu dostępnego pod komendą

amx_canvas

Można tam dodawać płótna, zmieniać wymiary, rozmiar i program.

 

Interakcja

Samo rysowanie to mało. Oczywiście, że chciałoby się mieć wpływ na to co jest rysowane będąc graczem. Podstawowa interakcja to pozostawanie w zasięgu. Główny plugin pozwala zarejestrować callbacki wołane gdy gracz wchodzi i wychodzi z zasięgu płótna. Pozwala to np. zmienić wyświetlany kolor, gdy ktoś patrzy.

 

Bardziej zaawansowany jest interfejs związany z klawiaturą. Jeśli zdecydujemy się zablokować kamerę gracza na płótnie, wysyłane będą forwardy (również dostępne jako rejestrowalne callbacki) gdy gracz naciska, puszcza lub przytrzymuje klawisz. Na razie nie ma żadnych blokad. Sterując mini-grą gracz będzie biegał i strzelał. Wkrótce się to zmieni :)

 

W planach jest także interfejs dotykowy, tzn gdyby jeden piksel był większy niż gracz to możliwe będzie precyzyjne określenie na którym z pikseli gracz stoi. Z tym wiąże się mnóstwo pomysłów do zrealizowania.

 

Innym typem interakcji może być strzał w piksel. Umożliwiłoby to np. grę w kółko i krzyżyk, gdzie gracze na przemian strzelają w pole gdzie chcą postawić swój znak.

 

Inicjalizacja

Głównie z powodów technicznych narodziła się idea inicjalizacji. Narysowanie dwustu pikseli na raz zawiesiło mi serwer na dobre kilka sekund, a chwilę potem dostawałem channel overflow. Jako obejście wybrałem liniowe rysowanie pikseli w pierwszych chwilach życia płótna. Podstawowy initializer rysuje po 4 piksele na ramkę, od pierwszego do ostatniego. Potem będzie więcej opcji.

 

Ograniczenia

Silnik hl pozwala klientowi rysować ~256 bytów. Każdy piksel płótna jest bytem, więc teoretycznie możemy osiągnąć kwadrat 16x16. Jednak kto pierwszy ten lepszy, więc od tej puli należy odjąć wszystko co jest narysowane na mapie + miejsce na nowe obiekty jak wypadające po śmierci bronie czy rzucone granaty. Będąc sam na serwerze bez zamiaru strzelania się z kimś używałem płótna 28x8. Gdyby ktoś chciał umieści płótno na żywym serwerze wątpię czy udałoby się to zrobić dla rozmiarów większych niż w sumie 100-150 (np. 15x10 ).

 

Demo

Podczas prac robiłem krótkie filmiki z postępów. Oto lista: http://www.youtube.c...hKwIexxiDB238rI

 

Źródło

https://github.com/e...iks/amxx-canvas

 

Na razie nie ma sensu robić paczki. Wersja jest dość wczesna. Da się już coś zrobić, ale raczej również jako ekperyment. 

 

 


  • +
  • -
  • 26