[CM]Buben4ik |
Дата: Вторник, 03.06.2014, 22:13 | Сообщение # 1
|
Новичок
Сообщений: 16
Статус: Offline
|
Приветствую всех, кто читаю данную тему! Данная теме будет полезна для тех, кто пишет с вой мод с 0. Кидаться своими "Баян","Было" и т.п. не надо! Во многих темах было не полностью описано!
1. К enum pInfo добавим Код pLeader,//Лидерка игрока. pMember,//Фракция игрока. pRank,//Ранг игрока.
2. В public OnPlayerConnect Код PlayerInfo[playerid][pLeader] = 0; PlayerInfo[playerid][pMember] = 0; PlayerInfo[playerid][pRank] = 0;
3. В public OnPlayerRegister Код iniSetInt(File,"Leader",PlayerInfo[playerid][pLeader]); iniSetInt(File,"Member",PlayerInfo[playerid][pMember]); iniSetInt(File,"Rank",PlayerInfo[playerid][pRank]);
4. В public OnPlayerLogin Код iniGetInt(File,"Leader",PlayerInfo[playerid][pLeader]); iniGetInt(File,"Member",PlayerInfo[playerid][pMember]); iniGetInt(File,"Rank",PlayerInfo[playerid][pRank]);
5. В stock SavePlayer//Или public. Код iniSetInt(File,"Leader",PlayerInfo[playerid][pLeader]); iniSetInt(File,"Member",PlayerInfo[playerid][pMember]); iniSetInt(File,"Rank",PlayerInfo[playerid][pRank]);
6. Ко всем New. Код new JoinPed[5][1] = { //5 - кол-во скинов. {id skina1}, {id skina2}, {id skina3}, {id skina4}, {id skina5} };
7. В public OnPlayerSpawn Код if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1) { SetPlayerToTeamColor(playerid); // SetPlayerPos(playerid,-2031.5259,-117.2315,1035.1719);//Координаты меняйте на свои. Место появления SetPlayerFacingAngle(playerid,272.2109);//Поворот головы SetPlayerInterior(playerid,3);// Интерьер в котором появиться игрок 0 - это улица SetPlayerVirtualWorld(playerid, 2);// Виртуальный мир return 1; } 8. В stock ShowStats добавляем. У кого нету, то в конце мода создаём. Код stock ShowStats(playerid,targetid) { new cash = GetPlayerMoney(targetid); new level = PlayerInfo[targetid][pLevel]; new exp = PlayerInfo[playerid][pExp]; new nxtlevel = PlayerInfo[playerid][pLevel]+1; new expamount = nxtlevel*levelexp; new name[MAX_PLAYER_NAME]; new atext[32]; if(PlayerInfo[targetid][pSex] == 1) { atext = "Мужчина"; } else if(PlayerInfo[targetid][pSex] == 2) { atext = "Женщина"; } new ttext[32]; if(PlayerInfo[targetid][pMember] == 0 && PlayerInfo[targetid][pLeader] == 0) { ttext = "Неизвестно."; } else if(PlayerInfo[targetid][pMember] == 1 || PlayerInfo[targetid][pLeader] == 1) { ttext = "Фракция."; } new rangz[20]; if(PlayerInfo[targetid][pMember] == 0) { if(PlayerInfo[targetid][pRank] == 0) { rangz = "Неизвестно"; } } if(PlayerInfo[targetid][pMember] == 1) { if(PlayerInfo[targetid][pRank] == 5) { rangz = "Лидер"; } else if(PlayerInfo[targetid][pRank] == 4) { rangz = "Зам"; } else if(PlayerInfo[targetid][pRank] == 3) { rangz = "3 ранг"; } else if(PlayerInfo[targetid][pRank] == 2) { rangz = "2 ранг"; } else if(PlayerInfo[targetid][pRank] == 1) { rangz = "1 ранг"; } } GetPlayerName(targetid, name, sizeof(name)); new Float:px,Float:py,Float:pz; GetPlayerPos(targetid, px, py, pz); new str[256],sctring[2000]; format(str,sizeof(str),"{ffffff}Ник: %s. \n",name); strcat(sctring,str); format(str,sizeof(str),"{ffffff}ЛВЛ: %d. \n",level); strcat(sctring,str); format(str,sizeof(str),"{ffffff}EXP: %d/%d. \n",exp,expamount); strcat(sctring,str); format(str,sizeof(str),"{ffffff}Деньги наличными: %d. \n",cash); strcat(sctring,str); format(str,sizeof(str),"{ffffff}Пол: %s. \n",atext); strcat(sctring,str); format(str,sizeof(str),"{ffffff}Организация: %s \n",ttext); strcat(sctring,str); format(str,sizeof(str),"{ffffff}Должность: %s. \n",rangz); strcat(sctring,str); new CM[63]; format(CM,sizeof(CM),"{ffffff}Статистика персонажа."); ShowPlayerDialog(playerid,12,DIALOG_STYLE_MSGBOX,CM,sctring,"Закрыть",""); return true; }
9. Создаём команду /invite. Код if(strcmp(cmd, "/invite", true) == 0) { new para1; new ftext[32]; if(IsPlayerConnected(playerid)) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /invite [id]"); para1 = ReturnUser(tmp); if(GetDistanceBetweenPlayers(playerid, para1) < 5.0) { if(PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pMember] == 1 && PlayerInfo[playerid][pRank] >= 4) { if(IsPlayerConnected(para1)) { if(para1 != INVALID_PLAYER_ID) { new giveplayer[MAX_PLAYER_NAME]; new sendername[MAX_PLAYER_NAME]; if(IsPlayerInAnyVehicle(para1)) return SendClientMessage(playerid, COLOR_RED, "[ERROR] Игрок находится в транспорте!"); if(PlayerInfo[para1][pMember] != 0) return SendClientMessage(playerid, COLOR_RED, "[ERROR] Игрок уже состоит в какой-то организации!"); if(PlayerInfo[para1][pWarns] >= 1) return SendClientMessage(playerid, COLOR_RED, "[ERROR] У игрока Warn!"); //if(PlayerInfo[playerid][pLevel] < 2) return SendClientMessage(playerid, COLOR_RED, "[ERROR] Прием возможен только с 2-х лет проживания в штате"); if(PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pMember] == 1 && PlayerInfo[playerid][pRank] == 4) { ftext = "Таксопарк"; PlayerInfo[para1][pModel] = id скина; } else { return true; } GetPlayerName(para1, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); format(string, sizeof(string), "Вы приняли %s работать в %s", giveplayer,ftext); SendClientMessage(playerid, COLOR_BLUE, string); format(string, sizeof(string), "Вы были приняты в %s лидером %s", ftext, sendername); SendClientMessage(para1, 0x6495EDFF, string); //FormaFrac[para1] = 0; PlayerInfo[para1][pMember] = 1; PlayerInfo[para1][pRank] = 1; PlayerInfo[para1][pJob] = 0; SetPlayerToTeamColor(para1); SavePlayer(para1); } } } else return SendClientMessage(playerid, COLOR_RED, "[ERROR] У вас не достаточно прав для использования данной команды!"); } else return SendClientMessage(playerid, COLOR_RED, "[ERROR] Игрок должен быть рядом с вами!"); } }
9. Создаём /makeleader. Код if(strcmp(cmd, "/makeleader", true) == 0) { if(PlayerInfo[playerid][pAdmin] >= 6) { new sendername[MAX_PLAYER_NAME]; new giveplayer[MAX_PLAYER_NAME]; tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /makeleader [id игрока] [Number(1 - 1)]"); //if(dostup[playerid] != 1) return ShowPlayerDialog(playerid, 2934, DIALOG_STYLE_INPUT, "Админ авторизация", "Введите пароль\n\nПароль должен состоять из латинских букв и цифр\n размером от 6 до 15 символов", "Вход", "Отмена"); new para1; new level; para1 = ReturnUser(tmp); tmp = strtok(cmdtext, idx); level = strval(tmp); if(level < 1 || level > 1) { SendClientMessage(playerid, COLOR_RED, "[ERROR] Нельзя меньше 1 и больше 1!"); return true; } GetPlayerName(playerid, sendername, sizeof(sendername)); if(IsPlayerConnected(para1)) { if(para1 != INVALID_PLAYER_ID) { if(PlayerInfo[para1][pWarns] >= 1) return SendClientMessage(playerid, COLOR_RED, "[ERROR] У игрока варн!"); //if(PlayerInfo[playerid][pLevel] < 3) return SendClientMessage(playerid, COLOR_GREY, "Игрок должен достигнуть 3 левела"); GetPlayerName(para1, giveplayer, sizeof(giveplayer)); PlayerInfo[para1][pLeader] = level; PlayerInfo[para1][pMember] = level; PlayerInfo[para1][pJob] = 0; format(string, sizeof(string), "Администратор %s назначил вас контролировать данную фракцию", sendername); SendClientMessage(para1, 0x6495EDFF, string); SpawnPlayer(para1); format(string, sizeof(string), "Вы назначили %s контролировать фракцию номер %d", giveplayer, level); SendClientMessage(playerid, 0x6495EDFF, string); new iniFile = ini_openFile("logs/logi/leaders.ini"); switch(level) { case 1: { PlayerInfo[para1][pRank] = 5; /*FormaFrac[para1] = 1;*/ ChangeSkin[para1] = id скина; if(PlayerInfo[para1][pAdmin] <= 0) { ini_removeKey(iniFile, "Фракция"); ini_setString(iniFile, "Фракция", giveplayer); } } } ini_closeFile(iniFile); SetPlayerHealth(para1, 100); PlayerInfo[para1][pHealth] = 100; PlayerInfo[para1][pModel] = ChangeSkin[para1]; SetPlayerSkin(para1, PlayerInfo[para1][pModel]); format(string, 256, "%s make %s to leader fract %d | ", sendername, giveplayer, level); AdmLog(string); DelGun(para1); SavePlayer(para1); } } } return true; }
10. Ко всем forward'am. Код forward SetPlayerToTeamColor(playerid);
11. В конец мода. Код public SetPlayerToTeamColor(playerid)//Клист фракции. { switch(PlayerInfo[playerid][pMember]) { case 0: SetPlayerColor(playerid, TEAM_HIT_COLOR); case 1: SetPlayerColor(playerid, 0x110CE7FF); } return 1; }
12. В public OnPlayerSelectedMenuRow(playerid, row)
Код else if(Current == ChoseSkin) { switch(row) { case 0: { switch(SelectCharID[playerid]) { case 1: //Фракция { if(SelectCharPlace[playerid] == 1) { SetPlayerSkin(playerid, JoinPed[0][0]); SelectCharPlace[playerid] = 2; ChangeSkin[playerid] = JoinPed[0][0]; } else if(SelectCharPlace[playerid] == 2) { SetPlayerSkin(playerid, JoinPed[1][0]); SelectCharPlace[playerid] = 3; ChangeSkin[playerid] = JoinPed[1][0]; } else if(SelectCharPlace[playerid] == 3) { SetPlayerSkin(playerid, JoinPed[2][0]); SelectCharPlace[playerid] = 4; ChangeSkin[playerid] = JoinPed[2][0]; } else if(SelectCharPlace[playerid] == 4) { SetPlayerSkin(playerid, JoinPed[3][0]); SelectCharPlace[playerid] = 1; ChangeSkin[playerid] = JoinPed[3][0]; } ShowMenuForPlayer(ChoseSkin,playerid); } } } } }
13. Ко всем командам. Код else if(strcmp(cmd, "/radio", true) == 0 || strcmp(cmd, "/r", true) == 0) { new sendername[MAX_PLAYER_NAME]; 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, "Используйте: (/r)adio [текст]"); if(PlayerInfo[playerid][pMuted] == 1) return SendClientMessage(playerid, COLOR_RED, "[ERROR] У вас бан чата!"); //if(gag[playerid] == 1) return SendClientMessage(playerid, COLOR_LIGHTRED, "У Вас кляп, вы не можете говорить!"); //if(Flood[playerid]> 0) return SendClientMessage(playerid, 0xFFD5BBAA, "Не флуди!"); //Flood[playerid] = 4; if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1) { if(PlayerInfo[playerid][pRank] == 5) { format(string, sizeof(string), "[R] Лидер %s: %s", sendername, result); } else if(PlayerInfo[playerid][pRank] == 4) { format(string, sizeof(string), "[R] Зам %s: %s", sendername, result); } else if(PlayerInfo[playerid][pRank] == 3) { format(string, sizeof(string), "[R] 3 ранг %s: %s", sendername, result); } else if(PlayerInfo[playerid][pRank] == 2) { format(string, sizeof(string), "[R] 2 ранг %s: %s", sendername,result); } else if(PlayerInfo[playerid][pRank] == 1) { format(string, sizeof(string), "[R] 1 ранг %s: %s", sendername, result); } else { format(string, sizeof(string), "[R] 1 ранг %s: %s", sendername, result); } SendRadioMessage(1, COLOR_ORANGE, string); if(tipsterw == PlayerInfo[playerid][pMember]) { for(new i = 0; i < MAX_PLAYERS; i++) { if(tipsterl[i]) SendClientMessage(i, COLOR_LIGHTRED, string); } } } return 1; }
Вроде всё. Если что-то упустил, пишите в комментарии. Вырезал со своего мода.
Автор: Неизвестно! Доработал: Я ([[CM]Buben4ik).
Мои темы: 1. Создание фракции с 0 для new.pwn. (Доработана). Ссылка: http://cheat-master.ru/forum/117-324714-1
Проблемы с pawno? Обращайся! Помогу бесплатно. Skype: Metra123831
Сообщение отредактировал [CM]Buben4ik - Среда, 18.06.2014, 21:29 |
|
|
|