ZSCRIPTER 1 Опубликовано 19 февраля, 2019 Привет. есть такая проблема с командой CMD:v(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_VIP] < 1, PLAYER_DATA[playerid][data_ADMLVL] < 1) return SendClientMessage(playerid, -1, "Вам не доступна данная функция"); if(sscanf(params,"s[100]",params[0])) return SendClientMessage(playerid,COLOR_WARNING,"Используйте: /v [текст]"); new string[145], adm_lvl[30]; switch(PLAYER_DATA[playerid][data_ADMLVL]) { case 0: adm_lvl = "{007FFF}[VIP]"; case 1: adm_lvl = "{FF0001}[Администратор]"; case 2: adm_lvl = "{FF0001}[Администратор]"; case 3: adm_lvl = "{FF0001}[Администратор]"; case 4: adm_lvl = "{FF0001}[Администратор]"; case 5: adm_lvl = "{FF0001}[Администратор]"; case 6: adm_lvl = "{FF0001}[Администратор]"; case 7: adm_lvl = "{FF0001}[Администратор]"; case 8: adm_lvl = "{FF0001}[Администратор]"; case 9: adm_lvl = "{FF0001}[Администратор]"; case 10: adm_lvl = "{FF0001}[Администратор]"; } format(string, sizeof(string), "%s{F0F8FF}: %s",adm_lvl,params[0]); SendVipchatMessage(0xFF5204FF, string); return true; } доступ к команде есть для випа, я сделал ище и для админов но для випа доступ есть далее а для админов все ище нету Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
16Shadows 101 Опубликовано 19 февраля, 2019 Сложные условия пишутся с помощью логических операторов, а не запятых if(PLAYER_DATA[playerid][data_VIP] < 1 && PLAYER_DATA[playerid][data_ADMLVL] < 1) return SendClientMessage(playerid, -1, "Вам не доступна данная функция"); Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ZSCRIPTER 1 Опубликовано 19 февраля, 2019 @16Shadows,не в том дело, я уже менял на && и на || не работает, вот код CMD:hr(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 || PLAYER_DATA[playerid][data_ADMLVL] < 1) return SendClientMessage(playerid, -1, "Вам не доступна данная функция"); if(sscanf(params,"s[100]",params[0])) return SendClientMessage(playerid,COLOR_WARNING,"Используйте: /hr [текст]"); new string[256], s_lvl[30]; switch(PLAYER_DATA[playerid][data_ADMLVL]) { case 0: s_lvl = "Агент Поддержки"; case 1: s_lvl = "Администратор"; case 2: s_lvl = "Администратор"; case 3: s_lvl = "Администратор"; case 4: s_lvl = "Администратор"; case 5: s_lvl = "Администратор"; case 6: s_lvl = "Администратор"; case 7: s_lvl = "Администратор"; case 8: s_lvl = "Администратор"; case 9: s_lvl = "Администратор"; case 10: s_lvl = "Администратор"; } if(PLAYER_DATA[playerid][data_ADMLVL] < 1) { format(string, sizeof(string), "%s: %s",s_lvl,params[0]); SendSupportMessage(0xFF5204FF, string); } else if(PLAYER_DATA[playerid][data_SUPPORTLVL] == 1) { format(string, sizeof(string), "%s #%d: %s",s_lvl,PLAYER_DATA[playerid][data_SUPPORTID],params[0]); SendSupportMessage(0xFF5204FF, string); } return true; } CMD:v(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_ADMLVL] < 1 && PLAYER_DATA[playerid][data_VIP] == 1) return true; if(sscanf(params,"s[100]",params[0])) return SendClientMessage(playerid,COLOR_WARNING,"Используйте: /v [текст]"); new string[145], adm_lvl[30]; switch(PLAYER_DATA[playerid][data_ADMLVL]) { case 0: adm_lvl = "{007FFF}[VIP]"; case 1: adm_lvl = "{FF0001}[Администратор]"; case 2: adm_lvl = "{FF0001}[Администратор]"; case 3: adm_lvl = "{FF0001}[Администратор]"; case 4: adm_lvl = "{FF0001}[Администратор]"; case 5: adm_lvl = "{FF0001}[Администратор]"; case 6: adm_lvl = "{FF0001}[Администратор]"; case 7: adm_lvl = "{FF0001}[Администратор]"; case 8: adm_lvl = "{FF0001}[Администратор]"; case 9: adm_lvl = "{FF0001}[Администратор]"; case 10: adm_lvl = "{FF0001}[Администратор]"; } format(string, sizeof(string), "%s{F0F8FF}: %s",adm_lvl,params[0]); SendVipchatMessage(0xFF5204FF, string); return true; } вот код самих чатов, токо сейчас вспомнил что и там тоже надо давать для адиков, но всеровно не работает stock SendSupportMessage(color, text[]) { for(new i = 0; i < MAX_PLAYERS; i++) { if(!IsPlayerConnected(i)) continue; if(PLAYER_DATA[i][data_SUPPORTLVL] >= 1 && PLAYER_DATA[i][data_ADMLVL] >= 1) SendClientMessage(i, color, text); } return true; } stock SendVipchatMessage(color, text[]) { for(new i = 0; i < MAX_PLAYERS; i++) { if(!IsPlayerConnected(i)) continue; if(PLAYER_DATA[i][data_ADMLVL] >= 1 && PLAYER_DATA[i][data_VIP] >= 1) SendClientMessage(i, color, text); } return true; } Вип чат тепер работает но хелпер чат далее отказывается CMD:hr(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 && PLAYER_DATA[playerid][data_ADMLVL] < 1) return true; if(sscanf(params,"s[100]",params[0])) return SendClientMessage(playerid,COLOR_WARNING,"Используйте: /hr [текст]"); new string[256], s_lvl[30]; switch(PLAYER_DATA[playerid][data_ADMLVL]) { case 0: s_lvl = "Агент Поддержки"; case 1: s_lvl = "Администратор"; case 2: s_lvl = "Администратор"; case 3: s_lvl = "Администратор"; case 4: s_lvl = "Администратор"; case 5: s_lvl = "Администратор"; case 6: s_lvl = "Администратор"; case 7: s_lvl = "Администратор"; case 8: s_lvl = "Администратор"; case 9: s_lvl = "Администратор"; case 10: s_lvl = "Администратор"; } if(PLAYER_DATA[playerid][data_ADMLVL] < 1) { format(string, sizeof(string), "%s: %s",s_lvl,params[0]); SendSupportMessage(0xFF5204FF, string); } else if(PLAYER_DATA[playerid][data_SUPPORTLVL] == 1) { format(string, sizeof(string), "%s #%d: %s",s_lvl,PLAYER_DATA[playerid][data_SUPPORTID],params[0]); SendSupportMessage(0xFF5204FF, string); } return true; } stock SendVipchatMessage(color, text[]) { for(new i = 0; i < MAX_PLAYERS; i++) { if(!IsPlayerConnected(i)) continue; if(PLAYER_DATA[i][data_VIP] >= 1) SendClientMessage(i, color, text); if(PLAYER_DATA[i][data_ADMLVL] >= 1) SendClientMessage(i, color, text); } return true; } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Vegas 91 Опубликовано 19 февраля, 2019 @AZRP, если у вас администратор - не изменная константа(в смысле везде от 1 до 10 ранг администратор.) почему бы не упростить ? case 1..10: ? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ZSCRIPTER 1 Опубликовано 19 февраля, 2019 @Vegas,уже упростил, токо что-же делать,не видет не пишет в чат не работает кмд Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
16Shadows 101 Опубликовано 20 февраля, 2019 Вы хотя бы понимаете, что делаете? && - логический оператор И. Вы его используете в стоках отправки сообщения, поэтому выполнятся условие будет, когда И первая, И вторая проверки верны. || - логический оператор ИЛИ. Когда одна из проверок верна, всё условие считается верным. Вы бы хоть позанимались для начала дискретной математикой немного, а потом начинали писать скрипты. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ZSCRIPTER 1 Опубликовано 20 февраля, 2019 @16Shadows, да я так то знаю что где как, у меня вип уже работает нормально, я с хелпер чатом уже просто замахался, что токо не пробовал всеравно не работает Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
16Shadows 101 Опубликовано 20 февраля, 2019 (изменено) По Вам не видно, что Вы знаете "что где как", т.к. даже после объяснения не можете понять, что логический оператор && нужно заменить на логический оператор || if(PLAYER_DATA[i][data_SUPPORTLVL] >= 1 || PLAYER_DATA[i][data_ADMLVL] >= 1) SendClientMessage(i, color, text); Ещё и какие-то бредовые условия после структуры case в самой команде hr - если уровень администратора меньше одного (что у Вас подразумевает хелпера), то выполнить такой набор команд. Иначе, если уровень хелпера игрока равен одному (куда структура дойдёт только для администраторов, для которых это условие неверно), то выполнить другой набор команд. Изменено 20 февраля, 2019 пользователем 16Shadows Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ZSCRIPTER 1 Опубликовано 20 февраля, 2019 (изменено) @16Shadows, да незнаю,я как бы понимаю что нужно но не могу сделать что нужно. можеш помоч? CMD:hr(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 || PLAYER_DATA[playerid][data_ADMLVL] < 1) return true; if(sscanf(params,"s[100]",params[0])) return SendClientMessage(playerid,COLOR_WARNING,"Используйте: /hr [текст]"); new string[256], s_lvl[30]; switch(PLAYER_DATA[playerid][data_ADMLVL]) { case 0: s_lvl = "Агент Поддержки"; case 1,2,3,4,5,6,7,8,9,10: s_lvl = "Администратор"; } if(PLAYER_DATA[playerid][data_SUPPORTLVL] == 1)// тут все работает { format(string, sizeof(string), "%s #%d: %s",s_lvl,PLAYER_DATA[playerid][data_SUPPORTID],params[0]); SendSupportMessage(0xFF5204FF, string); } else if(PLAYER_DATA[playerid][data_ADMLVL] < 1)//а тут не хочет { format(string, sizeof(string), "%s: %s",s_lvl,params[0]); SendSupportMessage(0xFF5204FF, string); } return true; } Изменено 20 февраля, 2019 пользователем AZRP Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
16Shadows 101 Опубликовано 20 февраля, 2019 (изменено) Ну то есть Вас не смущает, что команда не работает для игроков с data_ADMLVL < 1, но потом Вы в ней делаете проверку data_ADMLVL < 1? Изменено 20 февраля, 2019 пользователем 16Shadows Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ZSCRIPTER 1 Опубликовано 20 февраля, 2019 @16Shadows,тоесть не работает? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
16Shadows 101 Опубликовано 20 февраля, 2019 CMD:hr(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 || PLAYER_DATA[playerid][data_ADMLVL] < 1) return true; if(sscanf(params,"s[100]",params[0])) return SendClientMessage(playerid,COLOR_WARNING,"Используйте: /hr [текст]"); new string[256], s_lvl[30]; switch(PLAYER_DATA[playerid][data_ADMLVL]) { case 0: s_lvl = "Агент Поддержки"; case 1,2,3,4,5,6,7,8,9,10: s_lvl = "Администратор"; } if(PLAYER_DATA[playerid][data_SUPPORTLVL] == 1)// тут все работает { format(string, sizeof(string), "%s #%d: %s",s_lvl,PLAYER_DATA[playerid][data_SUPPORTID],params[0]); SendSupportMessage(0xFF5204FF, string); } else if(PLAYER_DATA[playerid][data_ADMLVL] >= 1)//теперь хочет { format(string, sizeof(string), "%s: %s",s_lvl,params[0]); SendSupportMessage(0xFF5204FF, string); } return true; } Советую почитать Вам пару книг по логическому мышлению, прежде чем заниматься скриптингом. Если не станет лучше, то не судьба. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ZSCRIPTER 1 Опубликовано 20 февраля, 2019 @16Shadows,всеровно не работает(, я уже как только не пробовал написать ет все я уже в админ и == ставил, чтобы токо 1 лвл работал, но всеровно не работает Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
gegelo 22 Опубликовано 23 февраля, 2019 @AZRP, с такими условиями ничего работать и не будет, это не лотерея символов, какой поставишь мб повезет. Я понимаю, что тут конечно же помогут, но самому прочитать, изучить, написать самостоятельно нельзя? Это все понятно, но мне интересно, что будет дальше, если основы не знать? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты