Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Nltj - zdjęcie

Nltj

Rejestracja: 13.07.2014
Aktualnie: Nieaktywny
Poza forum Ostatnio: 10.10.2014 16:06
-----

#661456 Crash Segmentation fault

Napisane przez ex0 w 31.08.2014 20:12

http://pl.wikipedia.org/wiki/Naruszenie_ochrony_pami%C4%99ci

"Fachowo' wyjaśnione xD

Trzeba popatrzeć który plugin sobie tak grymasi i wtedy będzie wiadomo gdzie go ugryźć. 

Spróbuj dodać debugowanie do komendy startowej serwera, może wysypią błędy :)


  • +
  • -
  • 1


#661469 Crash Segmentation fault

Napisane przez GwynBleidD w 31.08.2014 20:30

Sposób 1. wyłączać pluginy dopóki nie ustalisz, kiedy crashe ustają. Jeśli trafi na jakiś duży plugin, możesz jego fragmenty wyrzucać albo dodać wysyłanie czegoś do konsoli serwera tuż przy wejściu do każdej większej funkcji (oczywiście dla każdej z funkcji co innego) i w ten sposób zawężysz poszukiwania.
Sposób 2. Użyć debugowania pośmiertnego. Więcej o tym na forum anglojęzycznym (alliedmods) znajdziesz.
  • +
  • -
  • 1


#662063 Wykorzystanie JavaScript w motd na steam – lokalizacja gry , dostęp do plików

Napisane przez GwynBleidD w 04.09.2014 11:58

Dodam jeszcze jedną rzecz, silnik otwierający MOTD jest zaciągany bezpośrednio ze steama, czyli dokładnie na tym samym silniku otwierany jest sklep steam itp. Dlatego musiałeś zamknąć całego steama, aby przestał się "dziwnie" zachowywać (bo biblioteka była cały czas załadowana). A to jest potencjalnym exploitem ;)
  • +
  • -
  • 3


#646363 [FIX] Naprawa zacinających się karabinów przy strzelaniu "fullauto"

Napisane przez Puchate w 29.06.2014 18:53


na czym polega błąd?

 

 

 

 istnieją u Ciebie problemy typu zacinający się karabin podczas strzelania bądź chcesz strzelić - naciskasz klawisz ze zbindowanym +attack (pozdrawiamy strzelających [ENTER]em  :P) i wciąż nie strzela

 

Być może tą informację bardziej  trzeba wyróżnić.


  • +
  • -
  • 1


#661142 [FIX] Naprawa zacinających się karabinów przy strzelaniu "fullauto"

Napisane przez GwynBleidD w 30.08.2014 09:56

A jeśli znajdziesz plugin, który robi coś złośliwego i będą w nim "jakieś" komendy to też dodasz do swojego pluginu?


  • +
  • -
  • 1


#114401 Zmienne - Co I Jak?

Napisane przez destrojer w 24.02.2010 23:19

Tak wiem, że temat ma ponad rok i z góry przepraszam za odkop, ale nie mogę tak tego zostawić.

Po 1 nie wiem jak się uczyłeś, ale nie rozpowszechniaj takich bzdur dobrze?
Po 2 zmienne w tym sensie co Ty przedstawiłeś definiujemy a nie deklarujemy. Jest różnica między tymi pojęciami.
Po 3

Najprościej ujmując zmienna jest to obszar ulokowany w pamięci komputera przechowywujący dane różnego typu

jak już chcesz tak pisać to uważaj na słownictwo. Nie ma czegoś takiego jak OBSZAR PAMIĘCI, jak już to komórka pamięci i nie jest to język prosty jeśli chodzi o tłumaczenie czegoś zielonym.
Po 4

Inicjacja:
Pierwsze przypisanie wartości do zmiennej po jej utworzeniu:

new zmienna;
zmienna = 1;

rozumiem, ze inicjacja seksualna tak? Zmienne się inicjALIZuje. Poza tym to jest przypisanie do zmiennej wartości a nie zainicjalizowanie jej.

Po 5

Przy ich tworzeniu automatycznie ustawiane są na 0( nie przechowywują żadnych danych, są po prostu puste)

zero jest logicznym fałszem więc jest wartością mój drogi.

Po 6

String:
Zmienna przechowywująca string - ciąg znaków. Po nazwie wystarczy dodać dwa nawiasy(lub więcej w zależności jaką tablice chcemy stworzyć)
Deklaracja:

