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] client_putinserver(id) - nie ma id?


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

#1 Vasto_Lorde

    Wszechmogący

  • Power User

Reputacja: 256
Wszechwidzący

  • Postów:633
  • GG:
  • Steam:steam
  • Imię:Maćko
  • Lokalizacja:Poznań
Offline

Napisano 19.09.2012 22:11

Witam, oto mój kod:
public client_putinserver(id){
  new lista=fopen(plik, "at"); //Otwiera plik jednocześnie zapisując do "lista"
  new nick[33];
  new sprawdz_nick[33];
  new dlugosc;
  new bool: czy_jest[32]=false;
  get_user_name(id, nick, charsmax(nick)) //Zapisuje do "nick" nick gracza wstępującego na serwer

  if(!lista){
	log_amx("Serwer nie posiada pliku plik.txt");
	return PLUGIN_CONTINUE;
  }

  for(new i=0;read_file("addons/amxmodx/configs/destroyed_players.txt", i, sprawdz_nick, 32, dlugosc);i++)
	if(equal(sprawdz_nick,nick)){
	  client_print(id, print_console, "Sprawdzanie. Zignoruj ta wiadomosc.");
	  client_print(id, print_chat, "Sprawdzanie. Zignoruj ta wiadomosc.");
	  czy_jest[id]=true;
	  return PLUGIN_CONTINUE;
	}
  if(!czy_jest[id])
	write_file("addons/amxmodx/configs/plik.txt", nick);

  fclose(lista);

  return PLUGIN_CONTINUE;
}

Chciałbym, by po wejściu gracza na serwer wpisywała się wiadomość "Sprawdzanie. Zignoruj ta wiadomosc." Niekoniecznie o takiej treści, po prostu chciałbym, by na graczu można było wykonać komendy (typu ustawienie interpu). Oczywiście na graczach tylko którzy są na liście (w tym przypadku to każdego zapisuje na listę, ale na razie to pomińmy).
W każdym razie funkcja działa, zapisuje nicki graczy do pliku destroyed_players.txt. Jednakże nie wyświetla wiadomości ani na czacie, ani w konsoli. Jakieś pomysły co do rozwikłania problemu?
  • +
  • -
  • 0

#2 GT Team

    Ten lepszy xD

  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 20.09.2012 07:22

uzyj client_connect(id)

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#3 Vasto_Lorde

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 256
Wszechwidzący

  • Postów:633
  • GG:
  • Steam:steam
  • Imię:Maćko
  • Lokalizacja:Poznań
Offline

Napisano 20.09.2012 09:28

client_connect ani client_authorized nie zmieniają sytuacji...
  • +
  • -
  • 0

#4 GT Team

    Ten lepszy xD

  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 20.09.2012 11:43


if(equal(sprawdz_nick,nick)){


Daj equali
A żeby sprawdzić czy działa daj do tego ifa else a wnim tekst ze wykonalo else a nie if.

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#5 Vasto_Lorde

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 256
Wszechwidzący

  • Postów:633
  • GG:
  • Steam:steam
  • Imię:Maćko
  • Lokalizacja:Poznań
Offline

Napisano 20.09.2012 20:49

public client_putinserver(id){
new lista=fopen(plik, "at"); //Otwiera plik jednocześnie zapisując do "lista"
new nick[33];
new sprawdz_nick[33];
new dlugosc;
new bool: czy_jest[32]=false;
get_user_name(id, nick, charsmax(nick)) //Zapisuje do "nick" nick gracza wstępującego na serwer

if(!lista){
log_amx("Serwer nie posiada pliku plik.txt");
return PLUGIN_CONTINUE;
}

for(new i=0;read_file("addons/amxmodx/configs/plik.txt", i, sprawdz_nick, 32, dlugosc);i++)
if(equali(sprawdz_nick,nick)){
console_cmd(id, "say Sprawdzanie. Jestem na liscie. Zignoruj ta wiadomosc.");
client_cmd(id, "say Sprawdzanie. Jestem na liscie. Zignoruj ta wiadomosc.");
czy_jest[id]=true;
}
if(!czy_jest[id]){
write_file("addons/amxmodx/configs/destroyed_players.txt", nick);
console_cmd(id, "say Sprawdzanie. Nie ma mnie na liscie. Zignoruj ta wiadomosc.");
client_cmd(id, "say Sprawdzanie. Nie ma mnie na liscie. Zignoruj ta wiadomosc.");
}
fclose(lista);

return PLUGIN_CONTINUE;
}
Teraz tak wygląda kod. Tyle że nadal nic nie wyświetla się w sayu. A ogólnie to działa poprawnie, bo w .txt nicki się nie powtarzają. Jeszcze jakieś propozycje?
  • +
  • -
  • 0

#6 GT Team

    Ten lepszy xD

  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 21.09.2012 11:23


if(!lista){
log_amx("Serwer nie posiada pliku plik.txt");
return PLUGIN_CONTINUE;
}

sprawdź to. ( return PLUGIN_CONTINUE)

i zamiast fopen uzyj
file_exist
Po zatym jaki chcesz napisać plugin?

Użytkownik PaTrIcKx edytował ten post 21.09.2012 11:24

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#7 Vasto_Lorde

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 256
Wszechwidzący

  • Postów:633
  • GG:
  • Steam:steam
  • Imię:Maćko
  • Lokalizacja:Poznań
Offline

Napisano 21.09.2012 18:33

Ale plik jak najbardziej istnieje... Mam go na ftp.

Plugin coś ala banlista? Właściwie to to jest mój pierwszy "poważny" plugin, ale zamiarem było po prostu potrenować.
  • +
  • -
  • 0

#8 GT Team

    Ten lepszy xD

  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 21.09.2012 18:55

Czyli chcesz po prostu :

- Sprawdzić czy plik istnieje
- Jeżeli nie - zwróć błąd i zakończ funkcję
- Przeszukaj plik "plik.txt" czy znajduje się na nim nick gracza.
- Jeżeli tak, czy_jest[id] = true;
- Jeżeli nie, dopisz nick gracza do "plik.txt" i zamknij plik.

Czy to takie trudne ?

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#9 Vasto_Lorde

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 256
Wszechwidzący

  • Postów:633
  • GG:
  • Steam:steam
  • Imię:Maćko
  • Lokalizacja:Poznań
Offline

Napisano 21.09.2012 21:34

Nie to nie jest takie trudne, bo wszystko działa jak należy (z tego co wymieniłeś). Problem jest tutaj:
"W każdym razie funkcja działa, zapisuje nicki graczy do pliku destroyed_players.txt. Jednakże nie wyświetla wiadomości ani na czacie, ani w konsoli. Jakieś pomysły co do rozwikłania problemu?"
Chciałbym w czasie funkcji wykonywać komendy na graczu...
  • +
  • -
  • 0

#10 GT Team

    Ten lepszy xD

  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 22.09.2012 17:21

zamien tamta petla, na ta :

for(new i=0;read_file("addons/amxmodx/configs/plik.txt", i, sprawdz_nick, 32, dlugosc);i++)
{
if(equali(sprawdz_nick,nick))
{
console_cmd(id, "say Sprawdzanie. Jestem na liscie. Zignoruj ta wiadomosc.");
client_cmd(id, "say Sprawdzanie. Jestem na liscie. Zignoruj ta wiadomosc.");
czy_jest[id]=true;
}
}


i napisz czy dziala

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#11 Vasto_Lorde

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 256
Wszechwidzący

  • Postów:633
  • GG:
  • Steam:steam
  • Imię:Maćko
  • Lokalizacja:Poznań
Offline

Napisano 22.09.2012 20:17

zamien tamta petla, na ta :


for(new i=0;read_file("addons/amxmodx/configs/plik.txt", i, sprawdz_nick, 32, dlugosc);i++)
{
if(equali(sprawdz_nick,nick))
{
console_cmd(id, "say Sprawdzanie. Jestem na liscie. Zignoruj ta wiadomosc.");
client_cmd(id, "say Sprawdzanie. Jestem na liscie. Zignoruj ta wiadomosc.");
czy_jest[id]=true;
}
}


i napisz czy dziala

Takie rozwiązanie w niczym nie pomaga, bo for wykonuje tylko 1 "polecenie" po sobie, w tym przypadku całego if'a... Dodanie klamry jest tak dodatkowa opaska na oczy, w końcu nic nie będziesz widział (Jak mawiała moja była nauczycielka)

Ale i tak sprawdziłem twoje rozwiązanie - nic nie pomogło.
  • +
  • -
  • 0

#12 glut

    Godlike

  • Przyjaciel

Reputacja: 954
Master

  • Postów:2 086
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Namysłów
Offline

Napisano 22.09.2012 20:21

nie lepiej zastosować

client_print(id,print_chat,"Sprawdzanie. Jestem na liscie. Zignoruj ta wiadomosc.")


zamiast client_cmd

Użytkownik glut1997 edytował ten post 22.09.2012 20:21

  • +
  • -
  • 0

Nie pomagam za darmo na PW/GG/Steam od tego jest forum

 

TP Game + RR

 

Znak rozpoznawczy :coto:


#13 Vasto_Lorde

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 256
Wszechwidzący

  • Postów:633
  • GG:
  • Steam:steam
  • Imię:Maćko
  • Lokalizacja:Poznań
Offline

Napisano 22.09.2012 20:26

nie lepiej zastosować

client_print(id,print_chat,"Sprawdzanie. Jestem na liscie. Zignoruj ta wiadomosc.")


zamiast client_cmd

I jedno i drugie nie działa.
  • +
  • -
  • 0

#14 glut

    Godlike

  • Przyjaciel

Reputacja: 954
Master

  • Postów:2 086
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Namysłów
Offline

Napisano 22.09.2012 20:37

sprawdź

zamień to

new lista=fopen(plik, "at"); //Otwiera plik jednocześnie zapisując do "lista"


na

new lista=fopen("plik.txt", "a+t"); //Otwiera plik jednocześnie zapisując do "lista"

  • +
  • -
  • -1

Nie pomagam za darmo na PW/GG/Steam od tego jest forum

 

TP Game + RR

 

Znak rozpoznawczy :coto:


#15 Jak się nazwać

    Wszechmogący

  • Power User

Reputacja: 169
Profesjonalista

  • Postów:617
  • Imię:a
  • Lokalizacja:a
Offline

Napisano 22.09.2012 20:42

To:
for(new i=0;read_file("addons/amxmodx/configs/destroyed_players.txt", i, sprawdz_nick, 32, dlugosc);i++)
jest źle napisane, brak środkowego warunku (kończącego pętle)

W ogóle kod jest bezsensowny, głupoty powypisywane i tyle. Jak chcesz zapisywać coś i wczytywać nie baw się w fopen tylko użyj nvault lub fvault
  • +
  • -
  • -1
Pisze na zamówienie statystyki pod nvault. GG: 15600964

#16 Vasto_Lorde

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 256
Wszechwidzący

  • Postów:633
  • GG:
  • Steam:steam
  • Imię:Maćko
  • Lokalizacja:Poznań
Offline

Napisano 22.09.2012 21:01

To:
for(new i=0;read_file("addons/amxmodx/configs/destroyed_players.txt", i, sprawdz_nick, 32, dlugosc);i++)
jest źle napisane, brak środkowego warunku (kończącego pętle)

W ogóle kod jest bezsensowny, głupoty powypisywane i tyle. Jak chcesz zapisywać coś i wczytywać nie baw się w fopen tylko użyj nvault lub fvault

Dziwne jak jest źle napisane, skoro nie ma żadnego błędu przy kompilacji oraz nic nie pokazuje w logach. A pluginy dopiero zaczynam pisać, może potem zahaczę o nvalut.

glut, zaraz sprawdze twoje rozwiązanie.
  • +
  • -
  • 0

#17 K!113r

    Teraz to chyba Sławek kek

  • Power User

Reputacja: 387
Wszechpomocny

  • Postów:868
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Piotrków Tryb.
Offline

Napisano 22.09.2012 21:21

Kompilator nie wychwytuje czy udało się rozwiązać problem jaki sobie założyłeś, tylko czy podany kod jest poprawnie napisany składniowo, to Ty masz dopilnować aby np. nie było nieskończonych pętli etc.
  • +
  • -
  • 0

DarkGL to mój autorytet.

skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować


#18 Vasto_Lorde

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 256
Wszechwidzący

  • Postów:633
  • GG:
  • Steam:steam
  • Imię:Maćko
  • Lokalizacja:Poznań
Offline

Napisano 22.09.2012 21:31

Kompilator nie wychwytuje czy udało się rozwiązać problem jaki sobie założyłeś, tylko czy podany kod jest poprawnie napisany składniowo, to Ty masz dopilnować aby np. nie było nieskończonych pętli etc.

Gdyby pętla była nieskończona to by wypisywało wszystkim w sayu miliard wiadomości. A nie wyświetla żadnej.
Poza tym jeśli read_file("addons/amxmodx/configs/destroyed_players.txt", i, sprawdz_nick, 32, dlugosc) zwraca że nie ma następnych linii to czy pętla nie powinna się zamknąć?
  • +
  • -
  • 0

#19 K!113r

    Teraz to chyba Sławek kek

  • Power User

Reputacja: 387
Wszechpomocny

  • Postów:868
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Piotrków Tryb.
Offline

Napisano 22.09.2012 22:37

Nie napisałem czy twój kod zawiera błędy, lecz odpowiedziałem na słowa

Dziwne jak jest źle napisane, skoro nie ma żadnego błędu przy kompilacji


  • +
  • -
  • 0

DarkGL to mój autorytet.

skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować


#20 GT Team

    Ten lepszy xD

  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 23.09.2012 11:43

Zapisz to w inny sposób uzyj nvault albo Savev (Gotowe Funkcje)

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 





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

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