ZSCRIPTER 1 Опубликовано 20 февраля, 2019 Всем привет. Многие думали сделать систему репутации администрации либо агентов поддержки Предостовляю вам свой вариант. Начнем с команды для ответа CMD:ans(playerid,params[]) { if(antiflood[playerid] > 0) return SendClientMessage(playerid, COLOR_WARNING,"Не флуди!"); antiflood[playerid]++; if(PLAYER_DATA[playerid][data_LOGGED] == false) return SendClientMessage(playerid,COLOR_WARNING,"Вы не авторизованы на сервере!");// тту начинаются обычние проверки if(PLAYER_DATA[playerid][data_SUPPORTLVL] < 1) return true; if(sscanf(params,"us[100]",params[0],params[1])) return SendClientMessage(playerid,COLOR_WARNING,"Используйте: /ans [ид] [текст]"); if(!IsPlayerConnected(params[0]))return SendClientMessage(playerid,COLOR_WARNING,"Данного ID нет на сервере!"); if(PLAYER_DATA[params[0]][data_LOGGED] == false)return SendClientMessage(playerid,COLOR_WARNING,"Данный игрок не прошел авторизацию!"); NotReklama(playerid, params[1]); PLAYER_DATA[playerid][data_THREP] += 1;// выдаем в БД для подальшой проверке new query[100], string[300], string1[300], str[300]; mysql_format(dbHandle,query,sizeof(query),"UPDATE `accounts` SET `threp` = '%d' WHERE `name` = '%e'",PLAYER_DATA[playerid][data_THREP],PLAYER_DATA[playerid][data_NAME]);//запрос в БД для изменение значение mysql_function_query(dbHandle,query,false,"",""); format(string, sizeof(string), "Агент поддержки #%d ответил %s[%d]: {ffa141}%s", PLAYER_DATA[playerid][data_SUPPORTID],PLAYER_DATA[params[0]][data_NAME],params[0],params[1]);//в админ чат чтобы небыло накрутки репутации и небыло слива format(string1, sizeof(string1), "Агент поддержки #%d ответил %s[%d]: {ff5204}%s", PLAYER_DATA[playerid][data_SUPPORTID],PLAYER_DATA[params[0]][data_NAME],params[0],params[1]);//в хелпер чат чтобы другие видели что вы ответили format(str, sizeof(str), "Агент #%d ответил вам: %s", PLAYER_DATA[playerid][data_SUPPORTID],params[1]);// ответ на вопрос SendClientMessage(params[0], 0xFFCD00AA, str); SendAdminMessage(0xff0001FF, string); SendSupportMessage(0xFF5204FF, string1); return true; } продолжим с команды для благодарности CMD:thanks(playerid,params[]) { if(PLAYER_DATA[playerid][data_LOGGED] == false) return SendClientMessage(playerid,COLOR_WARNING,"Вы не авторизованы на сервере!");//тут также обычные проверки if(sscanf(params,"ud",params[0])) return SendClientMessage(playerid,COLOR_WARNING,"Используйте: /th(/thanks [ID]"); if(PLAYER_DATA[params[0]][data_LOGGED] == false) return SendClientMessage(playerid,COLOR_WARNING,"Данного ID нет на сервере!"); if(PLAYER_DATA[params[0]][data_SUPPORTLVL] == 0) return SendClientMessage(playerid,COLOR_WARNING,"Данный игрок не агент поддержки!"); if(PLAYER_DATA[params[0]][data_THREP] == 0) return SendClientMessage(playerid,COLOR_WARNING,"Вы уже благодарили данного агента поддержки!");//если в БД будет 0 значит благодарность уже начислялась и доступа к кмд не будет, если в БД будет 1 то можно все ище благодарить PLAYER_DATA[playerid][data_THREP] += -1;// после использование данной команды в бд снимается проверка была ли благодарность...... PLAYER_DATA[params[0]][data_HREP] += 1;// при использование команды добавляем +1 к репутации new query[100],str[145]; mysql_format(dbHandle,query,sizeof(query),"UPDATE `accounts` SET `threp` = '%d' WHERE `name` = '%e'",PLAYER_DATA[playerid][data_THREP],PLAYER_DATA[playerid][data_NAME]); mysql_function_query(dbHandle,query,false,"",""); format(str,sizeof(str),"Спасибо за благодарность");//ответ игроку за то что он отблагодарил хелпера SendClientMessage(playerid,0xCC6633FF,str); format(str,sizeof(str),"Игрок %s[%d] поблагодарил %s[%d] за помощь ( Репутация: %d )",PLAYER_DATA[playerid][data_NAME],playerid,PLAYER_DATA[params[0]][data_NAME],params[0],PLAYER_DATA[playerid][data_HREP]);//в хелпер чат, чтобы было видно какой игрок кому выдал благодарность SendSupportMessage(0xFF5204FF, str); return true; } data_TIMEHREP, data_THREP, data_HREP, тепер создаем таймер, дабы небыло такого что игроку ответили и он копил копил благодарности а потом одному агенту все и отдал if(PLAYER_DATA[playerid][data_TIMEHREP] == 105) { PLAYER_DATA[playerid][data_TIMEHREP] = 0; if(strfind(PLAYER_DATA[playerid][data_CHAT_TEXT], "", true) == -1) strmid(PLAYER_DATA[playerid][data_CHAT_TEXT], "", 0, 128, 128); if(PLAYER_DATA[playerid][data_THREP] >= 1) { PLAYER_DATA[playerid][data_THREP] -= 1; if(PLAYER_DATA[playerid][data_TIMEHREP] == 100) { PLAYER_DATA[playerid][data_TIMEHREP] = 100; SendClientMessage(playerid,0x82FA58FF,"Не забудьте отблагодарить агента поддержки который смог вам помоч. /thanks(/th)"); } } } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Reyn 85 Опубликовано 21 февраля, 2019 Не проще сделать диалог? После того как ответил администратор и.т.д появляется у игрока диалог с выбором плохой ответ или хороший. 2 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ZSCRIPTER 1 Опубликовано 21 февраля, 2019 @Reyn,ну, ето будет немного мешать, ведь игрок задал вопрос, ему ответил админ а он допустим едет и из-за того что окно появилось он утопился в воде и все ет плохая идея, а так Не будет никак мешать, и после ответа, в течение 1:45 можно поблагодарить Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Shao 116 Опубликовано 21 февраля, 2019 Согласен да.Можно было сделать копию аризоны(не пиар) на диалогах.И сохранять те ответы в бд.Красиво бы вышло. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Smolin 1,410 Опубликовано 21 февраля, 2019 Не вижу подробных объяснений в данном туторе , только готовый копипаст . Тему переношу . Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Vegas 91 Опубликовано 21 февраля, 2019 Не твой вариант. Автора укажи, или хотябы мод , откуда взял. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ZSCRIPTER 1 Опубликовано 22 февраля, 2019 @Vegas, сам делал, около 45 минут сидел думал, на форуме можно даже найти тему где я просил помоч Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Arsen@ 0 Опубликовано 22 февраля, 2019 боже ты мой... ты если делаешь мануал то хотяб объясняй что и для чего и куда. new query[100], string[300], string1[300], str[300]; зачем ты так код насилуешь? SendAdminMessage SendSupportMessage data_TIMEHREP, data_THREP,data_HREP, data_SUPPORTLVL antiflood[playerid] dbHandle COLOR_WARNING mysql_function_query data_NAME data_SUPPORTID что это? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты