07:18
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Модератор форума: AXE, Weddew  
удаление строки из файла
SanSayДата: Среда, 22.04.2009, 22:00 | Сообщение # 16
Долгожитель
Группа: Продвинутые
Сообщений: 1662
Награды: 25
Город: Наб.Челны
Репутация: 280
Замечания: 0%
Статус:
Quote (CNG)
в итоге, в конце файла добавится вот такая запись: Name5=

ни че у тебя не появится
смотри:
тебе нужно чтобы файл был типа -
Name1=Vasya
Name2=Fedya
Name3=Vova
Name4=Ivan
Name5=Oleg

если тебе нужно удалить Ивана
ты пишишь
dini_Set("Name.txt","Name4","open");
и у тебя получается
Name1=Vasya
Name2=Fedya
Name3=Vova
Name4=open
Name5=Oleg

когда будешь добавлять новое имя, там уже можно замутить цикл
чтобы переберал значения всех строк пока не найдет совпадение с open
чет типо
for (new Name = 0;Name < MAX_NAME;Name++)
{
format(string1, sizeof(string1),"Name%d", Name);
{
if (strcmp("empty",dini_Get(Name.txt,string1),true)==0)

где найдет совпадение туда и добавить новое имя
но можно это и в ручную делать, еси автоматом не сможешь
типо команду для просмотра файла и сам уже добавляешь имя в конкретную строку.


simhost.org:8888 Mode:PEN1(LS)+GTO(банды+кач) v4.23_SAMP_0.3с
PEN1(LS)+GTO(банды+кач)v3.92_SAMP_0.3с(ifolder)*** AntiBot*** [FS] Car Export vs SanSay*** [FS] anti_s0beit_FakeKill_Ver2
[RD]ChezДата: Среда, 22.04.2009, 22:39 | Сообщение # 17
Мастер джэдай
Группа: Продвинутые
Сообщений: 3687
Награды: 206
Город: St. P
Репутация: 0
Замечания: 20%
Статус:
SanSay, зачем так сложно, если можно допустим
new Variable[ЧИСЛО НИКОВ В ФАЙЛЕ МАКСИМУМ][24];

stock ReadString(file[],tostring[])
{
if(!fexist(file)) return -1;
new File:opnfile;
opnfile=fopen(file,io_read);
{
if(opnfile)
new idx=0;
while(idx<sizeof(Variable))
{
fread(opnfile,Variable[idx]);
if(!strlen(Variable[idx])) break;
}
fclose(opnfile);
}
return 1; // возвращаем 1 давая знать что всё прошло успешно
}

создаем команду, которая при for(new i=0; i<sizeof(Variable); i++){if(!strcmp(tmp, Variable[i]) return strdel(params... счас не помню))}
затем выполняется обращение к паблику сохранения

stock WriteString(tofile[],string[])
{
new File:opnfile;
opnfile=fopen(tofile,io_write);
if(opnfile)
{
new idx=0;
while(idx<sizeof(Variable))
{
if(strlen(Variable[idx])>0) fwrite(opnfile,Variable[idx]);
}
fclose(opnfile);
}
return 1;
}

Добавлено (22.04.2009, 22:39)
---------------------------------------------
За правильность не ручаюсь =) Отдыхаю наконец - то =)


1 час моей работы стоит минимум 800 рублей для срочных работ.
Знаю CodeIgniter, Kohana, втч. кастом(php), Вникаю в Yii. jQuery на должном уровне, немного разбираюсь в RightJS.
Алсо, 6 лет павно, 2 года в шарпе, понимаю си и плюсы.
Немного ассемблер.
Ох**тельный верстальщик какб.

Если ваш заказ потребует неделю работы и вы собираетесь заплатить 100 рублей - лес там ->> ^^^^^

chezrd@gmail.com
lance@chez-lab.ru
CNGДата: Четверг, 23.04.2009, 00:20 | Сообщение # 18
Уверенный в себе
Группа: Продвинутые
Сообщений: 213
Награды: 1
Город: Minsk City
Репутация: 13
Замечания: 0%
Статус:
что ж такое та!
дан чёткий вопрос - нужна функция удаления ника из файла (1 строка - 1 ник, никаких равно)
я пишу команду DelLineFromFile("nicks.ini","Вася") и если в этом файле есть строчка "Вася", то она должна удалиться!
больше ничего не надо. ни сохранение в файл, ни загрузки из него!

[RD]ChezДата: Четверг, 23.04.2009, 00:24 | Сообщение # 19
Мастер джэдай
Группа: Продвинутые
Сообщений: 3687
Награды: 206
Город: St. P
Репутация: 0
Замечания: 20%
Статус:
епте -_- яж написал, а хотя завтра набросаю. я тя в аське так и не смог авторизовать :) Количество строк в файле больше 20?