new zmienna[ilosc_znakow_tablicy];

zmienna może Ci co najwyżej przechować jeden znak. Teraz czas na małą zabawę. Jestem zielony i czytam to co napisałeś w nawiasie. Tworzę coś takiego
new a[[[[[[[[2]]]][[]]][[]]]]];
, zrobiłem tak bo napisałeś to bardzo skrótowo i tym samym nie zrozumiale dla noobków.

Po 7

W Pawnie można spotkać następujące typy zmiennych:

w PAWN nie ma TYPÓW zmiennych, są tylko tagi.

Po 8

Stock:
Wiele osób używa je, ale tak naprawdę nie wie jak one działają. Zmienne te są tworzone tylko wtedy, jeżeli są używane, w innym wypadku kompilator je ignoruje. Zazwyczaj używane w plikach nagłówkowych .inc .
Deklaracja:

stock zmienna;

kiedy świnie zaczną latać. Takie coś (bo nie mam pomysłu jak to nazwać) wywoła tylko błędy i nic więcej. Jeśli nie wiesz czym jest stock to nie pisz o tym dobrze?

Już mi się nie chce wyliczać, znudziło mi sie

Stałe:
Działają tak samo jak zmienne, lecz zmienną ich nie można nazwać gdyż byłaby to kompletna sprzeczność. Różnią się tym, że poprzez cały czas mają jedną wartość, która zostanie im przypisana, nie można na nich wykonywać żadnych operacji oprócz pobierania ich wartości. Przy tworzeniu przed nazwą trzeba dodać przedrostek 'const'

Makrodefinicje:
Bardzo podobne do zmiennych, działają na zasadzie "niech X będzie Y". Tak więc jeżeli do makrodefinicji X przypiszemy Y każdorazowe wpisanie w kodzie X skutkuje wywołaniem Y. Programiści używają ich najczęściej aby zaoszczędzić sobie wpisywania długich nazw funkcji, lub ścieżek do plików. Nie ma ograniczeń co do typu przechowywanych w nich danych. Tworzenie:

Wyjaśniłeś to bardzo pobieżnie. Nie wspomniałeś jaka różnica miedzy stałą a makrodefinicją, nie wspomniałeś dlaczego w pewnych sytuacjach stosowanie makrodefinicji jest mniej praktyczne niż stałych. Mały przykład
new const a = 2 + 2;
#define WYNIK       2+2

printf(" Wynik 1:  %i\n Wynik2: %i", (a * 2), WYNIK * 2 );

W 1 przypadku wynikiem bedzie 8, w drugim 6. Dlaczego? Bo kompilator zastępuje każda definicję jej wartością.


Trochę już zmęczony jestem.

Nigdy więcej nie patrz na mnie takim wzrokiem

Nigdy więcej nie miej takich zimnych oczu

Pozdrawiam.

Dziękuję, dobranoc
D.
  • +
  • -
  • 7


#660662 [ROZWIĄZANE] Jak ustawic Set_user_health miejac liczbe Float

Napisane przez Puchate w 27.08.2014 23:49

To konwertuj liczbe zmiennoprzecinkowa na calkowita za pomoca floatround. Jezeli jako parametr musisz podac float to mozesz pierw ja zaokraglic a pozniej zmienic na float np. tak -> float(floatround(5.02)) zwroci (w przyblizeniu ;)) 5.00.


  • +
  • -
  • 2


#660320 [ROZWIĄZANE] Co szybsze? Forward, natyw, callfunc.

Napisane przez radim w 26.08.2014 15:48

Zadałeś pytanie: 'co szybsze' to chyba logicznie sobie można wytłumaczyć to co speedkill napisał.
Szybsze > Wolniejsze.


  • +
  • -
  • 1


#659350 [ROZWIĄZANE] BLAD NATYWU PODSTAWOWEGO set_user_maxspeed Jak to mozliwe ?

Napisane przez MAGNET w 22.08.2014 01:47

Bo serwer probuje wywolac cos na graczu ktorego nie ma, po czym w procesorze tworzy sie zdarzenie "wtf?!" I nie wytrzymuje takiego napiecia I mdleje.
  • +
  • -
  • 1


#659406 Water Caustics

Napisane przez dasiek w 22.08.2014 12:05

http://http.develope...ugems_ch02.html

 

 

takie cuś?


  • +
  • -
  • 2


#531922 kanaly hud (laczenie pluginów pomaga?)

