| many | Дата: Вторник, 25.03.2008, 00:14:07 | Сообщение # 1 |
 Лейтенант
Группа: Пользователи
Сообщений: 49
Статус: Не в сети
| Давно начал писать этот плагин но так и не получилось его закончить. Столкнулся с проблемой - необходимо перезаписать строчку в файле... Насколько я понял такой функции нету.. а как запихнуть все в массив кроме одной строчки я так и не понял.. Вот код 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
Статус: Не в сети
| пожалуйста, приатач файл или залей куда-то, что бы отступы сохранились и скажи в каком месте он должен что делать
|
| |
|
|
| slogic | Дата: Вторник, 25.03.2008, 12:38:24 | Сообщение # 3 |
|
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Посмотри код плагина Console Explorer: http://forums.alliedmods.net/showthread.php?t=56209 Это редактор текстовых файлов на стороне сервера.
|
| |
|
|
| many | Дата: Пятница, 28.03.2008, 20:55:12 | Сообщение # 4 |
 Лейтенант
Группа: Пользователи
Сообщений: 49
Статус: Не в сети
| Держи .sma ) Добавлено (2008-03-28, 8:55 Pm) --------------------------------------------- никто не поможет? я несовсем понял как в Console Explorer делается...
|
| |
|
|
| Brute | Дата: Пятница, 28.03.2008, 21:04:55 | Сообщение # 5 |
 Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Статус: Не в сети
| many, ты же знаешь правила! Жди ответа, рано или поздно на неё обязательно ответят! Ещё один необоснованный UP темы и тема будет закрыта. "Апом" будет считаться, даже комментарий этого сообщения!
|
| |
|
|
| DaTa | Дата: Пятница, 28.03.2008, 22:49:07 | Сообщение # 6 |
|
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Статус: Не в сети
| Quote (many) я несовсем понял как в Console Explorer делается... тебе дали отличным пример, ты хоть скажи, что конкретно ты не понял
|
| |
|
|