sasa Дата: Суббота, 19.10.2013, 10:21:25 | Сообщение # 1
Группа: Пользователи
Сообщений: 34
в своем уроке я вас научу делать очень нужную, простую и уникальную систему. которая позволит вам изменять названия рангов прямо из игры !!! как правило на ваших игровых модах есть несколько функций где пишется название рангов это паспорт, новости фракции, чат семьи, департамента и т.д для начала добавим саму команду if(strcmp(cmd, "/editrank", true) == 0) { new filestr[50], rang, rangt[4], nrname[32]; if(!IsPlayerConnected(playerid)) return 1; if(PlayerInfo[playerid] [pLeader]< 1) return SendClientMessage(playerid, COLOR_WHITE, "{f9b0b0}x {FFFFFF}Вы не лидер."); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "{FF00FF}• {FFFFFF}/editrank [{FF00FF}номер ранга{FFFFFF}] [название]"); rang = strval(tmp); new length = strlen(cmdtext); while ((idx < length) && (cmdtext [idx]<= ' ')) idx++; new offset = idx; new result[64]; while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; } result[idx - offset] = EOS; if(!strlen(result)) return SendClientMessage(playerid, COLOR_WHITE, "{FF00FF}• {FFFFFF}/editrank [{FF00FF}номер ранга{FFFFFF}] [название]"); format(nrname, 32, "%s", result); format(rangt, 4, "%d", rang); if(rang > 20 || rang < 1) return SendClientMessage(playerid, COLOR_WHITE, "{FF00FF}• {FFFFFF}/editrank [{FF00FF}номер ранга{FFFFFF}] [название]"); format(filestr, sizeof(filestr), "gangs/ranks/%d.ini", PlayerInfo[playerid][pLeader]); format(string, sizeof(string), "{b0daf9}• {FFFFFF}Название ранга {b0daf9}%d{FFFFFF} теперь [{b0daf9}%s{FFFFFF}]", rang, nrname); SendClientMessage(playerid, COLOR_WHITE, string); new iniFile = ini_openFile(filestr); ini_setString(iniFile, rangt, nrname); return 1; } после этого ищем чат семьи /family [text] и вот вам пример как должно быть вместе с функцией, подредактируите под свой if(strcmp(cmd, "/family", true) == 0 || strcmp(cmd, "/f", true) == 0) { if(IsPlayerConnected(playerid)) { GetPlayerName(playerid, sendername, sizeof(sendername)); if(PlayerInfo[playerid] [pMuted]== 1) return SendClientMessage(playerid, TEAM_CYAN_COLOR, "У Вас молчанка!"); new length = strlen(cmdtext); while ((idx < length) && (cmdtext [idx]<= ' ')) { idx++; } new offset = idx; new result[64]; while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; } result[idx - offset] = EOS; if(!strlen(result)) return SendClientMessage(playerid, COLOR_GRAD2, " Использовать: (/f)amily [текст]"); if( strfind( result , ".tk" , true ) != -1 || strfind( result , ".com" , true ) != -1 || strfind( result , "3dn.ru" , true ) != -1 || strfind( result , ".com" , true ) != -1 || strfind( result , ":7878" , true ) != -1 || strfind( result , ":7782" , true ) != -1 || strfind( result , ":33444" , true ) != -1 || strfind( result , ":7849" , true ) != -1 || strfind( result , ":7777" , true ) != -1 || strfind( result , ":5555" , true ) != -1 || strfind( result , ":4455" , true ) != -1 || strfind( result , "заходи тру" , true ) != -1 || strfind( result , "админку" , true ) != -1 || strfind( result , "новый" , true ) != -1 || strfind( result , "я там админ" , true ) != -1) { format(string, sizeof(string), "WARN(/f): %s[id: %d] %s",sendername,playerid,result); ABroadCast(COLOR_YELLOW,string,1); return 1; } if(PlayerInfo[playerid] [pLeader]== 1||PlayerInfo[playerid] [pMember]== 1||PlayerInfo[playerid] [pLeader]== 2||PlayerInfo[playerid] [pMember]== 2||PlayerInfo[playerid] [pLeader]== 3||PlayerInfo[playerid] [pMember]== 3||PlayerInfo[playerid] [pLeader]== 4||PlayerInfo[playerid] [pMember]== 4||PlayerInfo[playerid] [pLeader]== 5||PlayerInfo[playerid] [pMember]== 5 ||PlayerInfo[playerid] [pLeader]== 6||PlayerInfo[playerid] [pMember]== 6||PlayerInfo[playerid] [pLeader]== 7||PlayerInfo[playerid] [pMember]== 7||PlayerInfo[playerid] [pLeader]== 8||PlayerInfo[playerid] [pMember]== 8||PlayerInfo[playerid] [pLeader]== 9||PlayerInfo[playerid] [pMember]== 9||PlayerInfo[playerid] [pLeader]== 10||PlayerInfo[playerid] [pMember]== 10 ||PlayerInfo[playerid] [pLeader]== 11||PlayerInfo[playerid] [pMember]== 11||PlayerInfo[playerid] [pLeader]== 12||PlayerInfo[playerid] [pMember]== 12||PlayerInfo[playerid] [pLeader]== 13||PlayerInfo[playerid] [pMember]== 13||PlayerInfo[playerid] [pLeader]== 14||PlayerInfo[playerid] [pMember]== 14||PlayerInfo[playerid] [pLeader]== 15||PlayerInfo[playerid] [pMember]== 15 ||PlayerInfo[playerid] [pLeader]== 16||PlayerInfo[playerid] [pMember]== 16||PlayerInfo[playerid] [pLeader]== 17||PlayerInfo[playerid] [pMember]== 17||PlayerInfo[playerid] [pLeader]== 18||PlayerInfo[playerid] [pMember]== 18||PlayerInfo[playerid] [pLeader]== 19||PlayerInfo[playerid] [pMember]== 19||PlayerInfo[playerid] [pLeader]== 20||PlayerInfo[playerid] [pMember]== 20 ||PlayerInfo[playerid] [pLeader]== 21||PlayerInfo[playerid] [pMember]== 21 ||PlayerInfo[playerid] [pLeader]== 22 || PlayerInfo[playerid] [pMember]== 22 ||PlayerInfo[playerid] [pLeader]== 23 || PlayerInfo[playerid] [pMember]== 23 || PlayerInfo[playerid] [pLeader]== 24 || PlayerInfo[playerid] [pMember]== 24) { new filestr[50], returnString[32], rrank[4]; new leader = PlayerInfo[playerid][pLeader]; new member = PlayerInfo[playerid][pMember]; if(PlayerInfo[playerid] [pRank]>= 1) { if (leader) format(filestr, sizeof(filestr), "gangs/ranks/%d.ini", leader); else if (member) format(filestr, sizeof(filestr), "gangs/ranks/%d.ini", member); format(rrank, sizeof(rrank), "%d", PlayerInfo[playerid][pRank]); new iniFile = ini_openFile(filestr); ini_getString(iniFile, rrank, returnString); ini_closeFile(iniFile); } if(member==1 || leader==1)//lspd { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Стажер МВД %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } else if(member==2 || leader==2)//fbi { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Стажер ФСБ %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } else if(member==3 || leader==3)//army ls { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Рядовой %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } else if(member==4 || leader==4)//medic { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Практикант МЧС %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } else if(member==5 || leader==5) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } else if(member==6 || leader==6) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } else if(member==7 || leader==7) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } else if(member==8 || leader==8) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } else if(member==9 || leader==9) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } else if(member==11 || leader==11) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } else if(member==12 || leader==12) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } if(member==13 || leader==13) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } if(member==14 || leader==14) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } if(member==15 || leader==15) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } if(member==16 || leader==16) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } if(member==17 || leader==17) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичок %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } if(member==18 || leader==18) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } else if(member==20 || leader==20) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } if(member==21 || leader==21) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } if(member==22 || leader==22) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } if(member==23 || leader==23) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } if(member==24 || leader==24) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } if(member==25 || leader==25) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Сержант %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } } else { SendClientMessage(playerid, COLOR_GRAD2, "Вы не нигде не состоите!"); return 1; } } return 1; } оранжевым выделена сама функция ... фракции сделаете под свои //----------------------------------[departments]----------------------------------------------- if(strcmp(cmd, "/departments", true) == 0 || strcmp(cmd, "/d", true) == 0) { if(IsPlayerConnected(playerid)) { GetPlayerName(playerid, sendername, sizeof(sendername)); new length = strlen(cmdtext); while ((idx < length) && (cmdtext [idx]<= ' ')) { idx++; } new offset = idx; new result[64]; while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; } result[idx - offset] = EOS; if(!strlen(result)) return SendClientMessage(playerid, COLOR_GRAD2, " Использовать: (/d)epartments [чат]"); if(PlayerInfo[playerid] [pMuted]== 1) return SendClientMessage(playerid, TEAM_CYAN_COLOR, "У Вас молчанка!"); if( strfind( result , ".tk" , true ) != -1 || strfind( result , ".com" , true ) != -1 || strfind( result , "3dn.ru" , true ) != -1 || strfind( result , ".com" , true ) != -1 || strfind( result , ":7878" , true ) != -1 || strfind( result , ":7782" , true ) != -1 || strfind( result , ":33444" , true ) != -1 || strfind( result , ":7849" , true ) != -1 || strfind( result , "192." , true ) != -1 || strfind( result , ":7777" , true ) != -1 || strfind( result , ":5555" , true ) != -1 || strfind( result , ":4455" , true ) != -1) { format(string, sizeof(string), "WARN(/d): %s[id: %d] %s",sendername,playerid,result); ABroadCast(COLOR_YELLOW,string,1); return 1; } //---------------Вот сама функция----------------------------- new rtext[32], filestr[50], rrank[4]; if(PlayerInfo[playerid] [pMember]== 1 || PlayerInfo[playerid] [pLeader]== 1 || PlayerInfo[playerid] [pMember]== 2 || PlayerInfo[playerid] [pLeader]== 2 || PlayerInfo[playerid] [pMember]== 3 || PlayerInfo[playerid] [pLeader]== 3 || PlayerInfo[playerid] [pMember]== 4 || PlayerInfo[playerid] [pLeader]== 4 || PlayerInfo[playerid] [pMember]== 7 || PlayerInfo[playerid] [pLeader]== 7 || PlayerInfo[playerid] [pMember]== 10 || PlayerInfo[playerid] [pLeader]== 10 || PlayerInfo[playerid] [pMember]== 21 || PlayerInfo[playerid] [pLeader]== 21 || PlayerInfo[playerid] [pMember]== 12 || PlayerInfo[playerid] [pLeader]== 12) { if(PlayerInfo[playerid] [pRank]>= 1) { if(PlayerInfo[playerid][pLeader]) format(filestr, sizeof(filestr), "gangs/ranks/%d.ini", PlayerInfo[playerid][pLeader]); else if(PlayerInfo[playerid][pMember]) format(filestr, sizeof(filestr), "gangs/ranks/%d.ini", PlayerInfo[playerid][pMember]); format(rrank, sizeof(rrank), "%d", PlayerInfo[playerid][pRank]); new iniFile = ini_openFile(filestr); ini_getString(iniFile, rrank, rtext); ini_closeFile(iniFile); format(string, sizeof(string), " [D]%s %s: %s", rtext, sendername, result); SendTeamMessage(1, COLOR_ALLDEPT, string); printf("%s", string); } } else { SendClientMessage(playerid, COLOR_GRAD4, "Вы не законник!"); return 1; } } return 1; } теперь перейдем к паспорту и /gov новости в /gov добавите вот это new rtext[32], filestr[50], rrank[4]; if(PlayerInfo[playerid] [pRank]>= 1) { if(PlayerInfo[playerid][pLeader]) format(filestr, sizeof(filestr), "gangs/ranks/%d.ini", PlayerInfo[playerid][pLeader]); else if(PlayerInfo[playerid][pMember]) format(filestr, sizeof(filestr), "gangs/ranks/%d.ini", PlayerInfo[playerid][pMember]); format(rrank, sizeof(rrank), "%d", PlayerInfo[playerid][pRank]); new iniFile = ini_openFile(filestr); ini_getString(iniFile, rrank, rtext); ini_closeFile(iniFile); если у вас есть /pass /doc туда добавляйте тоже самое new rtext[32], filestr[50], rrank[4]; if(PlayerInfo[playerid] [pMember]== 1 || PlayerInfo[playerid] [pLeader]== 1 || PlayerInfo[playerid] [pMember]== 2 || PlayerInfo[playerid] [pLeader]== 2 || PlayerInfo[playerid] [pMember]== 3 || PlayerInfo[playerid] [pLeader]== 3 || PlayerInfo[playerid] [pMember]== 4 || PlayerInfo[playerid] [pLeader]== 4 || PlayerInfo[playerid] [pMember]== 21 || PlayerInfo[playerid] [pLeader]== 21 || PlayerInfo[playerid] [pLeader]== 12 || PlayerInfo[playerid] [pMember]== 12) { if(PlayerInfo[playerid] [pRank]>= 1) { if(PlayerInfo[playerid][pLeader]) format(filestr, sizeof(filestr), "gangs/ranks/%d.ini", PlayerInfo[playerid][pLeader]); else if(PlayerInfo[playerid][pMember]) format(filestr, sizeof(filestr), "gangs/ranks/%d.ini", PlayerInfo[playerid][pMember]); format(rrank, sizeof(rrank), "%d", PlayerInfo[playerid][pRank]); new iniFile = ini_openFile(filestr); ini_getString(iniFile, rrank, rtext); ini_closeFile(iniFile); } } ТЕПЕРЬ САМОЕ ГЛАВНОЕ В ЭТОМ ДЕЛЕ В ПАПКЕ SCRIPTFILE СОЗДАЕМ ПАПКУ gangs а в ней папку ranks и там фаилы от 1 - 20 в зависимости от фаркций в фаиле .ini
Сообщение в своем уроке я вас научу делать очень нужную, простую и уникальную систему. которая позволит вам изменять названия рангов прямо из игры !!! как правило на ваших игровых модах есть несколько функций где пишется название рангов это паспорт, новости фракции, чат семьи, департамента и т.д для начала добавим саму команду if(strcmp(cmd, "/editrank", true) == 0) { new filestr[50], rang, rangt[4], nrname[32]; if(!IsPlayerConnected(playerid)) return 1; if(PlayerInfo[playerid] [pLeader]< 1) return SendClientMessage(playerid, COLOR_WHITE, "{f9b0b0}x {FFFFFF}Вы не лидер."); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "{FF00FF}• {FFFFFF}/editrank [{FF00FF}номер ранга{FFFFFF}] [название]"); rang = strval(tmp); new length = strlen(cmdtext); while ((idx < length) && (cmdtext [idx]<= ' ')) idx++; new offset = idx; new result[64]; while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; } result[idx - offset] = EOS; if(!strlen(result)) return SendClientMessage(playerid, COLOR_WHITE, "{FF00FF}• {FFFFFF}/editrank [{FF00FF}номер ранга{FFFFFF}] [название]"); format(nrname, 32, "%s", result); format(rangt, 4, "%d", rang); if(rang > 20 || rang < 1) return SendClientMessage(playerid, COLOR_WHITE, "{FF00FF}• {FFFFFF}/editrank [{FF00FF}номер ранга{FFFFFF}] [название]"); format(filestr, sizeof(filestr), "gangs/ranks/%d.ini", PlayerInfo[playerid][pLeader]); format(string, sizeof(string), "{b0daf9}• {FFFFFF}Название ранга {b0daf9}%d{FFFFFF} теперь [{b0daf9}%s{FFFFFF}]", rang, nrname); SendClientMessage(playerid, COLOR_WHITE, string); new iniFile = ini_openFile(filestr); ini_setString(iniFile, rangt, nrname); return 1; } после этого ищем чат семьи /family [text] и вот вам пример как должно быть вместе с функцией, подредактируите под свой if(strcmp(cmd, "/family", true) == 0 || strcmp(cmd, "/f", true) == 0) { if(IsPlayerConnected(playerid)) { GetPlayerName(playerid, sendername, sizeof(sendername)); if(PlayerInfo[playerid] [pMuted]== 1) return SendClientMessage(playerid, TEAM_CYAN_COLOR, "У Вас молчанка!"); new length = strlen(cmdtext); while ((idx < length) && (cmdtext [idx]<= ' ')) { idx++; } new offset = idx; new result[64]; while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; } result[idx - offset] = EOS; if(!strlen(result)) return SendClientMessage(playerid, COLOR_GRAD2, " Использовать: (/f)amily [текст]"); if( strfind( result , ".tk" , true ) != -1 || strfind( result , ".com" , true ) != -1 || strfind( result , "3dn.ru" , true ) != -1 || strfind( result , ".com" , true ) != -1 || strfind( result , ":7878" , true ) != -1 || strfind( result , ":7782" , true ) != -1 || strfind( result , ":33444" , true ) != -1 || strfind( result , ":7849" , true ) != -1 || strfind( result , ":7777" , true ) != -1 || strfind( result , ":5555" , true ) != -1 || strfind( result , ":4455" , true ) != -1 || strfind( result , "заходи тру" , true ) != -1 || strfind( result , "админку" , true ) != -1 || strfind( result , "новый" , true ) != -1 || strfind( result , "я там админ" , true ) != -1) { format(string, sizeof(string), "WARN(/f): %s[id: %d] %s",sendername,playerid,result); ABroadCast(COLOR_YELLOW,string,1); return 1; } if(PlayerInfo[playerid] [pLeader]== 1||PlayerInfo[playerid] [pMember]== 1||PlayerInfo[playerid] [pLeader]== 2||PlayerInfo[playerid] [pMember]== 2||PlayerInfo[playerid] [pLeader]== 3||PlayerInfo[playerid] [pMember]== 3||PlayerInfo[playerid] [pLeader]== 4||PlayerInfo[playerid] [pMember]== 4||PlayerInfo[playerid] [pLeader]== 5||PlayerInfo[playerid] [pMember]== 5 ||PlayerInfo[playerid] [pLeader]== 6||PlayerInfo[playerid] [pMember]== 6||PlayerInfo[playerid] [pLeader]== 7||PlayerInfo[playerid] [pMember]== 7||PlayerInfo[playerid] [pLeader]== 8||PlayerInfo[playerid] [pMember]== 8||PlayerInfo[playerid] [pLeader]== 9||PlayerInfo[playerid] [pMember]== 9||PlayerInfo[playerid] [pLeader]== 10||PlayerInfo[playerid] [pMember]== 10 ||PlayerInfo[playerid] [pLeader]== 11||PlayerInfo[playerid] [pMember]== 11||PlayerInfo[playerid] [pLeader]== 12||PlayerInfo[playerid] [pMember]== 12||PlayerInfo[playerid] [pLeader]== 13||PlayerInfo[playerid] [pMember]== 13||PlayerInfo[playerid] [pLeader]== 14||PlayerInfo[playerid] [pMember]== 14||PlayerInfo[playerid] [pLeader]== 15||PlayerInfo[playerid] [pMember]== 15 ||PlayerInfo[playerid] [pLeader]== 16||PlayerInfo[playerid] [pMember]== 16||PlayerInfo[playerid] [pLeader]== 17||PlayerInfo[playerid] [pMember]== 17||PlayerInfo[playerid] [pLeader]== 18||PlayerInfo[playerid] [pMember]== 18||PlayerInfo[playerid] [pLeader]== 19||PlayerInfo[playerid] [pMember]== 19||PlayerInfo[playerid] [pLeader]== 20||PlayerInfo[playerid] [pMember]== 20 ||PlayerInfo[playerid] [pLeader]== 21||PlayerInfo[playerid] [pMember]== 21 ||PlayerInfo[playerid] [pLeader]== 22 || PlayerInfo[playerid] [pMember]== 22 ||PlayerInfo[playerid] [pLeader]== 23 || PlayerInfo[playerid] [pMember]== 23 || PlayerInfo[playerid] [pLeader]== 24 || PlayerInfo[playerid] [pMember]== 24) { new filestr[50], returnString[32], rrank[4]; new leader = PlayerInfo[playerid][pLeader]; new member = PlayerInfo[playerid][pMember]; if(PlayerInfo[playerid] [pRank]>= 1) { if (leader) format(filestr, sizeof(filestr), "gangs/ranks/%d.ini", leader); else if (member) format(filestr, sizeof(filestr), "gangs/ranks/%d.ini", member); format(rrank, sizeof(rrank), "%d", PlayerInfo[playerid][pRank]); new iniFile = ini_openFile(filestr); ini_getString(iniFile, rrank, returnString); ini_closeFile(iniFile); } if(member==1 || leader==1)//lspd { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Стажер МВД %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } else if(member==2 || leader==2)//fbi { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Стажер ФСБ %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } else if(member==3 || leader==3)//army ls { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Рядовой %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } else if(member==4 || leader==4)//medic { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Практикант МЧС %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } else if(member==5 || leader==5) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } else if(member==6 || leader==6) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } else if(member==7 || leader==7) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } else if(member==8 || leader==8) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } else if(member==9 || leader==9) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } else if(member==11 || leader==11) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } else if(member==12 || leader==12) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } if(member==13 || leader==13) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } if(member==14 || leader==14) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } if(member==15 || leader==15) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } if(member==16 || leader==16) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } if(member==17 || leader==17) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичок %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } if(member==18 || leader==18) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } else if(member==20 || leader==20) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } if(member==21 || leader==21) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } if(member==22 || leader==22) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } if(member==23 || leader==23) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } if(member==24 || leader==24) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Новичек %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } if(member==25 || leader==25) { if(PlayerInfo[playerid] [pRank]< 1) { format(string, sizeof(string), " [F]Сержант %s: %s", sendername, result); } else { format(string, sizeof(string), " [F]%s %s: %s", returnString, sendername, result); } if(member) { SendFamilyMessage(PlayerInfo[playerid][pMember], TEAM_AZTECAS_COLOR, string); } else { SendFamilyMessage(PlayerInfo[playerid][pLeader], TEAM_AZTECAS_COLOR, string); } } } else { SendClientMessage(playerid, COLOR_GRAD2, "Вы не нигде не состоите!"); return 1; } } return 1; } оранжевым выделена сама функция ... фракции сделаете под свои //----------------------------------[departments]----------------------------------------------- if(strcmp(cmd, "/departments", true) == 0 || strcmp(cmd, "/d", true) == 0) { if(IsPlayerConnected(playerid)) { GetPlayerName(playerid, sendername, sizeof(sendername)); new length = strlen(cmdtext); while ((idx < length) && (cmdtext [idx]<= ' ')) { idx++; } new offset = idx; new result[64]; while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; } result[idx - offset] = EOS; if(!strlen(result)) return SendClientMessage(playerid, COLOR_GRAD2, " Использовать: (/d)epartments [чат]"); if(PlayerInfo[playerid] [pMuted]== 1) return SendClientMessage(playerid, TEAM_CYAN_COLOR, "У Вас молчанка!"); if( strfind( result , ".tk" , true ) != -1 || strfind( result , ".com" , true ) != -1 || strfind( result , "3dn.ru" , true ) != -1 || strfind( result , ".com" , true ) != -1 || strfind( result , ":7878" , true ) != -1 || strfind( result , ":7782" , true ) != -1 || strfind( result , ":33444" , true ) != -1 || strfind( result , ":7849" , true ) != -1 || strfind( result , "192." , true ) != -1 || strfind( result , ":7777" , true ) != -1 || strfind( result , ":5555" , true ) != -1 || strfind( result , ":4455" , true ) != -1) { format(string, sizeof(string), "WARN(/d): %s[id: %d] %s",sendername,playerid,result); ABroadCast(COLOR_YELLOW,string,1); return 1; } //---------------Вот сама функция----------------------------- new rtext[32], filestr[50], rrank[4]; if(PlayerInfo[playerid] [pMember]== 1 || PlayerInfo[playerid] [pLeader]== 1 || PlayerInfo[playerid] [pMember]== 2 || PlayerInfo[playerid] [pLeader]== 2 || PlayerInfo[playerid] [pMember]== 3 || PlayerInfo[playerid] [pLeader]== 3 || PlayerInfo[playerid] [pMember]== 4 || PlayerInfo[playerid] [pLeader]== 4 || PlayerInfo[playerid] [pMember]== 7 || PlayerInfo[playerid] [pLeader]== 7 || PlayerInfo[playerid] [pMember]== 10 || PlayerInfo[playerid] [pLeader]== 10 || PlayerInfo[playerid] [pMember]== 21 || PlayerInfo[playerid] [pLeader]== 21 || PlayerInfo[playerid] [pMember]== 12 || PlayerInfo[playerid] [pLeader]== 12) { if(PlayerInfo[playerid] [pRank]>= 1) { if(PlayerInfo[playerid][pLeader]) format(filestr, sizeof(filestr), "gangs/ranks/%d.ini", PlayerInfo[playerid][pLeader]); else if(PlayerInfo[playerid][pMember]) format(filestr, sizeof(filestr), "gangs/ranks/%d.ini", PlayerInfo[playerid][pMember]); format(rrank, sizeof(rrank), "%d", PlayerInfo[playerid][pRank]); new iniFile = ini_openFile(filestr); ini_getString(iniFile, rrank, rtext); ini_closeFile(iniFile); format(string, sizeof(string), " [D]%s %s: %s", rtext, sendername, result); SendTeamMessage(1, COLOR_ALLDEPT, string); printf("%s", string); } } else { SendClientMessage(playerid, COLOR_GRAD4, "Вы не законник!"); return 1; } } return 1; } теперь перейдем к паспорту и /gov новости в /gov добавите вот это new rtext[32], filestr[50], rrank[4]; if(PlayerInfo[playerid] [pRank]>= 1) { if(PlayerInfo[playerid][pLeader]) format(filestr, sizeof(filestr), "gangs/ranks/%d.ini", PlayerInfo[playerid][pLeader]); else if(PlayerInfo[playerid][pMember]) format(filestr, sizeof(filestr), "gangs/ranks/%d.ini", PlayerInfo[playerid][pMember]); format(rrank, sizeof(rrank), "%d", PlayerInfo[playerid][pRank]); new iniFile = ini_openFile(filestr); ini_getString(iniFile, rrank, rtext); ini_closeFile(iniFile); если у вас есть /pass /doc туда добавляйте тоже самое new rtext[32], filestr[50], rrank[4]; if(PlayerInfo[playerid] [pMember]== 1 || PlayerInfo[playerid] [pLeader]== 1 || PlayerInfo[playerid] [pMember]== 2 || PlayerInfo[playerid] [pLeader]== 2 || PlayerInfo[playerid] [pMember]== 3 || PlayerInfo[playerid] [pLeader]== 3 || PlayerInfo[playerid] [pMember]== 4 || PlayerInfo[playerid] [pLeader]== 4 || PlayerInfo[playerid] [pMember]== 21 || PlayerInfo[playerid] [pLeader]== 21 || PlayerInfo[playerid] [pLeader]== 12 || PlayerInfo[playerid] [pMember]== 12) { if(PlayerInfo[playerid] [pRank]>= 1) { if(PlayerInfo[playerid][pLeader]) format(filestr, sizeof(filestr), "gangs/ranks/%d.ini", PlayerInfo[playerid][pLeader]); else if(PlayerInfo[playerid][pMember]) format(filestr, sizeof(filestr), "gangs/ranks/%d.ini", PlayerInfo[playerid][pMember]); format(rrank, sizeof(rrank), "%d", PlayerInfo[playerid][pRank]); new iniFile = ini_openFile(filestr); ini_getString(iniFile, rrank, rtext); ini_closeFile(iniFile); } } ТЕПЕРЬ САМОЕ ГЛАВНОЕ В ЭТОМ ДЕЛЕ В ПАПКЕ SCRIPTFILE СОЗДАЕМ ПАПКУ gangs а в ней папку ranks и там фаилы от 1 - 20 в зависимости от фаркций в фаиле .ini Автор - sasa Дата добавления - 19.10.2013 в 10:21:25