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

Plugin na nazwe?


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
20 odpowiedzi w tym temacie

#1 DarkvTen

    Pomocny

  • Użytkownik

Reputacja: 2
Nowy

  • Postów:58
  • GG:
  • Lokalizacja:Katowice
Offline

Napisano 19.10.2014 16:50

Witam. Przeszukałem całe forum lecz nie znalazłem tego czego szukam. Otóż potrzebował bym pluginy który ma podobne działanie jak blokada na IP z tym, że musi być teraz nazwa podana, czyli jeżeli serwer nie ma nazwy np: amxx.pl to nie działa?


  • +
  • -
  • 0

#2 Wielkie Jol

    REPREZENTUJE SIEBIE I CAŁĄ GALAKTYKĘ

  • Support Team

Reputacja: 683
Wszechmogący

  • Postów:1 258
  • GG:
  • Lokalizacja:AMXX
Offline

Napisano 19.10.2014 17:08

Pobierz wartość cvara "hostname" co odpowiada za nazwę serwera, porównaj ją z tą w pluginie, jeżeli jest różna, to zakończ działanie pluginu. Z tym, że takie sprawdzanie musisz robić co jakiś czas, bo można przecież zmienić ją po pierwszym sprawdzeniu w plugin_init()


  • +
  • -
  • 0

"Żaden etyczny inżynier oprogramowania nie zgodzi się napisać procedury zniszczBagdad. Jego poczucie etyki domaga się, aby napisał procedurę zniszczMiasto, a Bagdad przekazał jako parametr" - Nathaniel Borenstein.


#3 DarkvTen

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:58
  • GG:
  • Lokalizacja:Katowice
Offline

Napisano 19.10.2014 17:10

Możesz to jakoś inaczej zaprezentować, bo z pierwszego razu nie zrozumiałem.


  • +
  • -
  • 0

#4 Wielkie Jol

    REPREZENTUJE SIEBIE I CAŁĄ GALAKTYKĘ

  • Support Team

Reputacja: 683
Wszechmogący

  • Postów:1 258
  • GG:
  • Lokalizacja:AMXX
Offline

Napisano 19.10.2014 17:12

Chcesz sprawdzić czy nazwa serwera jest taka sama jak zadeklarowana przez Ciebie w pluginie, dobrze zrozumiałem?


  • +
  • -
  • 0

"Żaden etyczny inżynier oprogramowania nie zgodzi się napisać procedury zniszczBagdad. Jego poczucie etyki domaga się, aby napisał procedurę zniszczMiasto, a Bagdad przekazał jako parametr" - Nathaniel Borenstein.


#5 DarkvTen

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:58
  • GG:
  • Lokalizacja:Katowice
Offline

Napisano 19.10.2014 17:13

To ma działać na takiej zasadzie jak blokada na IP z tym że ma odczytywać nazwe serwera. Przykładowo plugin będzie działał na nazwie amxx.pl jeżeli będzie inna to nie zadziała


  • +
  • -
  • 0

#6 Petpat

    Wszechwidzący

  • Użytkownik

Reputacja: 64
Pomocny

  • Postów:246
  • Imię:Łukasz
  • Lokalizacja:Rzeszów
Offline

Napisano 19.10.2014 17:13

#include <amxmodx>

new const nazwa_serwera[] = ""; // Nazwa serwera
new const ip_serwera[] = ""; // IP

public plugin_init() {
		register_plugin("nazwa", "1.0", "nazwa_autora");

		new g_IP[33];
		new SerwerName[64];
		get_user_ip(0, g_IP, charsmax(g_IP));
		get_cvar_string("hostname", SerwerName, 63);

		if(equali(g_IP, ip_serwera) && equal(SerwerName, nazwa_serwera)){
			server_print("Dane prawidlowe");
		}else{
			server_print("Dane nieprawidlowe");
			set_fail_state("Plugin nie dziala na tym serwerze.");
		}
}
O to Ci chodziło może ?
  • +
  • -
  • 2

#7 DarkvTen

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:58
  • GG:
  • Lokalizacja:Katowice
Offline

Napisano 19.10.2014 17:16

O super, znalazłeś coś lepszego, że jest blokada na IP i nazwe. W jaki sposób dodać to do kodu?


  • +
  • -
  • 0

#8 Petpat

    Wszechwidzący

  • Użytkownik

Reputacja: 64
Pomocny

  • Postów:246
  • Imię:Łukasz
  • Lokalizacja:Rzeszów
Offline

Napisano 19.10.2014 17:20

Po prostu, wystarczy wkleić zawartość

