| Eragon | Дата: Понедельник, 26.05.2008, 19:56 | Сообщение # 1 |
|
Уважаемый человек
Группа:
Продвинутые
Сообщений: 799
Награды: 6
Город: Novokuznetsk
Репутация: 127
Замечания: 60%
Статус: 
| Нашел хороший мод по захвату зон, и решил впихнуть его систему в мой мод. И кароче ничего не получается. Решил сделать сначало для 1 зоны, с 4 бандами. Смысл что при заходе в зону появляется чекпоинт, заходим в него, зона мигает 30 сек цветом банды,а после окрашевается в ее цвет. Ну зона канешно отмечена на карте, но при заходе туда любой из банд чекпоинт не появляется, следовательно не возможно ее захватить. ХЕЛП (= Code forward CheckZone (zoneid,zone); forward CheckCoord (); forward CheckZonea (); forward capture2 (); forward capture2a (); forward capture2b (); forward capture2c (); forward SetCheckpoint ();
new Float:gCheckpoints[1][4] = { {-2271.4436,1355.3636,7.1875,5.0} }; enum pInfo { pCheck, pTimer, pZone, pNumber, pZonea }; enum zInfo { aZone }; new ZoneInfo[7][zInfo]; new timer2; new vehcheck; new PlayerInfo[MAX_PLAYERS][pInfo]; new zone1; Code public OnGameModeInit() { zone1 = GangZoneCreate(-2730.736, 1205.531, -2035.453, 1552.688); } Code public OnPlayerConnect(playerid) { GangZoneShowForPlayer(playerid, zone1, 0x80808096); } Code public CheckZone(zoneid,zone) { if(zone == 4) { GangZoneShowForAll(zoneid, COLOR_RED); } else { if(zone == 3) { GangZoneShowForAll(zoneid, COLOR_GREEN); } else { if(zone == 2) { GangZoneShowForAll(zoneid, COLOR_BLACK); } else { if(zone == 1) { GangZoneShowForAll(zoneid, COLOR_ORANGE); } } } } } public CheckCoord() { new i; new Float:x; new Float:y; new Float:z; for (i=0; i<MAX_PLAYERS; i++) { if (IsPlayerConnected(i)) { GetPlayerPos(i,x,y,z); if ((-2730.736 <x< -2035.453)&&(1552.688 <y< 1205.531)&&(PlayerInfo[i][pZone] != zone1)) { PlayerInfo[i][pZone] = zone1; PlayerInfo[i][pNumber] = 0; SetCheckpoint(); } CheckZonea(); } } }
public CheckZonea() { new i; for (i=0; i<MAX_PLAYERS; i++) { if (IsPlayerConnected(i)) { PlayerInfo[i][pZonea] = ZoneInfo[PlayerInfo[i][pNumber]][aZone]; } } }
public OnPlayerEnterCheckpoint(playerid) { vehcheck=IsPlayerInAnyVehicle(playerid); PlayerInfo[playerid][pCheck] = 1; if (vehcheck==0) { switch (gTeam[playerid]) { case TEAM_TRIAD: { if(PlayerInfo[playerid][pZonea] != 4) { SendClientMessageToAll(COLOR_GREEN," [SERVER]: Триада пытается захватить зону"); if(PlayerInfo[playerid][pZone] == zone1) { timer2 = SetTimer("capture2",30000,0); GangZoneFlashForAll(zone1,COLOR_RED); PlayerInfo[playerid][pTimer]=timer2; } }
} case TEAM_GROUV: { if(PlayerInfo[playerid][pZonea] != 3) { SendClientMessageToAll(COLOR_GREEN," [SERVER]: Гроув пытается захватить зону"); if(PlayerInfo[playerid][pZone] == zone1) { timer2 = SetTimer("capture2a",30000,0); GangZoneFlashForAll(zone1,COLOR_GREEN); PlayerInfo[playerid][pTimer]=timer2; } } } case TEAM_FBI: { if(PlayerInfo[playerid][pZonea] != 2) { SendClientMessageToAll(COLOR_GREEN," [SERVER]: ФБР пытается захватить зону"); if(PlayerInfo[playerid][pZone] == zone1) { timer2 = SetTimer("capture2b",30000,0); GangZoneFlashForAll(zone1,COLOR_BLACK); PlayerInfo[playerid][pTimer]=timer2; } } } case TEAM_Police: { if(PlayerInfo[playerid][pZonea] != 1) { SendClientMessageToAll(COLOR_GREEN," [SERVER]: Полиция пытается захватить зону"); if(PlayerInfo[playerid][pZone] == zone1) { timer2 = SetTimer("capture2c",30000,0); GangZoneFlashForAll(zone1,COLOR_ORANGE); PlayerInfo[playerid][pTimer]=timer2; } } } } } else {SendClientMessage(playerid,COLOR_RED," Вы не можете захватить территорию на машине!");}
}
public OnPlayerLeaveCheckpoint(playerid) { printf("OnPlayerLeaveCheckpoint(%d)", playerid); PlayerInfo[playerid][pCheck] = 0; KillTimer(PlayerInfo[playerid][pTimer]); GangZoneStopFlashForAll(PlayerInfo[playerid][pZone]); switch (gTeam[playerid]) { case TEAM_TRIAD: { if(PlayerInfo[playerid][pZonea] !=4) { SendClientMessageToAll(COLOR_GREEN," [SERVER]: Триада не смогла захватить территорию!"); } } case TEAM_GROUV: { if(PlayerInfo[playerid][pZonea] !=3) { SendClientMessageToAll(COLOR_GREEN," [SERVER]: Гроув не смогла захватить территорию!"); } } case TEAM_FBI: { if(PlayerInfo[playerid][pZonea] !=2) { SendClientMessageToAll(COLOR_GREEN," [SERVER]: ФБР не смогла захватить территорию!"); } } case TEAM_Police: { if(PlayerInfo[playerid][pZonea] !=1) { SendClientMessageToAll(COLOR_GREEN," [SERVER]: Полиция не смогла захватить территорию!"); } } } return 1; }
public capture2() { CheckZone(zone1,4); ZoneInfo[0][aZone] = 4; SendClientMessageToAll(COLOR_GREEN," [SERVER]: Триада захватила территорию!"); GangZoneStopFlashForAll(zone1); new i; for (i=0; i<MAX_PLAYERS; i++) { if (IsPlayerConnected(i)) { if(gTeam[i] == TEAM_TRIAD) { if (PlayerInfo[i][pZone] == zone1) { DisablePlayerCheckpoint(i); PlayerInfo[i][pCheck] = 0; } } } }
}
public capture2a() { CheckZone(zone1,3); ZoneInfo[0][aZone] = 3; SendClientMessageToAll(COLOR_GREEN," [SERVER]: Гроув захватили территорию!"); GangZoneStopFlashForAll(zone1); new i; for (i=0; i<MAX_PLAYERS; i++) { if (IsPlayerConnected(i)) { if(gTeam[i] == TEAM_GROUV) { if (PlayerInfo[i][pZone] == zone1) { DisablePlayerCheckpoint(i); PlayerInfo[i][pCheck] = 0; } } } } }
public capture2b() { CheckZone(zone1,2); ZoneInfo[0][aZone] = 2; SendClientMessageToAll(COLOR_GREEN," [SERVER]: ФБР захватили территорию!"); GangZoneStopFlashForAll(zone1); new i; for (i=0; i<MAX_PLAYERS; i++) { if (IsPlayerConnected(i)) { if(gTeam[i] == TEAM_FBI) { if (PlayerInfo[i][pZone] == zone1) { DisablePlayerCheckpoint(i); PlayerInfo[i][pCheck] = 0; } } } } } public capture2c() { CheckZone(zone1,1); ZoneInfo[0][aZone] = 1; SendClientMessageToAll(COLOR_GREEN," [SERVER]: Полиция захватила территорию!"); GangZoneStopFlashForAll(zone1); new i; for (i=0; i<MAX_PLAYERS; i++) { if (IsPlayerConnected(i)) { if(gTeam[i] == TEAM_Police) { if (PlayerInfo[i][pZone] == zone1) { DisablePlayerCheckpoint(i); PlayerInfo[i][pCheck] = 0; } } } } }
public SetCheckpoint() { new i; for (i=0; i<MAX_PLAYERS; i++) { if (IsPlayerConnected(i)) { if (PlayerInfo[i][pCheck] == 0) { if((gTeam[i] == TEAM_TRIAD)&&(PlayerInfo[i][pZone] == zone1)) { SetPlayerCheckpoint(i,gCheckpoints[0][0],gCheckpoints[0][1],gCheckpoints[0][2],gCheckpoints[0][3]); }
if((gTeam[i] == TEAM_GROUV)&&(PlayerInfo[i][pZone] == zone1)) { SetPlayerCheckpoint(i,gCheckpoints[0][0],gCheckpoints[0][1],gCheckpoints[0][2],gCheckpoints[0][3]); } if((gTeam[i] == TEAM_FBI)&&(PlayerInfo[i][pZone] == zone1)) { SetPlayerCheckpoint(i,gCheckpoints[0][0],gCheckpoints[0][1],gCheckpoints[0][2],gCheckpoints[0][3]); } if((gTeam[i] == TEAM_Police)&&(PlayerInfo[i][pZone] == zone1)) { SetPlayerCheckpoint(i,gCheckpoints[0][0],gCheckpoints[0][1],gCheckpoints[0][2],gCheckpoints[0][3]); }
} } } }
|
| |
|
|
| Excess | Дата: Вторник, 27.05.2008, 05:41 | Сообщение # 2 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 217
Награды: 1
Город: Екатеринбург
Репутация: 19
Замечания: 0%
Статус: 
| в этом public SetCheckpoint() воткни куданить проверку по радиусу Code if (PlayerToPoint(Rad, playerid,X, Y, Z) X,Y,Z координаты середины зоны. Радиус сам расчитай примерный. Должно сканать но я не уверен.
Хостинг предоставлен игровым порталом Gameway http://gameway.ru
|
| |
|
|
| Baz | Дата: Вторник, 27.05.2008, 15:36 | Сообщение # 3 |
|
Постоялец
Группа:
Продвинутые
Сообщений: 390
Награды: 2
Город: Moscow
Репутация: 48
Замечания: 0%
Статус: 
| лучше дай сюда мод, наверняка не так вырезал=)
Делаю дизайны сайтов, недорого. Обращаться в ЛС
|
| |
|
|
| Eragon | Дата: Среда, 28.05.2008, 19:41 | Сообщение # 4 |
|
Уважаемый человек
Группа:
Продвинутые
Сообщений: 799
Награды: 6
Город: Novokuznetsk
Репутация: 127
Замечания: 60%
Статус: 
| http://ifolder.ru/6757403
|
| |
|
|