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

plx211

Użytkownik
  • Postów

    11
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    3

Odpowiedzi opublikowane przez plx211

  1. Projekt bez sensu (jako grupowy)

    Kod bazuje na kodzie @Ilovenoobs , nie chcialo mi sie wszystkiego przepisywac .

    Nie testowane, ale sie kompiluje ;)

    #include <sourcemod>
    #include <basecomm>
    
    char colorName[][] = {
      "#default", "#darkred", "#pink", "#green",
      "#lightgreen", "#lime", "#red", "#grey",
      "#olive", "#a", "#lightblue", "#blue",
      "#d", "#purple", "#darkorange", "#orange"
    };
    
    int colorValue[] = {
      1, 2, 3, 4,
      5, 6, 7, 8,
      9, 10, 11, 12,
      13, 14, 15, 16
    };
    
    const int colorCount = 16;
    
    public void OnPluginStart() {
      RegConsoleCmd("say", onSay);
    }
    
    int getColorNumber(char[] color) {
      for (int i = 0; i < colorCount; ++i)
        if (StrEqual(color, colorName[i]))
          return colorValue[i];
      return colorValue[0];
    }
    
    public Action onSay(int client, int args) {
      if (BaseComm_IsClientGagged(client)) // nie jestem pewienn czy to potrzebne
        return Plugin_Continue;
    
      char[] text = new char[1024];
      GetCmdArgString(text, 1023);
      StripQuotes(text);
    
      char[] colorBuffor = new char[128]
      GetCmdArg(1, colorBuffor, 127);
    
      PrintToChatAll("\x01%s %N: %c%s", IsPlayerAlive(client) ? "" : "*NIE ŻYJE*", client, getColorNumber(colorBuffor), text);
      return Plugin_Handled;
    }

     

     

  2. Cytat

    Czy byłaby opcja przerobienia go na pluginy zombie/basebuilder itp. bez ingerencji w kod do wręcz budowania go od nowa?

    Pluginy *Core byly tak pisane aby nie wymagaly siebie nawzajem, cala zaleznosc miedzy nimi zostanie wrzucona do (opcjonalnych) zewnnetrznych pluginow

     

    Cytat

    Czy naprawdę konieczna jest niestabilna budowa sourcemoda 1.8, czy można kompilować przy pomocy 1.7.3?

    Tak, kompilator SP 1.7 jest zabugowany, kod po kompilacji nie dzialal

    Po za tym SP 1.8 ma troche inna skladnie, przyklad:

    kod z SP 1.7:

    methodmap A < Handle __nullable__ {
      public ~A() {
        //deconstructor code
      }
      //code                    
    };

    ten sam kod w SP 1.8 (tylko ze dekonsturktor jest nie dostepny):

    methodmap A __nullable__ < Handle {
      //code                    
    };

    Mala linijka a uniemozliwia kompilacje

     

    Cytat

    Czy po skompilowaniu pluginu z pomocą 1.8 można go używać na starszej wersji sourcemoda?

    Tak, po skompilowaniu w 1.8 mozesz plugin odpalac na serverze z sm 1.7.3

     

    Cytat

    Jak ma się korzystanie z pluginów oddzielnie? Np. użycie samego systemu expa, statystyk i skilli(To tylko przykład)

    Mozesz uzyc tego samego plugin do roznych celow, np. CodMod od DiabloMod'a tak naprawde rozni sie tym ze DiabloMod nie ma restrykcji broni.

    Po za tym jesli w ktoryms z pluginow bedzie blad, to sm wylaczy tylko ten plugin dzieki czemu szybko mozemy go podmienic/naprawic ;)

     

    Cytat

    Jak ma się korzystanie z pluginów oddzielnie? Np. użycie samego systemu expa, statystyk i skilli(To tylko przykład)?

    Nie ma zadnych problemow :) To bylo 1 z zalozen.

     

    Cytat

    Czy są opcje w menu odpowiadające za dawanie komuś expa itd? (Proszę cie nie rób tego na komendy, bo mają za dużo backdoorów, wiem jestem je*anym hipokrytą, ale nie rób ;) )

    Cytat

    Opcja dawania komuś lvl itp. w menu dostępnym na flage ROOT'a

    Jeszcze nie, powoli sobie kodze, ale dodam to do todo, jak bys byl zainteresowany zrobieniem tego to zapraszam, chetnie dodam do repo ;)

    Stworzyc jakis admin center ? Issue #14 ? plx211/Cmod ? GitHub

     

    Cytat

    Czy jest wsparcie dla klas premium? Dawanie ich na flagi?

    Nie bralem tego za priorytet, ale bedzie to dodane pozniej (w Cmod_ClassCore trzeba napisac kod odpowiedzialny za zwracanie wartosci z forwardu, z jakies 3linijki)

    Umozliwic blokowanie ustawienia klasy ? Issue #13 ? plx211/Cmod ? GitHub

     

    Cytat

    Czy jest wsparcie dla systemu misji, bądź system misji(Nie widzę tego w core :P ) ?

    Stworzyc system misji ? Issue #12 ? plx211/Cmod ? GitHub

     

    Cytat

    Dodatkowy plugin odpowiadający za sklep zapisujący normalnie walutę.

    Stworzyc system walut i jakis podstawowy sklep do niego ? Issue #11 ? plx211/Cmod ? GitHub

     

    Cytat

    Przykładowe klasy i itemy, dzięki którym będzie można łatwiej się połapać z czym to się je, nie twierdzę, że bez nich nie da się ogarnąć systemu, ale nie patrzyłem do niego, a naprawdę łatwiej jest o 10 razy zrozumieć system budowania klas patrząc na przykład.

    Stworzyc przyklady ? Issue #5 ? plx211/Cmod ? GitHub

     

    Cytat

    Opcja Hudu pokazującego twój aktualny lvl, klase, (opcjonalnie)nazwę serwera.

    Stworzyc prosty system wyswietlania informacji w hud ? Issue #10 ? plx211/Cmod ? GitHub

     

    Napisalem 2 poradniki (pozniej sie pojawi wiecej) ktore cie moga zainteresowac (nie widzialem odpowiedniego dzialu wiec nie publikowalem ich na tym forum, jak znajde dzial to w nim napisze i zmiennie tu linki)

    Przykladowy (pseudo) kod (pisany od reki) z uzyciem samego ExpCore:

    #include <sourcemod>
    #include <cmod>
    
    const int MAX_LVL = 200;
    const int LVL_RATIO = 35;  // Exp potrzebny na kolejny lvl, jest liczony wzorem lvl * lvl * LVL_RATIO
    const int EXP_FOR_DEATH = 10;
    
    ExpID clientExpID[MAXPLAYERS + 1];
    
    public void OnPluginStart() {
      // hookujesz sobie np. event player_death do callbacku onClientDeath
    }
    
    public void OnPluginEnd() {
      for (int client = 1; client < MAXPLAYERS; ++client)
        if (clientExpID[client].isValid())
          clientExpID[client].remove();
    }
    
    public void OnClientPutInServer(int client) {
      clientExpID[client] = new ExpID(MAX_LVL, LVL_RATIO);
      clientExpID[client].hookLvlChange(onLvlChange);
    }
    
    public void OnClientDisconnect(int client) {
      clientExpID[client].remove();
    }
    
    int findClientByExpID(ExpID expID) {
      for (int client = 1; client < MAXPLAYERS; ++client)
        if (clientExpID[client] == expID)
          return client;
      return -1;
    }
    
    public void onLvlChange(ExpID expID, int oldLvl, int newLvl) {
      int client = findClientByExpID(expID);
      PrintToChat(client, "Twoj lvl ulegl zmiannie z %d lvl na %d lvl", oldLvl, newLvl);
    }
    
    // nie chce mi sie zbytnio pisac, wiec uznajmy ze callback ma takie parametry :)
    public void onClientDeath(int victim, int attacker) {
      clientExpID[attacker].exp += 10;
      clientExpID[attacker].checkLvl();
    }
    

    Teoretycznie silnik rezerwuje MAXPLAYERS + 1 slotow dla clientow, ale powyzsza opcjia jest bezpieczniejsza, po za tym nie wiem czy ta rezerwacja pozostanie.

    Niedlugo dodam do repo porzadnie napisany powyzszy kod ;)

    ExpID mozesz zastosowac do:

    • klasy
    • itemu
    • skilla
    • statystyki
    • wykupywanie powyzszych (nie musisz wywolywac checkLvl)
    • jako prosty system monet
    • sklep za exp
    • exp druzyn
    • "poziom" gry (do pozniejszego np. najlepszego rozegrania)
    • mozesz dawac graczu co X czasu Y exp'a i wraz z wiekszym lvl'em wieksze korzysci
    • i wiele wiele wiecej (o ile wyobraznia ci pozwala)

    ExpID jest przechowywany (tak samo jak reszta) w tablicy dynamicznej dlatego nie ma teoretycznie limitu.

    Oznacza to ze mozesz graczowi kovalsky utworzyc 128 systemu expa, bo ci sie tak podoba ;)

    Oczywiscie do dzialania wymaga Cmod_ExpCore :)

     

    Cala lista todo:

    Issues ? plx211/Cmod ? GitHub

     

    Mam nadzieje ze odpowiedzialem na wszystkie twoje pytania :)

     

    • Super! 2
  3. Jak zwykle z gory przepraszam za brak Polskich znakow, oraz ewentualne bledy ortograficzne/interpunkcyjine.

     

     

    Wstep:

    Chcial bys zalozyc server CodMod, DiabloMod, lub jakis inny?
    Ale nie chce ci sie pisac systemu exp'a, item'ow, klas?
    Ten plugin (a raczej te pluginy) sa wlasnie dla ciebie
    Cmod to zbior pluginów, ktory ulatwi ci szybkie napisanie (a juz w krotce skonfigurowanie) swojego wlasnego RPG Moda.
    W aktualnej wersji najbardziej skorzystaja osoby ktore znaja sie na scriptingu w SP, ale obiecuje ze niedlugo to sie zmienni ;)

     

     

    Zawartosc:

    Na dzien dzisjejszy w paczce znajdziesz:

    • Cmod_ClassCore plugin odpowiedzialny za klasy (tworzenie, usuwanie, forwardy)
    • Cmod_ExpCore plugin odpowiedzialny za system exp'a
    • Cmod_ItemCore plugin odpowiedzialny za itemy (tworzenie, usuwanie, forwardy)
    • Cmod_SkillCore plugin odpowiedzialny za skille (tworzenie, usuwanie, forwardy)
    • Cmod_PreparedSkill plugin odpowiedzialny za konfiguracjie skilli
    • Cmod_StatsCore plugin odpowiedzialny za statystyki

     

     

    Roznice od poprzedniej wersji:

    Kod od ostatniego prototypu zostal napisany kilku krotnie, publikuje ta wersjie ze wzgledu na to ze jestem z niej najbardziej zadowolony (ale czas oceni jak bedzie sie to sprawdzac).
    Klasy/itemy z prototypu nie beda dzialac pod ta wersjia!!!

    Jaka jest roznica od prototypu?
    Miedzy innymi:

    • Rozbicie kodu na odzielnne pluginy
    • Nowa idea
    • Kod oparty na skladni SP 1.7+
    • Prawie wszystkie dane oparte na tablicach dynamicznych (Dzięki ktorym nie trzeba ustawiac limitu klas/itemow/itp.)

     

     

    Twoja pomoc:

    Chcesz pomoze w rozwoju, ale nie wiesz co zrobic?
    od razu ci powiem ze mile widziane jest:

    • Dolaczenie sie do rozwoju Cmod'a (chetnie będę przyjmowal Pull request)
    • Dawanie propozycji co mozna by stworzyc itp.
    • Zglaszanie bledow z jak najwieksza iloscia informacji
    • Datki

     

     

    Download:

    Najnowsze wydanie (download)

    Kod zrodlowy (source)

     


    Do kompilacji wymagany jest:
    SP 1.8+

    • Super! 5
×
×
  • Dodaj nową pozycję...