AMX MOD X
Суббота, 18.05.2024, 15:38:02



Приветствую Вас Гость | RSS
[ Главная ] [ Как вычеслить прикосновление к teleport'у? - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » Как вычеслить прикосновление к teleport'у? (Подскажите код, plz)
Как вычеслить прикосновление к teleport'у?
He_npeTДата: Понедельник, 02.07.2007, 00:11:26 | Сообщение # 1
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Репутация: 7
Статус: Не в сети
Как вычеслить прекоснодлён ли index к телепорту? Я пробывал слейдующий код, но никакого результата...

Code

static entname[33];
pev(pev(id, pev_groundentity), pev_classname, entname, 32);
if(equal(entname, "trigger_teleport")) {
...
}


My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot

Сообщение отредактировал He_npeT - Понедельник, 02.07.2007, 00:36:46
 
slogicДата: Понедельник, 02.07.2007, 13:40:14 | Сообщение # 2
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
Code

public plugin_init()
{
   g_iMaxPlayers = global_get(glb_maxClients)
   register_forward(FM_Touch, "onTouch")
}

public onTouch(pentTouched, pentOther)
{
   if(pentTouched && pev_valid(pentTouched) && 1 <= pentOther <= g_iMaxPlayers)
   {
     static sClassname[18]
     pev(pentTouched, pev_classname, sClassname, sizeof(sClassname)-1)
     if(equal(sClassname, "trigger_teleport"))
    {
       log_amx("player[%d] touched teleport[%d]", pentOther, pentTouched)
    }
      
   }

   return FMRES_IGNORED  
}
 
He_npeTДата: Вторник, 03.07.2007, 14:30:23 | Сообщение # 3
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Репутация: 7
Статус: Не в сети
А можно какнибудь, если тот index NOT_SOLID, то-есть если set_pev(id, pev_solid, SOLID_NOT) было над ним проведено...

My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot

Сообщение отредактировал He_npeT - Вторник, 03.07.2007, 14:30:51
 
slogicДата: Вторник, 03.07.2007, 16:07:17 | Сообщение # 4
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
Ну поставь всем объектам "trigger_teleport" SOLID_TRIGGER.
 
He_npeTДата: Вторник, 03.07.2007, 16:34:26 | Сообщение # 5
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Репутация: 7
Статус: Не в сети
Как понять? Зделал над игроком это в общем..

P.S. После 3 минут hlds кидет error: "tigger is clipping list" и отключается.


My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot

Сообщение отредактировал He_npeT - Вторник, 03.07.2007, 17:45:31
 
slogicДата: Вторник, 03.07.2007, 21:03:28 | Сообщение # 6
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
У самого объекта trigger_teleport выстави заченние атрибута solid в SOLID_TRIGGER во время его спавна (ВЕН в другом топике сказал, когда удалять, вот вместо удаления установи это свойство - только уже лучше в Post версии обработчика).
 
He_npeTДата: Среда, 04.07.2007, 04:32:12 | Сообщение # 7
Генерал-майор
Группа: Скриптеры
Сообщений: 292
Репутация: 7
Статус: Не в сети
К сажелению я не на стоко опытен, чтобы работать с этими так называемыми атрибытами. =Р Мне удалость найти другой способ, но возникла беда со многоугольниками...
Code

public fm_startframe() {
...
   new player = id;
   new ent, Float:orig[3];
   static classname[33];
   pev(player, pev_origin, orig);
   while((ent = engfunc(EngFunc_FindEntityInSphere, ent, orig, 200.0)) != 0) {
    pev(ent, pev_classname, classname, 32);
    if(equali(classname, "trigger_teleport"))
     {
     if(_check_collision(player, ent))
     {
      //client_print(player, print_chat, "[KZT] Testing if needed to teleport");
      static entname[33];
      pev(pev(player, pev_groundentity), pev_classname, entname, 32);
      if (pev(player, pev_flags)&FL_ONGROUND && !IsPlayerSolid(player) && !equal(entname, "func_door"))
      {
       fake_touch(ent, player);
       //client_print(player, print_chat, "[KZT] Teleported (fake) [normal]");
      }
      else if (pev(player, pev_flags)&FL_INWATER && !IsPlayerSolid(player))
      {
       fake_touch(ent, player);
       //client_print(player, print_chat, "[KZT] Teleported (fake) [water]");
      }
      break;
     }
    }
   }
...
}

stock _check_collision ( entity1, entity2 )
{
  // supplied with invalid entities
  if( !pev_valid(entity1) || !pev_valid(entity2) )
   return 0;

  // retrieve absolutes
  static Float:absmin1[3], Float:absmax1[3], Float:absmin2[3], Float:absmax2[3];

  pev(entity1, pev_absmin, absmin1);
  pev(entity1, pev_absmax, absmax1);
  pev(entity2, pev_absmin, absmin2);
  pev(entity2, pev_absmax, absmax2);

  // not in bounds
  if( absmin1[0] > absmax2[0] ||
      absmin1[1] > absmax2[1] ||
      absmin1[2] > absmax2[2] ||
      absmax1[0] < absmin2[0] ||
      absmax1[1] < absmin2[1] ||
      absmax1[2] < absmin2[2] )
      return 0;

  return 1;
}

IsPlayerSolid(id)
{
  if(pev(id, pev_solid) == SOLID_BBOX)
   return 1;

  return 0;
}

P.S. Извеняюсь за неприравнение.


My CS 1.6 Non-Steam AmXX Server! (HLSW) Play with steam - get autorslot

Сообщение отредактировал He_npeT - Среда, 04.07.2007, 04:33:34
 
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » Как вычеслить прикосновление к teleport'у? (Подскажите код, plz)
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2024