←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

parse i takie sprawy

  • +
  • -
mlekovita - zdjęcie mlekovita 14.09.2019

Witam, kiedy podczas zapisu w pliku widnieje takie coś:

new szData[128];

if(!szData[0] || szData[0] == ';' || (szData[0] == '/' && szData[1] == '/')) continue;

to jakbym wziął i zmienił  if(szData[0] na szData[1] lub szData[3] <- to co wtedy sprawdzi?

Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 14.09.2019

Aktualnie to sprawdza czy:
Pierwszy znak nie jest znakiem zero (null terminator) lub średnikiem, lub czy dwa pierwsze znaki w linii to /.

Zmiana jaka opisałeś nie spowoduje nic oprócz przesunięcia indeksów o jeden. Czyli sprawdzi czy drugi znak jest znakiem zero lub średnikiem itp itp

To samo z [3] tylko przesunie o 3 znaki.


Powiedz co chcesz osiągnąć
Odpowiedz

  • +
  • -
mlekovita - zdjęcie mlekovita 14.09.2019

Aktualnie jest tak że ; wstawia sie przed nick pierwotny

natomiast chciałbym osiągnąć tak żeby ; (średnik) wstawiał się nawet jak ktoś zmieni nick ale sid zostanie ten sam.

 

wyglada to tak

 

Dell VALVE_1:0:342181978 "Noob"

Jeżeli graczowi usunie sie oznaczenie

to robi się tak:

;Dell VALVE_1:0:342181978 "Noob"

 

Natomiast jeśli gracz zmieni nick i usunie sie mu oznaczenie to ; (średnik) sie nie stawia i zostaje jak było:

Dell VALVE_1:0:342181978 "Noob"

 

http://www.wklejto.pl/764260


Użytkownik mlekovita edytował ten post 14.09.2019 21:52
Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 15.09.2019

To jak na moje trzeba łapać zmiane nicku gracza i w momencie zmiany wyłączyć admina z tego starego nicku, a włączyć (i dodać do pliku) ten nowy nick

Odpowiedz

  • +
  • -
mlekovita - zdjęcie mlekovita 15.09.2019

Nie bardzo rozumiem twoj sposob moze zasmiecac plik bo jak beda zmieniac nicki to sie narobi troche nieprzyjemnie. A czy jest mozliwosc wylapywania w pliku nicku na podstawie sid a nastepnie ; przed nickiem?
Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 15.09.2019

można, wystarczy w parse() pobrać nastepny argument i to bedzie sid

Odpowiedz

  • +
  • -
mlekovita - zdjęcie mlekovita 15.09.2019

w taki sposób?

parse(szData, szNick, 31);
parse(szData, szSid, 31);
 
                        if(equali(nick[i], szNick) || equali(sid[i], szSid) {  
                                format(szData, 127, "; %s", szData);
                                write_file(szFile, szData, Line - 1);
                                break;
                        }
Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 15.09.2019

Jakbyś zajrzał do naszej ukochanej dokumentacji to byś wiedział

parse(szData, szNick, 31, sid[id], 31);
Odpowiedz

  • +
  • -
mlekovita - zdjęcie mlekovita 15.09.2019

nie działa

 

parse(szData, szNick, 31, sid[i], 31);

 
                       
if(equali(nick[i], szNick) || equali(sid[i], szSid) {  
                                format
(szData, 127, "; %s", szData);
                                write_file(szFile, szData, Line - 1);
                                break;
                        }

Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 15.09.2019

pokaż cały kod jaki masz

parse(szData, szNick, 31, szSid, 31);

Spróbuj tak, źle wcześniej podalem tą linijke.

 

Czy do tablicy sid, pobierasz steamid gracza przy wchodzeniu na serwer?

Odpowiedz

  • +
  • -
mlekovita - zdjęcie mlekovita 15.09.2019

Caly kod jest w drugim moim poscie To jest cały kod.

Sid mam przy wchodzeniu na serwer pobierane

dalej nie działa ;/

Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 17.09.2019

To nie jest cały kod, bo chciałem sobie to przetestować, ale cóż...

 

 

Dodaj sobie logi i zobacz co jest nie tak, wypisz np sid, które da ci 'parse', wypisz to ktore wczytane z pliku jest, wypisz linie z pliku. No musisz wykminić co tam nie tak i w którym miejscu coś się sypie (np jakas zmienna ma nie taka wartosc jak byc powinna)

Odpowiedz