Skocz do zawartości

Nowy szablon forum

mygo.pl

Stworzyliśmy dla Was nowy wygląd forum. Z pewnością znajdziesz rzeczy, które wg Ciebie mogą zostać zmienione - wspomnij o tym w specjalnym wątku.

Czytaj więcej

Jak założyć własną sieć

serwerów CS

Zastanawiasz się nad prowadzeniem własnej sieci serwerów? Przeczytaj podstawowe informacje, na które należy zwrócić uwagę, przy takim projekcie.

Czytaj więcej

Tworzymy spis sieci

dodaj swoją

Dodaj sieć do której należysz, pozwoli to na promocję i budowę ogólnopolskiej bazy sieci CS.

Czytaj więcej

th7nder

Użytkownik
  • Postów

    18
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    1

Treść opublikowana przez th7nder

  1. Poszukałem trochę w kodzie UMC i znalazłem kod, który za to odpowiada: bool:SetTimerTriggerTime() { //Get current timeleft. new timeleft, Float:triggertime, Float:starttime; GetMapTimeLeft(timeleft); if (timeleft <= 0) return false; starttime = GetConVarFloat(cvar_start_time) * 60; //Duration until the vote starts. triggertime = timeleft - starttime; DEBUG_MESSAGE("*SetTimerTriggerTime* -- TimeLeft: %i StartTime: %f TriggerTime: %f", timeleft, starttime, triggertime) new bool:result; //Make the timer if... // ...the time to start the vote hasn't already passed. if (timeleft >= 0 && starttime > 0 && triggertime > 0) { //Setup counter until the end-of-map vote triggers. vote_delaystart = triggertime - 1; result = true; LogUMCMessage("End of map vote will appear after %.f seconds", triggertime); } // ... // ... } Musiałbyś sprawdzić czy nie masz przypadkiem ustanowionej wartości CVara "sm_umc_endvote_starttime" na więcej niż wartość mp_timelimit. "sm_umc_endvote_starttime" ustanawia ile minut przed końcem mapy ma się rozpocząć głosowanie. Jeśli jest to liczba większa niż wartość mp_timelimit, wtedy triggertime < 0 i z automatu warunek się nie wykona. Niestety jest to tylko przypuszczenie, jeśli to nie jest przyczyną musiałbyś skompilować UMC z ustawionym UMC_DEBUG na 1 i wtedy pokazać logi. Ustawia się to w pliku "umc-core.inc". Zmieniasz #define UMC_DEBUG 0 Na #define UMC_DEBUG 1 Co to da? Wszystkie funkcje DEBUG_MESSAGE zostaną wywołane jako 'niepuste' i ich wynik zostanie zapisany do logów, co umożliwi dalsze debuggowanie błędu.
  2. Ta linijka mówi, że PHP się sypie. Musisz znaleźć error logi php. [14/Apr/2018:19:51:33 +0200] "POST /shopsm/index.php?pages=buy_three&id=1&priceid=2 HTTP/1.1" 500
  3. Jak Ci wywala biała strona podczas wpisania SID to jest na 100% błąd konfiguracji WWW albo są na stronie błędy w kodzie źródłowym. Sprawdź error logi na hostingu WWW, bo to jest jedyna możliwość, abyśmy się dowiedzieli co jest nie tak. Gdyby nie było error logów (a muszą być w tym wypadku), to włącz je w panelu swojego hostingu, a nastepnie wpisz SID na stronie żeby Ci wywaliła biała strona. Logi zostaną zapisane i wtedy nam je podeślij.
  4. Obawiam się, że posiadasz jakiś brak średnika, klamry, nawiasu lub złą definicje zmiennej w swoim pluginie, dlatego Ci sypie trzysta errorów. Postaraj się znaleźć ten błąd składni, a jeśli chcesz bezpośredniej pomocy musiałbyś dostarczyć kod źródłowy pluginu: Cmod_class_[SuperVip]Deathruner.sp
  5. Kod 500 zwrócony przez serwer oznacza z reguły jakiś błąd w kodzie PHP/zła konfiguracja/ogólnie wysypanie się WWW w którymś momencie. Prawdopodobnie Twoja strona nie obsługuje jakiegoś requesta i leży -> dlatego sklep nie działa. Musiałbyś wejść na swój hosting WWW i pokazać error logi, wtedy będziemy w stanie pomóc.
  6. Serwery CSa GO mają swoje tryby: casual, competetive itd. Każdy z tych trybów przechowuje swoją domyślną konfiguracje w pliku np. gamemode_casual.cfg, gamemode_competitive.cfg. Mają one nadrzędny priorytet nad np. server.cfg lub autoexec.cfg. Aby zostawić domyślną konfiguracje w spokoju serwer próbuje wczytywać odpowiadające configi gamemode_casual_server.cfg, gamemode_competitive_server.cfg W tych plikach można nadpisywać domyślne ConVary, aby nadpisać domyślną konfiguracje nie zmieniając jej. Oczywiście zmieniając ją nic się nie stanie, ale te pliki są tylko dla wygody - nie trzeba pisać dużej ilości CVarów, tylko np. kilka które chcemy nadpisać. Reasumując, serwer próbuje wczytać plik z Twoją konfiguracją dla danego trybu i informuje, że go nie widzi. Nic złego się nie dzieje. Commentary: Could not find commentary data file 'maps/de_dust2_commentary.txt'. Szczerze nie wiem po co są te pliki, _commentary.txt, ale raczej do niczego potrzebnego i nie trzeba się tym przejmować. ConVarRef weapon_cleanup_on_roud_restart doesn't point to an existing ConVar Jakiś z Twoich pluginów/plików konfiguracynych próbuje ustawić CVar weapon_cleanup_on_roud_restart, którego nie ma w silniku gry. Znów, nic złego się nie dzieje.
  7. th7nder

    Rezerwacja slota

    Autor tego pluginu zakłada z góry, że serwer nie ma żadnych ukrytych slotów. Jeśli dobrze go rozumiem, to jedyną możliwością zrobienia rezerwacji jest ustawienie CVara sm_admin_slots "liczba" Odpowiada on za liczbę zarezerwowanych slotów wrażliwych na graczy, którzy mają flagę b(ADMFLAG_RESERVATION).
  8. Z reguły oznacza to, że jakiś plugin/extension do sourcemoda wywołuje funkcję HookEvent podając jako parametr jedną z nazw tych eventów. Silnik gry wysyłając te komunikaty informuje Cie, że nastąpiła próba zhookowania takiego eventu np. "difficulty_changed", ale on sam nie wie co to oznacza. Czyli taki hook się nigdy nie wywoła. Ogólnie nie musisz się tym przejmować, jest to jedynie informacja dla Ciebie, która może oznaczać, że masz jakiś plugin na serwerze nie do końca kompatybilny z Twoją grą. Na przykład plugin od CS:GO na serwerze TF2 lub coś w tym rodzaju.
  9. Uruchom konsole i spróbuj z ręki wpisać: sm plugins load tokens.smx albo sm plugins reload tokens.smx Wtedy powinno Ci pokazać błędy od razu. Jeśli nie tworzą się jednak żadne logi, to prawdopodobnie wystepuje błąd z uprawnieniami. Proces csgo, w którym jest odpalony sourcemod nie ma dostępu do pisania/czytania/przeglądania(r/w/x) folderu logs. Rozwiązania są następujące: Jeśli masz własnego VPSa lub Dedyka wykonaj coś takiego: chmod -R u+rx addons/sourcemod/logs chmod u+w addons/sourcemod/logs Jeśli masz dostęp tylko do FTP to przez klienta(np. FileZilla) musisz kliknąć prawym na folder "logs" i przyznać uprawnienia read, write and execute. Możliwe, że zapomniałem o czymś - nie mam kompletnej wiedzy na temat Twojego środowiska, w którym jest hostowany serwer. Jeśli to nie pomoże, to pisz.
  10. Na początku usuń cały folder addons, wgraj samego metamoda i wklej co Ci wyświetla komenda "meta version", wpisana w konsoli serwera. Następnie wrzuć sourcemoda i wklej co Ci zwraca komenda: sm version Wszystkie errory, które Ci wyskoczą też zaprezentuj - wtedy będziemy w stanie pomóc.
  11. Polecam użyć tego pluginu: https://forums.alliedmods.net/showthread.php?p=2138790
  12. VPS pod taką 'armię' odpada. Również polecam serwery dedykowane GAME od OVH. Jeden dedyk z jakąś i7meczką uciągnął mi maksymalnie 9 serwerów CS:GO 128TR po ~25 slotów. Śmiało przewidując, prawdopodobnie Ci wystarczy 1 serwerek na tyle serwerów, ale pewności nie mam - nie hostowałem równolegle CSa 1.6 i nie wiem jak one zżerają zasoby.
  13. Jeden pomysł, który mi przychodzi do głowy to stworzenie jakiejś tabeli w bazie danych(MySQL, SQLite), lub pliku tekstowego w którym będzie przechowywana data ostatniej zmiany 'rzeczy'. Wtedy, jak gracz wywoła komendę sprawdzasz zawartość tej tabeli lub pliku, porównujesz różnice czasu - czy minęło 24h od ostatniej zmiany i jeśli tak, to zmieniasz questa na nowego. A jak różnica czasu będzie mniejsza, to po prostu nic nie robisz w pluginie. To rozwiązanie pozwoli Ci ominąć jakiekolwiek rzeczy związane z crontabem/skryptami wywoływanymi zdalnie i nie powinno tworzyć problemów.
  14. Zależy od mocy tego 'ograniczenia' - czy przez jakiś czas, czy np. od rana do wieczora. Nie mniej jednak, najprościej będzie po prostu zhookować komende(RegConsoleCmd lub AddCommandListener) i zwracać Plugin_Stop albo Plugin_Handled, dla danych ram czasowych. Komenda przestanie być 'włączana' w innych pluginach i niniejszym zostanie niedostępna.
  15. Użyj tego: https://github.com/dubbeh/motd-fixer-plugin/
  16. Napisałem dla Ciebie pomocniczy skrypt, z którego wszystko powinno wynikać. Działa on tak, że na początku każdej mapy ustawia licznik rund na 0, potem co każdą rundę(która się nie zaczęła w rozgrzewce) zwiększa go. A potem w Twoim warunku sprawdza czy bonus nie jest wyłączony(czy minęło 15 rund) i dopiero wtedy zaczyna przyznawać bonusy. #include <sdktools> const int LIMIT_BONUS = 15; // to wklejasz na samą górę int g_iRoundCount = 0; // to wklejasz na samą górę public void OnPluginStart() { // ... HookEvent("round_start", Event_OnRoundStart); // ... } public void OnMapStart() { // ... g_iRoundCount = 0; // ... } public Action Event_OnRoundStart(Event hEvent, const char[] szBroadcast, bool bBroadcast) { // ... if (GameRules_GetProp("m_bWarmupPeriod") == 0) { // nie liczymy rozgrzewki g_iRoundCount += 1; } // ... } stock bool IsBonusDisabled() { return g_iRoundCount >= LIMIT_BONUS; // ta funkcja też musi być zawarta } // a następnie w Twoim warunku // ... if (GetTeamScore(CS_TEAM_CT) + GetTeamScore(CS_TEAM_T) != 0 && !IsBonusDisabled()) // ...
  17. Nie dałeś całego kodu, ale obstawiam, że gdzieś jest zmienna globalna, która się nazywa message(w której przechowywana jest wiadomość do wysłania). Funkcja, którą zlinkował @camerdisco zwraca długość ciągu znakowego. Umożliwi Ci ona sprawdzenie jak długą wiadomość gracz wysłał na czat, więc musiałbyś dodać tylko jeden warunek do Twojego ifa. Jednak jest jeden problem z tą funkcją. Dla niej 'spacja', albo 'tab' też są znakiem więc potrzebna Ci jest customowa funkcja, która omija 'białe znaki'. bool IsWhiteSpace(char c) { const char szChars[] = {' ', '\n', '\t', '\r'}; // spacja, znak nowej linii, tab, carriage return const int iSize = sizeof(szChars); for(int i = 0; i < iSize; i++) { if(c == szChars[i]) { return true; } } return false; } int GetRealStringLen(const char[] szString, int iLength) { int iCount = 0; for (int i = 0; i < iLength; i++) { if(!IsWhiteSpace(szString[i])) { iCount += 1; } } return iCount; } // Tutaj część Twojego kodu // ... if (IsPlayerAlive(client) && GetRealStringLen(message) >= 1) // ...
×
×
  • Dodaj nową pozycję...