Skocz do zawartości

Rekomendowane odpowiedzi

[Opis]

Udostępniam niepublikowaną dotychczas wersje nowego cod moda napisanego pod grę cs:go. Modyfikacja napisana została stosunkowo dawno dlatego, też kod mógłby zostać napisany gdzie nie gdzie trochę lepiej jednak ogólnie rzecz biorąc jestem zadowolony z końcowego efektu. Paczka dostępna do tej pory była wyłącznie w wersji płatnej dlatego pragnę serdecznie podziękować tym którzy ją nabyli, wspierając w ten sposób mnie na przestrzeni tych paru lat.

 

Modyfikacja znana z czasów ery cs 1.6, polega na wybieraniu klas, zdobywaniu doświadczenia, poziomów za które otrzymujemy punkty statusu. W załączniku znajduje się silnik, 14 klas oraz 25 itemów.

 

Różnice między nowym silnikiem a starym?

- W nowym silniku rozbite zostały klasy, perki czy inne dodatki na osobne pluginy dzięki czemu nie musimy już babrać się w jednym długim kodzie by coś zmienić, jest to spora wygoda. Dzięki takiemu zastosowaniu o wiele łatwiej znajdziemy również ewentualny błąd jaki popełniliśmy przy edycji moda.

- Wprowadzona została znacznie obszerniejsza konfiguracja dzięki której zmienimy ilość wymaganego doświadczenia do nowego poziomu, wszystkie limity, wyłączymy wytrzymałość perków itp.

- Zmiany nie ominęły również zapisu modyfikacji, ten został poprawiony w taki sposób by nie nadpisywał już danych a je sumował - w praktyce oznacza to, że pojedyncza utrata naszych danych już nigdy nie nastąpi.

 

[konfiguracja]

Standardowa. Większość zmian w konfiguracji przeprowadzisz w /cfg/sourcemod/codmod.cfg. By podłączyć zapis dopisujemy do databases.cfg poniższe dane a następnie uzupełniamy w prawidłowy sposób.
 


"codmod_lvl_sql"
{
    "driver"        "mysql"
    "host"        "host"    // adres bazy mysql
    "database"    "db"    // database bazy mysql
    "user"        "login"    // login uzytkownika do bazy mysql
    "pass"        "haslo"    // haslo uzytkownika do bazy mysql
}

 

[cvary]

Spoiler

cod_xp_kill 10            // doswiadczenie za zabojstwo: 0 - wyl
cod_xp_killhs 15            // doswiadczenie za zabojstwo w hs: 0 - wyl
cod_xp_damage 1            // ilosc xp za 20 obrazen: 0 - wyl
cod_xp_winround 25        // doswiadczenie za wygrana runde: 0 - wyl
cod_xp_objectives 50        // doswiadczenie za wykonane cele mapy: 0 - wyl

cod_max_level 200            // maksymalny limit poziomu: 0 - wyl
cod_level_ratio 35            // predkosc zdobywania doswiadczenia: im mniej tym szybciej
cod_points_level 2            // co ile poziomow punkt dla statystyk gracza: 0 - wyl
cod_max_intelligence 30        // limit inteligencji w statystykach: 0 - wyl
cod_max_health 50        // limit zdrowia w statystykach: 0 - wyl
cod_max_damage 40        // limit obrazen w statystykach: 0 - wyl
cod_max_stamina 60        // limit wytrzymalosci w statystykach: 0 - wyl
cod_max_trim 80            // limit kondycji w statystykach: 0 - wyl

cod_item_stamina 20        // co ile odejmowac wytrzymalosc itemu podczas smierci: 0 - wyl
cod_item_max_stamina 100        // maksymalna wytrzymalosc itemu: 0 - wyl

 

 

[natywy]

Spoiler

native cod_set_user_bonus_weapons(client, const String:nazwa[]);
native cod_get_user_bonus_weapons(client, const String:nazwa[], const MaxLeng);

native cod_set_user_bonus_intelligence(client, wartosc);
native cod_set_user_bonus_health(client, wartosc);
native cod_set_user_bonus_damage(client, wartosc);
native cod_set_user_bonus_stamina(client, wartosc);
native cod_set_user_bonus_trim(client, wartosc);

native cod_get_user_intelligence(client, inteligencja_zdobyta, inteligencja_bonusowa, inteligencja_klasy);
native cod_get_user_health(client, zdrowie_zdobyte, zdrowie_bonusowe, zdrowie_klasy);
native cod_get_user_damage(client, obrazenia_zdobyte, obrazenia_bonusowe, obrazenia_klasy);
native cod_get_user_stamina(client, wytrzymalosc_zdobyta, wytrzymalosc_bonusowa, wytrzymalosc_klasy);
native cod_get_user_trim(client, kondycja_zdobyta, kondycja_bonusowa, kondycja_klasy);
native cod_get_user_points(client);

