Jump to content
assignment_ind Existing user? Sign In

Sign In



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

Brum Brum

Support
  • Content Count

    352
  • Joined

  • Last visited

  • Days Won

    49

Brum Brum last won the day on January 21

Brum Brum had the most liked content!

Community Reputation

380 Programista

3 Followers

Recent Profile Visitors

2,159 profile views
  1. Usuń tą funkcję z inc od shavita. Inc z deathruna ma tą funkcje to będzie dobrze
  2. Funkcja IsValidClient jest już zadeklarowana w pliku inc od shavita tzn. Usuń ją z pluginu na vipa i będzie działać
  3. co? Tak się tego nie robi. Robisz po prostu #include <shavit> public void Shavit_OnLeaveZone(int client, int type, int track, int id, int entity) { SetEntityGravity(client, g_gravity.FloatValue); }
  4. Nie. https://github.com/shavitush/bhoptimer/blob/master/addons/sourcemod/scripting/include/shavit.inc forward void Shavit_OnLeaveZone(int client, int type, int track, int id, int entity);
  5. Więc tak. do doublejumpa musisz ustawić shavit_core_autobhop 0 Grawitacja się restartuję w zone nie jestem pewny czy jest na to cvar, ale możesz użyć forwarda gdzie po wyjściu z zone'a ustawia grawitacje na X
  6. Niepotrzebny warunek sprawdzający czy gracz ma 100 hp. każdy przy spawnie ma 100hp, dopiero później jest zmieniane przez plugin/y. Problem, który tu widzę to nigdzie nie pobierasz wartości tzn. Nie używasz .IntValue .FloatValue .BoolValue SetEntityHealth(client, HP+ g_hpstart.IntValue); SetEntityGravity(client, g_gravity.FloatValue); if(IsPlayerVIP(client) && g_djump.BoolValue)
  7. Nie przypominam sobie abym w taki sposób modyfikował tego vipa. Robiłeś to sam czy może ktoś Ci to robił?
  8. W tym poradniku omówię tzw. ciasteczka, które zapisują nam np. Wybrany TAG w tabeli. Dla przykładu napiszemy plugin w którym będziemy ustawiać swój TAG w tabeli. Na początku musimy dodać odpowiednie include'y oraz zdefiniować nasz Handle(uchwyt) do którego będziemy się odwoływać. *wymagane* #include <cstrike> #include <clientprefs> Handle g_hClientTag; Teraz musimy "zarejestrować" nasze ciasteczko w OnPluginStart używając funkcji RegClientCookie, który jako argumenty przyjmuje: - Nazwa naszego ciasteczka. - Opis naszego ciasteczka. - Dostęp naszego ciasteczka. CookieAccess_Public Jest ciasteczkiem publicznym i każdy gracz może je zmienić za pomocą komeny sm_cookies <nazwa ciasteczka> < wartość> CookieAccess_Protected Jest ciasteczkiem możliwym tylko do odczytania dla gracza. Gracz nie może go zmienić przy użyciu komendy. CookieAccess_Private Jest ciasteczkiem ukrytym. Gracz nie może go ani odczytać ani zmienić (nasz plugin oczywiście może :D). g_hClientTAG = RegClientCookie("sm_selected_tag", "Zapisuje wybrany przez nas tag", CookieAccess_Protected); W momencie kiedy zreloadujemy plugin, a nie mamy dodanego ponownego wczytania ciasteczek gracz, który wybrał dany TAG musi wybrać go ponownie. Dlatego zrobimy opcję gdzie w OnPluginStart załadujemy ciasteczka ponownie graczom, którzy są w grze oraz nie są botami for (int i = 1; i <= MaxClients; i++) { if (IsClientInGame(i) && !IsFakeClient(i)) OnClientCookiesCached(i); } *wymagane* *nie wymagane* Ostatnią rzeczą, którą zrobimy w OnPluginStart to SetCookieMenuItem, ustawienie tego dodaje nam pod komendę !settings . Przyjmuje on 3 argumenty: - Callback do naszego handlera(uchwytu) - Info - Tekst pokazany w menu. SetCookieMenuItem(TagChangeHandler, 0, "[TAG] Wybierz swój TAG w tabeli"); Po ustawieniu nazwy naszego callbacka oraz nazwy menu możemy robić callbacka Tego typu callback przyjmuje 5 argumentów: - Client ( slot gracza ) - CookieMenuAction czyli po prostu akcja jaka zostanie podjęta. CookieMenuAction_SelectOption po wybraniu opcji CookieMenuAction_DisplayOption po wyświetleniu opcji - Info - Buffer - maxlength public void TagChangeHandler(int client, CookieMenuAction action, any info, const char[] buffer, int maxlength) { if (action == CookieMenuAction_SelectOption)ShowTagMenu(client); } Od teraz po wpisaniu !settings pojawi nam się również opcja zmienienia ciastekcza i w moim przypadku TAG'u. *nie wymagane* *wymagane* Teraz musimy zrobić tak aby przy każdym połączeniu gracza ustawiać mu ciasteczko, które miał wybrane wcześniej czyli musimy użyć forwarda OnClientCookiesCached, przyjmuje on tylko 1 argument czyli slot gracza ( int client ). To teraz musimy pobrać ciasteczko, które miał ustawione gracz wcześniej. Użyjemy do tego funkcji GetClientCookie przyjmuje ona 4 argumenty: - Client ( slot gracza ) - Nasz handle(uchwyt) do którego "zapisywana" jest o tym informacja. - buffer do którego zapiszemy to co nam zwróci funkcja - maxlength ( maksymalna wielkość naszego buffer'a ) Po pobraniu ciasteczka ustawiamy graczowi na tą wartość. public void OnClientCookiesCached(int client) { char value[16]; GetClientCookie(client, g_hClientTag, value, sizeof(value)); g_iClientTag[client] = StringToInt(value); } Mamy już nasze ciasteczko wiemy jak je "zarejestrować", pobrać i ustawić teraz czas na zapisywanie. Aby zapisać nasze ciasteczko użyjemy funkcji SetClientCookie, przyjmuje ona 3 argumenty: - Client ( slot gracza ) - Nasz handle(uchwyt) - Wartość Wartość ta nie jest INT'em tylko stringiem, dlatego zanim przekażemy INT'a musimy zamienić go na string używając funkcji IntToString, która przyjmuje 3 argument: - Liczbę, którą chcemy dać do stringa - Buffer w którym będzie się znajdować nasza liczba - Wielkość naszego buffer'u char value[16]; IntToString(2,value,sizeof(value)); W moim przypadku nie będzie to nie potrzebne, ponieważ pobieram wartość z menu gdzie jest już jako string. SetClientCookie(client, g_hClientTag, info); *wymagane* Plugin, który powstał przy poradniku:
  9. Czy oferujesz poprawę optymalizacji mapy po dekompilacji? Dla osób nie znających się. Po użyciu dekompilatora do mapy "narzędzia" optymalizacyjne typu areaportal nie kiedy skip/hint zostają przesunięte przez co optymalizacja w danej części mapy po prostu nie istnieje(skip/hint). Jeżeli tak się stanie przy areaportalach (czyli zawsze po dekompilu) mapa się skompiluje, ale przez miejsca w którym powinien znajdować się areaportal nie będzie widać większości mapy będzie ona ucinana w mniej więcej taki sposób https://i.imgur.com/LhXP9Uy.png
  10. Mi również po pobraniu wszystko dobrze kompiluje, żadnego warninga/errora nie ma
  11. @Update Deathrun: Jeżeli plugin nie wykryje mapy typu deathrun wyłączy się. [dr_ / deathrun_] Po wykryciu bota przez plugin jest automatycznie wyrzucany Zmiana systemu wybierania TT. Po zmianie został naprawiony bug gdy wyszedł aktualny terrorysta przerzucało losowego CT do TT i przenosiło na spawn Zablokowano możliwość zostania wylosowanym x2 z rzędu do TT Dodano możliwość zmianę MOD_TAG poprzez ConVar Zmiana sposobu ustawienia terrorysty jako osobę zabijającą CT gdy CT wpadnie w pułapkę / popełni samobójstwo Dodano dodatkowe forwardy oraz native Freerun / Wersja z menu Od teraz przycisk 'E' jest blokowany tylko i wyłącznie w odległości 130unitów od guzika (stała blokada przeszkadzała przy podnoszeniu broni) Dodano nativy Dodano możliwość zmiany MOD_TAG poprzez ConVar / Plik konfiguracyjny (Wersja z menu) Freerun Wersja z menu: Od teraz 'freeruny' dodajesz poprzez plik tekstowy oraz ustawiasz na jakiej mapie mają być [all / nazwa_mapy;nazwa_mapy2] Dodano komendy /fr /fre /free tylko i wyłącznie z powodu bugowania się przy głosowaniu na zmianę mapy Dodano komendę /rf do przeładowania pliku konfiguracyjnego Dodano wiadomości w hudzie, która pokazuje za co jest freerun Naprawiono błąd przez który CT mógł włączyć freeruna

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...