To gdzieś na górze kodu
new const nazwa_serwera[] = ""; // Nazwa serwera
new const ip_serwera[] = ""; // IP
Tą w plugin_init()
		new g_IP[33];
		new SerwerName[64];
		get_user_ip(0, g_IP, charsmax(g_IP));
		get_cvar_string("hostname", SerwerName, 63);

		if(equali(g_IP, ip_serwera) && equal(SerwerName, nazwa_serwera)){
			server_print("Dane prawidlowe");
		}else{
			server_print("Dane nieprawidlowe");
			set_fail_state("Plugin nie dziala na tym serwerze.");
		}

  • +
  • -
  • 1

#9 DarkvTen

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:58
  • GG:
  • Lokalizacja:Katowice
Offline

Napisano 19.10.2014 17:22

Dzięki wielkie za pomoc. Temat można zamknąć.


  • +
  • -
  • 0

#10 Wielkie Jol

    REPREZENTUJE SIEBIE I CAŁĄ GALAKTYKĘ

  • Support Team

Reputacja: 683
Wszechmogący

  • Postów:1 258
  • GG:
  • Lokalizacja:AMXX
Offline

Napisano 19.10.2014 17:23

Proponuję takie rozwiązanie, gdyż tak jak powiedziałem, po rozpoczęciu się gry nazwę serwera można z łatwością zmienić, a tym sposobem będzie nazwa sprawdzana co jakiś czas.

 

#define CZAS 15.0
#include <amxmodx>
 
 
new const nazwa_serwera[] = ""; // Nazwa serwera
new const ip_serwera[] = ""; // IP
 
public plugin_init() {
register_plugin("nazwa", "1.0", "nazwa_autora");
set_task(CZAS, "Sprawdz", _, _, _, "b", _);
 
new g_IP[33];
 
if(equali(g_IP, ip_serwera)){
server_print("Dane IP prawidlowe");
}else{
server_print("Dane IP nieprawidlowe");
set_fail_state("Plugin nie dziala na tym serwerze.");
}
}
 
public Sprawdz(){
new SerwerName[64];
get_cvar_string("hostname", SerwerName, 63);
if(equal(SerwerName, nazwa_serwera)){
server_print("Nazwa serwera prawidlowa");
}else{
server_print("Nazwa serwera nieprawidlowa");
set_fail_state("Plugin nie dziala na tym serwerze.");
}
}

  • +
  • -
  • 2

"Żaden etyczny inżynier oprogramowania nie zgodzi się napisać procedury zniszczBagdad. Jego poczucie etyki domaga się, aby napisał procedurę zniszczMiasto, a Bagdad przekazał jako parametr" - Nathaniel Borenstein.


#11 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 19.10.2014 17:25

Łatwo takie coś obejść. Dekompilacja ;)

 

Wystarczy zanegować.

