Текущая версия SA-MP: 0.3.7


IP: 77.220.180.96:7777
  Новые сообщения · Поиск
  • Страница 1 из 1
  • 1
Модератор форума: KaTacTpOqpa  
Проблема с воротами.
Demetrius Сообщение # 1  | 12:39:52
VIP-пользователи
Сообщений: 1192
Репутация: 158
Сделал себе в мод ворота, открываются и закрываются они по командам, и вдруг наткнулся на форуме каком-то как сделать ворота чтобы когда к ним подъезжаешь ворота сами открывались, и я это сделал, только для определенной фракции (Админской фракции), и у меня возникла проблема с PlayerToPoint, выдает ошибки... и проблема с PlayerInfo... вот весь код:

Сначала поставил где все форварды:

Code

forward GateClose1();

Потом где все new:

Code

new gate1;  

Потом добавил в public OnGameModeInit() :

Code
gate1= CreateObject(968,2720.087,-2405.350,14.175,0.0,0.0,90.000);

Потом в public OnPlayerCommandText(playerid, cmdtext[]) добавил:

Code
}
  if(strcmp(cmdtext,"/opengateadm",true) == 0)//команда на открытие
  {
  if (PlayerToPoint(7.0,playerid, 2720.067,-2405.355,21.328))//куда ворота открыватся будут
  {
  if(PlayerInfo[playerid][pMember] == 9 || PlayerInfo[playerid][pLeader] == 9)//это фракция, чтоб другие кроме нее не смог открыть(фракция Админов)
  {
  SetObjectRot(gate1,0.0,0.0,90.000);// тут последние 3 значения у открытой воротины
  SetTimer("GateClose1", 5000, 0);//таймер на закрытие
  SendClientMessage(playerid, COLOR_WHITE, "...Ворота Admin's Zone открыты на 5 секунд! Проезжайте!");//мескага
  }
  else
  {
  SendClientMessage(playerid, COLOR_RED, " Вы не Админ!!!");//ну дальше понятно...
  }
  else
  {
  SendClientMessage(playerid, COLOR_RED, " Вы не у шлагбаума!!!");
  }
  return 1;

Всамый конец добавил паблик:

Code
public GateClose1()
{
SetObjectRot(gate1 ,0.0,0.0,90.000);
}
}

Выдает ошибки:

Code
C:\Documents and Settings\Пользователь\Мои документы\[SAS]\Server\gamemodes\mod.pwn(914) : warning 225: unreachable code//это я сам не понял вроде все правильно
C:\Documents and Settings\Пользователь\Мои документы\[SAS]\Server\gamemodes\mod.pwn(934) : error 004: function "PlayerToPoint" is not implemented//ошибка в PlayerToPoint
C:\Documents and Settings\Пользователь\Мои документы\[SAS]\Server\gamemodes\mod.pwn(936) : error 017: undefined symbol "PlayerInfo"//ошибка в PlayerInfo
C:\Documents and Settings\Пользователь\Мои документы\[SAS]\Server\gamemodes\mod.pwn(936) : warning 215: expression has no effect//варниг мною не понятный
C:\Documents and Settings\Пользователь\Мои документы\[SAS]\Server\gamemodes\mod.pwn(936) : error 001: expected token: ";", but found "]"//тоже непонял как исправить
C:\Documents and Settings\Пользователь\Мои документы\[SAS]\Server\gamemodes\mod.pwn(936) : error 029: invalid expression, assumed zero//функция неработает незнаю почему
C:\Documents and Settings\Пользователь\Мои документы\[SAS]\Server\gamemodes\mod.pwn(936) : fatal error 107: too many error messages on one line//и фатал ерор

Compilation aborted.Pawn compiler 3.2.3664     Copyright (c) 1997-2006, ITB CompuPhase

5 Errors.


Помагите пожалуста!!!


Sweet >>> Armin >>> Demetrius

SA:MP >> MTA:SA >> IRL
Polcar Сообщение # 2  | 12:53:08
Руководитель проекта SM
Администраторы
Сообщений: 788
Репутация: 323
ты неправильно сделал функцию PlayerToPoint, там недолжно быть playerid вроде, эта функция короче делает, если ты заехал на эти координаты функции то дам вводи эту команду, также могут быть в другом ошибки, это же гф мод



Demetrius Сообщение # 3  | 14:53:46
VIP-пользователи
Сообщений: 1192
Репутация: 158
убрал playerid, все те же ошибки... списал с форума...

Sweet >>> Armin >>> Demetrius

SA:MP >> MTA:SA >> IRL
Polcar Сообщение # 4  | 15:16:29
Руководитель проекта SM
Администраторы
Сообщений: 788
Репутация: 323
там вроде если немного потыркать, знаки { } поубирать или порасставить по другому то я думаю исправить проблему можно

я сам с этими функциями неработает, точно немогу сказать, только с PlayerToPoint работал. у меня всё получалось




Polcar Сообщение # 5  | 15:16:53
Руководитель проекта SM
Администраторы
Сообщений: 788
Репутация: 323
спиши с годфазера или там посмотри



Demetrius Сообщение # 6  | 08:04:44
VIP-пользователи
Сообщений: 1192
Репутация: 158
Спс, но я нашел другой способ:

Для НАчала добавить где все new:

Code
new gate;    
new OpenGate[MAX_PLAYERS];  

Потом добавим сами ворота:

Code
gate = CreateObject(object_ID, closed_X, closed_Y, closed_Z, closed_rad_X, closed_rad_Y, closed_rad_Z);//тут напишите свои кординаты  

Потом к форвардам добавляем:

Code
forward CheckGate();  

Потом добавим в OnGameModInit таймер:

Code
SetTimer("CheckGate", 500, true);

И создаем сам паблик:

Code
public CheckGate()   
{   
for(new i = 0; i < GetMaxPlayers(); i++)   
{   
if(!IsPlayerConnected(i)) continue;   
if (PlayerInfo[i][pLeader] == 1 || PlayerInfo[i][pMember] == 1) //эту строчку я заменил на if (IsPlayerAdmin(i)) { потому что у меня с этим кодом возникла проблема
{   
if(PlayerToPoint(10.0, i, closed_X, closed_Y, closed_Z) && OpenGate[i] == 0) //тут засовываем координаты закрытых воротclosed_X..Y..Z
{   
MoveObject(c_gate, open_X, open_Y, open_Z); //тут засовываем координаты открытых ворот open_X..Y..Z, c_gate -   
это название которое мы дали в  new gate;  , следовательно вместо c_gate пишем gate
OpenGate[i] = 1;   
}   
else if(!PlayerToPoint(10.0, i, closed_X, closed_Y, closed_Z) && OpenGate[i] == 1) //тут координаты закрытых ворот вместо closed_X..Y..Z
{   
MoveObject(c_gate, closed_X, closed_Y, closed_Z); //тут координаты закрытых ворот вместо closed_X..Y..Z
OpenGate[i] = 0;   
}   
}   
}   
}  

Вот и все. У меня никаких ероров и варнингов небыло.

Тема закрыта


Sweet >>> Armin >>> Demetrius

SA:MP >> MTA:SA >> IRL
  • Страница 1 из 1
  • 1
Поиск: