sasa50
Умник
Здравствуйте, в этом уроке я расскажу вам как создать ворота с паролем, приступим:
Для начала нам нужно добавить ко всем new:
и ко всем forward
Потом в enum pInfo есть ли эта строчка:
,если нет, то добавьте
После этого создаем ворота в public OnGameModeInit:
Где 980,-2666.4956054688,578.00079345703,16.234399795532,0,0,0 Это коорденаты и поворот ворот как будут открываться
Далее добавляем команду в public OnPlayerCommandText:
}Далее идем в public OnDialogResponse и добавляем это:
В самый конец добавляем это:
Для начала нам нужно добавить ко всем new:
PHP:
new passwordtry[MAX_PLAYERS];//
new tgate;//
new gate[2];//
new timegate[2];//
new PlayerTazeTime[MAX_PLAYERS];//
new BigEar[MAX_PLAYERS];//Потом ко всем forward:
PHP:
forward GateClose();//
forward ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5);//
PHP:
pMasked
После этого создаем ворота в public OnGameModeInit:
PHP:
gate[1] = CreateObject(980,-2666.4956054688,578.00079345703,16.234399795532,0,0,0); //
Далее добавляем команду в public OnPlayerCommandText:
PHP:
if(tgate == 0)
{
if(strcmp(cmdtext,"/gate",true)==0)
{
if(PlayerToPoint(2,playerid,-2671.8264,577.6049,14.4593))
{
ShowPlayerDialog(playerid,110,DIALOG_STYLE_INPUT,"Password ","Введите пароль, чтобы открыть ворота","Принять","Отмена");
return 1;
}
else
{
MoveObject(gate[1], -2666.4956054688,578.00079345703,16.234399795532, 1.5);
tgate=0;
return 1;
}
}
PHP:
new sendername[MAX_PLAYER_NAME];
new string[128];
if(dialogid == 110)
{
new password;
password = strval(inputtext);
if(!strval(inputtext))
{
ShowPlayerDialog(playerid, 110, DIALOG_STYLE_INPUT, "Введите пароль", "Введите пароль, чтобы открыть двери:", "Ввод", "Отмена");
return 1;
}
if(password == 7777)// Это какой пароль должен ввести игрок
{
GetPlayerName(playerid, sendername, sizeof(sendername));
if(PlayerInfo[playerid][pMasked] == 1) { format(string, sizeof(string), "* Незнакомец вводит пароль."); }
else{ format(string, sizeof(string), "* %s вводит пароль", sendername); }
ProxDetector(15.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
MoveObject(gate[1], -2666.4956054688,578.00079345703,10.234399795532, 1.5);
tgate = 1;
timegate[1] = SetTimer("GateClose", 10000, 0);//
SendClientMessage(playerid, COLOR_GREEN,"*Ворота закроются через 10 секунд.");
}
else
{
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "* Замок пронзительно запищал (( %s ))", sendername);
ProxDetector(15.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
ShowPlayerDialog(playerid, 110, DIALOG_STYLE_INPUT, "INFO", "Пароль введён неверно!\nПовторите попытку или проваливайте отсюда!", "Приять", "Отмена");
passwordtry[playerid]++;
if(passwordtry[playerid] >=3)
{
SendClientMessage(playerid, COLOR_GREY, "Вас ударило током!");
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "* На замке срабатывает защита от взлома (( %s ))", sendername);
ProxDetector(15.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
PlayerTazeTime[playerid] = 1;
passwordtry[playerid] = 0;
}
}
return 1;
}
PHP:
public GateClose()
{
MoveObject(gate[1],-2666.4956054688,578.00079345703,16.234399795532, 2.0);
tgate = 0;
return 1;
}
public ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5)
{
if(IsPlayerConnected(playerid))
{
new Float:posx, Float:posy, Float:posz;
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
//radi = 2.0; //Trigger Radius
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(!BigEar[i])
{
GetPlayerPos(i, posx, posy, posz);
tempposx = (oldposx -posx);
tempposy = (oldposy -posy);
tempposz = (oldposz -posz);
//printf("DEBUG: X:%f Y:%f Z:%f",posx,posy,posz);
new wp = GetPlayerVirtualWorld(playerid);
new wi = GetPlayerVirtualWorld(i);
if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16)) && wp == wi)
{
SendClientMessage(i, col1, string);
}
else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8)) && wp == wi)
{
SendClientMessage(i, col2, string);
}
else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4)) && wp == wi)
{
SendClientMessage(i, col3, string);
}
else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2)) && wp == wi)