if(!equali(g_IP, ip_serwera) && !equal(SerwerName, nazwa_serwera)){

Lub zmienić coś tutaj:

new const nazwa_serwera[] = ""; // Nazwa serwera
new const ip_serwera[] = ""; // IP

http://amxx.pl/topic...órego-daje-sma/


  • +
  • -
  • 0

#12 DarkvTen

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:58
  • GG:
  • Lokalizacja:Katowice
Offline

Napisano 19.10.2014 17:35

Już całkiem się pogubiłem. Który jest najbardziej skuteczny?


  • +
  • -
  • 0

#13 Petpat

    Wszechwidzący

  • Użytkownik

Reputacja: 64
Pomocny

  • Postów:246
  • Imię:Łukasz
  • Lokalizacja:Rzeszów
Offline

Napisano 19.10.2014 17:38

Rzecz jasna, Wielkie Jol, u mnie nie było sprawdzania czy nastąpiła zmiana nazwy.
  • +
  • -
  • 0

#14 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 19.10.2014 18:57

Ehhh. Nie potrzebnie się wtącałem.
Sęk w tym, że jeżeli wpiszesz ip serwera w plugin (np. new const) to ktos moze podmienic jedna cyferke (dekompilacja i zabawy z cyferkami :D) i dziala mu. Tak samo z nazwa.

Lepiej zrobic socketem. Polaczyc sie z jakims serwerem i uzyskac cos od niego. Poczytaj ten temat co dałem. GwynbleiD ma ogromną wiedzę, którą można wykorzystać.
  • +
  • -
  • 0

#15 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 19.10.2014 23:46

Tiback jeśli dajesz negację to 

&&

trzeba zastąpić

||

ponieważ ma to być jeśli któraś z tych dwóch jest inna niż, a nie jeśli obie są

 

 

hostname może także pobrać

get_user_name(0,serwer_name,31)

  • +
  • -
  • 0

#16 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 20.10.2014 05:54

grankee

Dlaczego? Jak zaneguje oba to plugin będzie działał na wszystkich serwerach oprócz tego co ma ip i nazwe, ktora jest w warunku.
  • +
  • -
  • 0

#17 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 20.10.2014 07:59

grankee

Dlaczego? Jak zaneguje oba to plugin będzie działał na wszystkich serwerach oprócz tego co ma ip i nazwe, ktora jest w warunku.

Prawa logiki, negacja (A && A) jest równa (!A || !A), ewentualnie !(A && A). Tutaj akurat chodzi tylko o to, że negacja tamtego warunku, to nie to co napisałeś. Ale dobrze myślisz, pisząc że warunek podany przez Ciebie, nie zostanie spełniony tylko wtedy, jeśli serwer będzie miał ip i nazwę pasującą do tych wpisanych w plugin.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#18 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 20.10.2014 13:28

@sebul

Czyli dobrze to rozkminiłem? Zaneguje 2 warunki i po sprawie?

Ale wystarczy tez edytowac ip lub nazwe zapisana w pluginie :D
  • +
  • -
  • 0

#19 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 21.10.2014 06:19

if(!equali(g_IP, ip_serwera) && !equal(SerwerName, nazwa_serwera))

TibacK- Jeżeli serwer będzie miał inne ip, ale nazwę dam taką jak potrzeba to warunek nie zostanie spełniony mimo, że jeden z parametrów jest błędny, dlatego należy zamienić "i" (&&) na lub (||).

Warunek ten ma sprawdzać czy przynajmniej jedno z tych (ip lub nazwa) jest błędne natomiast Twoja wersja sprawdza czy oba są błędne, a jeśli chociaż jedno nie będzie błędne to drugie już może być a i tak zadziała.

 

sebul- Prawa logiki, negacja (A && A) jest równa (!A || !A), ewentualnie !(A && A). - bynajmniej nie.

Pomijając już fakt, że powinieneś użyć A oraz B czyli dwóch różnych zmiennych, to nie do końca się zgadza (załóżmy, że każdy założył czytając to tak jak ja-czyli, że są to różne zmienne):

new bool:A=true
new bool:B=true

if(A && B)
{//to będzie prawda}
if(!A || !B)
{//ale to już nie będzie prawda, chociaż napisałeś, że to jest równe (A && B)}
if(!(A&B))
{//to też nie będzie prawda}

no ale pisząc, że (A && A) jest ewentualnie równe  !(A && A)... powiedzmy wprowadzasz w lekki błąd :)

można jedynie powiedzieć, że dla tego przypadku zadziała w sposób porządany zarówno (A && B )->wtedy kontynuuj działanie pluginu lub (!A || !B ) ->wtedy zatrzymaj działanie pluginu, ale absolutnie to nie to samo.


Użytkownik grankee edytował ten post 21.10.2014 06:33

  • +
  • -
  • 0

#20 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 21.10.2014 06:40

No chodziło mi o
(A && B)
ale dalej przecież dobrze jest napisane, z prawa logiki wynika, że negację
(A && B)
zapisujemy albo tak
(!A || !B)
albo tak
!(A && B)
tak się uczyłem oraz zresztą tak jest i inaczej być nie może, bo prawa się nie zmieniają.
 

sebul- Prawa logiki, negacja (A && A) jest równa (!A || !A), ewentualnie !(A && A). - bynajmniej nie.

I gdzie tu jest błąd? Negacja (A && A) jest równa (!A || !A), ewentualnie !(A && A) - najprawdziwsza prawda.
 

no ale pisząc, że (A && A) jest ewentualnie równe !(A && A)... powiedzmy wprowadzasz w lekki błąd smile.png

można jedynie powiedzieć, że dla tego przypadku zadziała w sposób porządany zarówno (A && B )->wtedy kontynuuj działanie pluginu lub (!A || !B ) ->wtedy zatrzymaj działanie pluginu, ale absolutnie to nie to samo.

Akurat tak nigdzie nie napisałem, ale powtórzę jeszcze raz, tym razem już na dwóch zmiennych, tak jak powinno być i tak jak zresztą chciałem:
Negacja (A && C) jest równa (!A || !C), ewentualnie !(A && C).
sebul (21.10.2014 06:48):
Dałem A i C, bo przy B są emotki.
radim (21.10.2014 13:25):
http://pl.wikipedia....rawa_De_Morgana
Tak dla potwierdzenia ;)

  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo





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

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