AMX MOD X
Воскресенье, 20.09.2020, 08:35:13



Приветствую Вас Гость | RSS
[ Главная ] [ player_spawn+set_user_gravity=runtime error 10 - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

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

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » player_spawn+set_user_gravity=runtime error 10
player_spawn+set_user_gravity=runtime error 10
bohdan4ikДата: Пятница, 30.10.2009, 18:09:52 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 10
Репутация: 0
Статус: Не в сети
Здравствуйте, ув. форумчане! Пришел к вам с боольшой такой проблемкой:
Есть плагин (самописный, ессесн) в нем обрабатывается событие возрождения игрока:
plugin_init:
Code
register_event("ResetHUD", "player_spawn", "be")

(или
Code
RegisterHam(Ham_Spawn, "player", "player_spawn", 1)
но результат тот же)
Код player_spawn:
Code
public player_spawn(id) {
   if (g_PlayerSomeFlag[id]) {
    set_user_gravity(id, get_user_gravity(id) - get_user_gravity(id) * 0.5) // doesn't work's
    set_user_rendering(id, kRenderGlow, 200, 255, 200, kRenderFxHologram, 25) // doesn't work's
    set_user_health(id, get_user_health(id) * 2) // doesn't work's
    if (!zp_get_user_zombie(id)) {
     set_user_footsteps(id, 1) // this work's
     cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM) // this work's
    }
   }
   return PLUGIN_CONTINUE
}

Почему бронь/бесшумные шаги выставляет, а гравитацию/отображение/жизни - нет?
З.Ы.: Время от времени все нормально, что меня и вводит в ступор.
upd:
Блин, и броню не всегда дает =\




Сообщение отредактировал bohdan4ik - Пятница, 30.10.2009, 18:37:40
 
AnOrangeJuiceДата: Пятница, 30.10.2009, 20:38:05 | Сообщение # 2
Лейтенант
Группа: Пользователи
Сообщений: 62
Репутация: 2
Статус: Не в сети
лучше ham_spawn, чем resetHUD

Code

public player_spawn(id) {
     if (g_PlayerSomeFlag[id]) {
      set_user_gravity(id, 0.75)
      set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,160)
      set_user_health(id, 200)
      if (!zp_get_user_zombie(id)) {
       set_user_footsteps(id, 1) // this work's
       cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM) // this work's
      }
     }
     return PLUGIN_CONTINUE
}

если надо glow, то замени строку с set_user_rendering на эту:

Code
                set_user_rendering(id,kRenderFxGlowShell,200,255,200,kRenderNormal,25)


Сообщение отредактировал AnOrangeJuice - Пятница, 30.10.2009, 20:42:13
 
bohdan4ikДата: Пятница, 30.10.2009, 21:53:15 | Сообщение # 3
Рядовой
Группа: Пользователи
Сообщений: 10
Репутация: 0
Статус: Не в сети
AnOrangeJuice, вы, вероятно, немного не поняли: amx выдает ошибку времени исполнения с кодом 10, что значит "неверный игрок"
Quote
L 10/30/2009 - 21:52:41: [FUN] Invalid player 1
L 10/30/2009 - 21:52:41: [AMXX] Displaying debug trace (plugin "some_plugin.amxx")
L 10/30/2009 - 21:52:41: [AMXX] Run time error 10: native error (native "set_user_gravity")
L 10/30/2009 - 21:52:41: [AMXX] [0] some_plugin.sma::player_spawn (line 82)

З.Ы.: Мне уже начинает казаться, что у меня какой-то заколдованный amx/hlds...




Сообщение отредактировал bohdan4ik - Пятница, 30.10.2009, 22:05:46
 
NiHiLaNThДата: Пятница, 30.10.2009, 22:37:57 | Сообщение # 4
Рядовой
Группа: Пользователи
Сообщений: 6
Репутация: 0
Статус: Не в сети
в player_spawn ( id ) ты не делаешь проверки

Code

if ( !is_user_alive ( id ) || !is_user_connected ( id ))
                  return
 
AnOrangeJuiceДата: Пятница, 30.10.2009, 22:45:10 | Сообщение # 5
Лейтенант
Группа: Пользователи
Сообщений: 62
Репутация: 2
Статус: Не в сети
Quote (NiHiLaNTh)
в player_spawn ( id ) ты не делаешь проверки

автор сам бы додумался мб -_-
 
bohdan4ikДата: Пятница, 30.10.2009, 23:29:08 | Сообщение # 6
Рядовой
Группа: Пользователи
Сообщений: 10
Репутация: 0
Статус: Не в сети
Quote (NiHiLaNTh)
в player_spawn ( id ) ты не делаешь проверки

Code

if ( !is_user_alive ( id ) || !is_user_connected ( id ))
return


Ну, начнем с того, что бронь выдает. И флаги у нас "be", в случае с ResetHUD (при указании флага "e", если вы не знаете, событие будет обработано только когда пользователь будет доступен, следовательно, зачем несколько раз повторять одну и ту же процедуру?).
Quote (AnOrangeJuice)
Quote (NiHiLaNTh)
в player_spawn ( id ) ты не делаешь проверки

автор сам бы додумался мб -_-


Пробовал еще до создания темы (почему я ее и создал, этот amxmodx не укладывается в мое сознание, особенно если учесть скудную документацию). Результат тот же.
З.Ы.: return в функции должен быть один и только один. Читаем good coding style guides.


 
AnOrangeJuiceДата: Суббота, 31.10.2009, 01:40:01 | Сообщение # 7
Лейтенант
Группа: Пользователи
Сообщений: 62
Репутация: 2
Статус: Не в сети
Quote
З.Ы.: return в функции должен быть один и только один. Читаем good coding style guides.
да ты чоооооооо O__O