1 час моей работы стоит минимум 800 рублей для срочных работ.
Знаю CodeIgniter, Kohana, втч. кастом(php), Вникаю в Yii. jQuery на должном уровне, немного разбираюсь в RightJS.
Алсо, 6 лет павно, 2 года в шарпе, понимаю си и плюсы.
Немного ассемблер.
Ох**тельный верстальщик какб.

Если ваш заказ потребует неделю работы и вы собираетесь заплатить 100 рублей - лес там ->> ^^^^^

chezrd@gmail.com
lance@chez-lab.ru
CNGДата: Четверг, 23.04.2009, 01:39 | Сообщение # 20
Уверенный в себе
Группа: Продвинутые
Сообщений: 213
Награды: 1
Город: Minsk City
Репутация: 13
Замечания: 0%
Статус:
<20
XAOCДата: Четверг, 23.04.2009, 07:29 | Сообщение # 21
Советчик
Группа: Разработчики
Сообщений: 1190
Награды: 11
Город: Гдета там>>
Репутация: 311
Замечания: 0%
Статус:
вообще то это делается так:

Code
stock DelLineFromFile(fname[],linename[])
{
new File:harr[2];
new xbuff[512][256];
new linnum=0;
harr[0] = fopen(fname,io_read);
while(fread(harr[0],xbuff[linnum])!=0){
linnum++;
}
fclose(harr[0]);

harr[1] = fopen(fname,io_write);
for(new i=0;i<linnum;i++){
if(strcmp(linename,xbuff[i],true,strlen(xbuff[i])-2)==0) i++;
else fwrite(harr[1],xbuff[i]);
}
fclose(harr[1]);
}

но так как павно всё из себя нежное, оно не может создать 512*256=131072 ячеек памяти, тем самым тут 1 вариант решения:

использовать временные файлы(так как сделано в дини)

есть правда ещё 1 вариант решения, но он настолько геморный что даже расписывать не буду

stepmexДата: Четверг, 23.04.2009, 09:46 | Сообщение # 22
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
Если в файле только имена, на каждой новой строчке одно имя, могу скинуть решение для любого количества строк.

Добавлено (23.04.2009, 09:46)
---------------------------------------------
XAOC, new xbuff[512][256]; а зачем так много, массив в 512 ячеек павно потянет, и даже больше, а второе значение достаточно MAX_PLAYER_NAME, именна длиннее все равно не могут быть?


И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
[RD]ChezДата: Четверг, 23.04.2009, 09:53 | Сообщение # 23
Мастер джэдай
Группа: Продвинутые
Сообщений: 3687
Награды: 206
Город: St. P
Репутация: 0
Замечания: 20%
Статус:
xbuff[20][24] вполне хватит для текущих условий


1 час моей работы стоит минимум 800 рублей для срочных работ.
Знаю CodeIgniter, Kohana, втч. кастом(php), Вникаю в Yii. jQuery на должном уровне, немного разбираюсь в RightJS.
Алсо, 6 лет павно, 2 года в шарпе, понимаю си и плюсы.
Немного ассемблер.
Ох**тельный верстальщик какб.

Если ваш заказ потребует неделю работы и вы собираетесь заплатить 100 рублей - лес там ->> ^^^^^

chezrd@gmail.com
lance@chez-lab.ru
XAOCДата: Четверг, 23.04.2009, 10:47 | Сообщение # 24
Советчик
Группа: Разработчики
Сообщений: 1190
Награды: 11
Город: Гдета там>>
Репутация: 311
Замечания: 0%
Статус:
512 = максимальное кол-во строк(аля имён)
256 = максимальная длинна строки(да, можно использовать 20 ТК это максимальная длинна имени)

но даже при 20 ограничение составит "new xbuff[192][20];"

stepmexДата: Четверг, 23.04.2009, 10:56 | Сообщение # 25
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
Quote (XAOC)
да, можно использовать 20 ТК это максимальная длинна имени
мксимум которое обрабатывает клиент и сервер 24, но максимум при котором тебя клиент инициализирует в игру 16, при большем выдаст ошибку про слишком длинный ник, косяк разрабов :)
PS сегодня ночью создал массив на [10000][64] что я не так делаю crazy



И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
XAOCДата: Четверг, 23.04.2009, 11:05 | Сообщение # 26
Советчик
Группа: Разработчики
Сообщений: 1190
Награды: 11
Город: Гдета там>>
Репутация: 311
Замечания: 0%
Статус:
stepmex, ну ты попробуй его инициализировать и посмотрим как оно у тебя выйдет, пример:

