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
 

BlackPerfum - zdjęcie

BlackPerfum

Rejestracja: 13.08.2012
Aktualnie: Nieaktywny
Poza forum Ostatnio: 24.03.2020 01:59
****-

#658568 [ROZWIĄZANE] Jak zmienić parametry kompilacji w kompilatorze lokalnym?

Napisane przez BlackPerfum w 18.08.2014 10:13

To:

zrobić skrót


  • +
  • -
  • 2


#658562 [ROZWIĄZANE] Jak zmienić parametry kompilacji w kompilatorze lokalnym?

Napisane przez BlackPerfum w 18.08.2014 09:49

CheQ

Jak zmienić parametry kompilacji w kompilatorze lokalnym?

kompilatorze lokalnym

Nie musi mówic nawet czy ma wbudowaną kompilacje w edytorze tekstowym. Najszybciej jest zrobić skrót do kompilatora i w miejscu "Element Docelowy" za scieżką pliku dodawać parametry "-d3"/"-d0". Jeśli masz wbudowaną kompilacje w jakims edytorze tekstowym to dopisuj parametry po ścieżce do kompilatora w linii wykonywalnej
  • +
  • -
  • 1


#657567 Jak dodać losowanie flagi do pluginu "Testowy VIP"

Napisane przez BlackPerfum w 17.08.2014 20:32

Jeśli inna flaga oznacza inne "dodatki" to pomysł jest z góry przeznaczony na porażkę. Dlaczego? Rozpatrzmy wszystkie możliwości:
• Jeśli flaga będzie losowana przy każdym podłączeniu do serwera to ludzie będą robić specjalnie "reconnecty" by miec te najlepsze "dodatki" co mija się z celem testowania vip'a gdyż gracze nie przetestują jego wszystkich mozliwości a tylko te najlepsze (a czasem to gorsze są lepsze lecz nikt o tym nie wie)

• Jeśli flaga bedzie losowana raz to:
- gracze zaczną się pluć iż jednemu wylosowało coś lepszego a innemu cos gorszego a to ma być test vip'a a nie loteria
- nikt nie przetestuje całego vip'a a tylko to co mu zostało wylosowane...

Sensownym wyjściem było by iż mozna 8 razy włączyć testowanie vip'a i za każdym inna flaga, lub posiadanie raz testowego vip'a ale wszystkie "dodatki" (ale wtedy za silny by był człek)

wogóle jeśli mam być szczery to ten plugin wypali jedynie na serwery only steam gdyż z ns'ami będzie tak iż będą sobie nick zmieniać oraz sid...
  • +
  • -
  • 1


#657566 Prośba o sprawdzenie perków i ewentualną naprawę

Napisane przez BlackPerfum w 17.08.2014 20:12

