Русское сообщество по скриптингу

Сохранение/Загрузка позиции

Все вопросы по скриптингу для SourceMod, помощь в редактировании плагинов.
Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптингу для SourceMod.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [pawn], в противном случае, если тег [pawn] не отображает ваш код, можно использовать тег [code].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sp плагина.

Сохранение/Загрузка позиции

Сообщение 1_fps » 18 окт 2014, 09:23

Подскажите пожалуйста, вот мой код:
[pawn]
  1.  

  2. public TeleportMenuHandler(Handle:TeleportMenu, MenuAction:action, client, option)

  3. {

  4.         if (action == MenuAction_Select)

  5.         {

  6.                 decl String:info[32], Float:origin[3], Float:angles[3]

  7.                 GetMenuItem(TeleportMenu, option, info, sizeof(info))

  8.                 if(option == 0)

  9.                 {

  10.                         GetClientAbsOrigin(client, origin)

  11.                         GetClientEyeAngles(client, angles)

  12.                         DisplayMenu(Handle:TeleportMenu, client, 0)

  13.                         PrintToChat(client, "\x01 \x09[\x04Training Menu\x09] \x02Позиция сохранена")

  14.                 }

  15.                 else if(option == 1)

  16.                 {

  17.                         TeleportEntity(client, origin, angles, NULL_VECTOR)

  18.                         DisplayMenu(Handle:TeleportMenu, client, 0)

  19.                         PrintToChat(client, "\x01 \x09[\x04Training Menu\x09] \x02Позиция загружена")

  20.                 }

  21.  
[/pawn]
Суть вопроса, сохраняется и загружается позиция глобально, тобишь если 1 игрок сохранил, а другой зажал загрузить позицию то 2 игрока кинет на позицию сохраненную первым игроком.
Вопрос, как избежать этого? сделать их для каждого игрока индивидуальными?
Аватара пользователя
1_fps
 
Сообщения: 35
Зарегистрирован: 22 июн 2013, 19:20
Благодарил (а): 7 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6
Counter-Strike: GO

Re: Сохранение/Загрузка позиции

Сообщение Stimul » 18 окт 2014, 12:38

Попробуй так:
[pawn]
  1. public TeleportMenuHandler(Handle:TeleportMenu, MenuAction:action, client, option)

  2. {

  3.         if(action == MenuAction_Select)

  4.         {

  5.                 decl String:info[32], Float:origin[33][3], Float:angles[33][3]

  6.                 GetMenuItem(TeleportMenu, option, info, sizeof(info))

  7.                

  8.                 if(option == 0)

  9.                 {

  10.                         GetClientAbsOrigin(client, origin[client])

  11.                         GetClientEyeAngles(client, angles[client])

  12.                         DisplayMenu(Handle:TeleportMenu, client, 0)

  13.                         PrintToChat(client, "\x01 \x09[\x04Training Menu\x09] \x02Позиция сохранена")

  14.                 }

  15.                 else if(option == 1)

  16.                 {

  17.                         TeleportEntity(client, origin[client], angles[client], NULL_VECTOR)

  18.                         DisplayMenu(Handle:TeleportMenu, client, 0)

  19.                         PrintToChat(client, "\x01 \x09[\x04Training Menu\x09] \x02Позиция загружена")

  20.                 }

  21.         }

  22. }
[/pawn]
Аватара пользователя
Stimul
 
Сообщения: 3573
Зарегистрирован: 04 янв 2012, 19:51
Благодарил (а): 192 раз.
Поблагодарили: 1147 раз.
Опыт программирования: Больше трех лет

Re: Сохранение/Загрузка позиции

Сообщение 1_fps » 18 окт 2014, 12:54

Stimul, Спасибо.
Господа еще такой вопрос уже не по этой теме конечно, н опросто чтоыб не разводить кучу тем по мелочам. Вот код из менюшки на noclip:
[pawn]
  1.  

  2. else if(option == 2)

  3.                 {

  4.                         if (NoClip[client] == false)

  5.                         {

  6.                                 SetEntityMoveType(client, MOVETYPE_NOCLIP)

  7.                                 PrintToChat(client, "\x01 \x09[\x04Training Menu\x09] \x02Режим полета: \x04Включен")

  8.                                 NoClip[client] = true

  9.                                 DisplayMenu(Handle:TeleportMenu, client, 0)

  10.                         }

  11.                         else if(NoClip[client] == true)

  12.                         {

  13.                                 SetEntityMoveType(client, MOVETYPE_WALK)

  14.                                 PrintToChat(client, "\x01 \x09[\x04Training Menu\x09] \x02Режим полета: \x04Выключен")

  15.                                 NoClip[client] = false

  16.                                 DisplayMenu(Handle:TeleportMenu, client, 0)

  17.  
[/pawn]
Вот код менюшки на смену команды:
[pawn]
  1.  

  2. public Action:TeamsMenu(client, args)

  3. {

  4.         new Handle:TeamMenu = CreateMenu(TeamMenuHandler)

  5.         SetMenuTitle(TeamMenu, "Team Menu")

  6.  

  7.         AddMenuItem(TeamMenu, "ct", "CT")

  8.         AddMenuItem(TeamMenu, "tt", "TT")

  9.         AddMenuItem(TeamMenu, "spec", "SPEC")

  10.  

  11.         SetMenuExitBackButton(TeamMenu, false)

  12.         SetMenuExitButton(TeamMenu, true)

  13.  

  14.         DisplayMenu(TeamMenu, client, MENU_TIME_FOREVER)

  15.  

  16.         return Plugin_Handled

  17. }

  18.  

  19. public TeamMenuHandler(Handle:TeamMenu, MenuAction:action, client, option)

  20. {

  21.         if (action == MenuAction_Select)

  22.         {

  23.                 decl String:info[32]

  24.                 GetMenuItem(TeamMenu, option, info, sizeof(info))

  25.                 if(option == 0)

  26.                 {

  27.                         ChangeClientTeam(client, 3)

  28.                         Teleport(client, option)

  29.                         CS_RespawnPlayer(client)

  30.                         NoClip[client] = false

  31.                 }

  32.                 else if(option == 1)

  33.                 {

  34.                         ChangeClientTeam(client, 2)

  35.                         Teleport(client, option)

  36.                         CS_RespawnPlayer(client)

  37.                         NoClip[client] = false

  38.                 }

  39.                 else if(option ==2)

  40.                 {

  41.                         NoClip[client] = false

  42.                         ChangeClientTeam(client, 1)

  43.                         TeamsMenu(client, option)

  44.                 }

  45.         }

  46. }
[/pawn]
Суть в чем, при выходе в спектора, спектатор блокирует движение игрока за которым наблюдает, в чем проблема?
Аватара пользователя
1_fps
 
Сообщения: 35
Зарегистрирован: 22 июн 2013, 19:20
Благодарил (а): 7 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6
Counter-Strike: GO


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1