- Регистрация
- 27 Авг 2015
- Сообщения
- 357
- Лучшие ответы
- 0
- Репутация
- 188
Код:
[/CENTER]
#define FILTERSCRIPT
#include <a_samp>
#include <a_mysql>
#include <sscanf2>
#include <streamer>
#include <foreach>
#include <dc_cmd>
#define SQL_HOST "localhost"
#define SQL_USER "root"
#define SQL_PASSWORD ""
#define SQL_DBNAME "company"
new SQLHandle;
// -0.96000
//CreateObject(19944, 0.03010, 0.16260, 0.22000, 90.00000, 180.00000, 0.00000);
enum _:e_dialogids // Диалоги
{
d_police = 7500,
d_police_check,
d_case_menu,
d_case_back,
d_case_leads,
d_case_done,
d_case_killer,
d_case_list,
d_killer
}
#define MAX_INFO_SIZE 340
enum _case_enum
{
c_number,
c_victim[MAX_PLAYER_NAME],
c_killer[MAX_PLAYER_NAME],
c_leads[MAX_PLAYER_NAME],
c_bodypart,
c_reason,
c_info[MAX_INFO_SIZE],
c_body,
Text3D:c_label,
bool:c_docs,
Float:c_pos_x,
Float:c_pos_y,
Float:c_pos_z,
Float:c_pos_a,
}
new cases[300][_case_enum];
//Данные игрока
new player_name[MAX_PLAYERS][MAX_PLAYER_NAME],
player_body_part_damage[MAX_PLAYERS],
player_body_id[MAX_PLAYERS],
list_ids[MAX_PLAYERS][10],
list[MAX_PLAYERS],
body_onplayer[MAX_PLAYERS]
;
static const body_parts[10][16] = {
"разные места",
"разные места",
"разные места",
"Живот",
"Пах",
"Левую руку",
"Правую руку",
"Левую ногу",
"Правую ногу",
"Голову"
};
public OnPlayerConnect(playerid)
{
GetPlayerName(playerid,player_name[playerid],MAX_PLAYER_NAME);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
if(IsPlayerAttachedObjectSlotUsed(playerid,3))
{
RemovePlayerAttachedObject(playerid,3);
new i = body_onplayer[playerid];
body_onplayer[playerid] = 0;
GetPlayerPos(playerid, cases [ i ][ c_pos_x ],cases [ i ][ c_pos_y ],cases [ i ][ c_pos_z ]);
GetPlayerFacingAngle(playerid,cases [ i ][ c_pos_a ]);
cases[ i ][ c_body ] = CreateDynamicObject(19944, cases [ i ][ c_pos_x ],cases [ i ][ c_pos_y ],cases [ i ][ c_pos_z ]-0.96000, 0.00000, 0.00000,cases [ i ][ c_pos_a ]);
cases[ i ][ c_label ] = CreateDynamic3DTextLabel("Тело\n{FFFFFF}Нажмите 'ALT' для взаимодействия",0xE67E22FF,cases [ i ][ c_pos_x ],cases [ i ][ c_pos_y ],cases [ i ][ c_pos_z ],30.0,INVALID_PLAYER_ID,INVALID_PLAYER_ID,0,-1,-1,-1,100.0);
}
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if(IsPlayerAttachedObjectSlotUsed(playerid,3))
{
RemovePlayerAttachedObject(playerid,3);
new i = body_onplayer[playerid];
body_onplayer[playerid] = 0;
GetPlayerPos(playerid, cases [ i ][ c_pos_x ],cases [ i ][ c_pos_y ],cases [ i ][ c_pos_z ]);
GetPlayerFacingAngle(playerid,cases [ i ][ c_pos_a ]);
cases[ i ][ c_body ] = CreateDynamicObject(19944, cases [ i ][ c_pos_x ],cases [ i ][ c_pos_y ],cases [ i ][ c_pos_z ]-0.96000, 0.00000, 0.00000,cases [ i ][ c_pos_a ]);
cases[ i ][ c_label ] = CreateDynamic3DTextLabel("Тело\n{FFFFFF}Нажмите 'ALT' для взаимодействия",0xE67E22FF,cases [ i ][ c_pos_x ],cases [ i ][ c_pos_y ],cases [ i ][ c_pos_z ],30.0,INVALID_PLAYER_ID,INVALID_PLAYER_ID,0,-1,-1,-1,100.0);
}
if(GetPlayerVirtualWorld(playerid) == 0 && reason != 53) // Если человек на улице и не утонул
{
for(new i; i < sizeof(cases); i++)
{
if(cases[ i ][ c_number ] != 0) continue;
cases [ i ][ c_number ] = random(sizeof(cases))+1000;
GetPlayerPos(playerid, cases [ i ][ c_pos_x ],cases [ i ][ c_pos_y ],cases [ i ][ c_pos_z ]);
GetPlayerFacingAngle(playerid,cases [ i ][ c_pos_a ]);
cases[ i ][ c_body ] = CreateDynamicObject(19944, cases [ i ][ c_pos_x ],cases [ i ][ c_pos_y ],cases [ i ][ c_pos_z ]-0.96000, 0.00000, 0.00000,cases [ i ][ c_pos_a ]);
cases[ i ][ c_label ] = CreateDynamic3DTextLabel("Тело\n{FFFFFF}Нажмите 'ALT' для взаимодействия",0xE67E22FF,cases [ i ][ c_pos_x ],cases [ i ][ c_pos_y ],cases [ i ][ c_pos_z ],30.0,INVALID_PLAYER_ID,INVALID_PLAYER_ID,0,-1,-1,-1,100.0);
format(cases[ i ][ c_victim ], MAX_PLAYER_NAME, player_name[playerid] );
cases[ i ][ c_reason ] = reason;
format(cases[ i ][ c_leads ], 12,"Не назначен");
if(killerid != INVALID_PLAYER_ID && playerid != killerid)
{
format(cases[ i ][ c_killer ], MAX_PLAYER_NAME, player_name[killerid] );
cases[ i ][ c_bodypart ] = player_body_part_damage[playerid];
}
else format(cases[ i ][ c_killer ], 2, "-");
break;
}
}
printf("Reason %d",reason);
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case d_police:
{
if(!response) return 1;
new i = player_body_id[playerid];
player_body_id[playerid] = 0;
if(listitem == 0)
{ // Заводим дело
new query[150];
mysql_format(SQLHandle, query, sizeof(query), "INSERT INTO cases SET Number=%d, Victim='%e', Killer='%e', Bodypart=%d",cases[ i ][ c_number ]
,player_name[playerid], cases[ i ][ c_killer ], cases[ i ][ c_bodypart ]);
mysql_tquery(SQLHandle, query, "", "");
format(cases[ i ][ c_info ][0],1,"");
SetTimerEx("Inspection",2000,false,"iii",playerid,i,1);
MeAction(playerid," начинает заводить дело");
TogglePlayerControllable(playerid,0);
return 1;
}
cases[ i ][ c_number ] = 0;
format(cases[ i ][ c_victim ], 2,"-");
DestroyDynamicObject(cases[ i ][ c_body ]);
DestroyDynamic3DTextLabel( cases [i ] [ c_label ] );
cases [i ] [ c_label ] = Text3D:INVALID_3DTEXT_ID;
SendClientMessage(playerid, 0x3399FFFF, "Тело отправлено в морг городской больницы!");
return 1;
}
case d_police_check:
{
if(!response) return list[playerid] = 0;
if(!strcmp(inputtext, "<<" )) return list[playerid] -= 10,cmd::check(playerid);
if(!strcmp(inputtext, ">>" )) return list[playerid] += 10,cmd::check(playerid);
new i = listitem+ list[playerid];
switch(cases[ i ][ c_reason ])
{
case 4,8,16,22..34: { } //Если убийство оставляет улики (пули, осколки гранаты, и ножевые порезы)
default: return SendClientMessage(playerid,0x3399FFFF,"По этому делу нет никаких улик!");
}
if(!strcmp(cases[ i ][ c_killer ], "-")) return SendClientMessage(playerid,0x3399FFFF,"По этому делу нет никаких улик!");
new str[120];
format(str,sizeof(str),"Продавец пробил по базе данных магазина номер орудия.\n\
Данное оружие было продано %s.",cases[ i ][ c_killer ]);
format(cases[ i ][ c_info ],MAX_INFO_SIZE,"%s\n%s",str);
new query[MAX_INFO_SIZE + 54];
mysql_format(SQLHandle, query, sizeof(query), "UPDATE cases SET Info='%e' WHERE Number=%d",
cases[ i ][ c_info ], cases[ i ][ c_number ]);
mysql_tquery(SQLHandle, query, "", "");
ShowPlayerDialog(playerid,0000,DIALOG_STYLE_MSGBOX," ",str,!"Закрыть","");
list[playerid] = 0;
}
case d_killer:
{
if(!response) return true;
new i = player_body_id[playerid];
player_body_id[playerid] = 0;
if(listitem == 0)
{
SetPlayerAttachedObject(playerid,3,19944,1,-0.212999,-0.047000,-0.018999,88.100006,-1.599996,-87.000007,0.716000,0.673999,0.911999);
SendClientMessage(playerid,-1,"Чтобы бросить тело, используйте /dropbody");
DestroyDynamicObject(cases[ i ][ c_body ]);
DestroyDynamic3DTextLabel( cases [i ] [ c_label ] );
cases [i ] [ c_label ] = Text3D:INVALID_3DTEXT_ID;
case_menu(playerid, i);
cases[ i ][ c_pos_x ] = cases[ i ][ c_pos_y ] = 0.0;
body_onplayer[playerid] = i;
return true;
}
cases[ i ][ c_docs ] = true;
MeAction(playerid,"забрал документы из кормана трупа!");
}
case d_case_menu:
{
if(!response)
{
player_body_id[playerid] = 0;
return cmd::caselist(playerid);
}
new i = player_body_id[playerid];
switch(listitem)
{
case 0,1: case_menu(playerid,i);
case 2:
{
ShowPlayerDialog(playerid, d_case_back, DIALOG_STYLE_MSGBOX, !"{E67E22}Информация по делу:",cases[i][ c_info ], !"Назад","");
}
case 3:
{
// Здесь проверку на должность человека
ShowPlayerDialog(playerid, d_case_leads, DIALOG_STYLE_INPUT, !"{E67E22}Ведущий дело:","{FFFFFF}Введите ID человека, который будет заниматься этим делом", !"Назначить",!"Назад");
}
case 4:
{
if(!strcmp(cases[ i ][ c_leads ], player_name[playerid] ))
{
ShowPlayerDialog(playerid, d_case_done, DIALOG_STYLE_LIST, !"{E67E22}Заключение по делу:",!"1. Убийство\n2. Самоубийство/Несчастный случай", !"Выбрать",!"Назад");
}
else return SendClientMessage(playerid, 0x3399FFFF, "Заключение делу могут давать только ведущие дело!");
}
case 5:
{
SendClientMessage(playerid,0x3399FFFF,"Дело замяли по непонятным причинам!");
// Выводим в чат полиции итог дела
case_clear( i ); // Очищаем дело из базы данных и с сервера
}
}
}
case d_case_done:
{
if(!response) return case_menu(playerid,player_body_id[playerid]);
new i = player_body_id[playerid];
if(listitem == 0) // Убийство
{
if(!strcmp(cases[ i ][ c_killer ], "-")) // Если выбрал убийство, но это самоубийство - дело проваливается
{
SendClientMessage(playerid,0x3399FFFF,"Вы оказались не правы, дело провалено, это было самоубийство!");
// Выводим в чат полиции итог дела
case_clear( i ); // Очищаем дело из базы данных и с сервера
return 1;
}
// Если и правдо убийство
ShowPlayerDialog(playerid, d_case_killer, DIALOG_STYLE_INPUT,!"{3399FF}Заключение по делу","{FFFFFF}Введите имя подозреваемого преступника\n\
{3399FF}Будьте уверены в выборе преступника, иначе дело будет провалено!",!"Ввести",!"Назад");
return 1;
}
player_body_id[playerid] = 0;
if(!strcmp(cases[ i ][ c_killer ], "-")) // Проверка, правдо ли самоубийство
{
SendClientMessage(playerid,0x3399FFFF,"Дело успешно закрыто! Вы оказались правы");
// Выводим в чат полиции итог дела
case_clear( i ); // Очищаем дело из базы данных и с сервера
return 1;
}
// Если все же убийство - дело проваливается
SendClientMessage(playerid,0x3399FFFF,"Дело успешно закрыто! Вы оказались правы");
case_clear( i );
}
case d_case_killer:
{
if(!response) return case_menu(playerid,player_body_id[playerid]);
if(!strlen(inputtext))
return ShowPlayerDialog(playerid, d_case_killer, DIALOG_STYLE_INPUT,!"{3399FF}Заключение по делу","{FFFFFF}Введите имя подозреваемого преступника\n\
{3399FF}Будьте уверены в выборе преступника, иначе дело будет провалено!",!"Ввести",!"Назад");
new i = player_body_id[playerid];
player_body_id[playerid] = 0;
if(!strcmp(cases[ i ][ c_killer ], inputtext)) // Если имя введо правильно
{
// Выводим в чат полиции итог дела
SendClientMessage(playerid,0x3399FFFF,"Дело успешно закрыто! Вы оказались правы");
case_clear( i );
return 1;
}
// Если же ошибся
SendClientMessage(playerid,0x3399FFFF,"Вы оказались не правы, дело провалено, это было самоубийство!");
// Выводим в чат полиции итог дела
case_clear( i ); // Очищаем дело из базы данных и с сервера
return 1;
}
case d_case_back: return case_menu(playerid,player_body_id[playerid]);
case d_case_leads:
{
if(!response) return case_menu(playerid,player_body_id[playerid]);
if(!strlen(inputtext))
return ShowPlayerDialog(playerid, d_case_leads, DIALOG_STYLE_INPUT, !"{E67E22}Ведущий дело:","{FFFFFF}Введите ID человека, который будет заниматься этим делом", !"Назначить",!"Назад");
if(!IsPlayerConnected(strval(inputtext))) return SendClientMessage(playerid, 0x0858585FF, "Игрок не найден!");
new i = player_body_id[playerid];
// Здесь проверку на фракцию
format(cases[ i ][ c_leads ], 24, player_name[strval(inputtext)]);
static const
str_0[] = "%s назначил вас ведущим дела №%i",
str_1[] = "%s назначен ведущим дела №%i";
new str[sizeof str_0 + MAX_PLAYER_NAME + 4];
format(str,sizeof(str), str_0, player_name[playerid], cases[ i ][ c_number ]);
SendClientMessage(strval(inputtext),0xE67E22FF,str);
format(str,sizeof(str), str_1, player_name[strval(inputtext)], cases[ i ][ c_number ]);
SendClientMessage(playerid,0xE67E22FF,str);
new query[180];
mysql_format(SQLHandle, query, sizeof(query), "UPDATE cases SET Leads='%e' WHERE Number=%d",
cases[ i ][ c_leads ], cases[ i ][ c_number ]);
mysql_tquery(SQLHandle, query, "", "");
case_menu(playerid,player_body_id[playerid]);
}
case d_case_list:
{
if(!response)
{
list[playerid] = 0;
return true;
}
if(!strcmp(inputtext, "<<" )) return list[playerid] -= 10,cmd::caselist(playerid);
if(!strcmp(inputtext, ">>" )) return list[playerid] += 10,cmd::caselist(playerid);
if(listitem <= 9) return case_menu(playerid, listitem+ list[playerid]),list[playerid]=0;
}
}
return 1;
}
stock case_clear( i )
{
new query[64];
mysql_format(SQLHandle, query, sizeof(query), "DELETE FROM cases WHERE Number=%d", cases[ i ][ c_number ]);
mysql_tquery(SQLHandle, query, "", "");
cases[ i ][ c_number ] = 0;
format(cases[ i ][ c_killer ], 2,"-");
format(cases[ i ][ c_leads ], 12,"Не назначен");
}
CMD:dropbody(playerid)
{
if(IsPlayerAttachedObjectSlotUsed(playerid,3))
{
RemovePlayerAttachedObject(playerid,3);
new i = body_onplayer[playerid];
body_onplayer[playerid] = 0;
GetPlayerPos(playerid, cases [ i ][ c_pos_x ],cases [ i ][ c_pos_y ],cases [ i ][ c_pos_z ]);
GetPlayerFacingAngle(playerid,cases [ i ][ c_pos_a ]);
cases[ i ][ c_body ] = CreateDynamicObject(19944, cases [ i ][ c_pos_x ],cases [ i ][ c_pos_y ],cases [ i ][ c_pos_z ]-0.96000, 0.00000, 0.00000,cases [ i ][ c_pos_a ]);
cases[ i ][ c_label ] = CreateDynamic3DTextLabel("Тело\n{FFFFFF}Нажмите 'ALT' для взаимодействия",0xE67E22FF,cases [ i ][ c_pos_x ],cases [ i ][ c_pos_y ],cases [ i ][ c_pos_z ],30.0,INVALID_PLAYER_ID,INVALID_PLAYER_ID,0,-1,-1,-1,100.0);
}
return 1;
}
forward Inspection(playerid, i,step);
public Inspection(playerid, i, step)
{
switch(step)
{
case 1:
{
InterpolateCameraPos(playerid, cases[ i ][ c_pos_x ], cases[ i ][ c_pos_y ], cases[ i ][ c_pos_z ]+0.5, cases[ i ][ c_pos_x ]+2, cases[ i ][ c_pos_y ]-2, cases[ i ][ c_pos_z ], 4000);
InterpolateCameraLookAt(playerid, cases[ i ][ c_pos_x ], cases[ i ][ c_pos_y ], cases[ i ][ c_pos_z ]-0.96000, cases[ i ][ c_pos_x ], cases[ i ][ c_pos_y ], cases[ i ][ c_pos_z ]-0.96000, 4000);
new year, month,day;
getdate(year, month, day);
new hour,minuite,second;
gettime(hour,minuite,second);
format(cases[i][c_info],MAX_INFO_SIZE,"%02d:%02d %d/%d/%d - Обнаружено мертвое тело. Местонахождения: '%s'",hour, minuite, day, month, year, GetPlayerZone(playerid,0));
ShowPlayerDialog(playerid, 0000, DIALOG_STYLE_MSGBOX, !"Процесс осмотра:",cases[i][c_info]," ","");
ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 2, 0, 0, 0, 0, 0);
}
case 2:
{
ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 2, 0, 0, 0, 0, 0);
InterpolateCameraPos(playerid, cases[ i ][ c_pos_x ]-2, cases[ i ][ c_pos_y ]+2, cases[ i ][ c_pos_z ]+0.5,cases[ i ][ c_pos_x ]+2, cases[ i ][ c_pos_y ]+2, cases[ i ][ c_pos_z ]+0.5, 4000);
InterpolateCameraLookAt(playerid, cases[ i ][ c_pos_x ], cases[ i ][ c_pos_y ], cases[ i ][ c_pos_z ]-0.96000, cases[ i ][ c_pos_x ], cases[ i ][ c_pos_y ], cases[ i ][ c_pos_z ]-0.96000, 4000);
format(cases[i][c_info],MAX_INFO_SIZE,"%s\nСостояние тела: %s\n",cases[i][c_info], (random(2)) ? ("Холодное"):("Теплое"));
ShowPlayerDialog(playerid, 0000, DIALOG_STYLE_MSGBOX, !"Осмотр",cases[i][c_info]," ","");
}
case 3:
{
ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 2, 0, 0, 0, 0, 0);
InterpolateCameraPos(playerid, cases[ i ][ c_pos_x ]+2, cases[ i ][ c_pos_y ]-2, cases[ i ][ c_pos_z ]+0.5,cases[ i ][ c_pos_x ]-2, cases[ i ][ c_pos_y ]+2, cases[ i ][ c_pos_z ]+0.5, 4000);
InterpolateCameraLookAt(playerid, cases[ i ][ c_pos_x ], cases[ i ][ c_pos_y ], cases[ i ][ c_pos_z ]-0.96000, cases[ i ][ c_pos_x ], cases[ i ][ c_pos_y ], cases[ i ][ c_pos_z ]-0.96000, 4000);
switch(cases[ i ][ c_reason ] )
{
case 0: format(cases[i][c_info],MAX_INFO_SIZE,"%sМед. экспертиза: %s",cases[i][c_info], (random(2) == 0) ? ("следы избиения") : ("следы царапин и синяки")); // Кулак
case 1..3,5: format(cases[i][c_info],MAX_INFO_SIZE,"%sМед. экспертиза: %s", cases[i][c_info], (random(2) == 0) ? ("следы ударов тупым оружие") : ("синяки, и трещины на костях")); // Тупое оружие
case 4,8:
{
format(cases[i][c_info],MAX_INFO_SIZE,"%sCуд-Мед. экспертиза: %s", cases[i][c_info], (random(2) == 0) ? ("глубокое ножевое ранение") : ("отверстие с размером с ножевое лезвие"));
format(cases[i][c_info],MAX_INFO_SIZE,"%s\nРанение в: %s", cases[i][c_info], body_parts[cases[ i ][ c_bodypart ]]);
format(cases[i][c_info],MAX_INFO_SIZE,"%s\nCуд-Мед. экспертиза: обнаружено из-какого ножа была убита жертва", cases[i][c_info]);
// Острое оружие
}
case 22..34: // Застрелен
{
format(cases[i][c_info],MAX_INFO_SIZE,"%sCуд-Мед. экспертиза: %s", cases[i][c_info], (random(2) == 0) ? ("пулевые отверстия") : ("несколько пулевых ранений"));
format(cases[i][c_info],MAX_INFO_SIZE,"%s\nРанение в: %s", cases[i][c_info], body_parts[cases[ i ][ c_bodypart ]]);
format(cases[i][c_info],MAX_INFO_SIZE,"%s\nCуд-Мед. экспертиза: обнаружено из-какого оружия была убита жертва", cases[i][c_info]);
}
case 49: //Сбила машина
{
format(cases[i][c_info],MAX_INFO_SIZE,"%sМед. экспертиза: %s",cases[i][c_info],(random(2) == 0) ? ("Сломанный позвоночник и следы автомобильных шин на теле"):("Следы автомобильных шин на теле и сильного удара")); //
}
case 51: format(cases[i][c_info],170,"%sТело почти полностью сгоревшее и разорванное на части",cases[i][c_info]); // Взрыв
case 54: // Упал с высоты
{
format(cases[i][c_info],MAX_INFO_SIZE,"%sМед. экспертиза: %s",cases[i][c_info],(random(2) == 0) ? ("расплущенный череп и сломанные ноги") : ("сломанные кости по всему телу, расплющенный череп"));
}
case 255:
{
format(cases[i][c_info],MAX_INFO_SIZE,"%sМед. экспертиза: %s",cases[i][c_info], (random(2) == 0) ? ("Удушение ремнем для брюк") : ("Огромное количество снатворных в желудке")); // Самоубийств
format(cases[i][c_info],MAX_INFO_SIZE,"%s\n%s",cases[i][c_info], (random(2) == 0) ? ("В кормане записка со словами 'Мне все надоело'") : ("В кормане записка со словами 'Я так больше не могу'")); // Самоубийство
}
default:
{
format(cases[i][c_info],MAX_INFO_SIZE,"%sМед. экспертиза: %s",cases[i][c_info], (random(2) == 0) ? ("Телесных ранений не обнаружено") : ("Признаков избиения или выстрелов нет")); // Самоубийств
}
}
ShowPlayerDialog(playerid, 0000, DIALOG_STYLE_MSGBOX, !"{E67E22}Осмотр",cases[i][c_info]," ","");
}
case 4:
{
if(!cases[ i ][ c_docs ]) format(cases[i][c_info],MAX_INFO_SIZE,"%s\nУстановлено имя жертвы по документам в кормане: %s",cases[i][c_info],cases[i][ c_victim ]);
else format(cases[i][c_info],MAX_INFO_SIZE,"%s\nЖертва при себе документов не имела",cases[i][c_info]);
ShowPlayerDialog(playerid, 0000, DIALOG_STYLE_MSGBOX, !"{E67E22}Осмотр",cases[i][c_info]," ","");
ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 2, 0, 0, 0, 0, 0);
InterpolateCameraPos(playerid, cases[ i ][ c_pos_x ]+2, cases[ i ][ c_pos_y ]+2, cases[ i ][ c_pos_z ]+0.5,cases[ i ][ c_pos_x ]-2, cases[ i ][ c_pos_y ]-2, cases[ i ][ c_pos_z ]+0.5, 4000);
InterpolateCameraLookAt(playerid, cases[ i ][ c_pos_x ], cases[ i ][ c_pos_y ], cases[ i ][ c_pos_z ]-0.96000, cases[ i ][ c_pos_x ], cases[ i ][ c_pos_y ], cases[ i ][ c_pos_z ]-0.96000, 4000);
}
case 5:
{
new query[MAX_INFO_SIZE + 54];
mysql_format(SQLHandle, query, sizeof(query), "UPDATE cases SET Info='%e' WHERE Number=%d",cases[ i ][ c_info ], cases[ i ][ c_number ]);
mysql_tquery(SQLHandle, query, "", "");
MeAction(playerid,"закончил осмотр тела");
TogglePlayerControllable(playerid,1);
SetCameraBehindPlayer(playerid);
DestroyDynamicObject(cases[ i ][ c_body ]);
DestroyDynamic3DTextLabel( cases [i ] [ c_label ] );
cases [i ] [ c_label ] = Text3D:INVALID_3DTEXT_ID;
SendClientMessage(playerid, 0xE67E22FF, "Тело отправлено в морг городской больницы!");
case_menu(playerid, i);
cases[ i ][ c_pos_x ] = cases[ i ][ c_pos_y ] = 0.0;
return true;
}
}
return SetTimerEx("Inspection",4000,false,"iii",playerid,i,step+1);
}
stock case_menu(playerid, i)
{
new str[180];
format(str,sizeof(str),"Номер дела: {E67E22}%i\n\
Ведет дело: {E67E22}%s\n\
1. Посмотреть информацию по делу\n\
2. Назначить ведущего дело\n\
3. Заключение по делу\n\
4. Замять дело",cases[ i ][ c_number ], cases[ i ][ c_leads ]);
ShowPlayerDialog(playerid, d_case_menu, DIALOG_STYLE_LIST,"{E67E22}Папка с делом:",str,!"Выбрать",!"Закрыть");
player_body_id[playerid] = i;
return 1;
}
CMD:check(playerid)
{
new str[300] = "Номер дела\tЖертва",
max_count[MAX_PLAYERS];
for(new i = list[playerid]; i < sizeof(cases); i++)
{
if(cases[ i ][ c_number ] == 0) continue;
if(!strcmp(cases[ i ][ c_leads ], player_name[playerid] ))
{
max_count[playerid]++;
if(max_count[playerid] <= list[playerid]+10)
{
format(str,sizeof(str),"%s\n%i\t%s",str, cases[ i ][ c_number ],cases[ i ][ c_victim ]);
list_ids[playerid][i-list[playerid]] = i;
}
}
}
if(list[playerid] >= 10) strcat(str,"\n<<");
if(max_count[playerid] >= 10 && list[playerid]+10 < max_count[playerid]) strcat(str, "\n>>");
if(strlen(str) < 25) return ShowPlayerDialog(playerid, 0000, DIALOG_STYLE_MSGBOX," ","{FFFFFF}Открытых дел на данный момент у Вас нет!",!"Закрыть",!"");
ShowPlayerDialog(playerid, d_police_check, DIALOG_STYLE_TABLIST_HEADERS,"{E67E22}Открытые дела:",str,!"Выбрать",!"Закрыть");
return 1;
}
CMD:caselist(playerid)
{
new str[300] = "Номер дела\tВедет дело",
max_count[MAX_PLAYERS];
for(new i = list[playerid]; i < sizeof(cases); i++)
{
if(cases[ i ][ c_number ] == 0) continue;
max_count[playerid]++;
if(max_count[playerid] <= list[playerid]+10)
{
format(str,sizeof(str),"%s\n%i\t%s",str, cases[ i ][ c_number ],cases[ i ][ c_leads ]);
list_ids[playerid][i-list[playerid]] = i;
}
}
if(list[playerid] >= 10) strcat(str,"\n<<");
if(max_count[playerid] >= 10 && list[playerid]+10 < max_count[playerid]) strcat(str, "\n>>");
if(strlen(str) < 25) return ShowPlayerDialog(playerid, 0000, DIALOG_STYLE_MSGBOX," ","{FFFFFF}Открытых дел на данный момент нет!",!"Закрыть",!"");
ShowPlayerDialog(playerid, d_case_list, DIALOG_STYLE_TABLIST_HEADERS,"{E67E22}Открытые дела:",str,!"Выбрать",!"Закрыть");
return 1;
}
stock MeAction(playerid,action[],Float:distance = 13.0)
{
new mes[128];
format(mes,sizeof(mes),"%s %s",player_name[playerid],action);
foreach(new i: Player)
{
new Float:x, Float:y, Float:z, Float:x2, Float:y2, Float:z2;
GetPlayerPos(playerid, x, y, z);
GetPlayerPos(i, x2, y2, z2);
if(!IsPlayerConnected(i) || floatsqroot(floatadd(floatpower(x2-x,2),floatpower(y2-y,2))) > distance || GetPlayerVirtualWorld(i) != GetPlayerVirtualWorld(playerid)) continue;
SendClientMessage(i,0xDD90FFFF,mes);
}
return 1;
}
CMD:test1(playerid)
{
for(new i; i < sizeof(cases); i++)
{
if(cases[ i ][ c_number ] != 0) continue;
cases [ i ][ c_number ] = random(sizeof(cases))+1000;
GetPlayerPos(playerid, cases [ i ][ c_pos_x ],cases [ i ][ c_pos_y ],cases [ i ][ c_pos_z ]);
GetPlayerFacingAngle(playerid,cases [ i ][ c_pos_a ]);
cases[ i ][ c_body ] = CreateDynamicObject(19944, cases [ i ][ c_pos_x ],cases [ i ][ c_pos_y ],cases [ i ][ c_pos_z ]-0.96000, 0.00000, 0.00000,cases [ i ][ c_pos_a ]);
cases[ i ][ c_label ] = CreateDynamic3DTextLabel("Тело\n{FFFFFF}Нажмите 'ALT' для взаимодействия",0xE67E22FF,cases [ i ][ c_pos_x ],cases [ i ][ c_pos_y ],cases [ i ][ c_pos_z ],30.0,INVALID_PLAYER_ID,INVALID_PLAYER_ID,0,-1,-1,-1,100.0);
format(cases[ i ][ c_victim ], MAX_PLAYER_NAME, player_name[playerid] );
cases[ i ][ c_reason ] = 24;
format(cases[ i ][ c_leads ], 12,"Leon_Willson");
format(cases[ i ][ c_killer ], MAX_PLAYER_NAME, "Leon_Willson" );
cases[ i ][ c_bodypart ] = 1;
break;
}
return true;
}
public OnFilterScriptExit()
{
mysql_close(SQLHandle);
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
DisablePlayerCheckpoint(playerid);
return 1;
}
public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart)
{
if(issuerid != INVALID_PLAYER_ID) // If not self-inflicted
{
player_body_part_damage[playerid] = bodypart;
}
return 0;
}
CMD:tpcor(playerid,params[])
{
if(sscanf(params, "fff", params[0], params[1], params[2])) return SendClientMessage(playerid, 0xE88732FF, "USAGE: {FFFFFF}/tpcor [fff]");
SetPlayerPos(playerid,params[0], params[1], params[2]);
return true;
}
public OnFilterScriptInit()
{
DisableInteriorEnterExits();
SQLHandle = mysql_connect(SQL_HOST, SQL_USER, SQL_DBNAME, SQL_PASSWORD);
mysql_log(LOG_ERROR | LOG_WARNING, LOG_TYPE_HTML);
mysql_set_charset("cp1251");
if(mysql_errno() != 0)
{
print(" Can't connect to MySQL.");
return 1;
}
mysql_tquery(SQLHandle, "SELECT * FROM cases", "load_cases", "");
return 1;
}
public OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ)
{
SetPlayerPosFindZ(playerid, fX, fY, fZ);
return 1;
}
forward load_cases();
public load_cases()
{
new rows = cache_num_rows(),
result;
if(rows)
{
for(new i; i < rows; i++)
{
cases[i][ c_number ] = cache_get_field_content_int(i, "Number");
cases[i][ c_reason ] = cache_get_field_content_int(i, "Reason");
cases[i][ c_bodypart ] = cache_get_field_content_int(i, "Bodypart");
cache_get_field_content(i, "Victim", cases[i][ c_victim ], .max_len = MAX_PLAYER_NAME);
cache_get_field_content(i, "Killer", cases[i][ c_killer ], .max_len = MAX_PLAYER_NAME);
cache_get_field_content(i, "Info", cases[i][ c_info ], .max_len = MAX_INFO_SIZE);
cache_get_field_content(i, "Leads", cases[i][ c_leads ], .max_len = MAX_PLAYER_NAME);
result++;
}
printf("[Система расследований] Загружено %d дел из базы данных",result);
}
else printf("[Система расследований] В базе данных нет полицейских дел.");
return 1;
}
CMD:cop(playerid)
{
SetPVarInt(playerid,"COP",true);
SetPlayerSkin(playerid,283);
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if((newkeys & KEY_WALK))
{
if(GetPlayerVirtualWorld(playerid) == 0)
{
for(new i; i < sizeof(cases); i++)
{
if(cases[ i ][ c_number ] == 0) continue;
if(!IsPlayerInRangeOfPoint(playerid, 2.0, cases [ i ][ c_pos_x ],cases [ i ][ c_pos_y ],cases [ i ][ c_pos_z ])) continue;
player_body_id[playerid] = i;
//Если человек коп
if(GetPVarInt(playerid,"COP"))
{
return ShowPlayerDialog(playerid, d_police, DIALOG_STYLE_LIST, "{E67E22}Тело","1. Завести дело\n2. Отдать в морг без расследований",!"Выбрать",!"Закрыть");
}
//Если убийца
if(!strcmp(cases[ i ][ c_killer ], player_name[playerid] ))
{
return ShowPlayerDialog(playerid, d_killer, DIALOG_STYLE_LIST, "{E67E22}Тело","1. Забрать тело\n2. Взять документы",!"Выбрать",!"Закрыть");
}
//Если обычный человек
else
{
SendClientMessage(playerid,0x3399FFFF,"Полицию уже оповестили о найденном трупе!");
// Вызов полиции
}
break;
}
}
}
return 1;
}
CMD:death(playerid)
{
SetPlayerHealth(playerid,0.0);
}
enum SAZONE_MAIN
{
SAZONE_NAME[28],
Float:SAZONE_AREA[6]
};
static const gSAZones[][SAZONE_MAIN] = {
{"The Big Ear", {-410.00,1403.30,-3.00,-137.90,1681.20,200.00}},
{"Aldea Malvada", {-1372.10,2498.50,0.00,-1277.50,2615.30,200.00}},
{"Angel Pine", {-2324.90,-2584.20,-6.10,-1964.20,-2212.10,200.00}},
{"Arco del Oeste", {-901.10,2221.80,0.00,-592.00,2571.90,200.00}},
{"Avispa Country Club", {-2646.40,-355.40,0.00,-2270.00,-222.50,200.00}},
{"Avispa Country Club", {-2831.80,-430.20,-6.10,-2646.40,-222.50,200.00}},
{"Avispa Country Club", {-2361.50,-417.10,0.00,-2270.00,-355.40,200.00}},
{"Avispa Country Club", {-2667.80,-302.10,-28.80,-2646.40,-262.30,71.10}},
{"Avispa Country Club", {-2470.00,-355.40,0.00,-2270.00,-318.40,46.10}},
{"Avispa Country Club", {-2550.00,-355.40,0.00,-2470.00,-318.40,39.70}},
{"Back o Beyond", {-1166.90,-2641.10,0.00,-321.70,-1856.00,200.00}},
{"Battery Point", {-2741.00,1268.40,-4.50,-2533.00,1490.40,200.00}},
{"Bayside", {-2741.00,2175.10,0.00,-2353.10,2722.70,200.00}},
{"Bayside Marina", {-2353.10,2275.70,0.00,-2153.10,2475.70,200.00}},
{"Beacon Hill", {-399.60,-1075.50,-1.40,-319.00,-977.50,198.50}},
{"Blackfield", {964.30,1203.20,-89.00,1197.30,1403.20,110.90}},
{"Blackfield", {964.30,1403.20,-89.00,1197.30,1726.20,110.90}},
{"Blackfield Chapel", {1375.60,596.30,-89.00,1558.00,823.20,110.90}},
{"Blackfield Chapel", {1325.60,596.30,-89.00,1375.60,795.00,110.90}},
{"Blackfield Intersection", {1197.30,1044.60,-89.00,1277.00,1163.30,110.90}},
{"Blackfield Intersection", {1166.50,795.00,-89.00,1375.60,1044.60,110.90}},
{"Blackfield Intersection", {1277.00,1044.60,-89.00,1315.30,1087.60,110.90}},
{"Blackfield Intersection", {1375.60,823.20,-89.00,1457.30,919.40,110.90}},
{"Blueberry", {104.50,-220.10,2.30,349.60,152.20,200.00}},
{"Blueberry", {19.60,-404.10,3.80,349.60,-220.10,200.00}},
{"Blueberry Acres", {-319.60,-220.10,0.00,104.50,293.30,200.00}},
{"Caligula's Palace", {2087.30,1543.20,-89.00,2437.30,1703.20,110.90}},
{"Caligula's Palace", {2137.40,1703.20,-89.00,2437.30,1783.20,110.90}},
{"Calton Heights", {-2274.10,744.10,-6.10,-1982.30,1358.90,200.00}},
{"Chinatown", {-2274.10,578.30,-7.60,-2078.60,744.10,200.00}},
{"City Hall", {-2867.80,277.40,-9.10,-2593.40,458.40,200.00}},
{"Come-A-Lot", {2087.30,943.20,-89.00,2623.10,1203.20,110.90}},
{"Commerce", {1323.90,-1842.20,-89.00,1701.90,-1722.20,110.90}},
{"Commerce", {1323.90,-1722.20,-89.00,1440.90,-1577.50,110.90}},
{"Commerce", {1370.80,-1577.50,-89.00,1463.90,-1384.90,110.90}},
{"Commerce", {1463.90,-1577.50,-89.00,1667.90,-1430.80,110.90}},
{"Commerce", {1583.50,-1722.20,-89.00,1758.90,-1577.50,110.90}},
{"Commerce", {1667.90,-1577.50,-89.00,1812.60,-1430.80,110.90}},
{"Conference Center", {1046.10,-1804.20,-89.00,1323.90,-1722.20,110.90}},
{"Conference Center", {1073.20,-1842.20,-89.00,1323.90,-1804.20,110.90}},
{"Cranberry Station", {-2007.80,56.30,0.00,-1922.00,224.70,100.00}},
{"Creek", {2749.90,1937.20,-89.00,2921.60,2669.70,110.90}},
{"Dillimore", {580.70,-674.80,-9.50,861.00,-404.70,200.00}},
{"Doherty", {-2270.00,-324.10,-0.00,-1794.90,-222.50,200.00}},
{"Doherty", {-2173.00,-222.50,-0.00,-1794.90,265.20,200.00}},
{"Downtown", {-1982.30,744.10,-6.10,-1871.70,1274.20,200.00}},
{"Downtown", {-1871.70,1176.40,-4.50,-1620.30,1274.20,200.00}},
{"Downtown", {-1700.00,744.20,-6.10,-1580.00,1176.50,200.00}},
{"Downtown", {-1580.00,744.20,-6.10,-1499.80,1025.90,200.00}},
{"Downtown", {-2078.60,578.30,-7.60,-1499.80,744.20,200.00}},
{"Downtown", {-1993.20,265.20,-9.10,-1794.90,578.30,200.00}},
{"Downtown Los Santos", {1463.90,-1430.80,-89.00,1724.70,-1290.80,110.90}},
{"Downtown Los Santos", {1724.70,-1430.80,-89.00,1812.60,-1250.90,110.90}},
{"Downtown Los Santos", {1463.90,-1290.80,-89.00,1724.70,-1150.80,110.90}},
{"Downtown Los Santos", {1370.80,-1384.90,-89.00,1463.90,-1170.80,110.90}},
{"Downtown Los Santos", {1724.70,-1250.90,-89.00,1812.60,-1150.80,110.90}},
{"Downtown Los Santos", {1370.80,-1170.80,-89.00,1463.90,-1130.80,110.90}},
{"Downtown Los Santos", {1378.30,-1130.80,-89.00,1463.90,-1026.30,110.90}},
{"Downtown Los Santos", {1391.00,-1026.30,-89.00,1463.90,-926.90,110.90}},
{"Downtown Los Santos", {1507.50,-1385.20,110.90,1582.50,-1325.30,335.90}},
{"East Beach", {2632.80,-1852.80,-89.00,2959.30,-1668.10,110.90}},
{"East Beach", {2632.80,-1668.10,-89.00,2747.70,-1393.40,110.90}},
{"East Beach", {2747.70,-1668.10,-89.00,2959.30,-1498.60,110.90}},
{"East Beach", {2747.70,-1498.60,-89.00,2959.30,-1120.00,110.90}},
{"East Los Santos", {2421.00,-1628.50,-89.00,2632.80,-1454.30,110.90}},
{"East Los Santos", {2222.50,-1628.50,-89.00,2421.00,-1494.00,110.90}},
{"East Los Santos", {2266.20,-1494.00,-89.00,2381.60,-1372.00,110.90}},
{"East Los Santos", {2381.60,-1494.00,-89.00,2421.00,-1454.30,110.90}},
{"East Los Santos", {2281.40,-1372.00,-89.00,2381.60,-1135.00,110.90}},
{"East Los Santos", {2381.60,-1454.30,-89.00,2462.10,-1135.00,110.90}},
{"East Los Santos", {2462.10,-1454.30,-89.00,2581.70,-1135.00,110.90}},
{"Easter Basin", {-1794.90,249.90,-9.10,-1242.90,578.30,200.00}},
{"Easter Basin", {-1794.90,-50.00,-0.00,-1499.80,249.90,200.00}},
{"Easter Bay Airport", {-1499.80,-50.00,-0.00,-1242.90,249.90,200.00}},
{"Easter Bay Airport", {-1794.90,-730.10,-3.00,-1213.90,-50.00,200.00}},
{"Easter Bay Airport", {-1213.90,-730.10,0.00,-1132.80,-50.00,200.00}},
{"Easter Bay Airport", {-1242.90,-50.00,0.00,-1213.90,578.30,200.00}},
{"Easter Bay Airport", {-1213.90,-50.00,-4.50,-947.90,578.30,200.00}},
{"Easter Bay Airport", {-1315.40,-405.30,15.40,-1264.40,-209.50,25.40}},
{"Easter Bay Airport", {-1354.30,-287.30,15.40,-1315.40,-209.50,25.40}},
{"Easter Bay Airport", {-1490.30,-209.50,15.40,-1264.40,-148.30,25.40}},
{"Easter Bay Chemicals", {-1132.80,-768.00,0.00,-956.40,-578.10,200.00}},
{"Easter Bay Chemicals", {-1132.80,-787.30,0.00,-956.40,-768.00,200.00}},
{"El Castillo del Diablo", {-464.50,2217.60,0.00,-208.50,2580.30,200.00}},
{"El Castillo del Diablo", {-208.50,2123.00,-7.60,114.00,2337.10,200.00}},
{"El Castillo del Diablo", {-208.50,2337.10,0.00,8.40,2487.10,200.00}},
{"El Corona", {1812.60,-2179.20,-89.00,1970.60,-1852.80,110.90}},
{"El Corona", {1692.60,-2179.20,-89.00,1812.60,-1842.20,110.90}},
{"El Quebrados", {-1645.20,2498.50,0.00,-1372.10,2777.80,200.00}},
{"Esplanade East", {-1620.30,1176.50,-4.50,-1580.00,1274.20,200.00}},
{"Esplanade East", {-1580.00,1025.90,-6.10,-1499.80,1274.20,200.00}},
{"Esplanade East", {-1499.80,578.30,-79.60,-1339.80,1274.20,20.30}},
{"Esplanade North", {-2533.00,1358.90,-4.50,-1996.60,1501.20,200.00}},
{"Esplanade North", {-1996.60,1358.90,-4.50,-1524.20,1592.50,200.00}},
{"Esplanade North", {-1982.30,1274.20,-4.50,-1524.20,1358.90,200.00}},
{"Fallen Tree", {-792.20,-698.50,-5.30,-452.40,-380.00,200.00}},
{"Fallow Bridge", {434.30,366.50,0.00,603.00,555.60,200.00}},
{"Fern Ridge", {508.10,-139.20,0.00,1306.60,119.50,200.00}},
{"Financial", {-1871.70,744.10,-6.10,-1701.30,1176.40,300.00}},
{"Fisher's Lagoon", {1916.90,-233.30,-100.00,2131.70,13.80,200.00}},
{"Flint Intersection", {-187.70,-1596.70,-89.00,17.00,-1276.60,110.90}},
{"Flint Range", {-594.10,-1648.50,0.00,-187.70,-1276.60,200.00}},
{"Fort Carson", {-376.20,826.30,-3.00,123.70,1220.40,200.00}},
{"Foster Valley", {-2270.00,-430.20,-0.00,-2178.60,-324.10,200.00}},
{"Foster Valley", {-2178.60,-599.80,-0.00,-1794.90,-324.10,200.00}},
{"Foster Valley", {-2178.60,-1115.50,0.00,-1794.90,-599.80,200.00}},
{"Foster Valley", {-2178.60,-1250.90,0.00,-1794.90,-1115.50,200.00}},
{"Frederick Bridge", {2759.20,296.50,0.00,2774.20,594.70,200.00}},
{"Gant Bridge", {-2741.40,1659.60,-6.10,-2616.40,2175.10,200.00}},
{"Gant Bridge", {-2741.00,1490.40,-6.10,-2616.40,1659.60,200.00}},
{"Ganton", {2222.50,-1852.80,-89.00,2632.80,-1722.30,110.90}},
{"Ganton", {2222.50,-1722.30,-89.00,2632.80,-1628.50,110.90}},
{"Garcia", {-2411.20,-222.50,-0.00,-2173.00,265.20,200.00}},
{"Garcia", {-2395.10,-222.50,-5.30,-2354.00,-204.70,200.00}},
{"Garver Bridge", {-1339.80,828.10,-89.00,-1213.90,1057.00,110.90}},
{"Garver Bridge", {-1213.90,950.00,-89.00,-1087.90,1178.90,110.90}},
{"Garver Bridge", {-1499.80,696.40,-179.60,-1339.80,925.30,20.30}},
{"Glen Park", {1812.60,-1449.60,-89.00,1996.90,-1350.70,110.90}},
{"Glen Park", {1812.60,-1100.80,-89.00,1994.30,-973.30,110.90}},
{"Glen Park", {1812.60,-1350.70,-89.00,2056.80,-1100.80,110.90}},
{"Green Palms", {176.50,1305.40,-3.00,338.60,1520.70,200.00}},
{"Greenglass College", {964.30,1044.60,-89.00,1197.30,1203.20,110.90}},
{"Greenglass College", {964.30,930.80,-89.00,1166.50,1044.60,110.90}},
{"Hampton Barns", {603.00,264.30,0.00,761.90,366.50,200.00}},
{"Hankypanky Point", {2576.90,62.10,0.00,2759.20,385.50,200.00}},
{"Harry Gold Parkway", {1777.30,863.20,-89.00,1817.30,2342.80,110.90}},
{"Hashbury", {-2593.40,-222.50,-0.00,-2411.20,54.70,200.00}},
{"Hilltop Farm", {967.30,-450.30,-3.00,1176.70,-217.90,200.00}},
{"Hunter Quarry", {337.20,710.80,-115.20,860.50,1031.70,203.70}},
{"Idlewood", {1812.60,-1852.80,-89.00,1971.60,-1742.30,110.90}},
{"Idlewood", {1812.60,-1742.30,-89.00,1951.60,-1602.30,110.90}},
{"Idlewood", {1951.60,-1742.30,-89.00,2124.60,-1602.30,110.90}},
{"Idlewood", {1812.60,-1602.30,-89.00,2124.60,-1449.60,110.90}},
{"Idlewood", {2124.60,-1742.30,-89.00,2222.50,-1494.00,110.90}},
{"Idlewood", {1971.60,-1852.80,-89.00,2222.50,-1742.30,110.90}},
{"Jefferson", {1996.90,-1449.60,-89.00,2056.80,-1350.70,110.90}},
{"Jefferson", {2124.60,-1494.00,-89.00,2266.20,-1449.60,110.90}},
{"Jefferson", {2056.80,-1372.00,-89.00,2281.40,-1210.70,110.90}},
{"Jefferson", {2056.80,-1210.70,-89.00,2185.30,-1126.30,110.90}},
{"Jefferson", {2185.30,-1210.70,-89.00,2281.40,-1154.50,110.90}},
{"Jefferson", {2056.80,-1449.60,-89.00,2266.20,-1372.00,110.90}},
{"Julius Thruway East", {2623.10,943.20,-89.00,2749.90,1055.90,110.90}},
{"Julius Thruway East", {2685.10,1055.90,-89.00,2749.90,2626.50,110.90}},
{"Julius Thruway East", {2536.40,2442.50,-89.00,2685.10,2542.50,110.90}},
{"Julius Thruway East", {2625.10,2202.70,-89.00,2685.10,2442.50,110.90}},
{"Julius Thruway North", {2498.20,2542.50,-89.00,2685.10,2626.50,110.90}},
{"Julius Thruway North", {2237.40,2542.50,-89.00,2498.20,2663.10,110.90}},
{"Julius Thruway North", {2121.40,2508.20,-89.00,2237.40,2663.10,110.90}},
{"Julius Thruway North", {1938.80,2508.20,-89.00,2121.40,2624.20,110.90}},
{"Julius Thruway North", {1534.50,2433.20,-89.00,1848.40,2583.20,110.90}},
{"Julius Thruway North", {1848.40,2478.40,-89.00,1938.80,2553.40,110.90}},
{"Julius Thruway North", {1704.50,2342.80,-89.00,1848.40,2433.20,110.90}},
{"Julius Thruway North", {1377.30,2433.20,-89.00,1534.50,2507.20,110.90}},
{"Julius Thruway South", {1457.30,823.20,-89.00,2377.30,863.20,110.90}},
{"Julius Thruway South", {2377.30,788.80,-89.00,2537.30,897.90,110.90}},
{"Julius Thruway West", {1197.30,1163.30,-89.00,1236.60,2243.20,110.90}},
{"Julius Thruway West", {1236.60,2142.80,-89.00,1297.40,2243.20,110.90}},
{"Juniper Hill", {-2533.00,578.30,-7.60,-2274.10,968.30,200.00}},
{"Juniper Hollow", {-2533.00,968.30,-6.10,-2274.10,1358.90,200.00}},
{"K.A.C.C. Military Fuels", {2498.20,2626.50,-89.00,2749.90,2861.50,110.90}},
{"Kincaid Bridge", {-1339.80,599.20,-89.00,-1213.90,828.10,110.90}},
{"Kincaid Bridge", {-1213.90,721.10,-89.00,-1087.90,950.00,110.90}},
{"Kincaid Bridge", {-1087.90,855.30,-89.00,-961.90,986.20,110.90}},
{"King's", {-2329.30,458.40,-7.60,-1993.20,578.30,200.00}},
{"King's", {-2411.20,265.20,-9.10,-1993.20,373.50,200.00}},
{"King's", {-2253.50,373.50,-9.10,-1993.20,458.40,200.00}},
{"LVA Freight Depot", {1457.30,863.20,-89.00,1777.40,1143.20,110.90}},
{"LVA Freight Depot", {1375.60,919.40,-89.00,1457.30,1203.20,110.90}},
{"LVA Freight Depot", {1277.00,1087.60,-89.00,1375.60,1203.20,110.90}},
{"LVA Freight Depot", {1315.30,1044.60,-89.00,1375.60,1087.60,110.90}},
{"LVA Freight Depot", {1236.60,1163.40,-89.00,1277.00,1203.20,110.90}},
{"Las Barrancas", {-926.10,1398.70,-3.00,-719.20,1634.60,200.00}},
{"Las Brujas", {-365.10,2123.00,-3.00,-208.50,2217.60,200.00}},
{"Las Colinas", {1994.30,-1100.80,-89.00,2056.80,-920.80,110.90}},
{"Las Colinas", {2056.80,-1126.30,-89.00,2126.80,-920.80,110.90}},
{"Las Colinas", {2185.30,-1154.50,-89.00,2281.40,-934.40,110.90}},
{"Las Colinas", {2126.80,-1126.30,-89.00,2185.30,-934.40,110.90}},
{"Las Colinas", {2747.70,-1120.00,-89.00,2959.30,-945.00,110.90}},
{"Las Colinas", {2632.70,-1135.00,-89.00,2747.70,-945.00,110.90}},
{"Las Colinas", {2281.40,-1135.00,-89.00,2632.70,-945.00,110.90}},
{"Las Payasadas", {-354.30,2580.30,2.00,-133.60,2816.80,200.00}},
{"Las Venturas Airport", {1236.60,1203.20,-89.00,1457.30,1883.10,110.90}},
{"Las Venturas Airport", {1457.30,1203.20,-89.00,1777.30,1883.10,110.90}},
{"Las Venturas Airport", {1457.30,1143.20,-89.00,1777.40,1203.20,110.90}},
{"Las Venturas Airport", {1515.80,1586.40,-12.50,1729.90,1714.50,87.50}},
{"Last Dime Motel", {1823.00,596.30,-89.00,1997.20,823.20,110.90}},
{"Leafy Hollow", {-1166.90,-1856.00,0.00,-815.60,-1602.00,200.00}},
{"Liberty City", {-1000.00,400.00,1300.00,-700.00,600.00,1400.00}},
{"Lil' Probe Inn", {-90.20,1286.80,-3.00,153.80,1554.10,200.00}},
{"Linden Side", {2749.90,943.20,-89.00,2923.30,1198.90,110.90}},
{"Linden Station", {2749.90,1198.90,-89.00,2923.30,1548.90,110.90}},
{"Linden Station", {2811.20,1229.50,-39.50,2861.20,1407.50,60.40}},
{"Little Mexico", {1701.90,-1842.20,-89.00,1812.60,-1722.20,110.90}},
{"Little Mexico", {1758.90,-1722.20,-89.00,1812.60,-1577.50,110.90}},
{"Los Flores", {2581.70,-1454.30,-89.00,2632.80,-1393.40,110.90}},
{"Los Flores", {2581.70,-1393.40,-89.00,2747.70,-1135.00,110.90}},
{"Los Santos International", {1249.60,-2394.30,-89.00,1852.00,-2179.20,110.90}},
{"Los Santos International", {1852.00,-2394.30,-89.00,2089.00,-2179.20,110.90}},
{"Los Santos International", {1382.70,-2730.80,-89.00,2201.80,-2394.30,110.90}},
{"Los Santos International", {1974.60,-2394.30,-39.00,2089.00,-2256.50,60.90}},
{"Los Santos International", {1400.90,-2669.20,-39.00,2189.80,-2597.20,60.90}},
{"Los Santos International", {2051.60,-2597.20,-39.00,2152.40,-2394.30,60.90}},
{"Marina", {647.70,-1804.20,-89.00,851.40,-1577.50,110.90}},
{"Marina", {647.70,-1577.50,-89.00,807.90,-1416.20,110.90}},
{"Marina", {807.90,-1577.50,-89.00,926.90,-1416.20,110.90}},
{"Market", {787.40,-1416.20,-89.00,1072.60,-1310.20,110.90}},
{"Market", {952.60,-1310.20,-89.00,1072.60,-1130.80,110.90}},
{"Market", {1072.60,-1416.20,-89.00,1370.80,-1130.80,110.90}},
{"Market", {926.90,-1577.50,-89.00,1370.80,-1416.20,110.90}},
{"Market Station", {787.40,-1410.90,-34.10,866.00,-1310.20,65.80}},
{"Martin Bridge", {-222.10,293.30,0.00,-122.10,476.40,200.00}},
{"Missionary Hill", {-2994.40,-811.20,0.00,-2178.60,-430.20,200.00}},
{"Montgomery", {1119.50,119.50,-3.00,1451.40,493.30,200.00}},
{"Montgomery", {1451.40,347.40,-6.10,1582.40,420.80,200.00}},
{"Montgomery Intersection", {1546.60,208.10,0.00,1745.80,347.40,200.00}},
{"Montgomery Intersection", {1582.40,347.40,0.00,1664.60,401.70,200.00}},
{"Mulholland", {1414.00,-768.00,-89.00,1667.60,-452.40,110.90}},
{"Mulholland", {1281.10,-452.40,-89.00,1641.10,-290.90,110.90}},
{"Mulholland", {1269.10,-768.00,-89.00,1414.00,-452.40,110.90}},
{"Mulholland", {1357.00,-926.90,-89.00,1463.90,-768.00,110.90}},
{"Mulholland", {1318.10,-910.10,-89.00,1357.00,-768.00,110.90}},
{"Mulholland", {1169.10,-910.10,-89.00,1318.10,-768.00,110.90}},
{"Mulholland", {768.60,-954.60,-89.00,952.60,-860.60,110.90}},
{"Mulholland", {687.80,-860.60,-89.00,911.80,-768.00,110.90}},
{"Mulholland", {737.50,-768.00,-89.00,1142.20,-674.80,110.90}},
{"Mulholland", {1096.40,-910.10,-89.00,1169.10,-768.00,110.90}},
{"Mulholland", {952.60,-937.10,-89.00,1096.40,-860.60,110.90}},
{"Mulholland", {911.80,-860.60,-89.00,1096.40,-768.00,110.90}},
{"Mulholland", {861.00,-674.80,-89.00,1156.50,-600.80,110.90}},
{"Mulholland Intersection", {1463.90,-1150.80,-89.00,1812.60,-768.00,110.90}},
{"North Rock", {2285.30,-768.00,0.00,2770.50,-269.70,200.00}},
{"Ocean Docks", {2373.70,-2697.00,-89.00,2809.20,-2330.40,110.90}},
{"Ocean Docks", {2201.80,-2418.30,-89.00,2324.00,-2095.00,110.90}},
{"Ocean Docks", {2324.00,-2302.30,-89.00,2703.50,-2145.10,110.90}},
{"Ocean Docks", {2089.00,-2394.30,-89.00,2201.80,-2235.80,110.90}},
{"Ocean Docks", {2201.80,-2730.80,-89.00,2324.00,-2418.30,110.90}},
{"Ocean Docks", {2703.50,-2302.30,-89.00,2959.30,-2126.90,110.90}},
{"Ocean Docks", {2324.00,-2145.10,-89.00,2703.50,-2059.20,110.90}},
{"Ocean Flats", {-2994.40,277.40,-9.10,-2867.80,458.40,200.00}},
{"Ocean Flats", {-2994.40,-222.50,-0.00,-2593.40,277.40,200.00}},
{"Ocean Flats", {-2994.40,-430.20,-0.00,-2831.80,-222.50,200.00}},
{"Octane Springs", {338.60,1228.50,0.00,664.30,1655.00,200.00}},
{"Old Venturas Strip", {2162.30,2012.10,-89.00,2685.10,2202.70,110.90}},
{"Palisades", {-2994.40,458.40,-6.10,-2741.00,1339.60,200.00}},
{"Palomino Creek", {2160.20,-149.00,0.00,2576.90,228.30,200.00}},
{"Paradiso", {-2741.00,793.40,-6.10,-2533.00,1268.40,200.00}},
{"Pershing Square", {1440.90,-1722.20,-89.00,1583.50,-1577.50,110.90}},
{"Pilgrim", {2437.30,1383.20,-89.00,2624.40,1783.20,110.90}},
{"Pilgrim", {2624.40,1383.20,-89.00,2685.10,1783.20,110.90}},
{"Pilson Intersection", {1098.30,2243.20,-89.00,1377.30,2507.20,110.90}},
{"Pirates in Men's Pants", {1817.30,1469.20,-89.00,2027.40,1703.20,110.90}},
{"Playa del Seville", {2703.50,-2126.90,-89.00,2959.30,-1852.80,110.90}},
{"Prickle Pine", {1534.50,2583.20,-89.00,1848.40,2863.20,110.90}},
{"Prickle Pine", {1117.40,2507.20,-89.00,1534.50,2723.20,110.90}},
{"Prickle Pine", {1848.40,2553.40,-89.00,1938.80,2863.20,110.90}},
{"Prickle Pine", {1938.80,2624.20,-89.00,2121.40,2861.50,110.90}},
{"Queens", {-2533.00,458.40,0.00,-2329.30,578.30,200.00}},
{"Queens", {-2593.40,54.70,0.00,-2411.20,458.40,200.00}},
{"Queens", {-2411.20,373.50,0.00,-2253.50,458.40,200.00}},
{"Randolph Industrial Estate", {1558.00,596.30,-89.00,1823.00,823.20,110.90}},
{"Redsands East", {1817.30,2011.80,-89.00,2106.70,2202.70,110.90}},
{"Redsands East", {1817.30,2202.70,-89.00,2011.90,2342.80,110.90}},
{"Redsands East", {1848.40,2342.80,-89.00,2011.90,2478.40,110.90}},
{"Redsands West", {1236.60,1883.10,-89.00,1777.30,2142.80,110.90}},
{"Redsands West", {1297.40,2142.80,-89.00,1777.30,2243.20,110.90}},
{"Redsands West", {1377.30,2243.20,-89.00,1704.50,2433.20,110.90}},
{"Redsands West", {1704.50,2243.20,-89.00,1777.30,2342.80,110.90}},
{"Regular Tom", {-405.70,1712.80,-3.00,-276.70,1892.70,200.00}},
{"Richman", {647.50,-1118.20,-89.00,787.40,-954.60,110.90}},
{"Richman", {647.50,-954.60,-89.00,768.60,-860.60,110.90}},
{"Richman", {225.10,-1369.60,-89.00,334.50,-1292.00,110.90}},
{"Richman", {225.10,-1292.00,-89.00,466.20,-1235.00,110.90}},
{"Richman", {72.60,-1404.90,-89.00,225.10,-1235.00,110.90}},
{"Richman", {72.60,-1235.00,-89.00,321.30,-1008.10,110.90}},
{"Richman", {321.30,-1235.00,-89.00,647.50,-1044.00,110.90}},
{"Richman", {321.30,-1044.00,-89.00,647.50,-860.60,110.90}},
{"Richman", {321.30,-860.60,-89.00,687.80,-768.00,110.90}},
{"Richman", {321.30,-768.00,-89.00,700.70,-674.80,110.90}},
{"Robada Intersection", {-1119.00,1178.90,-89.00,-862.00,1351.40,110.90}},
{"Roca Escalante", {2237.40,2202.70,-89.00,2536.40,2542.50,110.90}},
{"Roca Escalante", {2536.40,2202.70,-89.00,2625.10,2442.50,110.90}},
{"Rockshore East", {2537.30,676.50,-89.00,2902.30,943.20,110.90}},
{"Rockshore West", {1997.20,596.30,-89.00,2377.30,823.20,110.90}},
{"Rockshore West", {2377.30,596.30,-89.00,2537.30,788.80,110.90}},
{"Rodeo", {72.60,-1684.60,-89.00,225.10,-1544.10,110.90}},
{"Rodeo", {72.60,-1544.10,-89.00,225.10,-1404.90,110.90}},
{"Rodeo", {225.10,-1684.60,-89.00,312.80,-1501.90,110.90}},
{"Rodeo", {225.10,-1501.90,-89.00,334.50,-1369.60,110.90}},
{"Rodeo", {334.50,-1501.90,-89.00,422.60,-1406.00,110.90}},
{"Rodeo", {312.80,-1684.60,-89.00,422.60,-1501.90,110.90}},
{"Rodeo", {422.60,-1684.60,-89.00,558.00,-1570.20,110.90}},
{"Rodeo", {558.00,-1684.60,-89.00,647.50,-1384.90,110.90}},
{"Rodeo", {466.20,-1570.20,-89.00,558.00,-1385.00,110.90}},
{"Rodeo", {422.60,-1570.20,-89.00,466.20,-1406.00,110.90}},
{"Rodeo", {466.20,-1385.00,-89.00,647.50,-1235.00,110.90}},
{"Rodeo", {334.50,-1406.00,-89.00,466.20,-1292.00,110.90}},
{"Royal Casino", {2087.30,1383.20,-89.00,2437.30,1543.20,110.90}},
{"San Andreas Sound", {2450.30,385.50,-100.00,2759.20,562.30,200.00}},
{"Santa Flora", {-2741.00,458.40,-7.60,-2533.00,793.40,200.00}},
{"Santa Maria Beach", {342.60,-2173.20,-89.00,647.70,-1684.60,110.90}},
{"Santa Maria Beach", {72.60,-2173.20,-89.00,342.60,-1684.60,110.90}},
{"Shady Cabin", {-1632.80,-2263.40,-3.00,-1601.30,-2231.70,200.00}},
{"Shady Creeks", {-1820.60,-2643.60,-8.00,-1226.70,-1771.60,200.00}},
{"Shady Creeks", {-2030.10,-2174.80,-6.10,-1820.60,-1771.60,200.00}},
{"Sobell Rail Yards", {2749.90,1548.90,-89.00,2923.30,1937.20,110.90}},
{"Spinybed", {2121.40,2663.10,-89.00,2498.20,2861.50,110.90}},
{"Starfish Casino", {2437.30,1783.20,-89.00,2685.10,2012.10,110.90}},
{"Starfish Casino", {2437.30,1858.10,-39.00,2495.00,1970.80,60.90}},
{"Starfish Casino", {2162.30,1883.20,-89.00,2437.30,2012.10,110.90}},
{"Temple", {1252.30,-1130.80,-89.00,1378.30,-1026.30,110.90}},
{"Temple", {1252.30,-1026.30,-89.00,1391.00,-926.90,110.90}},
{"Temple", {1252.30,-926.90,-89.00,1357.00,-910.10,110.90}},
{"Temple", {952.60,-1130.80,-89.00,1096.40,-937.10,110.90}},
{"Temple", {1096.40,-1130.80,-89.00,1252.30,-1026.30,110.90}},
{"Temple", {1096.40,-1026.30,-89.00,1252.30,-910.10,110.90}},
{"The Camel's Toe", {2087.30,1203.20,-89.00,2640.40,1383.20,110.90}},
{"The Clown's Pocket", {2162.30,1783.20,-89.00,2437.30,1883.20,110.90}},
{"The Emerald Isle", {2011.90,2202.70,-89.00,2237.40,2508.20,110.90}},
{"The Farm", {-1209.60,-1317.10,114.90,-908.10,-787.30,251.90}},
{"The Four Dragons Casino", {1817.30,863.20,-89.00,2027.30,1083.20,110.90}},
{"The High Roller", {1817.30,1283.20,-89.00,2027.30,1469.20,110.90}},
{"The Mako Span", {1664.60,401.70,0.00,1785.10,567.20,200.00}},
{"The Panopticon", {-947.90,-304.30,-1.10,-319.60,327.00,200.00}},
{"The Pink Swan", {1817.30,1083.20,-89.00,2027.30,1283.20,110.90}},
{"The Sherman Dam", {-968.70,1929.40,-3.00,-481.10,2155.20,200.00}},
{"The Strip", {2027.40,863.20,-89.00,2087.30,1703.20,110.90}},
{"The Strip", {2106.70,1863.20,-89.00,2162.30,2202.70,110.90}},
{"The Strip", {2027.40,1783.20,-89.00,2162.30,1863.20,110.90}},
{"The Strip", {2027.40,1703.20,-89.00,2137.40,1783.20,110.90}},
{"The Visage", {1817.30,1863.20,-89.00,2106.70,2011.80,110.90}},
{"The Visage", {1817.30,1703.20,-89.00,2027.40,1863.20,110.90}},
{"Unity Station", {1692.60,-1971.80,-20.40,1812.60,-1932.80,79.50}},
{"Valle Ocultado", {-936.60,2611.40,2.00,-715.90,2847.90,200.00}},
{"Verdant Bluffs", {930.20,-2488.40,-89.00,1249.60,-2006.70,110.90}},
{"Verdant Bluffs", {1073.20,-2006.70,-89.00,1249.60,-1842.20,110.90}},
{"Verdant Bluffs", {1249.60,-2179.20,-89.00,1692.60,-1842.20,110.90}},
{"Verdant Meadows", {37.00,2337.10,-3.00,435.90,2677.90,200.00}},
{"Verona Beach", {647.70,-2173.20,-89.00,930.20,-1804.20,110.90}},
{"Verona Beach", {930.20,-2006.70,-89.00,1073.20,-1804.20,110.90}},
{"Verona Beach", {851.40,-1804.20,-89.00,1046.10,-1577.50,110.90}},
{"Verona Beach", {1161.50,-1722.20,-89.00,1323.90,-1577.50,110.90}},
{"Verona Beach", {1046.10,-1722.20,-89.00,1161.50,-1577.50,110.90}},
{"Vinewood", {787.40,-1310.20,-89.00,952.60,-1130.80,110.90}},
{"Vinewood", {787.40,-1130.80,-89.00,952.60,-954.60,110.90}},
{"Vinewood", {647.50,-1227.20,-89.00,787.40,-1118.20,110.90}},
{"Vinewood", {647.70,-1416.20,-89.00,787.40,-1227.20,110.90}},
{"Whitewood Estates", {883.30,1726.20,-89.00,1098.30,2507.20,110.90}},
{"Whitewood Estates", {1098.30,1726.20,-89.00,1197.30,2243.20,110.90}},
{"Willowfield", {1970.60,-2179.20,-89.00,2089.00,-1852.80,110.90}},
{"Willowfield", {2089.00,-2235.80,-89.00,2201.80,-1989.90,110.90}},
{"Willowfield", {2089.00,-1989.90,-89.00,2324.00,-1852.80,110.90}},
{"Willowfield", {2201.80,-2095.00,-89.00,2324.00,-1989.90,110.90}},
{"Willowfield", {2541.70,-1941.40,-89.00,2703.50,-1852.80,110.90}},
{"Willowfield", {2324.00,-2059.20,-89.00,2541.70,-1852.80,110.90}},
{"Willowfield", {2541.70,-2059.20,-89.00,2703.50,-1941.40,110.90}},
{"Yellow Bell Station", {1377.40,2600.40,-21.90,1492.40,2687.30,78.00}},
// Main Zones
{"Los Santos", {44.60,-2892.90,-242.90,2997.00,-768.00,900.00}},
{"Las Venturas", {869.40,596.30,-242.90,2997.00,2993.80,900.00}},
{"Bone County", {-480.50,596.30,-242.90,869.40,2993.80,900.00}},
{"Tierra Robada", {-2997.40,1659.60,-242.90,-480.50,2993.80,900.00}},
{"Tierra Robada", {-1213.90,596.30,-242.90,-480.50,1659.60,900.00}},
{"San Fierro", {-2997.40,-1115.50,-242.90,-1213.90,1659.60,900.00}},
{"Red County", {-1213.90,-768.00,-242.90,2997.00,596.30,900.00}},
{"Flint County", {-1213.90,-2892.90,-242.90,44.60,-768.00,900.00}},
{"Whetstone", {-2997.40,-2892.90,-242.90,-1213.90,-1115.50,900.00}}
};
stock GetPlayerZone(playerid, value)
{
new zone[32],bool:getzone;
new Float:x1,Float:y1,Float:z1;
GetPlayerPos(playerid,x1,y1,z1);
for(new i=0; i<sizeof(gSAZones); i++)
{
switch(value)
{
case 0:
{
if(x1 >= gSAZones[i][SAZONE_AREA][0] && x1 <= gSAZones[i][SAZONE_AREA][3]
&& y1 >= gSAZones[i][SAZONE_AREA][1] && y1 <= gSAZones[i][SAZONE_AREA][4])
{
strmid(zone, gSAZones[i][SAZONE_NAME], 0, strlen(gSAZones[i][SAZONE_NAME]), 255);
getzone = true;
break;
}
}
}
}
if(!getzone) zone = "Неизвестно";
return zone;
}
[CENTER]
PHP:
CREATE TABLE IF NOT EXISTS `cases` (
`Number` int(8) NOT NULL,
`Victim` varchar(24) NOT NULL DEFAULT '',
`Killer` varchar(24) NOT NULL DEFAULT '-',
`Bodypart` int(11) NOT NULL,
`Reason` int(11) NOT NULL,
`Info` text NOT NULL,
`Leads` varchar(24) NOT NULL DEFAULT 'Не назначен'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
`Number` int(8) NOT NULL,
`Victim` varchar(24) NOT NULL DEFAULT '',
`Killer` varchar(24) NOT NULL DEFAULT '-',
`Bodypart` int(11) NOT NULL,
`Reason` int(11) NOT NULL,
`Info` text NOT NULL,
`Leads` varchar(24) NOT NULL DEFAULT 'Не назначен'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;