Już zagoniono mnie do roboty... Dopiero co wróciłem a każą mi pracować. Niedorzeczne, zaprośili byście na piwo a nie :(

Co do perków to wyglądają jak  :censored:  jeśli chce ktoś się dopytać o szczegóły błedów to proszę pisać od tak książki nie chce mi się pisać...

 

Hahaha kto to wymyślił "naćpane naboje" :D Chciał bym takim dostać hahahaha

 

 

 

Nie chce mi się sprawdzać czy działa a pewnie gdzieś gape walnełem. Powiedzmy że to psedo kod heh:

Załączone pliki


  • +
  • -
  • 2


#656542 index out of bounds w ColorChat

Napisane przez BlackPerfum w 13.08.2014 11:39

postanowiłem poszukać stocka

Po co? Napisałem co wystarczy by naprawić ten błąd (w bibliotece)

Rozwiazaniem było by użycie funkcji funkcji clamp/cs_get_user_team/get_pdata_int z offsetem team'u


  • +
  • -
  • 1


#655765 index out of bounds w ColorChat

Napisane przez BlackPerfum w 09.08.2014 19:27

Kiedy usunę tę linijkę to muszę zincludować tę drugą bibliotekę, bo inaczej sypie błędami

Dlatego napisałem:

pobierz najnowsze pliczki .inc amxmodx'a lub skompiluj na amxx.pl Tyle trudu

Jakoś mi nie sypie ;D Chyba że mam niestandardowe pliczki .inc ale w to wątpię bo chyba tego nie ruszałem ;D


Musiałbym wszędzie zmieniać funkcję ColorChat, bo ta którą podałeś ma inny układ.

Inny układ? Gdzie ty widzisz różnicę? Przeczytaj 10 razy link który tam dałem (do biblioteki amxmodx'a) wszystko śmiga
  • +
  • -
  • 2


#655758 index out of bounds w ColorChat

Napisane przez BlackPerfum w 09.08.2014 18:34

Po co używasz własnej biblioteki colorchat?? To przez nią jest błąd. Ktoś nie do końca przemyślał jej działanie i ci błędami sypie. Użyj colorchat'u z amxmodx'a. client_print_color (http://amxx.pl/dokum.../s107/chatcolor) ale dzięki uproszeniom w bibliotece możesz używać nadal nazwy ColorChat. Niczego w pluginie nie zmieniaj tylko usuń linijkę:
#include <colorchat>
i pobierz najnowsze pliczki .inc amxmodx'a lub skompiluj na amxx.pl Tyle trudu.

Co do błędu to trzeba spojrzeć na bibliotekę colorchat a dokładnie na linijkę 75 (w logach wyskakuje ci 74 ale zazwyczaj chodzi o następną linijkę...) czyli:
	if(ColorChange)
	{
		Team_Info(index, MSG_Type, TeamName[team]);
	}
Jedyną tablicą w tej linijce jest tablica TeamName teraz trzeba zobaczyć jak ona wygląda:
new TeamName[][] = 
{
	"",
	"TERRORIST",
	"CT",
	"SPECTATOR"
}
Wszyscy sobie pewnie pomyślą że jest wszystko okey ale wcale nie gdyż często w amxmodx'ie totalnie wszystko się buguje dlatego wcale się nie dziwię że chce uzyskać komórkę -1... Rozwiazaniem było by użycie funkcji funkcji clamp/cs_get_user_team/get_pdata_int z offsetem team'u
  • +
  • -
  • 2


#655753 Deploy crashuje serwer - niewidoczna broń

Napisane przez BlackPerfum w 09.08.2014 18:03

1. Czym jest według Ciebie pisanie racjonalne?

Nie idiotyczne (ładnie mówiąc) tzn. pisanie kodu który w conajmniej 90% się rozumie.

2. Można oczywiście ExecuteHamB użyć, proponowałem ExecuteHam, bo nie ma sensu żeby handler się wykonywał jeszcze raz, ale może... skoro na początku sprawdzamy, czy wyciągana broń jest "legalna" to nie ma z tym problemów żadnych przecież, bo dużo się nie wykona... A pewność, że zostanie wyciągnięta właściwa broń, która może być wyciągnięta jest taka sama, jak przy rekurencji, tylko warunek trzeba 2 razy umieścić (w rekurencji wykona się on dokładnie tyle samo razy, albo z niewielką różnicą, mimo że umieszczony jest raz).

W sposobie podanym przeze mnie (ten z użyciem ExecuteHamB + Ham_Item_Deploy) handler musi zostać wykonany 2x!!! Dlaczego? By poinformować inne pluginy o tym iż została wprowadzona zmiana w sliniku. Jesli użyjesz ExecuteHam tylko twój plugin będzie przechowywał prawidłowe informacje, a w innych pluginach będą tylko błedne. Mam na myśli to iż jeśli w dwóch pluginach łapiemy te zdarzenie to i w jednym zmieniamy jego główne własności to trzeba jakoś poinformować o tym także inne pluginy a nie sam silnik. Inaczej będą bardzo duże kłopoty z kompatybylnością


3. Czemu według Ciebie rozdzielanie kodu pomiędzy pluginy to wada? Według mnie duża zaleta, ale pod warunkiem, że się wie co się robi... Po 1. możemy wyłączyć konkretną rzecz wyłączając po prostu 1 plugin, po 2. jeśli coś nie działa to wiemy gdzie szukać, po 3. łatwiej jest utrzymać porządek i wiadomo co jest do czego... zalet jest jeszcze więcej...

Też uważam iż pisanie wielu pluginów jest dobre ale nie ma rzeczy bez wad... Tzn. pokazałem przykładowa wadę pisania wielu pluginów (nie stwierdzam iż takie pisanie to wada tylko iż posiada wade (ale także zalety ale zbaczamy z tematu....))

A co do rekurencji: wyobraź sobie przypadek, że tworzymy przedmiot, który pozwala on nam na podnoszenie broni innych klas (dzięki czemu możemy mieć broni aż 10), ale działa do końca rundy, po rundzie znika. Zbierzemy sobie więc 10 broni... Mamy również na serwerze szansę na wylosowanie niewidzialności przy zmianie broni... albo cokolwiek innego przy zmianie broni...

Przychodzi nowa runda, zmieniamy broń na broń z innej klasy, przedmiot nam już wygasł więc plugin nam tą broń wyrzuca i zmienia broń na następną... Pech chciał, że akurat są w takiej kolejności, że broń "legalna" jest na końcu... Policz sobie teraz ile razy wykona się niepotrzebnie losowanie niewidzialności czy cokolwiek sobie tam wymyślisz przy zmianie broni, gdy używasz rekurencji? Tak trąbisz o tej kompatybilności z innymi pluginami, a właśnie w tym miejscu jej nie zachowujesz, bo wykonujesz 10x niepotrzebnie ExecuteHamB, przez co inne pluginy niepotrzebnie podejmują akcje, jeśli są pod zmianę broni podpięte...

Zgadzam się ale wtedy kod "losowania niewidzialności" i kod "odbierania broni" był by bardzo irracjonalny... Zdarzenie Ham_Item_Deploy wykonuje się podczas pokazania przedmiotu a nie podczas jego zmiany. Zmiane należy dodatkowo wykryć (np. poprzez porównanie zawartości offsetów active item i active client item). Wtedy nie było by żadnych problemów.

Spodobały mi się przykłady z życia wzięte, dlatego też ci jeden podam. Używamy funkcji ExecuteHam do pokazywania. Mamy na serwerze jakiś item co dodaje nam broń P90 i klase która ma moc niewidzialności ale tylko na broni P90. Łudem szczęścia na tej klase zdobyliśmy ten item. Następnie po jakimś czasie znudził się on nam to go wyrzucamy i jakimś dziwnym sposobem nadal mamy niewidzialność?? O co chodzi? Już mówie, a może lepiej to przedstawić:

• wyrzucamy item podczas zmiany broni na P90
• wykonuje się zdarzenie Ham_Item_Deploy w pluginie z klasą, co daje nam niewidzialność
• wykonuje się zdarzenie Ham_Item_Deploy w pluginie z itemem, odbiera nam broń P90 i pokazuje ją graczu

I teraz powinno jeszcze być poinformowanie innych pluginów o zmienie broni ale ktoś użył ExecuteHam i nic się nie stanie a my bedziemy biegać niewidzialni


Popatrz na to zarówno przez pryzmat wydajności jak i przez każdy inny... Dlatego rekurencji zrealizowanej w TAKI SPOSÓB nie powinno się nawet do myśli dopuścić. Potrzebna Ci rekurencja i faktycznie umiesz się nią posługiwać (a naprawdę mało kto ją do końca rozumie, miałem na studiach przez cały semestr przedmiot poświęcony tylko rekurencji i widziałem jak dużo osób tego kompletnie nie rozumie... a na kierunek dostały się osoby z wynikami matur rozszerzonych 80% i wyżej) to jej użyj, ale wewnątrz pluginu, a nie poprzez Ham czy inne sposoby angażujące inne pluginy i mechanizmy serwera...

Zgadzam się w 100% iz ten sposób jest nie wydajny (ale otrzymujemy prawidłowy efekt końcowy). Dlatego pisałem iż:

Ogułem to od razu mówię że pomimo wstawiania się za rekurencją nie jestem za nią gdyż nie jestem za użyciem Deploy'a bo to jest do pewnego stopnia (bardzo bardzo małego) nie racjonalne. Lepiej łapać dodawanie broni. A najlepiej to nie dodawac nie właściwych broni ;D

Jeśli pomomo tego ktoś będzie chciał użyć zdarzenia Ham_Item_Deploy do usuwania "nielegalnych" broni to jedynymi sposobami by wszostko prawidłowo zdziałało jest albo użycie rekurencji i zatrzymania dalszego wywoływania starej informacji albo funkcji Set_Ham_Param_Entity i podmiana modelu broni. Gdyż w innych przypadkach inne pluginy będę przetrzymywac błędne informacje.


Które będzie najlepsze?

Powtórzę się kolejny raz:

Lepiej łapać dodawanie broni. A najlepiej to nie dodawac nie właściwych broni ;D

Z naciskiem na:

A najlepiej to nie dodawac nie właściwych broni ;D

Chodzi mi o to by samemu broń odbierać w momęcie gdy staje się "nielegalna" a nie gdy pokazujemy ją
  • +
  • -
  • 1


#655613 Deploy crashuje serwer - niewidoczna broń

Napisane przez BlackPerfum w 08.08.2014 20:39

W kodzie ktory podales uzywasz RemovePlayerItem+pev_weapons+ItemKill. Czy to nie za dużo?

Nie, to idealnie
 

Mógłbyś podrzucić kod z Ham_AddPlayerItem? Chciałbym przetestować jak to działa.

public plugin_init()
{
	RegisterHam(Ham_AddPlayerItem, "player", "AddItem")
}

public AddItem(id,ent)
{
	new wid = cs_get_weapon_id(ent)
	if(is_user_alive(id) && ~(bronie_klasy[klasa_gracza[id]] | bonusowe_bronie_gracza[id] | bronie_dozwolone) & 1<<wid)
	{
		ExecuteHamB(Ham_Item_Kill, ent)
		return HAM_SUPERCEDE
	}
	return HAM_IGNORED
}
Jedynie z c4 bedzie trochę inaczej bo trzeba zmienić submodel oraz usunąć ikonkę
  • +
  • -
  • 1


#655604 Deploy crashuje serwer - niewidoczna broń

Napisane przez BlackPerfum w 08.08.2014 19:38

1. czy dostrzegasz w tym rozwiązaniu rekurencję?

Bardzo często mylę terminy dlatego nie uczę się ich (wogóle) ale tak dostrzegam (o ile masz na myśli wykonanie funkcji w samej sobie)

2. czy jest ona niezbędna?

Nie. Jestem za tym by jej nawet nie było

3. Czy potrafisz przewidzieć WSZYSTKIE warunki wyjścia z niej i dopilnować, aby zawsze nastąpiło wyjście z niej?

Potrafię przewidzieć WSZYSTKIE RACJONALNE przypadki oraz mogę nawet powiedzieć więcej iż jeśli ktoś tego kodu uzyje racjonalnie to problemów nie będzie miał

Rozumiem argument, że broń nie zmieni się poprawnie, jeśli w PRE podmienimy parametr, dlatego owszem należy wywołać zmianę broni jeszcze raz, ale po co tu rekurencja...

A co jeśli zmienimy broń na taka która też ma zostać usunięta? Szybszy sposób wyjścia z sytuacji. Szansa na wywołanie się usuwania broni 2x z rzędu (biorąc pod uwagę iż to cod mod oraz że pisze się racjonalnie) jest wręcz zerowa ale przydało by się i tak na wszelki wypadek sprawdzić czy na pewno (tak wiem znowu mówię o skrajnościach...)

Przelećmy pętlą po wszystkich broniach gracza w Poście (bo Pre nie ma sensu używać, jeśli nie podmieniamy zmienianej broni) i po wyrzuceniu niepotrzebnych zmieńmy na jedną z tych, które gracz użyć może, jednak już używając execute bez B...

Takim sposobem za każdym razem gdy gracz zmieni broń na nie właściwą bedziemy robić pętlę po wszystkich jego broniach, praktycznie to jest wręcz błachostaka dla serwera ale jakoś ja wolę by wszystko o siebie dbało za siebie dlatego kod który podałem "zadbał by o to sam" (tak wiem jestem pedantem...) Co do nie używania ExecuteHam bez B to nie do końca się zgodze gdyż inny plugin już nie złapie poprawnej broni :( zawsze ktoś powtarzał "kompatybliność ponad wszystko"

Tworzenie rekurencji poprzez Ham jest niezalecane i to mocno... w jakimkolwiek przypadku... Nie dość, że sam pawn rekurencji nie optymalizuje, więc wychodzi ona dużo bardziej kosztownie, niż pętle, to jeszcze przy okazji mielimy wszystkim, co silnik robi podczas zmiany broni + wszystko co po drodze robi Ham i niech nam jeszcze do tego samego eventu inny plugin się podepnie... Istna katorga i nie dziwię się, że serwer by padł tylko od tego, nawet gdy rekurencja zakończy się prawidłowo.

I tu spotykamy mega wade pisania w wielu pluginach a nie w jednym... My nie wywołamy drugi raz Deploy'a a inny plugin złapie nie poprawną bron i bedzie bęc. Dlatego tak to zrobiłem nie inaczej.


Czyli jak juz chce deploy to post?

To zależy czy użyjesz "rekurencji" czy nie. Jeśli tak to nie ma znaczenia czy to będzie post czy pre. Jeśli nie to większe pole do działania da ci post.

Czy Ham_AddPlayerItem wywołuje się wtedy gdy gracz otrzymuje item?

Tak. Dlatego to jest najlepsze rozwiązanie. Złapiesz tym każdy item który został dodany (tylko nie taki który dodałeś za pomocą tego ewentu ale ExecuteHam a nie ExecuteHamB/offsetami czyli zawsze złapiesz).

Dlaczego w twym kodzie nie ma pętli po slotach?

Kod "sam o to zadba" by nie było takich błędów. Dlatego jej nie użyłem. (zaleta użycia "rekurencji" ;D)


Ogułem to od razu mówię że pomimo wstawiania się za rekurencją nie jestem za nią gdyż nie jestem za użyciem Deploy'a bo to jest do pewnego stopnia (bardzo bardzo małego) nie racjonalne. Lepiej łapać dodawanie broni. A najlepiej to nie dodawac nie właściwych broni ;D


Dodam iż można użyć SetHamParamEntity ale! trzeba zadbać o model broni tzn. zrobić coś takiego:

const m_pActiveItem = 373
const m_pPlayer = 41
const m_pClientActiveItem = 374
const m_iszViewModel = 68

public Deploy(ent)
{
	new id = get_pdata_cbase(ent, m_pPlayer, 4)
	new wid = cs_get_weapon_id(ent)

	if(is_user_alive(id) && ~(bronie_klasy[klasa_gracza[id]] | bonusowe_bronie_gracza[id] | bronie_dozwolone) & 1<<wid)
	{
		new weapon = get_pdata_cbase(id,m_pClientActiveItem,5)
		set_pdata_cbase(id,m_pActiveItem,weapon,5)
		ExecuteHamB(Ham_RemovePlayerItem, id, ent)
		set_pev(id, pev_weapons, pev(id, pev_weapons) & ~(1<<wid))
		ExecuteHamB(Ham_Item_Kill, ent)
		SetHamParamEntity(1,weapon)
		set_pev(id,pev_viewmodel,get_pdata_int(weapon,m_iszViewModel,4))
		return HAM_OVERRIDE
	}
	return HAM_IGNORED
}
Tylko nwm jak bedzie z animacją...
  • +
  • -
  • 1


#655578 Deploy crashuje serwer - niewidoczna broń

Napisane przez BlackPerfum w 08.08.2014 16:49

Zmień new i na new i=0, chociaż wątpię, by to było problemem...

Oj to naprawdę jest chamskie. Czasem godzinę błędu szukałem a tu takie cuś...

Możesz wyjaśnić dlaczego sprawdzasz tutaj tylko wartość 2?

Sprawda czy byt ma prywatne dane. Czasem (zazwyczaj) podczas usuwania bytu sam się nie usunie (znaczy nie od razu) ale prywatne dane od razu zostają kasowane.

Funkcja cała dobra. Działa nawet mi ale jest pewien szkopuł. NIGDY W ŻYCIU NIE WOLNO USUWAĆ AKTYWNEJ BRONI tzn. trzeba funkcję set_pdata_cbase z offsetem active item dać ponad usuwaniem broni. Taki szkopuł. Poza tym działać działa. Co do Set_Ham_Param_Entity to jest całkiem spoko sposób ale tylko w teorii bo w praktyce okazuje się że event Deploy na danej bronii tylko uaktywania na niej think i parę innych rzeczy a model jest podmieniany w funkcji pobocznej pomiędzy pre i post Deploy'a. Dlatego jeśli użyjesz funkcji Set_Ham_Param_Entity w pre Deploy to modelu nie broni nie będzie a jeśli użyjesz w post Deploy to będzie model ale tej co usunąłeś :( Poza tym to celowo jest tutaj użyte ExecuteHamB gdyż wykonuje się pętelka po niewłaściwych broniach by je łapać i usuwać. wogóle to ja się dziwię dlaczego jest tu użyty Deploy a nie Ham_AddPlayerItem. Jeśli chcesz Deploy'a to można tak:
const m_pActiveItem = 373
const m_pPlayer = 41
const m_pClientActiveItem = 374

public Deploy(ent)
{
	new id = get_pdata_cbase(ent, m_pPlayer, 4)
	new wid = cs_get_weapon_id(ent)

	if(is_user_alive(id) && ~(bronie_klasy[klasa_gracza[id]] | bonusowe_bronie_gracza[id] | bronie_dozwolone) & 1<<wid)
	{
		new weapon = get_pdata_cbase(id,m_pClientActiveItem,5)
		set_pdata_cbase(id,m_pActiveItem,weapon,5)
		ExecuteHamB(Ham_RemovePlayerItem, id, ent)
		set_pev(id, pev_weapons, pev(id, pev_weapons) & ~(1<<wid))
		ExecuteHamB(Ham_Item_Kill, ent)
		ExecuteHamB(Ham_Item_Deploy,weapon)
		return HAM_SUPERCEDE
	}
	return HAM_IGNORED
}
Użycie ExecuteHam skutkowało by zabraniem tylko jednej broni w przypadku posiadania dwóch wadliwych w tym jednej aktywnej. Dlatego pętla jest wskazana i oczywiście można pobierać id broni z poprzedniego użycia thinka naszej bronii co skutkuje takim samym wynikiem jak lastitem ale nie buguje się w przypadku pierwszej zdobytej bronii
  • +
  • -
  • 1


#654330 [Poradnik] Jak naprawić menu z generatora Vip'a?

Napisane przez BlackPerfum w 02.08.2014 18:06

on napisał jak naprawić to co  nie dziala w generatorze (po cholere w ogóle ten generator?) a ty go obwiniasz o to że generator generuje wg ciebie slaby kod jakby to Drago go pisał

Nie obwiniam i tez jestem za tym żeby go wogóle nie bylo ale jeśli już jest to wypadałoby by działał. Twierdzę jedynie iż ten temat nie zakończy serii tematów o problemach z vip'em

co jest w parametrze item?

1,2,3,...,97,98,99 itd

jak by chcial zrobic menu graczy czy cos to ta praktyka jest odpowiednia (nie wiem co mial na mysli autor kodu ale piszesz tak jakby to zawsze byl blad)

W menu graczy nie przesyłał by sztywnych cyfer a serial id danego gracza a to jest duża różnica

(nie wiem co mial na mysli autor kodu ale piszesz tak jakby to zawsze byl blad)

Ten sposób działania nad przekazywaniem i odbieraniem numeru przycisku jest błędny ale nikt nie mówi że inne sposoby są złe

Nie rób z siebie gwiazdy

Wtf? Sory ale nie świecę :(

nie obrazaj

gdzie ja tu go obraziłem?
  • +
  • -
  • 1


#654312 [Poradnik] Jak naprawić menu z generatora Vip'a?

Napisane przez BlackPerfum w 02.08.2014 16:19

Nie do tematu.. opisałem jak naprawić menu, nie jak "lepiej" dodać broń - nie ja pisałem vip'a generatora.

Nie "lepiej"! Przeczytaj jeszcze raz mój post! Chodziło mi o to iż ludzie nadal będą się czepiać iż im coś z menu nie działa (a dokładnie ammo do broni czasem nie bedzie dodawane).
 

No i Benio miał rację. Nie sprawdzasz co dodajesz i wskazujesz ludziom błędy. Tak niech kopiują twoją opcję i narzekają , że nadal nie działa

To nie był błąd, a jedynie szybszy sposób twojego tut'a. Poza tym to działa!!! Sprawdź jak nie wierzysz. Przykładowy kod vip'a:
Załączony plik  Vip.sma   2,19 KB  235 Ilość pobrań
  Vip.amxx
 

Chodziło tylko o menu , a ty robisz z igły widły aby robić niby tutki na naprawę całego generatora eh

Nie rozumiesz czegoś, jeśli zrobisz tut'a o menu który nie będzie w pełni sprawiał iż menu bedzie poprawnie działać to ludzie nadal bedą robić tematy zwiazane z vip'em bo coś im tam nie działa. Dlatego wniosłem pomysł:

Mogły by osoby mające dostęp do kodu generatora to sprawnie naprawić lub chociaż umieścić to na git'cie amxx'a / w dziale dla supporta, zajeli byśmy się nim i to odpowiednio

Mówiąc to miałem na myśli by nie robić żadnego tut'a!!! W dziale support'u lub na git'cie to raz zrobić by działało i bedzie spokój z tematami związanymi z vip'em
  • +
  • -
  • 1


#654297 [ROZWIĄZANE] Problem Segmentation fault

Napisane przez BlackPerfum w 02.08.2014 15:10

My też jesteśmy tylko ludźmi!!! Nikt mnie jeszcze nie nauczył czytać w myślach (dosłownie a nie poprzez przewidywnaie). Widzisz gdzieś by autor tematu pytał o event w trakcie dołączenia do team'u ?? Ja nie, jeśli o to chodziło autorowi to się cieszę że mu pomogłeś ale nam jedynie coś takiego jest nie narękę gdyż niczego nie nauczyłeś autora, jedynie dałeś mu kod (który wygląda gorzej niż źle, ale zadziała xD). Następnym razem gdy bedzie chciał o coś nas poprosić znowu temat będzie miał kilometr gdyż znowu poprosi o coś czego tak naprawdę nie chce (patrz nazwa tematu (tego) + pierwszy post). Czasem wystarczy ludziom tylko raz wytłumacz iż musi bardzo dokładnie opisać swoją sytuację i to czego oczekuje. Jeśli nie potrafi sprezycować to musi podać kod, a jak nie poda to musi czekać na takiego jasnowidza jak xenos który zrozumie jego tok myślenia
  • +
  • -
  • 2


#654296 [Poradnik] Jak naprawić menu z generatora Vip'a?

Napisane przez BlackPerfum w 02.08.2014 14:55

Drago36 cieszę się że się starasz ale proszę cię... Najpierw się pośmiejmy ze mnie (by nie było że po sobie tez nie jade) xD
 

Co robimy pierwsze? No pewnie , że otwieramy naszego vip'a.sma w programie typu : amxx-studio

Nie mam amxx stidio... Co to w ogóle? W tym się pisze? Nie wszyscy lubią takie bAdZiEwIa. Już prędzej "dowolny edytor tekstowy".

Teraz spróbuję ci wpoić do twojego mUzgÓ że ten temat nie sprawi iż ilość tematów zmaleje gdyż twój poradnik "Jak naprawić menu z generatora Vip'a?" ma parę błędów a że ja z lupą chodze po tym forum to ci je pokażę byś się samodoskonalił (z moją małą pomocą xD). No to lecimy:

• co z tego że menu zadziała jak w połowie przypadków broń zostanie błędnie dodana (głównie chodzi o to że bez ammo) chodzi o to iż funkcja find_ent_by_owner zazwyczaj nie działa gdy dopiero co stworzyliśmy byt chodzi mi o to:
Spoiler
w ogóle to funkcja find_ent_by_owner jest niepotrzebna gdyż funkcja give_item zwraca id stworzonego bytu...

• jaki nie mądry człek (bardzo bardzo ... bardzo ładnie mówiąc) nauczył cię by poprzez 3 argument funkcji menu_additem przekazywać nr. przycisku?? To jest mega, mega błąd. Mogłeś również zrobić globalną tablicę gdyż to wygląda identycznie... Po to w uchwycie menu (public menu_handler(id, menu, item)) ma się zmienną item by można było szybko się dowiedzieć który był przycisk naciśnięty a ty to robisz tak: wpakowujesz do każdego przycisku jego liczbę, następnie w uchwycie pobierasz z wciśniętego przycisku tą liczbę... Po co? Przecież wiesz który przycisk został naciśnięty

• nawet nie opisałeś sposobu by jedne zestawy były dla CT a inne dla TT (a to jest w generatorze vip'a), tak samo brak licznika rund (a on jest wbudowany w generatorze wystarczy warunek zrobić), wszystko jest za free w menu super!! Gracze się ucieszą (ale tylko vip'y) tzn. nie będzie zabierać kasy jak w generatorze ustawisz by zabierało

Twój cały tut można zamienić na coś takiego:

1. Zamienić to:
public menu_callback(id, menu, item){
	return ITEM_DISABLED;
}
Na to:
public menu_callback(id, menu, item)	return ITEM_ENABLED
2. Zamienić to:
public menu_handler(id, menu, item){
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}
Na to:
public menu_handler(id, menu, item)
{
	if(item != MENU_EXIT)
	{
		new func[20]
		formatex(func,charsmax(func),"menu_%i_handler",item+1)
		callfunc_begin_i(get_func_id(func))
		callfunc_push_int(id)
		callfunc_end()
	}
	menu_destroy(menu)
}
I osoba czytająca nie musi już robić niczego inteligentnego, wystarczy że będzie kopiowac i wklejać a uzyska taki sam efekt jak u ciebie tylko że tu sie nie namęczy, a co ważniejsze nie pomyli... (można by było też callbacki wyrzucić bo nic nie robią ale to pikuś)


Rozumiem że CheQ to wymusił (hahahaha) ale bez przesady, jeśli miał by ktoś napisać tuta jak naprawić wszystkie błędy w generatorze to napisał by conajmniej książkę (jak nie całą sagę). Mogły by osoby mające dostęp do kodu generatora to sprawnie naprawić lub chociaż umieścić to na git'cie amxx'a / w dziale dla supporta, zajeli byśmy się nim i to odpowiednio
  • +
  • -
  • 1