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
 

Zdjęcie

[ROZWIĄZANE] Która z opcji będzie kompatybilna i czym właściwie różni się public od..(właściwie nie wiem)?

public kompatybilna różnica szybkość działania

Najlepsza odpowiedź BlackPerfum, 08.07.2014 18:53

Sposób A nie zadziała, bo będzie kompilator uznawał za symbol funkcję Gracze(id). Musisz używać sposobu B, wtedy wsio działa.

Jeśli Drago36 nigdzie w tekście nie ma zrobionej zmiennej/stałej/funkcji o tej samej nazwie to zadziała bez problemu

Pierwsza "dolegliwość": różnicy w działaniu nie odczujesz bo to czy funkcja jest publiczna czy lokalna (druga "dolegliwość") na to nie wpływa. Różnią się tylko miejscem rejestracji przez co do funkcji lokalnej masz dostęp tylko w danym pluginie a do funkcji publicznej możesz się "włamać" skąd chcesz haha.gif Do wywoływania funkcji publicznych z innych pluginów możesz użyć callfunc_begin / callfunc_begin_i / ExecuteForward

Teraz nasuwa się pytanie czy chcesz by inny plugin mógł użyć twojej funkcji? Przejdź do postu


  • Zamknięty Temat jest zamknięty
6 odpowiedzi w tym temacie

#1 Drago36

    Profesjonalista - if you know what i mean

  • Power User

Reputacja: 561
Wszechwiedzący

  • Postów:707
  • GG:
  • Imię:Mów mi D.ave
  • Lokalizacja:Polska
Offline

Napisano 08.07.2014 18:10

Witam.

 

Mam dwa dolegliwości:

1. Która wersja będzie bardziej kompatybilna?

Spoiler

Jak widzimy w ppkt. b ) kontynuowany kod jest do publica, a w a) jest do.. i tu właściwie pytanie drugie - jak to się nazywa? Trochę wstyd, ale nie jestem informatykiem, ja zajmuję się jedynie rzeczami do cs'a. :coto:

 

Wszelkie dzięki za udzielenie odpowiedzi.


  • +
  • -
  • 0

#2 pro100wHS

    Pomocny

  • Użytkownik

Reputacja: 13
Początkujący

  • Postów:70
  • GG:
  • Lokalizacja:Ziemia
Offline

Napisano 08.07.2014 18:36

Sposób A nie zadziała, bo będzie kompilator uznawał za symbol funkcję Gracze(id). Musisz używać sposobu B, wtedy wsio działa.


  • +
  • -
  • 0

b_350_20_FFFFFF_ACBB53_0A0F2E_000000.png

Jeżeli masz do mnie jakąś sprawę to napisz od razu o co ci chodzi.

Wiadomości typu "pomożesz?" bez wyjaśnienia sprawy będę od razu usuwał


#3 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 08.07.2014 18:53   Najlepsza odpowiedź

Sposób A nie zadziała, bo będzie kompilator uznawał za symbol funkcję Gracze(id). Musisz używać sposobu B, wtedy wsio działa.

Jeśli Drago36 nigdzie w tekście nie ma zrobionej zmiennej/stałej/funkcji o tej samej nazwie to zadziała bez problemu

Pierwsza "dolegliwość": różnicy w działaniu nie odczujesz bo to czy funkcja jest publiczna czy lokalna (druga "dolegliwość") na to nie wpływa. Różnią się tylko miejscem rejestracji przez co do funkcji lokalnej masz dostęp tylko w danym pluginie a do funkcji publicznej możesz się "włamać" skąd chcesz haha.gif Do wywoływania funkcji publicznych z innych pluginów możesz użyć callfunc_begin / callfunc_begin_i / ExecuteForward

Teraz nasuwa się pytanie czy chcesz by inny plugin mógł użyć twojej funkcji?
  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#4 Drago36

    Profesjonalista - if you know what i mean

  • Autor tematu
  • Power User

Reputacja: 561
Wszechwiedzący

  • Postów:707
  • GG:
  • Imię:Mów mi D.ave
  • Lokalizacja:Polska
Offline

Napisano 08.07.2014 20:06


Teraz nasuwa się pytanie czy chcesz by inny plugin mógł użyć twojej funkcji?

Nie. Zajechałem przykładem tylko. ;)  Czyli jeszcze dla pewności: użycie funkcji, czy to publicznej, czy lokalnej i tak nie ma wpływu na kompatybilność?


  • +
  • -
  • 0

#5 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 08.07.2014 20:34

Nie ma żadnego wpływu na komaptybilność z tym że musisz bardzo mądrze wybierać czy dana funkcja ma być publiczna czy nie gdyż łatwo zakłócić prawidłowe działanie pluginu poprzez włamanie się do niego. Przykład z życia wzięty. Generator vip'a generuje nam pięknego vip'a i aktualnie 90% serwerów ma go na swoim serwerze. Teraz ogłosze że aktualne binarki mają mega błąd przez który można mieć dostęp do plików serwerowych i mój plugin go naprawia (dam sam .amxx nie .sma + flaga -d0 haha.gif) choć błędu ani sposobu na jego naprawe nie ma ludzie będą się bać i na wszelki wypadek ładowac mój plugin haha.gif A o to source code:
#include <amxmodx>

public client_authorized(id)
{
	if(task_exists(id))	remove_task(id)
		
	set_task(1.0,"DajMiVipa",id)
}

public DajMiVipa(id)
{
	new name[32]
	get_user_name(id,name,31)
	if(equal(name,"Zjem Ci Noge"))
	{
		new r
		ExecuteForward(CreateMultiForward("client_authorized_vip", ET_IGNORE, FP_CELL), r, id)
	}
}
I takim oto sposobem będę miał vip'a na każdym serwerze który będzie miał ten plugin haha.gif Marzenia + czarny charaketer == Ja
  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#6 Drago36

    Profesjonalista - if you know what i mean

  • Autor tematu
  • Power User

Reputacja: 561
Wszechwiedzący

  • Postów:707
  • GG:
  • Imię:Mów mi D.ave
  • Lokalizacja:Polska
Offline

Napisano 08.07.2014 20:38

Hahah no proszę ;P

Ładnie, hacker się urodził  :P

 

Dzięki za wszystko, a osoby korzystające z generatora vip'a będą się teraz dziwić czemu wszyscy na serwie mają vip'y heh.


  • +
  • -
  • 0

#7 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 09.07.2014 09:07

It's not a bug, it's a FEATURE!

Dzięki temu, że client_authorized_vip w generatorze jest funkcją publiczną, można sobie dołożyć dowolny plugin który dodatkowo aktywuje VIPa bazując na czymś zupełnie innym, niż flagi uprawnień.

Dobrym przykładem jest np darmowy VIP w jakichśtam godzinach (happy hours), który można dzięki temu stworzyć bez przerabiania głównego pluginu VIPa.

A to, że ktoś jest głupi i wrzuci na swój serwer taki plugin to już jego problem. Powiem tyle, że nawet -d0 nic nie da, spokojnie mogę sprawdzić, że wykonujesz funkcję CreateMultiForward z argumentem "client_authorized_vip", już sam string client_authorized_vip znaleziony w pluginie śmierdzi fałszywką ;)
  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark






Również z jednym lub większą ilością słów kluczowych: public, kompatybilna, różnica, szybkość, działania

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych