Operacje na plikach problem.
dram
23.07.2010
Witajcie. Pisze pierwszy raz na tym forum w dodatku w problemie.
Mianowicie:
O to mój kod który ma pobierać każdą linie z kolejna z pliku zp_settings ,a następnie zapisywać do tablicy szLine.
Mam w pliku zp_settings przykładowo coś takiego:
linijka1
linijka2
linijka3
Chcę aby te wszystkie linijki znalazły się w tabeli szLine .
W moim kodzie znajduje się tylko linjka3 czyli ostatnia.
Myślę ,że zrozumieliście mój problem. Bardzo mi się śpieszy w razie czego podam moje gg: 2881130
Mianowicie:
//new Float:szLine[9999] new Float:szLine[9999] new szLines[32], iLen; for(new i=0;read_file("zp_settings.txt", i, szLines, 31, iLen);i++){ copy (szLine, 16, szLines) }
O to mój kod który ma pobierać każdą linie z kolejna z pliku zp_settings ,a następnie zapisywać do tablicy szLine.
Mam w pliku zp_settings przykładowo coś takiego:
linijka1
linijka2
linijka3
Chcę aby te wszystkie linijki znalazły się w tabeli szLine .
W moim kodzie znajduje się tylko linjka3 czyli ostatnia.
Myślę ,że zrozumieliście mój problem. Bardzo mi się śpieszy w razie czego podam moje gg: 2881130
R3X
24.07.2010
Taki myk z indexowaniem możesz zastosować
if(file_exists("zp_settings.txt")){ new szLines[1024], iLen, index = 0; for(new i=0;read_file("zp_settings.txt", i, szLines[index], 31, iLen);i++){ index += iLen; if((index + 31) > charsmax(szLines)) break; } }
dram
24.07.2010
Bardzo dziękuje za odpowiedź ale bym bardzo był wdzięczny gdybyś napisał na moje gg:2881130 jestem początkujący w programowaniu i ten błąd rodzi kolejny problem. A bardzo szybko na odpowiedzi mi zależy.
R3X
24.07.2010
Może być za mało miejsca w tablicy, więc potrzeba ogranicznka do tamtego kodu;
Napisz tu jak masz problem
for(new i=0;read_file("zp_settings.txt", i, szLines[index], 31, iLen);i++){ index += iLen; if((index + 31) > charsmax(szLines)) break; }
Napisz tu jak masz problem
dram
24.07.2010
Ale ty nie jestes non stop. Dobra to wale w takim bądź razie. Wolałbym na gg ci pospamić no ale cóż
trochę o skrypcie : Mój skrypt sprawdza użytkownika ip.
Wiem że prościej było by ustawić ip w skrypcie ale za dużo "pieprz*** sie"
// to kod który pobiera ip gracza
to kod który z pliku tekstowego pobiera ip
Ten kod sprawdza ip gracza czy jest takie same jak w pliku tekstowym. I własnie to nie śmiga bo mi nie wykrywa mojego ip (ip jest podane prawidłowo.)
A to 3 przykładowe adresy ip z zp_settings.txt wszystko powinno działać tylko coś z tym importowaniem jest nie tak.
24 lipiec 2010 - 00:48:
// edyt
A odnośnie sprawdzania czy jest ten plik mam odpowiednią komendę. Tylko też nie wiem jak zrobić komende która np po wpisaniu w konsoli amx_usun "tutaj adres ip" znajduje i usuwa ip z pliku tekstowego. Programuje w tym tak naprawdę od 4 dni wybacz za może moje beznadziejne oraz głupie pytania
// ps nie wiem czemu nie mogłem posta z edytować sorry za duble post
trochę o skrypcie : Mój skrypt sprawdza użytkownika ip.
Wiem że prościej było by ustawić ip w skrypcie ale za dużo "pieprz*** sie"
new ip [32] get_user_ip(id, ip, 31, 1)
// to kod który pobiera ip gracza
new szLine[1024], iLen, index = 0; if(file_exists("zp_settings.txt")){ for(new i=0;read_file("zp_settings.txt", i, szLine[index], 31, iLen);i++){ index += iLen; } }
to kod który z pliku tekstowego pobiera ip
if (equal(ip, szLine)) { // moj kod }
Ten kod sprawdza ip gracza czy jest takie same jak w pliku tekstowym. I własnie to nie śmiga bo mi nie wykrywa mojego ip (ip jest podane prawidłowo.)
192.168.1.100 192.168.1.101 192.168.1.102
A to 3 przykładowe adresy ip z zp_settings.txt wszystko powinno działać tylko coś z tym importowaniem jest nie tak.
24 lipiec 2010 - 00:48:
Ale ty nie jestes non stop. Dobra to wale w takim bądź razie. Wolałbym na gg ci pospamić no ale cóż
trochę o skrypcie : Mój skrypt sprawdza użytkownika ip.
Wiem że prościej było by ustawić ip w skrypcie ale za dużo "pieprz*** sie"new ip [32] get_user_ip(id, ip, 31, 1)
// to kod który pobiera ip graczanew szLine[1024], iLen, index = 0; if(file_exists("zp_settings.txt")){ for(new i=0;read_file("zp_settings.txt", i, szLine[index], 31, iLen);i++){ index += iLen; } }
to kod który z pliku tekstowego pobiera ipif (equal(ip, szLine)) { // moj kod }
Ten kod sprawdza ip gracza czy jest takie same jak w pliku tekstowym. I własnie to nie śmiga bo mi nie wykrywa mojego ip (ip jest podane prawidłowo.)192.168.1.100 192.168.1.101 192.168.1.102
A to 3 przykładowe adresy ip z zp_settings.txt wszystko powinno działać tylko coś z tym importowaniem jest nie tak.
// edyt
A odnośnie sprawdzania czy jest ten plik mam odpowiednią komendę. Tylko też nie wiem jak zrobić komende która np po wpisaniu w konsoli amx_usun "tutaj adres ip" znajduje i usuwa ip z pliku tekstowego. Programuje w tym tak naprawdę od 4 dni wybacz za może moje beznadziejne oraz głupie pytania
// ps nie wiem czemu nie mogłem posta z edytować sorry za duble post
R3X
24.07.2010
Aha, to nie trzeba całego pliku w jednej tablicy. Przeczytaj linijkę, sprawdź, przeczytaj, sprawdź
http://amxx.pl/komendy-t4724.html
Co do usuwania to trochę bardziej skomplikowane tak na początek to możesz wyszukać IP tak jak wyżej i zrobić
new szLine[32], iLen; for(new i=0;read_file("zp_settings.txt", i, szLine, 31, iLen);i++){ if(equal(szLine, ip)){ //jest w pliku! break; } }
http://amxx.pl/komendy-t4724.html
Co do usuwania to trochę bardziej skomplikowane tak na początek to możesz wyszukać IP tak jak wyżej i zrobić
write_file("zp_settings.txt", "", i);w momemcie wykrycia
R3X
24.07.2010
Od kilku miesięcy łatwiej mnie złapać tu na forum niż na gg, a i chciałbym trochę prywatności, więc nie podam.
dram
24.07.2010
To chociaż akcept na steam:P Zaproszenie zostało wysłane Zrób jak uważasz
//
Masz na prawde nie pojętą wiedze na ten temat do swojego kodu dorzuciłem swoje 3 grosze i zadziałało wielkie dzięki:)
//
Tylko jak byś dał rade dobrze by było jak byś napisał mi komende do usuwania danej linijki z tekstu.
Po wpisaniu ip wyszukuje w moim pliku txt, sprawdza czy istnieje, jeżeli tak to usuwa jeżeli nie wywala komunikat.
Jak zrobisz to by była 3 pochwała w 1 godzine:D Tyle ci mogę jedynie zaoferować Pozdrawiam i jeszcze raz dziękuje
/////
Dałem rade nie wierze. Dzięki temu "write_file("zp_settings.txt", "", i);" To było łatwiejsze niż to co wcześniej robiłem, czyli sprawdzanie ip. Wielkie dzięki
Tylko jeden minus ponieważ zostają puste linijki ale to nie przeszkadza;)
Edited by dram, 24.07.2010 03:18.
//
Masz na prawde nie pojętą wiedze na ten temat do swojego kodu dorzuciłem swoje 3 grosze i zadziałało wielkie dzięki:)
//
Tylko jak byś dał rade dobrze by było jak byś napisał mi komende do usuwania danej linijki z tekstu.
Po wpisaniu ip wyszukuje w moim pliku txt, sprawdza czy istnieje, jeżeli tak to usuwa jeżeli nie wywala komunikat.
Jak zrobisz to by była 3 pochwała w 1 godzine:D Tyle ci mogę jedynie zaoferować Pozdrawiam i jeszcze raz dziękuje
/////
Dałem rade nie wierze. Dzięki temu "write_file("zp_settings.txt", "", i);" To było łatwiejsze niż to co wcześniej robiłem, czyli sprawdzanie ip. Wielkie dzięki
Tylko jeden minus ponieważ zostają puste linijki ale to nie przeszkadza;)
Edited by dram, 24.07.2010 03:18.
R3X
24.07.2010
Ta funkcja usuwa podaną linijkę bez zostawiania śmieci. Możesz jej użyć np. tak
a to wrzuć do kodu
delete_from_file("zp_settings.txt", "89.120.123.23");
a to wrzuć do kodu
stock delete_from_file(const szFile[], const szLine2Delete[]){
if(!file_exists(szFile)) return 0;
static szFile2[256];
formatex(szFile2, charsmax(szFile2),"%s.temp", szFile);
new fp = fopen(szFile2, "w");
if(!fp) return 0;
fclose(fp);
static szLine[256], iLen;
for(new i=0;read_file(szFile, i, szLine, charsmax(szLine), iLen);i++){
if(!equal(szLine, szLine2Delete))
write_file(szFile2, szLine);
}
if(unlink(szFile) && rename_file(szFile2, szFile, 1))
return 1;
return 0;
}
dram
24.07.2010
Co nie zmienia faktów ,że nadal chce mieć twoje gg bo mam pare drobnych pytań które wstydzę się zamieszczać na forum:D
GwynBleidD
24.07.2010
Zamieść na forum, od tego ono jest. Napiszesz na GG to tylko Ty skorzystasz, a jak spytasz na forum to może się znajdzie ktoś inny z tym problemem.