native cod_get_user_maks_intelligence(client);
native cod_get_user_maks_health(client);
native cod_get_user_maks_damage(client, const String:obrazenia[], const MaxLeng);
native cod_get_user_maks_stamina(client, const String:wytrzymalosc[], const MaxLeng);
native cod_get_user_maks_trim(client, const String:kondycja[], const MaxLeng);

native cod_set_user_xp(client, wartosc);
native cod_set_user_class(client, klasa, zmiana);
native cod_set_user_item(client, item, wartosc, wytrzymalosc);

native cod_get_user_xp(client);
native cod_get_level_xp(poziom);
native cod_get_user_level(client);
native cod_get_user_level_all(client);
native cod_get_user_class(client);
native cod_get_user_item(client);
native cod_get_user_item_skill(client);
native cod_get_user_item_stamina(client);

native cod_get_classes_num();
native cod_get_classid(const String:nazwa[]);
native cod_get_class_name(klasa, const String:nazwa[], const MaxLeng);
native cod_get_class_desc(klasa, const String:opis[], const MaxLeng);
native cod_get_class_weapon(klasa, const String:bronie[], const MaxLeng);
native cod_get_class_intelligence(klasa);
native cod_get_class_health(klasa);
native cod_get_class_damage(klasa);
native cod_get_class_stamina(klasa);
native cod_get_class_trim(klasa);

native cod_get_items_num();
native cod_get_itemid(const String:nazwa[]);
native cod_get_item_name(item, const String:nazwa[], const MaxLeng);
native cod_get_item_desc(item, const String:nazwa[], const MaxLeng);

native cod_inflict_damage(client, attacker, damage);
native cod_register_class(const String:nazwa[], const String:opis[], const String:bronie[], inteligencja, zdrowie, obrazenia, wytrzymalosc, kondycja);
native cod_register_item(const String:nazwa[], const String:opis[], min_wartosc, max_wartosc);

forward cod_class_enabled(client, klasa);
forward cod_class_disabled(client, klasa);
forward cod_class_skill_used(client, klasa);

forward cod_item_enabled(client, wartosc, item);
forward cod_item_disabled(client, item);
forward cod_item_used(client, item);

 

 

[inne]

Proszę o nie kopiowanie tematu na inne fora bez mojej zgody.

 

[download]

COD MW2.rar
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!

Przez Vasto_Lorde,

Dodanie spoilerów dla czytelności

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
17 minut temu, plx211 napisał:

Mod posiada luke SQLi, ale na szczescie tylko dla nazw klas ?

Nikt raczej nie używa w nazwie klas znaków typu ś, ć itp więc ustawianie utf-8 raczej jest bezsensowne. Ale jak chcesz to wydaj tut bo to raptem jedna linijka kodu do zmian w funkcji tworzenia tabeli ?

Edytowane przez Linux`

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

SQL injection czyli wstrzykiwanie kodu.

Chodzi tutaj że z odpowiednia nazea klasy mozna zmieniac zapytanie lecace do bazy.

Np. "'; DROP TABLE xxx; --" w nazwie klasy, usunie tabele.

Jako ze jest ona w nazwach klasy to podatnosc nie jest taka szkodliwa :)

Ale warto wiedziec ze istnieje ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
25 minut temu, plx211 napisał:

SQL injection czyli wstrzykiwanie kodu.

Chodzi tutaj że z odpowiednia nazea klasy mozna zmieniac zapytanie lecace do bazy.

Np. "'; DROP TABLE xxx; --" w nazwie klasy, usunie tabele.

Jako ze jest ona w nazwach klasy to podatnosc nie jest taka szkodliwa ?

Ale warto wiedziec ze istnieje ?

Oj tam ?, nie pomyślałem nawet o tym a na twoim modzie jak to wyglądało bo chyba tak samo hehe. Ale prawdę mówiąc co to za szkodliwość, żaden wariat nie ustawi takich nazw klas na serwerze poza tym raczej nie ustawia się wszystkich uprawnień dla serwerowego użytkownika bazy mysql.

 

Szybki tut na znak specjalny w klasie, gdy chcemy stworzyć takową z nazwa np Żul

Przechodzimy do linii 1180 i zamieniamy

	StrCat(zapytanie, sizeof(zapytanie), "`inteligencja` INT UNSIGNED NOT NULL DEFAULT 0, `zdrowie` INT UNSIGNED NOT NULL DEFAULT 0, `obrazenia` INT UNSIGNED NOT NULL DEFAULT 0, `wytrzymalosc` INT UNSIGNED NOT NULL DEFAULT 0, `kondycja` INT UNSIGNED NOT NULL DEFAULT 0)");

 

na

StrCat(zapytanie, sizeof(zapytanie), "`inteligencja` INT UNSIGNED NOT NULL DEFAULT 0, `zdrowie` INT UNSIGNED NOT NULL DEFAULT 0, `obrazenia` INT UNSIGNED NOT NULL DEFAULT 0, `wytrzymalosc` INT UNSIGNED NOT NULL DEFAULT 0, `kondycja` INT UNSIGNED NOT NULL DEFAULT 0) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;");

 

@plx naprawia. Testowałem właśnie w phpmyadmin. Jedynym warunkiem jest kompilacja silnika w utf-8 i ręczna zmiana kodowania w panelu php w przypadku już utworzonej tabeli.

Edytowane przez Linux`

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Chyba tez posiadalem ta luke :)

Wyszukiwanie tegi to moje male hobby, tak patrze po kodzie i ogolnie git ci wszedl :)

 

@edit

ta latka nie napraeia tego, trzeba dodac escapowanie znakow

Edytowane przez plx211

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Było kupowane i jestem zadowolony ^^ Jeszcze lepiej jeśli teraz skrypt pojawił się publicznie, mam nadzieję że zyska jeszcze bardziej na popularności

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

My też jesteśmy zadowoleni. Pieniążki się zwróciły już dawno, a zabawy co nie miara :P połączyliśmy coda z surfem i wyszło nieziemsko :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Mógłbyś zrobić jakiś poradnik na dodanie misji do tego?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dodanie misji to już osobny sporawy plugin, może ktoś by się podjął jego napisania

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Mam na dysku gotowe misje, najpewniej wkrótce również zostaną opublikowane tak jak reszta dodatków :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Na aktualnej wersji nie ma możliwości korzystania z MP5-SD. Wystarczy jednak mała poprawka - w funkcji WeaponCanUse dodajemy:

switch(weaponindex)
	{
		case 23: strcopy(weapons, sizeof(weapons), "weapon_mp5sd"); // <--- dodajemy tą linijkę do switcha
		case 60: strcopy(weapons, sizeof(weapons), "weapon_m4a1_silencer");
......

i śmiga ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jestem w stanie gdzieś znaleźć te paczkę ze skompilowanymi plikami na amx? robię wszystko zgodnie z poradnikiem z forum, ale za każdym razem gdy próbuje je skompilować wyskakuje błąd "183" z którym nie za bardzo potrafię się uporać.
 

183

Błąd: "cannot read from file: "something""
Tłumaczenie: Nie można odczytać pliku o nazwie "coś"
Wyjaśnienie: Nie posiadasz pliku, który próbujesz dołączyć do pluginu poprzez #include. Prawdopodobnie nie pobrałeś wszystkich plików pluginu lub jeśli sam pisałeś plugin, możliwe że zrobiłeś literówkę w nazwie pliku

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Napisano (edytowane)

XDDDD.. Tutaj nie ma ani 1 pliku smx.. Ale mniejsza, po skompilowaniu i wgraniu silnika jest cały czas "trwa wczytywanie twoich danych"

Edytowane przez serpent98

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Napisano (edytowane)

L 05/05/2020 - 20:53:30: [SM] Exception reported: Invalid database Handle 0 (error: 4)
L 05/05/2020 - 20:53:30: [SM] Blaming: codmod_nowy.smx
L 05/05/2020 - 20:53:30: [SM] Call stack trace:
L 05/05/2020 - 20:53:30: [SM]   [0] SQL_TQuery
L 05/05/2020 - 20:53:30: [SM]   [1] Line 1250, C:\Users\beard\Desktop\serwer cfs\linux\addons\sourcemod\scripting\codmod_nowy.sp::WczytajDane
L 05/05/2020 - 20:53:30: [SM]   [2] Line 256, C:\Users\beard\Desktop\serwer cfs\linux\addons\sourcemod\scripting\codmod_nowy.sp::OnClientPutInServer

 

obraz.thumb.png.4e6bafd86125741e639442974f084847.png

Edytowane przez serpent98

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić obrazków. Dodaj lub załącz obrazki z adresu URL.


×
×
  • Dodaj nową pozycję...