TTaKeMoWa |
Дата: Среда, 06.06.2012, 11:21 | Сообщение # 1
|
Боец
Сообщений: 118
Статус: Offline
|
Призыв проходит следующим образом: После оглашения о призыве в Государственные Новости призывник приезжает в здание военкомата, для прохода всех необходимых процедур. Для более детального медицинского осмотра была добавлена раздевалка. Далее генерал или его заместитель решают, принять или не принять призывника в ряды своей Армии. Чтобы переодеться в форму, призывнику необходимо воспользоваться раздевалкой в военкомате.
Пожалуй начнём.
1. В enum pInfo добавим, которая будет обозначать у нас пригласительный листок в Армию и сохранятся в файл аккаунта.
2. Ко всем new добавим 2 пикапа: Code new Voenik; new Voenik1;
3.Дальше в public OnPlayerDisconnect сразу добавим следующие: Code PlayerInfo[playerid][pVoenik] = 0;
4. В public OnGameModeInit добавляем 2 пикапа: Code Voenik = CreatePickup(1275,2,1167.6565,1346.9349,10.9219);//Voenkomat ( отправка ) SFA Voenik1 = CreatePickup(1275,2,1165.3510,1346.6511,10.9219);//Voenkomat ( отправка ) LVA
5.Теперь в public OnPlayerRegister добавим следующее: Code ini_setInteger(File,"Voenik",PlayerInfo[playerid][pVoenik]);
6. public OnPlayerUpdateRL или рublic OnPlayerUpdate: Code ini_setInteger(File,"Voenik",PlayerInfo[playerid][pVoenik]);
7. В public OnPlayerLogin добавляем: Code ini_getInteger(File,"Voenik",PlayerInfo[playerid][pVoenik]);
Продолжение следует...Добавлено (06.06.2012, 11:21) --------------------------------------------- 8. Теперь зададим функцию пикапам, которые мы обозначили раньше в public OnPlayerPickUpPickup вставляем: Quote if(pickupid == Voenik) { new invite[512]; if(PlayerInfo[playerid][pVoenik] == 0) { SendClientMessage(playerid,COLOR_RED, "У Вас нет пропуска!"); return true; } if(PlayerInfo[playerid][pVoenik] == 2) { SendClientMessage(playerid,0xFFFFFFAA, "Вы ошиблись раздевалкой!"); return true; } format(invite,sizeof(invite), "Вы действительно хотите начать службу в {008000}Армии SF \'Авианосец\'?\n{ffffff}\t\tПодтвердите свой выбор!"); ShowPlayerDialog(playerid,74,DIALOG_STYLE_MSGBOX,"<< Приглашение >>",invite, "Да", "Нет"); } if(pickupid == Voenik1) { new invite[512]; if(PlayerInfo[playerid][pVoenik] != 2) { SendClientMessage(playerid,COLOR_RED, "У вас нет пропуска!"); return true; } if(PlayerInfo[playerid][pVoenik] == 1) { SendClientMessage(playerid,0xFFFFFFAA, "Вы ошиблись раздевалкой!"); return true; } format(invite,sizeof(invite), "Вы действительно хотите начать службу в {008000}Армии LV \'Зона 51\'?\n{ffffff}\t\tПодтвердите свой выбор!"); ShowPlayerDialog(playerid,75,DIALOG_STYLE_MSGBOX,"<< Приглашение >>",invite, "Да", "Нет"); }
9. В public OnDialogResponse добавим функцию диалогам:
Code case 75://LVa { if(response) { SetPlayerSkin(playerid,287); PlayerInfo[playerid][pMember] = 19; PlayerInfo[playerid][pRank] = 1; SendClientMessage(playerid, COLOR_REDD, "Используйте клавишу 'Быстрый бег' (пробел по умолчанию)"); SendClientMessage(playerid, COLOR_REDD, "Используйте клавишу 'Вверх,вниз' (W,S по умолчанию)"); SendClientMessage(playerid, COLOR_GRAD1, "Если Вы случайно нажали 'Enter' и меню пропало, нажмите 'Enter' еще раз"); SetPlayerInterior(playerid,3); ShowMenuForPlayer(ChoseSkin,playerid); new rand = random(sizeof(gInviteSpawnsss)); SetPlayerPos(playerid, gInviteSpawnsss[rand][0], gInviteSpawnsss[rand][1], gInviteSpawnsss[rand][2]); // Warp the player SetPlayerFacingAngle(playerid, gInviteSpawnsss[rand][3]); SetPlayerCameraPos(playerid,gInviteSpawnsss[rand][0] + 3, gInviteSpawnsss[rand][1], gInviteSpawnsss[rand][2]); SetPlayerCameraLookAt(playerid,gInviteSpawnsss[rand][0], gInviteSpawnsss[rand][1], gInviteSpawnsss[rand][2]); TogglePlayerControllable(playerid, 0); SelectChar[playerid] = 255; PlayerInfo[playerid][pJob] = 0; SelectCharID[playerid] = 19; SelectCharPlace[playerid] = 1; PlayerInfo[playerid][pModel] = 287; PlayerInfo[playerid][pVoensik] = 0; new skin =2 + random(100); SetPlayerVirtualWorld(playerid,skin); OnPlayerUpdateRL(playerid); return true; } else { return true; } } case 74://SFA { if(response) { SetPlayerSkin(playerid,287); PlayerInfo[playerid][pMember] = 3; PlayerInfo[playerid][pRank] = 1; SendClientMessage(playerid, COLOR_REDD, "Используйте клавишу 'Быстрый бег' (пробел по умолчанию)"); SendClientMessage(playerid, COLOR_REDD, "Используйте клавишу 'Вверх,вниз' (W,S по умолчанию)"); SendClientMessage(playerid, COLOR_GRAD1, "Если Вы случайно нажали 'Enter' и меню пропало, нажмите 'Enter' еще раз"); SetPlayerInterior(playerid,3); ShowMenuForPlayer(ChoseSkin,playerid); new rand = random(sizeof(gInviteSpawnsss)); SetPlayerPos(playerid, gInviteSpawnsss[rand][0], gInviteSpawnsss[rand][1], gInviteSpawnsss[rand][2]); // Warp the player SetPlayerFacingAngle(playerid, gInviteSpawnsss[rand][3]); SetPlayerCameraPos(playerid,gInviteSpawnsss[rand][0] + 3, gInviteSpawnsss[rand][1], gInviteSpawnsss[rand][2]); SetPlayerCameraLookAt(playerid,gInviteSpawnsss[rand][0], gInviteSpawnsss[rand][1], gInviteSpawnsss[rand][2]); TogglePlayerControllable(playerid, 0); SelectChar[playerid] = 255; PlayerInfo[playerid][pJob] = 0; SelectCharID[playerid] = 3; SelectCharPlace[playerid] = 1; PlayerInfo[playerid][pVoensik] = 0; PlayerInfo[playerid][pModel] = 287; new skin =2 + random(100); SetPlayerVirtualWorld(playerid,skin); OnPlayerUpdateRL(playerid); return true; } else { return true; } }
10.Теперь добавим команду выдачи приглашения:
Code if(strcmp(cmd, "/giveinvite", true) == 0) { new para1; if(IsPlayerConnected(playerid)) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "Введите: /giveinvit [id]"); para1 = ReturnUser(tmp); if (!PlayerToPoint(20.0,playerid,1173.5294,1346.7789,10.9219)) return SendClientMessage(playerid, COLOR_GREY, "{FF3200} ! {FEFEFE} - Вы не в военкомате!"); if (PlayerInfo[playerid][pLeader] == 3 || PlayerInfo[playerid][pMember] == 3 && PlayerInfo[playerid][pRank] == 15) { if(IsPlayerConnected(para1)) { if(para1 != INVALID_PLAYER_ID) { if (PlayerInfo[para1][pMember] != 0) return SendClientMessage(playerid, COLOR_GREY, "Игрок уже где то состоит"); if (PlayerInfo[para1][pVoenik] != 0) return SendClientMessage(playerid, COLOR_GREY, "У игрока уже есть приглашение"); if (!PlayerToPoint(20.0,para1,1173.5294,1346.7789,10.9219)) return SendClientMessage(playerid, COLOR_GREY, "Человек не в военкомате!"); if(PlayerInfo[para1][pWarns] >= 1) return SendClientMessage(playerid, COLOR_GRAD1,"У игрока Warn."); GetPlayerName(para1, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); format(string,sizeof(string), "выдал(а) повестку %s'у",para1); SetPlayerChatBubble(playerid,string,COLOR_PURPLE,30.0,10000); format(string, sizeof(string), "%s выдал(а) повестку %s'у", sendername ,para1); ProxDetector(10.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE); format(string, sizeof(string), "Вы выдали повестку %s.", giveplayer); SendClientMessage(playerid, COLOR_BLUE, string); PlayerInfo[para1][pVoenik] = 1; new year,month,day; getdate(year, month, day); SendClientMessage(para1, COLOR_YEGURT, "======[ Повестка в Армию SF ]======"); SendClientMessage(para1, COLOR_WHITE, "Вы получили повестку в {008000}Армию SF 'Авианосец'"); SendClientMessage(para1, COLOR_WHITE, "Пройдите к раздевалке"); format(string, sizeof(string),"====== Выдал: {ffffff}%s {8080ff}Число: {FFFFFF}%d.%d.%d ======", sendername,day,month,year); SendClientMessage(para1, COLOR_YEGURT, string);
} } } else if (PlayerInfo[playerid][pLeader] == 19 || PlayerInfo[playerid][pMember] == 19 && PlayerInfo[playerid][pRank] == 15) { if(IsPlayerConnected(para1)) { if(para1 != INVALID_PLAYER_ID) { if (PlayerInfo[para1][pMember] != 0) return SendClientMessage(playerid, COLOR_GREY, "Игрок уже где то состоит"); if (PlayerInfo[para1][pVoenik] != 0) return SendClientMessage(playerid, COLOR_GREY, "Y игрока уже есть приглашение"); if (!PlayerToPoint(20.0,para1,1173.5294,1346.7789,10.9219)) return SendClientMessage(playerid, COLOR_GREY, "Человек не в военкомате!"); if(PlayerInfo[para1][pWarns] >= 1) return SendClientMessage(playerid, COLOR_GRAD1,"У игрока Warn."); GetPlayerName(para1, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); format(string,sizeof(string), "выдал(а) повестку %s'у",para1); SetPlayerChatBubble(playerid,string,COLOR_PURPLE,30.0,10000); format(string, sizeof(string), "%s выдал(а) повестку %s'у", sendername ,para1); ProxDetector(10.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE); format(string, sizeof(string), "Вы выдали повестку %s.", giveplayer); SendClientMessage(playerid, COLOR_BLUE, string); PlayerInfo[para1][pVoenik] = 2; new year, month,day; getdate(year, month, day); SendClientMessage(para1, COLOR_YEGURT, "======[ Повестка в Армию LV ]======"); SendClientMessage(para1, COLOR_WHITE, "Вы получили повестку в {008000}Армию LV 'Зона 51'"); SendClientMessage(para1, COLOR_WHITE, "Пройдите к раздевалке"); format(string, sizeof(string),"====== Выдал: {ffffff}%s {8080ff}Число: {FFFFFF}%d.%d.%d ======", sendername,day,month,year); SendClientMessage(para1, COLOR_YEGURT, string); } } } else { SendClientMessage(playerid, COLOR_GRAD1, "Вы не уполномочены использовать эту команду!"); return true; } return true; } else { SendClientMessage(playerid, COLOR_GREY, "Игрок не найден!"); return true; } }
11. Добавим нужные 3dtext в public OnGameModeInit: Code Create3DTextLabel("Раздевалка принадлежит:\n {008000}Армии SF 'Авианосец'",0xFFFFFFFFF,1167.6565,1346.9349,10.9219,10.0,0,0); Create3DTextLabel("Раздевалка принадлежит:\n {008000}Армии LV 'Зона 51'",0xFFFFFFFFF,1165.3510,1346.6511,10.9219,10.0,0,0); Create3DTextLabel("Военный осмотр",0xFFFFFFFFF,1174.2035,1354.4834,10.9219,10.0,0,0); Create3DTextLabel("Приемная генерала",0xFFFFFFFFF,1173.3198,1348.3237,10.9219,10.0,0,0); Create3DTextLabel("Медицинский осмотр",0xFFFFFFFFF,1174.2035,1358.4862,10.9219,10.0,0,0); Create3DTextLabel("Используйте - \'ALT\'",0x696969FF,1172.1096,1357.7673,10.9219,2.0,0,0); Create3DTextLabel("Для выдачи пропуска используйте \n/giveinvite [ID]",0x696969FF,1173.5294,1346.7789,10.9219,5.0,0,0); Create3DTextLabel(" Военкомат ",0x9500FFFF,1168.6603,1363.4364,10.8203,17.0,0,0);
12. Теперь в public OnPlayerKeyStateChange: Code if(newkeys == 1024 && PlayerToPoint(1.0,playerid,1172.1096,1357.7673,10.9219)) { if(PlayerInfo[playerid][pNarcoZavisimost] > 2000) { SendClientMessage(playerid,0xFF0000AA,"Вы наркозависимы!\nПроконсультируйтесь с доктором!"); return true; } if(PlayerInfo[playerid][pNarcoZavisimost] <= 2000) { SendClientMessage(playerid,COLOR_WHITE,"Поздравляю! Наркотической зависимости не обнаружено!"); return true; } } 13. Последний пункт, это нужные обьекты в военкомате, добовляем куда-нибудь в конец мода:
Code CreateObject(1256,1172.18359375,1363.69702148,10.54026318,0.00000000,0.00000000,270.00000000); //object(stonebench1) (1) CreateObject(1722,1164.41674805,1353.98486328,9.89999962,0.00000000,1.50000000,264.50000000); //object(off_chairnu) (1) CreateObject(1722,1164.40625000,1353.23876953,9.89999962,0.00000000,0.00000000,270.00000000); //object(off_chairnu) (2) CreateObject(1722,1164.40625000,1352.56677246,9.89999962,0.00000000,0.00000000,270.00000000); //object(off_chairnu) (3) CreateObject(1722,1164.40625000,1351.32885742,9.89999962,0.00000000,0.00000000,270.00000000); //object(off_chairnu) (4) CreateObject(1722,1164.40625000,1351.94079590,9.89999962,0.00000000,0.00000000,270.00000000); //object(off_chairnu) (5) CreateObject(1722,1164.84094238,1350.15783691,9.92187500,0.00000000,1.99951172,264.49584961); //object(off_chairnu) (6) CreateObject(2615,1167.26318359,1356.01489258,11.50426006,0.00000000,0.00000000,89.75000000); //object(police_nb3) (1) CreateObject(2614,1171.39904785,1345.80944824,11.87487602,0.00000000,0.00000000,180.00000000); //object(cj_us_flag) (1) CreateObject(1622,1175.55468750,1348.79248047,15.08916283,0.00000000,0.00000000,270.00000000); //object(nt_securecam2_01) (1) CreateObject(2387,1170.57910156,1346.19287109,9.92187500,0.00000000,0.00000000,0.00000000); //object(shop_set_2_unit5) (1) CreateObject(2894,1173.51342773,1347.46093750,10.72346497,0.00000000,0.00000000,0.00000000); //object(kmb_rhymesbook) (1) CreateObject(2106,1172.69506836,1347.66015625,10.72346497,0.00000000,0.00000000,0.00000000); //object(cj_mlight15) (1) CreateObject(3022,1179.73693848,1349.49230957,11.88554382,0.00000000,0.00000000,0.00000000); //object(target_rarm) (1) CreateObject(2002,1175.09765625,1350.03710938,9.92187500,0.00000000,0.00000000,270.00000000); //object(water_coolnu) (1) CreateObject(711,1174.90722656,1363.32543945,15.79760361,0.00000000,0.00000000,0.00000000); //object(vgs_palm02) (1) CreateObject(1409,1157.44506836,1363.56176758,9.82031250,0.00000000,0.00000000,0.00000000); //object(cj_dump1_low) (1) CreateObject(3504,1159.40258789,1384.78527832,11.16267586,0.00000000,0.00000000,180.00000000); //object(vgsn_portaloo) (1) CreateObject(19121,1167.62194824,1363.33996582,10.38500023,0.00000000,0.00000000,0.00000000); //object(bollardlight1) (1)
На этом все. Автор данного мануала - Niko Vincente.
[img]http://cheat-master.ru/_fr/1/9873422.png[/img]
|
|
|
|