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

Помогите дописать плагин autostuck! снова...

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

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

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

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

Помогите дописать плагин autostuck! снова...

Сообщение slavok1717 » 18 дек 2012, 20:25

Взял плагин autostuck, добавил туда чтобы игроков одной команды не выталкивало и начались проблемы... Дело в том, что игроков выталкивает просто даже тогда, когда они делают sgs или sbj...

Помогите пожалуйста исправить плагин вот исходник:

[pawn]
  1. #include <amxmodx>

  2. #include <fun>

  3. #include <fakemeta>

  4.  

  5. new stuck[33]

  6. new cvar[3]

  7.  

  8. new maxplayers

  9.  

  10. new const Float:size[][3] = {

  11.         {0.0, 0.0, 1.0}, {0.0, 0.0, -1.0}, {0.0, 1.0, 0.0}, {0.0, -1.0, 0.0}, {1.0, 0.0, 0.0}, {-1.0, 0.0, 0.0}, {-1.0, 1.0, 1.0}, {1.0, 1.0, 1.0}, {1.0, -1.0, 1.0}, {1.0, 1.0, -1.0}, {-1.0, -1.0, 1.0}, {1.0, -1.0, -1.0}, {-1.0, 1.0, -1.0}, {-1.0, -1.0, -1.0},

  12.         {0.0, 0.0, 2.0}, {0.0, 0.0, -2.0}, {0.0, 2.0, 0.0}, {0.0, -2.0, 0.0}, {2.0, 0.0, 0.0}, {-2.0, 0.0, 0.0}, {-2.0, 2.0, 2.0}, {2.0, 2.0, 2.0}, {2.0, -2.0, 2.0}, {2.0, 2.0, -2.0}, {-2.0, -2.0, 2.0}, {2.0, -2.0, -2.0}, {-2.0, 2.0, -2.0}, {-2.0, -2.0, -2.0},

  13.         {0.0, 0.0, 3.0}, {0.0, 0.0, -3.0}, {0.0, 3.0, 0.0}, {0.0, -3.0, 0.0}, {3.0, 0.0, 0.0}, {-3.0, 0.0, 0.0}, {-3.0, 3.0, 3.0}, {3.0, 3.0, 3.0}, {3.0, -3.0, 3.0}, {3.0, 3.0, -3.0}, {-3.0, -3.0, 3.0}, {3.0, -3.0, -3.0}, {-3.0, 3.0, -3.0}, {-3.0, -3.0, -3.0},

  14.         {0.0, 0.0, 4.0}, {0.0, 0.0, -4.0}, {0.0, 4.0, 0.0}, {0.0, -4.0, 0.0}, {4.0, 0.0, 0.0}, {-4.0, 0.0, 0.0}, {-4.0, 4.0, 4.0}, {4.0, 4.0, 4.0}, {4.0, -4.0, 4.0}, {4.0, 4.0, -4.0}, {-4.0, -4.0, 4.0}, {4.0, -4.0, -4.0}, {-4.0, 4.0, -4.0}, {-4.0, -4.0, -4.0},

  15.         {0.0, 0.0, 5.0}, {0.0, 0.0, -5.0}, {0.0, 5.0, 0.0}, {0.0, -5.0, 0.0}, {5.0, 0.0, 0.0}, {-5.0, 0.0, 0.0}, {-5.0, 5.0, 5.0}, {5.0, 5.0, 5.0}, {5.0, -5.0, 5.0}, {5.0, 5.0, -5.0}, {-5.0, -5.0, 5.0}, {5.0, -5.0, -5.0}, {-5.0, 5.0, -5.0}, {-5.0, -5.0, -5.0}

  16. }

  17.  

  18. public plugin_init()

  19. {

  20.         register_plugin("Automatic Unstuck","1.5","NL)Ramon(NL + slavok1717")

  21.         cvar[0] = register_cvar("amx_autounstuck","1")

  22.         cvar[1] = register_cvar("amx_autounstuckeffects","1")

  23.         cvar[2] = register_cvar("amx_autounstuckwait","7")

  24.        

  25.         register_forward(FM_Touch,"fw_touch",0)

  26.        

  27.         maxplayers = get_maxplayers()

  28. }

  29.  

  30. public fw_touch(id)

  31. {

  32.         for(new i = 1; i <= maxplayers; i++)

  33.         {

  34.                 if(id == i || get_user_team(i) == get_user_team(id))

  35.                 {

  36.                         return PLUGIN_CONTINUE

  37.                 }

  38.                 else

  39.                 {

  40.                         checkstuck(i)

  41.                 }

  42.         }

  43.        

  44.         return PLUGIN_CONTINUE

  45. }

  46. public checkstuck(player)

  47. {

  48.         if(get_pcvar_num(cvar[0]) >= 1)

  49.         {

  50.                 static Float:origin[3]

  51.                 static Float:mins[3], hull

  52.                 static Float:vec[3]

  53.                 static o

  54.                 if (is_user_connected(player) && is_user_alive(player))

  55.                 {

  56.                         pev(player, pev_origin, origin)

  57.                         hull = pev(player, pev_flags) & FL_DUCKING ? HULL_HEAD : HULL_HUMAN

  58.                         if (!is_hull_vacant(origin, hull,player) && !get_user_noclip(player) && !(pev(player,pev_solid) & SOLID_NOT))

  59.                         {

  60.                                 ++stuck[player]

  61.                                 if(stuck[player] >= get_pcvar_num(cvar[2]))

  62.                                 {

  63.                                         pev(player, pev_mins, mins)

  64.                                         vec[2] = origin[2]

  65.                                         for (o=0; o < sizeof size; ++o)

  66.                                         {

  67.                                                 vec[0] = origin[0] - mins[0] * size[o][0]

  68.                                                 vec[1] = origin[1] - mins[1] * size[o][1]

  69.                                                 vec[2] = origin[2] - mins[2] * size[o][2]

  70.                                                 if (is_hull_vacant(vec, hull,player))

  71.                                                 {

  72.                                                         engfunc(EngFunc_SetOrigin, player, vec)

  73.                                                         effects(player)

  74.                                                         set_pev(player,pev_velocity,{0.0,0.0,0.0})

  75.                                                         o = sizeof size

  76.                                                 }

  77.                                         }

  78.                                 }

  79.                         }

  80.                         else

  81.                         {

  82.                                 stuck[player] = 0

  83.                         }

  84.                 }

  85.         }

  86. }

  87.  

  88. stock bool:is_hull_vacant(const Float:origin[3], hull,id) {

  89.         static tr

  90.         engfunc(EngFunc_TraceHull, origin, origin, 0, hull, id, tr)

  91.         if (!get_tr2(tr, TR_StartSolid) || !get_tr2(tr, TR_AllSolid)) //get_tr2(tr, TR_InOpen))

  92.                 return true

  93.        

  94.         return false

  95. }

  96.  

  97. public effects(id) {

  98.         if(get_pcvar_num(cvar[1])) {

  99.                 set_hudmessage(255,150,50, -1.0, 0.65, 0, 6.0, 1.5,0.1,0.7) // HUDMESSAGE

  100.                 show_hudmessage(id,"You should be unstucked now!") // HUDMESSAGE

  101.                 message_begin(MSG_ONE_UNRELIABLE,105,{0,0,0},id )      

  102.                 write_short(1<<10)   // fade lasts this long duration

  103.                 write_short(1<<10)   // fade lasts this long hold time

  104.                 write_short(1<<1)   // fade type (in / out)

  105.                 write_byte(20)            // fade red

  106.                 write_byte(255)    // fade green

  107.                 write_byte(255)        // fade blue

  108.                 write_byte(255)    // fade alpha

  109.                 message_end()

  110.         }

  111. }

  112.  
[/pawn]
- - -
Аватара пользователя
slavok1717
 
Сообщения: 498
Зарегистрирован: 15 дек 2012, 23:13
Благодарил (а): 213 раз.
Поблагодарили: 78 раз.

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

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

Сейчас этот форум просматривают: Google [Bot] и гости: 9