LSD | Дата: Среда, 20.06.2007, 14:28:43 | Сообщение # 3 |
Лейтенант
Группа: Пользователи
Сообщений: 74
Статус: Не в сети
| Я не силен а программировании под AMXX, нипиши как эта функция выглядит в полной форме со всеми параметрами. /* Calls function on specified time. * Flags: * "a" - repeat. * "b" - loop task. * "c" - do task on time after a map timeleft. * "d" - do task on time before a map timelimit. */ native set_task(Float:time,const function[],id = 0,parameter[]="",len = 0,flags[]="", repeat = 0); Мне нужно сделать паузу скажем в 1\2 сек, перед выполнением кода
|
|
| |
slogic | Дата: Среда, 20.06.2007, 15:52:05 | Сообщение # 6 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| В твоем случае это непросто. Ввести глобальный массив: В cmdTsay (сразу после строки read_args(message, 191)) проверить, если cmd = "amx_csay" то выполнить: Code if(task_exists(id)) remove_task(id) copy(g_sMsg[id], 191, message) //g_sMsg[id] = message // или так если то что выше pawn не проглотит new arr[2] arr[0] = id arr[1] = 4 // 4 попытки set_task(0.1, "taskTSay", id, arr, sizeof(arr)) return PLUGIN_HANDLED Сам taskTSay будет выглядеть примерно так: Code public taskTSay(params[]) { new id = params[0] new attempt = params[1]
new cmd[16], color[12], message[192], name[32], authid[32], userid = 0 message = g_sMsg[id] // эта часть выдрана из cmdTSay ---------------> parse(message, color, 11) new found = 0, a = 0 if(equal(color, "!", 1)) { a = 0 found = 1 new sred[4], sgreen[4], sblue[4], ired, igreen, iblue if(strlen(color) < 2) { g_Values[0][0] = 255 g_Values[0][1] = 255 g_Values[0][2] = 255 } else { copy(sred, 3, color[1]) copy(sgreen, 3, color[4]) copy(sblue, 3, color[7]) ired = str_to_num(sred) igreen = str_to_num(sgreen) iblue = str_to_num(sblue) if(ired < 0 || ired > 255) ired = 255 if(igreen < 0 || igreen > 255) igreen = 255 if(iblue < 0 || iblue > 255) iblue = 255 g_Values[0][0] = ired g_Values[0][1] = igreen g_Values[0][2] = iblue } } else if(equal(color, "?")) { a = 1 found = 1 g_Values[1][0] = random_num(32,255) g_Values[1][1] = random_num(32,255) g_Values[1][2] = random_num(32,255) } else { for(new i = 2; i < MAX_CLR; ++i) { //if(equali(color, _T(g_Colors[i], id)) || equali(color, g_Colors[i])) { if(equali(color, g_Colors[i])) { a = i found = 1 break } } } if(!found) a = 2 new length = found ? (strlen(color) + 1) : 0 if(++g_msgChannel > 6 || g_msgChannel < 3) g_msgChannel = 3 get_user_authid(id, authid, 31) get_user_name(id, name, 31) userid = get_user_userid(id)
if(equali(cmd, "tsay", 4) || equali(cmd[4], "tsay", 4)) set_hudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], 0.05, 0.55+float(g_msgChannel)/35.0, 0, 6.0, HOLDTIME, 0.5, 0.15, g_msgChannel) else if(equali(cmd, "csay", 4) || equali(cmd[4], "csay", 4)) set_hudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], -1.0, 0.1+float(g_msgChannel)/35.0, 0, 6.0, HOLDTIME, 0.5, 0.15, g_msgChannel) else if(equali(cmd, "fxsay", 5) || equali(cmd[4], "fxsay", 5)) set_hudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], 0.05, 0.55+float(g_msgChannel)/35.0, 2, 0.25, HOLDTIME, 0.05, 1.0, g_msgChannel) else if(equali(cmd, "cfxsay", 6) || equali(cmd[4], "cfxsay", 6)) set_hudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], -1.0, 0.1+float(g_msgChannel)/35.0, 2, 0.25, HOLDTIME, 0.05, 1.0, g_msgChannel) else if(equali(cmd, "flicksay", 8) || equali(cmd[4], "flicksay", 8)) set_hudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], 0.05, 0.55+float(g_msgChannel)/35.0, 1, 6.0, HOLDTIME, 0.5, 0.2, g_msgChannel) else if(equali(cmd, "cflicksay", 9) || equali(cmd[4], "cflicksay", 9)) set_hudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], -1.0, 0.1+float(g_msgChannel)/35.0, 1, 6.0, HOLDTIME, 0.5, 0.2, g_msgChannel)
while(replace(message[length], 191-length, "\"", "")) {} while(replace(message[length], 191-length, "\\n", "\n")) {} if(containi(cmd, "yy") == -1 || get_cvar_num("amx_show_activity") == 2) { show_hudmessage(0, "%s : %s", name, message[length]) while(replace(message[length], 191-length, "\n", " ")) {} client_print(0, print_notify, "%s : %s", name, message[length]) } else { show_hudmessage(0, message[length]) while(replace(message[length], 191-length, "\n", " ")) {} client_print(0, print_notify, message[length]) }
log_to_file(g_logFile,"Chat: \"%s<%d><%s><>\" %s \"%s\"",name,userid,authid,cmd,message[length]) /*log_message("\"%s<%d><%s><>\" triggered \"%s\" (text \"%s\") (color \"%s\")", name,userid,authid,cmd,message[length],g_Colors[a])*/
// <<------------------------------------
attempt-- if(attempt) { new arr[2]; arr[0] = id; arr[1] = attempt set_task(0.5, "taskTSay", id, arr, sizeof(arr)) } }
Сообщение отредактировал slogic - Среда, 20.06.2007, 15:53:55 |
|
| |