Code
RegisterHam(Ham_Spawn, "player", "player_spawn", 1)

Code

public player_spawn(id) {
      if (is_user_alive(id), g_PlayerSomeFlag[id]) {
       set_user_gravity(id, 0.75)
       set_user_rendering(id,kRenderFxGlowShell,200,255,200,kRenderNormal,25)
       set_user_health(id, 200)
       if (!zp_get_user_zombie(id)) {
        //set_user_footsteps(id, 1)
        cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM)
        }
      }
      return PLUGIN_CONTINUE
}


Сообщение отредактировал AnOrangeJuice - Суббота, 31.10.2009, 01:43:56
 
bohdan4ikДата: Суббота, 31.10.2009, 09:51:42 | Сообщение # 8
Рядовой
Группа: Пользователи
Сообщений: 10
Репутация: 0
Статус: Не в сети
Простите, но читать чужие посты уже не модно, да?
Quote (bohdan4ik)

Пробовал еще до создания темы (почему я ее и создал, этот amxmodx не укладывается в мое сознание, особенно если учесть скудную документацию). Результат тот же.

Пришел за советом, блин...


 
PomanoBДата: Суббота, 31.10.2009, 11:27:17 | Сообщение # 9
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Поставь set_task на 0.1 секунды

http://romanov4400.mybrute.com
 
bohdan4ikДата: Суббота, 31.10.2009, 12:42:00 | Сообщение # 10
Рядовой
Группа: Пользователи
Сообщений: 10
Репутация: 0
Статус: Не в сети
Quote (PomanoB)
Поставь set_task на 0.1 секунды

Не поверите, ждал этого ответа. Спасибо, первый ответ по существу. Но, увы...
Code
new g_TaskID

public plugin_init() {
  register_plugin("Some module", "0.1", "bohdan4ik")
   
  RegisterHam(Ham_Spawn, "player", "player_spawn_task", 1)
//    register_event("CurWeapon", "player_spawn", "be") // Если реагировать на смену оружия, то все, падла, выставляет >_<
}

public player_spawn_task(id) {
  new args[1]
  args[0] = id
  set_task(0.5, "player_spawn", g_TaskID, args, 1) // Мб, я что-то не так понимаю?
  g_TaskID += 1
}

public player_spawn(id) {
  if (is_user_alive(id)) {
   set_user_gravity(id, 0.5)
   client_print(id, print_chat, "Fck u, Billy, twice!") // Дело делает, но гравитация стандартная >_<
  }
  return PLUGIN_CONTINUE
}

З.Ы.: Я вот сейчас думаю: может, основать пока плагин на CurWeapon, а потом уже, в лучшие времена, поломать еще мозг и сделать, все-таки, по-человечески? Просто сил нет уже, если бы мозг мог высохнуть, то он бы и высох >_<
З.З.Ы.: Под действие бонусов будут попадать 2-3 человека, максимум, так что, не думаю, что нагрузка окажется намного выше, чем обычно.


 
PomanoBДата: Суббота, 31.10.2009, 13:14:12 | Сообщение # 11
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Code

public player_spawn_task(id) {  
  set_task(0.5, "player_spawn", id)
}


http://romanov4400.mybrute.com
 
bohdan4ikДата: Суббота, 31.10.2009, 13:29:22 | Сообщение # 12
Рядовой
Группа: Пользователи
Сообщений: 10
Репутация: 0
Статус: Не в сети
Quote (PomanoB)
Code

public player_spawn_task(id) {
set_task(0.5, "player_spawn", id)
}


Чудеса, блин, науки и техники =\
Только что набрел на этот пример в вики, но так и не смог понять: почему мы вставляем id игрока на место, где должен располагаться, согласно документации, уникальный идентификатор задания?.. Мой мозг... Мой бедный мозг...

upd:

Да, работает. Вы сохранили мне еще несколько миллионов нервных клеток :)

upd1:

Не то, что некоторые, блин...




Сообщение отредактировал bohdan4ik - Суббота, 31.10.2009, 13:42:06
 
PomanoBДата: Суббота, 31.10.2009, 14:55:07 | Сообщение # 13
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Потому что первым параметром в функцию таска передается его уникальный номер)
И, кстати, номер не обязан быть уникальным


http://romanov4400.mybrute.com
 
bohdan4ikДата: Суббота, 31.10.2009, 15:03:01 | Сообщение # 14
Рядовой
Группа: Пользователи
Сообщений: 10
Репутация: 0
Статус: Не в сети
Quote (PomanoB)
Потому что первым параметром в функцию таска передается его уникальный номер)

Тьфу, блин, я имел такое подозрение, но лень было что-либо проверять (точнее проверял, но, видимо, кол-ва игроков было недостаточно для вычисления "бага" :) ). Надеялся, что тут действуют те же правила, что и в "нормальных" ЯП)
Quote (PomanoB)
И, кстати, номер не обязан быть уникальным

А вот эта фраза ввела меня в ступор, ибо это прямая противоположность того, что я прочитал в документации)


 
PomanoBДата: Суббота, 31.10.2009, 16:30:20 | Сообщение # 15
Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Репутация: 70
Статус: Не в сети
Я про то, что не будет никаких конфликтов, ошибок, если сделать два таска с одним идентификатором.

http://romanov4400.mybrute.com
 
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » player_spawn+set_user_gravity=runtime error 10
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2020