Napisane przez sebul w 06.04.2013 00:13

Niczego nie musisz łączyć. Po prostu ustaw ten sam kanał, jak chcesz żeby te dwie opcje zajmowały tylko jeden.

Nie ma to jak odpowiedź osoby, która nie ma zielonego pojęcia o tym.
  • +
  • -
  • 2


#658959 [ROZWIĄZANE] Zamienienie danego znaku na inny

Napisane przez Puchate w 20.08.2014 02:45

array[39] = 'c';

Zamianę znaków możesz zrealizować za pomocą replace_all.


  • +
  • -
  • 1


#657488 Problem z RANK statystyką (2 save type in 1 plugin?)

Napisane przez The.Scott w 17.08.2014 11:33

Mam problem z default rank pluginem, mam nastawiony save type IP adress, ale u kilka graczy IP adrees zmienia się, czy mozna zrobic w default rank 2 save type? Czy jakos oddzielnie graczu ustawic save type na nick?


  • +
  • -
  • 1


#658698 Zabezpieczenie pluginu na ip do którego daje .sma

Napisane przez GwynBleidD w 18.08.2014 21:09

Jeśli już tak bardzo chcecie zabezpieczać, IP zapiszcie w formie liczby całkowitej (wszak adres IP ma dokładnie 32 bity), a nie w formie stringa, bo taki string da się bardzo łatwo podmienić, bo przecież widać od razu gdzie on leży w kodzie. Lepiej więc "docelowy" adres IP zapisać w formie, która nie jest łatwa do odczytania, następnie adres IP serwera sprowadzić do tej samej postaci przed porównaniem i dopiero wtedy porównać.

Porównanie również można zamaskować (żeby ktoś go nie podmienił na true, albo nie wynopował jeśli jest użyty warunek w postaci if(!warunek) return.... Choćby porównywać w jakiś sprytny sposób bit po bicie albo wykonywać szczególne operacje matematyczne. pomysłów jest wiele.

Inną ciekawą opcją jest "serwer licencyjny". Generujesz licencję (może być to prosty plik tekstowy z ID licencji, adresem IP serwera i danymi osoby posiadającej licencję), wyliczasz dla tej licencji hash z solą (ale nie jakieś proste MD5, jak już szaleć to na całego: PBKDF2 + SHA256 lub BCrypt + SHA256 z jakąś rozsądną liczbą iteracji). Sól powinna być unikalna dla każdego pliku licencyjnego i nieujawniana, w ten sposób nikt nie ma szans podrobić pliku licencyjnego mimo, że wie jak jest generowany. Twój "zamaskowany" plugin wysyłałby nawet samo ID + hash do serwera licencyjnego, a ten po swojej stronie generuje ponownie hash z danych zapisanych w bazie i sprawdza czy jest identyczny z tym przesłanym z serwera.

Jeszcze ciekawsze by było, gdyby AMXX potrafił uruchomić kod wygenerowany w locie. Wtedy serwer licencyjny po zweryfikowaniu licencji, wysyłałby kawałek kodu, który jest niezbędny do działania pluginu. Kod taki siedziałby w pamięci RAM, więc byłby ciężki do "odzyskania". Pod warunkiem, że transmisja kodu byłaby szyfrowana, co też nietrudno uzyskać :)
  • +
  • -
  • 5


#657482 Czy da się ustawić na jednym bycie dwa set_rendering

Napisane przez Droso w 17.08.2014 11:03

Ustawiasz bytowi, aby podążał za bytem

entity_set_int(ent, EV_INT_movetype, MOVETYPE_FOLLOW);
entity_set_edict(ent, EV_ENT_aiment, ent2); 

Ustawiasz mu taką samą prędkość (pobieraj to w PreThinku Bytu, bo to piłka, więc jej prędkość będzie zmienna)

new Float:fVelo[3];
pev(ent2, pev_velocity, fVelo);
set_pev(ent, pev_velocity, fVelo);

I położenie, to chyba wiesz.

 

OFC. Nie możesz nałożyć dwóch kolorów na siebie, tylko to w/w może zadziałać, ale nie sprawdzałem.

ALSO Co do dwóch efektów i tak nie ma co kombinować, bo i tak nie będzie to wyglądało tak jak chcesz za pewne (przez ustawianie set_rendering, bo może dwa byty Ciebie zadowolą :D)

 


  • +
  • -
  • 1