-
Postów
11 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
3
Odpowiedzi opublikowane przez plx211
-
-
NIE UZYWAJ TEGO GENERATORA,
vip by hanys jest lepszy
- 2
-
Jak nie chcesz takich vipow to:
- napisz sam
- zaplac komus aby napisal
Vip hanysa ma wiekszosc fn ktore potrzebujesz, ale trzeba wiedziec narpiew co to cvar (aby jak najlepiej z niego skorzystac)
- 1
-
Po pierwsze nie znam tej biblioteki
Po drugie:
CytatBEz tego chya nie pociągnie kolorów :D
To jest nie prawda
Masz duze doswiadczenie w pisaniu pod sm (a w tym przypadku pod server csgo)?
-
@Znany a po co?
-
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; }
-
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
CytatCzy 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
CytatCzy 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
CytatJak 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 ;)
CytatJak 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.
CytatCzy 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 ;) )
CytatOpcja 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
CytatCzy 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
CytatCzy jest wsparcie dla systemu misji, bądź system misji(Nie widzę tego w core :P ) ?
Stworzyc system misji ? Issue #12 ? plx211/Cmod ? GitHub
CytatDodatkowy plugin odpowiadający za sklep zapisujący normalnie walutę.
Stworzyc system walut i jakis podstawowy sklep do niego ? Issue #11 ? plx211/Cmod ? GitHub
CytatPrzykł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
CytatOpcja 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)
- [Cmod][Poziom podstawowy] Tworzenie statystyki - Tutoriale - AMXX.pl: Support AMX Mod X
- [Cmod][Poziom podstawowy] Tworzenie skilla - Tutoriale - AMXX.pl: Support AMX Mod X
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:
Mam nadzieje ze odpowiedzialem na wszystkie twoje pytania :)
- 2
-
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 zmienniZawartosc:
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:
Do kompilacji wymagany jest:
SP 1.8+- 5
-
W features z linku ktory podales, jest opisane (Anti-ChainKill i Anti-GangBang)
-
Probowales tego?:
<img src="http://jakis_hosting.net/obrazek.jpg"></img>
najlepiej zapodaj swoje motd ;)
-
Klasa (prawidlowo napisana) sama powiadami silnik ;)
Jesli twoja klasa tego nie robi, to brakuje ci wywolania funkcji Cmod_RegisterClass w forwardzie OnPluginStart
Pytanie co do sklepu sms / exp / transfer exp / cod mod
w Pytania ogólne
Opublikowano
Piszac go?
To beda 2 update, umiesz SQL'a?