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

camerdisco

Użytkownik
  • Postów

    219
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    13

Odpowiedzi opublikowane przez camerdisco

  1. Nie testowałem, ale powinno działać i powinieneś mniej więcej zauważyć mechanikę działania:

    
    #include <sourcemod>
    
    int gTime[MAXPLAYERS + 1];
    
    Handle gCounting[MAXPLAYERS + 1];
    Handle gInfo[MAXPLAYERS + 1];
    
    public void OnPluginStart()
    {
        RegConsoleCmd("sm_testinfo", Test);
    }
    
    public Action Test(int client, int args)
    {
        gTime[client] = 15;
        gInfo[client] = CreateTimer(0.1, ShowInfo, GetClientUserId(client), TIMER_REPEAT);
        gCounting[client] = CreateTimer(1.0, Count, GetClientUserId(client), TIMER_REPEAT);
    }
    
    public Action ShowInfo(Handle timer, any userid)
    {
        int client = GetClientOfUserId(userid);
        if (!IsClientInGame(client))return Plugin_Stop;
        if (gTime[client] <= 0)return Plugin_Stop;
    
        PrintHintText(client, "Zostało Ci %i sekund", gTime[client]);
        return Plugin_Continue;
    }
    
    public Action Count(Handle timer, any userid)
    {
        int client = GetClientOfUserId(userid);
        if (!IsClientInGame(client))return Plugin_Stop;
        gTime[client]--;
        return Plugin_Continue;
    }
    
    

    • Super! 1
  2. Podany przez Ciebie czas to czas unixowy, aby wyprowadzić z niego normalny czas musisz użyć owej funkcji: https://sm.alliedmods.net/new-api/sourcemod/FormatTime

    btw. Pisałem wcześniej o pobieraniu danych z MySQLa, gdyż nie do końca zrozumiałem twojego problemu, uważałem że chcesz przy każdym wejściu gracza na serwer pobierać jego czas bana jeśli owy jest i wyświetlać mu to, jeśli jednak chcesz pokazać to jedynie przy nadaniu bana to faktycznie musisz edytować tylko kilka linijek.

  3. Cóż, z chęcią udowodniłbym Ci że się da, ale po co tracić czas, na coś co już istnieje i pisać to od 0?(Przy okazji pewnie większość funkcji ktoś zaczerpnąłby z istniejącego już).

    Podpisuję się pod @Qesik, wszystko to co zostało wymienione jest dostępne w internecie pod pierwszymi wynikami w googlu.

    Podsumowując, to co wymieniłeś nie stworzy unikalnego serwera JB.

  4. Napisał to sam asherkin czyli obecnie jeden z głównych devów SMa, także śmiem mu wierzyć :P Ale tak naprawdę to jest to kwestia do przetestowania, jak ktoś ma tyle wolnego czasu i chciałby :D Tak naprawdę to są takie  standardy kodowania jak w phpie standardy PSR i np. ja po prostu będę się ich trzymał.

  5.  

    
    #define LoopAllPlayers(%1) for(int %1=1;%1<=MaxClients;++%1)\
    if(IsClientInGame(%1) && !IsFakeClient(%1))
    
     
    
    stock int GetUserFromAuthID(int authid)
    {
        LoopAllPlayers(i)
        {
            char authstring[50];
            GetClientAuthId(i, AuthId_Steam3, authstring, sizeof(authstring));    
            
            char authstring2[50];
            IntToString(authid, authstring2, sizeof(authstring2));
            
            if(StrContains(authstring, authstring2) != -1)
            {
                return i;
            }
        }
        
        return -1;
    }
    
    
    

     

    Wracając do waszego tematu, w temacie który podałem w 2 ostatnich postach widać o co z tym chodzi, zwiększyli faktycznie do 65, ale:

    That was for 64 players + SourceTV, you still need to +1 for client index arrays.

    Można powiedzieć, że MAXPLAYERS+1 przyjęło się za pewien standard i po prostu i tak każdy go stosuje, poza tym zawsze lepiej mieć pewność w działaniu skryptu.

    • Super! 1
  6. public cod_class_enabled(client)
    {
            ma_klase[client] = false;
            ilosc_min_gracza[client] = 3;
    
    
    	if(GetUserFlagBits(client) & ADMFLAG_RESERVATION)
    	{
    		ma_klase[client] = true;
    		return COD_CONTINUE;
    	}
    	PrintToChat(client, "%s Klasa dostępna tylko dla posiadaczy VIP", PREFIX);
    	return COD_STOP;
    }

     

  7. Taki sposób był może i dobry, ale 5 lat temu.

    Po to powstają takie rzeczy jak SCP, gdzie do dyspozycji masz forward, który może być wielokrotnie używany i może posłużyć do wielu rzeczy, przy powyższym przykładzie ustawi się TAG, ale jakby ktoś w przyszłości dodać prefix z np. lvlem z coda bądź cokolwiek to będzie zmuszony do grzebania w tym. Kolejna rzecz to prostota, użycie forwardu jest dużo prostsze niż hookowanie komend etc.

    Co kto lubi ;)

×
×
  • Dodaj nową pozycję...