←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

zapis nickow do pliku

  • +
  • -
Joke - zdjęcie Joke 17.02.2012

Witam mam takowy problem, potrzebuję sposob na zapis samych nickow jeden pod drugim do pliku, gdyz chcę zeby dalo się wyswietlić to jako "motd", zapis do pliku potrafię zrobić ale jest tam nawalone trochę niepotrzebnych informacji, nie wiem jaki kod dać żeby zapisywało same nicki. I drugie zapytanie czy da radę żeby drugi raz nie zapisywało do pliku danego nicku , Pozdrawiam proszę o pomoc Posted Image
Odpowiedz

  • +
  • -
ImSpY - zdjęcie ImSpY 17.02.2012

Czyli tylko chcesz zapisać nicki do pliku?

/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_concmd("zapisz_nicki", "zapis", ADMIN_BAN, "Zapis nickow do pliku")
}
public zapis(){
new gracze[32],ilosc,nick[33];
get_players(gracze,ilosc);
for(new i=0;i<ilosc;i++){
get_user_name(gracze[i],nick,32);
write_file("nicki.txt",nick);
}
}

To po wpisaniu w konsoli zapisz_nicki dopisze do pliku nicki.txt graczy aktualnie będących na serwerze.
Co do zapisywania tylko raz - wystarczy sprawdzić czy w pliku jest już taki nick - użyjesz read_file i equali / equal i zalatwione.
Użytkownik ImSpY edytował ten post 17.02.2012 10:41
Odpowiedz

  • +
  • -
Joke - zdjęcie Joke 17.02.2012

dzięki za pomoc :)

hmmm a kto mi powie jak uzyc read_file zeby odczytalo wszystkie linie, a nie jedna wybrana? :)

read_file(plik, linia, tekst, 255, len)



plik-ścieżka do pliku
linia-linia którą wczytujemy
tekst-zmienna która przechowuje nam naszą wczytaną linię
len-ilość wczytanych znaków.


Użytkownik Joke edytował ten post 17.02.2012 15:24
Odpowiedz

  • +
  • -
Fili:P - zdjęcie Fili:P 17.02.2012

petla lecisz po calym pliku
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 17.02.2012

Dokumentacja AMXX.pl: Core >> file > read_file

masz tam przykład użycia

//Wypisuje w konsoli zawartość pliku cstrke/liblist.gam linia po linii

new szLine[32], iLen;
for(new i=0;read_file("liblist.gam", i, szLine, 31, iLen);i++){
	log_amx("%s", szLine);
}
Odpowiedz

  • +
  • -
Joke - zdjęcie Joke 17.02.2012

wielkie dzięki za pomoc :)

jeszcze jeden mały problemik do rozwiązania, mam taki kod i chcę jakiś większy odstęp pomiędzy nickami dlatego też spróbowałem tak:

write_file(plik, ("%s  |  ",nick));

no ale nic z tego nie wyszlo i nadal zapisuje sam nick , jakaś porada ? :P
Odpowiedz

  • +
  • -
ImSpY - zdjęcie ImSpY 18.02.2012

Czym edytujesz text? Notatnikiem? Jak otworzysz w notepad++ to będzie linia pod linią :D
Odpowiedz

  • +
  • -
Joke - zdjęcie Joke 18.02.2012

wordpad ;d da rade jakos zrobic odstepy wieksze ? bo linia bod linia tez mi za bardzo nie pasi ;P
Użytkownik Joke edytował ten post 18.02.2012 00:34
Odpowiedz

  • +
  • -
Joke - zdjęcie Joke 18.02.2012

a z reszta juz nie potrzeba ;d dalem

write_file(plik, ("%s",nick));
write_file(plik, " ,");

i tyle :D
Odpowiedz