Дата: 07.09.2010, Вторник, 19:12:29 | Сообщение # $NUMBER
Группа: Пользователи
Сообщений: 31
Вот решил сделать небольшую вещицу. Теперь можно ставить объекты в игре. Можно использовать для фракции строители. Начнём, вставляем всё это в public OnPlayerCommandText(playerid, cmdtext[]): Code if(strcmp(cmd, "/ob", true) == 0) { 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 ) ){ // Проверка, кто может/не может строить return 1; } if(GetFreePlayerBort(playerid) == -1){ SendClientMessage(playerid, COLOR_RED, " Объекты заканчились"); return 1; } if(CurrentBort[playerid] != -1){ SendClientMessage(playerid, COLOR_RED, " Сначало закрепите текищий объект командой /fixob"); return 1; } CurrentBort[playerid] = GetFreePlayerBort(playerid); PlayerBorts[playerid][CurrentBort[playerid]] = CreateObject(983,0,0,0,0,0,0); // 983 ид объекта (можно поменять на свой) AttachObjectToPlayer(PlayerBorts[playerid][CurrentBort[playerid]], playerid, 0,1,-0.3,0,0,90); new tmpstr[MAX_STRING]; format(tmpstr, sizeof(tmpstr), " Объект %d создан, осталось %d объектов", CurrentBort[playerid]+1, NumFreePlayerBorts(playerid)); SendClientMessage(playerid, COLOR_WHITE, tmpstr); SendClientMessage(playerid, COLOR_YELLOW, " Теперь закрепите объект командой /fixob"); return 1; } if(strcmp(cmd, "/fixbort", true) == 0) { if( !(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pMember] == 12 || PlayerInfo[playerid][pLeader] == 12) ){ // проверка кто может/не может прикреплять объекты return 1; } if(CurrentBort[playerid] == -1){ SendClientMessage(playerid, COLOR_RED, " Сначало пропишите /ob"); return 1; } new Float:PlPos[4]; GetPlayerPos(playerid, PlPos[0], PlPos[1], PlPos[2]); GetPlayerFacingAngle(playerid,PlPos[3]); DestroyObject(PlayerBorts[playerid][CurrentBort[playerid]]); PlayerBorts[playerid][CurrentBort[playerid]] = CreateObject(983, PlPos[0]+floatcos(PlPos[3]+90, degrees), PlPos[1]+floatsin(PlPos[3]+90, degrees), PlPos[2]-0.3, 0, 0, PlPos[3]+90); 983 ид объекта (можно поменять на свой) CurrentBort[playerid] = -1; SendClientMessage(playerid, COLOR_YELLOW, " Объект успешно поставлен"); return 1; } if(strcmp(cmd, "/delbort", true) == 0) { if( !(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pMember] == 12 || PlayerInfo[playerid][pLeader] == 12) ){ // проверка кто может/не может удалять объекты return 1; } tmp = strtok(cmdtext, idx); if(!strlen(tmp)){ SendClientMessage(playerid, COLOR_RED, " Используйте: /delob [номер]"); return 1; } new bortid = strval(tmp); if(bortid < 1 || bortid > MAX_PLAYER_BORTS){ SendClientMessage(playerid, COLOR_RED, " объект должен быть от 1 до 10"); return 1; } bortid--; if(DelPlayerBort(playerid, bortid)){ new tmpstr[MAX_STRING]; format(tmpstr, sizeof(tmpstr), " Объект %d удалён", bortid+1); SendClientMessage(playerid, COLOR_YELLOW, tmpstr); } else{ SendClientMessage(playerid, COLOR_RED, " Объект не найден."); } return 1; } Ну и последнее вставляем всё в public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger): Code #define MAX_PLAYER_BORTS 10 // Max построение число объектов new PlayerBorts[MAX_PLAYERS][MAX_PLAYER_BORTS]; new CurrentBort[MAX_PLAYERS];
GetFreePlayerBort(playerid){ for(new i=0;i<MAX_PLAYER_BORTS;i++){ if(!PlayerBorts[playerid][i]){ return i; } } return -1; } NumFreePlayerBorts(playerid){ new result = 0; for(new i=0;i<MAX_PLAYER_BORTS;i++){ if(!PlayerBorts[playerid][i]) result++; } return result; }DelPlayerBort(playerid, bortid){ if(PlayerBorts[playerid][bortid]){ DestroyObject(PlayerBorts[playerid][bortid]); PlayerBorts[playerid][bortid] = 0; return 1; } return 0; } Кому понадобилось от + не откажусь
|
Дата: 07.09.2010, Вторник, 20:05:35 | Сообщение # $NUMBER
Группа: Пользователи
Сообщений: 31
Enriko, По поводу сохранения специально не сделано, так как делал для себя для фракции ментов, фбр, армия. не большие обгародки =) Так что вот так =). По поводу вырезания да не отрицаю вырезал но из своего мода =) Спасибо за + Выкладываю всё что могу =) не суди строго я уверен что кому то понадобится =)
|
Дата: 22.09.2010, Среда, 05:39:15 | Сообщение # $NUMBER
Группа: Пользователи
Сообщений: 99
HeGeL, + уже дал такчто сори через 24 часика дам ешо один и так репа -3 будит -2 всё луше чем -3
|