AMX MOD X
Воскресенье, 25.01.2026, 16:18:03



Приветствую Вас Гость | RSS
[ Главная ] [ Работа с файлами. Перезапись строчки. - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
Работа с файлами. Перезапись строчки.
manyДата: Вторник, 25.03.2008, 00:14:07 | Сообщение # 1
Лейтенант
Группа: Пользователи
Сообщений: 49
Репутация: 0
Статус: Не в сети
Давно начал писать этот плагин но так и не получилось его закончить.
Столкнулся с проблемой - необходимо перезаписать строчку в файле...
Насколько я понял такой функции нету.. а как запихнуть все в массив кроме одной строчки я так и не понял..
Вот код
Code
include <amxmodx>
#include <amxmisc>

new g_scTitle[]   = "Map Time";
new g_scVersion[] = "0.0.1";
new g_scAuthor[]  = "many";

new gConfigFile[128]

public plugin_init()  
{
  register_plugin(g_scTitle, g_scVersion, g_scAuthor)
  register_concmd("amx_setmaptime", "admin_setmaptime", ADMIN_RCON, "- <mapname> <maptime>")
  register_cvar("amx_timeformap", "20")    //Время для карты которой нет в maptime.ini
  new configsdir[64]
  get_configsdir (configsdir, sizeof (configsdir))
  format (gConfigFile,sizeof(gConfigFile),"%s/maptime.ini",configsdir)
}

public plugin_cfg()
{
  if(file_exists(gConfigFile)){  
  new line, stxtsize  
  new data[192]  
  new cMap[32]
  new MapName[32],aTime[6]=0
  get_mapname(cMap, 31)
  while((line=read_file(gConfigFile,line,data,191,stxtsize))!=0)
  {  
  if ( data[0] == ';' ) continue
  parse(data,MapName,31,aTime,5)
  if (equal(MapName,cMap))
  {
  set_cvar_num("mp_timelimit",str_to_num(aTime))
  break
  }
  else{
  set_cvar_num("mp_timelimit", get_cvar_num("amx_timeformap"))  
  }
  }
  }
  else
  {
  log_amx("[Map Time] Error!!! Failed To Load maptime.ini!!!")
  }
}

public admin_setmaptime(id)
{
  if (!file_exists(gConfigFile)){
  log_amx("[Map Time] Error!!! Failed To Load maptime.ini!!!")
  return
  }
  new linetoadd[512]
  new curMap[32]
  get_mapname(curMap, 31)
  new g_mapname[64]
  read_argv(1,g_mapname,63)
  new g_maptime[64]
  read_argv(2,g_maptime,63)
  new line = 0, textline[256], len
  const SIZE = 63
  new line_mapname[SIZE + 1], line_maptime[SIZE + 1], parsedParams

  while ((line = read_file(gConfigFile, line, textline, 255, len)))
  {
  if (len == 0 || equal(textline, ";", 1))
  continue

  parsedParams = parse(textline, line_mapname, SIZE, line_maptime, SIZE)
  if (parsedParams != 2)
  continue
   
  if (equal(line_maptime, g_maptime) && equal(line_mapname, g_mapname)){    //Если карты и время совпадают
  console_print(id, "[%s] %s already exists!", g_scTitle, g_mapname)
  return  
  }
   
  if (equal(g_mapname,curMap)){   //Если карта совпадает с настоящей картой
  set_cvar_num("mp_timelimit",str_to_num(g_maptime))
  }
    
  if (equal(line_mapname, g_mapname) && !equal(line_maptime, g_maptime)){  //Если название карт совпадает а значения mp_timelimit разные
  //Сделать что бы строчка заменялась на новую в которой менялось бы значение mp_timelimit
  //
  }
}

  formatex(linetoadd, 511, "^r^"%s^" ^"%s^"", g_mapname, g_maptime)
  console_print(id, "Adding:^n%s", linetoadd)

  if (!write_file(gConfigFile, linetoadd))
  console_print(id, "[%s] Failed writing to %s!", g_scTitle, gConfigFile)
  return
}

И еще как сделать что бы при написании команды amx_setmaptime без аргументов - в maptime.ini не сохраняласб строчка - "" ""

 
DaTaДата: Вторник, 25.03.2008, 02:24:47 | Сообщение # 2
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Репутация: 16
Статус: Не в сети
пожалуйста, приатач файл или залей куда-то, что бы отступы сохранились и скажи в каком месте он должен что делать :)
 
slogicДата: Вторник, 25.03.2008, 12:38:24 | Сообщение # 3
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
Посмотри код плагина Console Explorer: http://forums.alliedmods.net/showthread.php?t=56209
Это редактор текстовых файлов на стороне сервера.
 
manyДата: Пятница, 28.03.2008, 20:55:12 | Сообщение # 4
Лейтенант
Группа: Пользователи
Сообщений: 49
Репутация: 0
Статус: Не в сети
Держи .sma )

Добавлено (2008-03-28, 8:55 Pm)
---------------------------------------------
никто не поможет?
я несовсем понял как в Console Explorer делается...

Прикрепления: maptime.sma (3.0 Kb)
 
BruteДата: Пятница, 28.03.2008, 21:04:55 | Сообщение # 5
Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Репутация: 9
Статус: Не в сети
many, ты же знаешь правила! Жди ответа, рано или поздно на неё обязательно ответят!
Ещё один необоснованный UP темы и тема будет закрыта.
"Апом" будет считаться, даже комментарий этого сообщения!
 
DaTaДата: Пятница, 28.03.2008, 22:49:07 | Сообщение # 6
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Репутация: 16
Статус: Не в сети
Quote (many)
я несовсем понял как в Console Explorer делается...

тебе дали отличным пример, ты хоть скажи, что конкретно ты не понял
 
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2026