Jump to content
assignment_ind Existing user? Sign In

Sign In



person_add Sign Up
Go-Code.pl - Support SourceMod i Pluginy CS:GO

plx211

Użytkownik
  • Content Count

    43
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by plx211

  1. Enum struct (miło wiedzieć że coś takiego dodali ? ) to nie struktura a lukier składniowy na tablice i enum'a imitujący strukture. Żeby nie było nie czepiam się poradnika, bo dobrze że ktoś napisał, brakuje tutaj jedynie przykładu z przesunięciem bitowym (przydaje się) ? +1 za link ? p.s. Z tego co widzę mogą się pojawić tutaj problemy z tablicami/"stringami" w tym
  2. enum to nie struktura! to jest błąd karygodny ? enum to typ wyliczeniowy https://pl.m.wikipedia.org/wiki/Wyliczeniowy_typ_danych
  3. server.cfg jest wywolywany tylko przy starcie servera. przejdz do csgo/cvar skopiuj gamemode_trybgry.cfg, dodaj do kopii ten cvar co podawali wyzej, zmien nazwe kopi na gamemode_trybgry_server.cfg (np. gamemode_casual_server.cfg) i wrzuc go z powrotem. teraz restart servera i koniec. plik gamemode_..._server.cfg jest wywolywany przy kazdym uruchomieniu danego trybu (zmianna mapy to tez po czesci "zmianna" trybu) pisane z fona i pamieci
  4. Hi, You're probably must create new particles from existings (their are in particles folder in package with this plugin), After this you must add new particles to plugin config file. This link https://developer.valvesoftware.com/wiki/Particle_System_Overview can be useful for you Good luck ?
  5. nowy post bo edycja mi sie bugguje na fonie, usun == getteam w ostatniej petli, to wyswietlisz wszystkim
  6. zrobiłeś to najgorzej jak można było, po za tym odrazu trzeba było wstawić kod ? nie jest to najlespze rozwiazanie, ale sproboj tego (nie testowane): public void UpdateMenu() { if (!(active && g_chicken)) { return; } ArrayList sorted = new ArrayList(2); Menu menu = new Menu(EmptyHandler); menu.SetTitle("ADEPT -> Chicken Hunt"); menu.ExitButton = false; for (int i = 1; i < sizeof(KilledChicken); ++i) { if (IsValidClient(i) && GetClientTeam(i) == CS_TEAM_TT) { int index = sorted.Push(KilledChicken[i]); sorted.Set(index, i, 1); } } SortADTArray(sorted, Sort_Descending, Sort_Integer); for (int i = 0; i < sorted.Length; ++i) { char buffer[65]; Format(buffer, sizeof(buffer), "-> %N zabił %d kurczaków", sorted.Get(i, 1), sorted.Get(i, 0)); menu.AddItem("", buffer, ITEMDRAW_DISABLED); } for (int i = 1; i < MaxClients; ++i) { if (IsValidClient(i) && GetClientTeam(i) == CS_TEAM_TT) { menu.Display(i, 20); } } }
  7. Nie napisałem tutaj że dla złożoności czasowej istnieje jeszcze coś takiego jak stała przez która mnożymy, jak widać na zdjęciu ta stała jest mniejsza dla inserta: Ale maszyna vm mocno zwiększa tą stałą, więc natywny quick sort zdecydowanie szybciej będzie działał nawet dla mniejszych przypadków. W sumie może zrobie testy pod wieczór, zobaczymy jak to w praktyce wypada ? p.s. Trzeba pamiętać że pisząc samemu, zwiększamy szanse na błąd. A sourcemod korzysta (prawdopodobnie, na to wskazuje nazwa funkcji qsort) z quick sorta zaimplementowanego w biblioteke standardową języka C, który jest napewnno zoptymalizowany. p.s. 2 Dla tych co nie wiedzą 1E-07 s = 1*10^-7 s = 0,0000001 s = 0,0001 ms = 0,1 μs p.s. 3 Szacun za mashe, dobra bajka ?
  8. https://sm.alliedmods.net/new-api/sorting/SortIntegers to algorytm quick sort ( https://github.com/alliedmodders/sourcemod/blob/master/core/logic/smn_sorting.cpp#L119 ), będzie on wydajniejszy niż ręcznie napisany insert sort zaproponowany przez @mastah7991 ze względu na to że jest zaimplementowany w sourcemodzie, a nie obliczany na maszynie virtualnej (source)pawna. Złożoność czasowa dla insert sort wynosi n^2 natomiast dla quick nlog(n) oraz pesymistyczne n^2, czyli w najgorszym wypadku będzie tak szybkie jak inseration sort. Dla tablicy 64 elementowej: 64^2 = 4096 64 * log(64) = ~180
  9. stock bool isLucky(int chance) { return !GetRandomInt(0, chance); } if (isLucky(3)) { // Szansa na wykonanie tego wynosi 1/3 } if (isLucky(100)) { // Szansa na wykonanie tego wynosi 1/100 } else { // Szansa na wykonanie tego wynosi 99/100 } Ciezko bylo wymyslic nazwe dla funkcji :)
  10. zacznijmy od tego co to za server? Dedyk? Vps? (jeśli tak to jaka wirtualizacja) Hosting dla serverów? oraz gdzie ?
  11. program do wizualizacij przestrzeni n-wymiarowych w przestrzeni 3-wymiarowej wraz z mozliwoscia robienia obrotow wzgledem danych wymiarow (patrz animacje tesseraktu) projekt mozna napisac ladnie w c++ i opengl (proponuje zamiast ogl uzyc vulkan).
  12. @MAGNET https://pl.m.wikipedia.org/wiki/Rust_(język_programowania) p.s. fatalnie sie oznacza osoby na telefonie (xiaomi redmi 5 plus w firefoxie)
  13. Bezpieczny język programowania o silnym statycznym typowaniu z garbage collector na poziomie kompilacji
  14. Cookie_Mutation = RegClientCookie("MuteGO_Mutation", "Mute players without mutation", CookieAccess_Protected); Cookie_Rude = RegClientCookie("MuteGO_Mutation", "Mute players considered as rude", CookieAccess_Protected); dla rude chyba powinna byc inna nazwa ciasteczka? :)
  15. @Yamakashi to juz lepiej usunac ten case, bedzie to wydajniejsze ? @Weak. fVelocity [0] *= -10.0; fVelocity[1] *= -10. 0; zmniejsz (matematycznie bardziej bedzie okreslenie zwieksz) sobie te wartosci, aby zmniejszyc odrzut. nie wiem czy czasami wyl odrzutu nie spowoduje tego ze plugin bedzie bezuzyteczny
  16. Wstęp Poradnik pisany na podstawie https://wiki.alliedmods.net/Building_SourceMod Ładnie jest tam to opisane, ale korzystając tylko z tamtego artykułu nie udało mi się skompilować, musiałem szukać rozwiązań w internecie, z stąd ten poradnik ? Dla tych co chcą kompilować na Windowsie zostaje jedynie powyższy artykuł. Cały proces przeprowadziłem na Antergosie x64 (Arch) Instalacja bibliotek oraz kompilatora Arch: sudo pacman -S git python clang gcc-multilib lib32-glibc lib32-libstdc++5 lib32-zlib Debian/Ubuntu: sudo apt-get install clang sudo apt-get install lib32stdc++-4.8-dev sudo apt-get install lib32z1 lib32z1-dev sudo apt-get install libc6-dev-i386 libc6-i386 Przygotowanie AMBuild Wpierw pobieramy najnowszy ambuild z repozytorium: git clone --recursive https://github.com/alliedmodders/ambuild.git Następnie przechodzimy do folderu z kodem: cd ambuild Instalujemy sudo python setup.py install Wracamy do katalogu wyżej: cd .. Kompilacja Tak samo jak w przypadku ambuild najpierw pobieramy najnowszy kod z repozytorium (--recursive jest tutaj bardzo ważne aby zassało nam biblioteki zależne takie jak amtl): git clone --recursive https://github.com/alliedmodders/sourcemod.git Pobieramy SDK które potrzebne są do interakcji sourcemod'a z srcds danego moda: source sourcemod/tools/checkout-deps.sh Przechodzimy do katalogu z kodem: cd sourcemod Tworzymy nowy folder do zbudowania sourcemod'a oraz przechodzimy do niego: mkdir build cd build Teraz konfigurujemy proces budowania: CC=clang CXX=clang++ python ../configure.py Wreszcie odpalamy kompilacje ? : ambuild Skompilowany sourcemod pojawi się w folderze package w naszym folderze do budowania Dodatkowe informacje configure.py posiada wiele przydatnych parametrów, pełną listę wraz z opisem uzyskamy wpisując: python configure.py --help Jeśli chcemy skompilować kod przy pomocy innego kompilatora wystarczy że w procesie konfiguracji ustawimy go, np. dla g++: CC=gcc CXX=g++ python ../configure.py Istnieje jednak możliwość że będziemy musieli wtedy edytować kod, bądź dodać dodatkowe flagi kompilacji, sourcemod oficjalnie jest kompilowany na clang'u
  17. @fabko skrzynki i klucze w gui to screen overlay czy cos innego?
  18. Dawno nie pisalem w sourcepawn ? Nie testowane: #include <sourcemod> ConVar cvarPluginEnable; ConVar cvarShowMode; enum ShowModeType { ShowMode_Chat = 1, ShowMode_Menu, ShowMode_Count }; public void OnPluginStart() { RegConsoleCmd("sm_admins", onCmdAdmins); cvarPluginEnable = CreateConVar("adminlist_on", "1", "turns on and off admin list, 1=on ,0=off"); cvarShowMode = CreateConVar("adminlist_mode", "1", "Output in: 1 - chat, 2 - menu"); } public Action onCmdAdmins(int client, int args) { if (!cvarPluginEnable.BoolValue) { return Plugin_Handled; } int admin[MAXPLAYERS]; int count = 0; for (int clientID = 1; clientID <= GetMaxClients(); ++clientID) { if (IsClientInGame(clientID) && GetUserAdmin(clientID) != INVALID_ADMIN_ID) { admin[count++] = clientID } } show(client, admin, count); return Plugin_Continue; } void show(int client, int[] admin, int count) { switch (cvarShowMode.IntValue) { case ShowMode_Chat: showOnChat(client, admin, count); case ShowMode_Menu: showOnMenu(client, admin, count); } } void showOnChat(int client, int[] admin, int adminCount) { PrintToChat(client, "Lista adminow online:"); for (int i = 0; i < adminCount; ++i) { PrintToChat(client, "%N", admin[i]); } } void showOnMenu(int client, int[] admin, int adminCount) { Menu menu = new Menu(menuHandler); menu.SetTitle("Lista adminow online:"); char buffer[MAX_NAME_LENGTH + 1]; for (int i = 0; i < adminCount; ++i) { Format(buffer, sizeof(buffer), "%N", admin[i]); menu.AddItem("", buffer); } menu.ExitButton = true; menu.Display(client, 15); } public int menuHandler(Menu menu, MenuAction action, int client, int options) { if (action == MenuAction_End) { delete menu; } }
  19. plugin info author w kodzie wskazywal ze tak, zaraz przepisze go i zamieszcze kod
  20. Plugin az sie prosi o: RegConsoleCmd("sm_admins", XXXX) zamiast RegConsoleCmd("say", XXXX); Podzielenie go na mniejsze funkcje Bede marudzil, ale nie najlepiej napisany plugin ? p.s. To nie jest atak, tylko informacja co mozesz poprawic ?
  21. 1. Glownie chodzi o to aby odpowiedz na pytanie ktorego ktos kiedys moze szukac nie przepadla 2. Nie zauwazylem przycisku pod logiem :)
  22. 1. Wprowadzenie zakazu zadawania pytan obnosnie tematyki forum na shoutbox 2. Podpiecie w kazdym dziale regulaminu 3. Ograniczenie notek moderacyjnych do czynosci administracyjnych, odpowiedzi obnosnie watku powinny znalezc sie w watku a nie w poscie (utrzyma to pewienn "flow")
  23. Jak sie kliknie na powiadomienia to pozycja na samej gorze jest zbugowana, Mam tak na prywatnym laptopie (linux + firefox) jak i na sluzbowym (windows 7 + firefox) @edit Z tego co widze to cos sie j*bie przez pole od szukania

O NAS Jesteśmy społecznością łączącą ludzi, którzy dzielą pasję poznawania CS:GO od strony programistycznej. Posiadamy duże zaplecze merytoryczne i zawsze cieszymy się, gdy dołączają do nas osoby gotowe do nauki. Gwarantujemy, że z odrobiną wytrwałości i otwartym umysłem bardzo szybko napiszesz swój pierwszy plugin. Zapraszamy! 🙂
Szablon wykonany z dużą ilością przez cyberpixelz / Mesharsky / Sitefuture
Forum dumnie napędzane przez: Invision Power Services, Inc.
×
×
  • Create New...