Code
stock InitMassive()
{
new imassive[100500][64];
printf("massive sucess created",imassive);
}

просто засунь InitMassive() в OnGameModeInit()


Сообщение отредактировал XAOC - Четверг, 23.04.2009, 11:05
stepmexДата: Четверг, 23.04.2009, 11:22 | Сообщение # 27
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
XAOC, забавно, надеюсь в 0.3 разрабы сделают ограничение только по объему памяти сервера. :)
Зато мне в голову пришла идея псевдомассивов cool



И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
[RD]ChezДата: Четверг, 23.04.2009, 14:59 | Сообщение # 28
Мастер джэдай
Группа: Продвинутые
Сообщений: 3687
Награды: 206
Город: St. P
Репутация: 0
Замечания: 20%
Статус:
XAOC, хзхз, но у меня с SQLite плагином удавалось создать строку 1400 символов и запрос прекрасно выполнялся cool
Сейчас тестирую возможность выполнения строки в 4096 и более символов

Добавлено (23.04.2009, 14:59)
---------------------------------------------
а ступил, этож относительно массива sorry


1 час моей работы стоит минимум 800 рублей для срочных работ.
Знаю CodeIgniter, Kohana, втч. кастом(php), Вникаю в Yii. jQuery на должном уровне, немного разбираюсь в RightJS.
Алсо, 6 лет павно, 2 года в шарпе, понимаю си и плюсы.
Немного ассемблер.
Ох**тельный верстальщик какб.

Если ваш заказ потребует неделю работы и вы собираетесь заплатить 100 рублей - лес там ->> ^^^^^

chezrd@gmail.com
lance@chez-lab.ru
CNGДата: Четверг, 23.04.2009, 14:59 | Сообщение # 29
Уверенный в себе
Группа: Продвинутые
Сообщений: 213
Награды: 1
Город: Minsk City
Репутация: 13
Замечания: 0%
Статус:
Quote (stepmex)
Если в файле только имена, на каждой новой строчке одно имя, могу скинуть решение для любого количества строк.
буду благодарен

stepmexДата: Четверг, 23.04.2009, 16:48 | Сообщение # 30
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
Держи, накидал в блокноте но вроде без ошибок:[pwn]
Code
#define MEX_NAMES 500 //сколько максимум имен надо столько и ставь

forward AddName(string[])
forward DeleteName(string[]);
forward UpdateNames();
forward LoadNames();

new Names[MAX_NAMES][MAX_PLAYER_NAME];
new AllNames = 0;

public LoadNames()
{
  new File: file = fopen("Names.cfg", io_read);
  if (file)
  {
      new idx = 0;
      while (idx < MaxNames)
      {
          new valtmp[MAX_PLAYER_NAME];
          fread(passfile, valtmp);strmid(Names[idx], valtmp, 0, strlen(valtmp)-1, 255);
          idx++;
          AllNames = idx;
          if(!strlen(valtmp))break;
      }
      fclose(file);
  }
  else
  {
      new File: File = fopen("Names.cfg", io_append);
      new var[1];
      format(var, 0, "");fwrite(File, var);
      fclose(File);
  }
  return 1;
}

public UpdateNames()
{
  new idx = 0,string[256];
  new File: file;
  while (idx < AllNames)
  {
      if(idx == 0)
      {
       file = fopen("Names.cfg", io_write);
      }
      else
      {
       file = fopen("Names.cfg", io_append);
      }
      format(string, sizeof(string), "%s\n",
      Names[idx]);
      fwrite(file, string);
      fclose(file);
      idx++;
  }
  return 1;
}

public DeleteName(string[])
{
  for(new id; id < AllNames; id++)
  {
   if(strcmp(Names[id], string, false) == 0)
   {
    for(new n = id; n < AllAccounts; n++)
           {
            strmid(Names[n],Names[n+1],0,strlen(Names[n+1]),MAX_PLAYER_NAME);
    }
           break;
   }
  }
  AllNames-=1;
  UpdateNames()
}

public AddName(string[])
{
  strmid(Names[AllNames],string,0,strlen(string),MAX_PLAYER_NAME);
  AllNames+=1;
  UpdateNames()
}
[/pwn]как все это работает помести в OnGameModeInit() строку LoadNames().
Имена храняться в файле Names.cfg
чтобы удалить имя из фала DeleteName(имя)
добавить имя в фаил AddName(имя)
Для работ с никами используй массив Name[MAX_NAMES] в котором храняться имена.
Ручками фаил можно редактировать только при отключенном сервере!

Это кстати пример динамического массивы cool


И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua