Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

Player animanion

Статус пользователя cyber1741
сообщение 8.6.2014, 15:33
Сообщение #1


Стаж: 13 лет

Сообщений: 1473
Благодарностей: 222
Полезность: 95

В общем скачал плагин
Прикрепленный файл  3371_Player_Animatio.rar ( 40,45 килобайт ) Кол-во скачиваний: 18

вошел в меню плагина выбрал действие и сервер упал с ошибкой Server shutting down
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Bloo
сообщение 8.6.2014, 15:42
Сообщение #2


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

cyber1741, исходник выложите, а не архив прикрепляйте, кому нужно его качать и распаковывать?
Логи где? Модель то закинули на сервер?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя cyber1741
сообщение 8.6.2014, 15:46
Сообщение #3


Стаж: 13 лет

Сообщений: 1473
Благодарностей: 222
Полезность: 95

Скрытый текст
Код
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <xs>

#define PLUGIN "Player Animations Menu"
#define VERSION "0.1.1"
#define AUTHOR "code PomanoB and translite ScrooleR"

#define ANIM_MODEL "models/anim.mdl"

enum _:PLAYER_DATA
{
   ENT_CAM,
   ENT_MODEL,
   ENT_ANIM,
   ANIM_PLAYING
}

enum _:SEQ_DESC
{
   MODEL[64],
   SEQ_LABEL[33],
   SEQ_FPS,
   SEQ_FRAMES,
   SEQ_FRAMERATE
}

new g_allocString

new g_playerData[33][PLAYER_DATA]

new Array:g_animData

new g_animMenu

new g_cvarAccessFlag

public plugin_init()
{
   register_plugin(PLUGIN, VERSION, AUTHOR)
  
   register_clcmd("say /dcm", "cmdAnim")

   register_forward(FM_CmdStart, "fwdCmdStart", 1)
  
   RegisterHam(Ham_Killed, "player", "fwdPlayerKilled", 1)

   g_allocString = engfunc(EngFunc_AllocString, "info_target")
  
   g_animData = ArrayCreate(SEQ_DESC)
  
   g_animMenu = menu_create("\yМеню танцев", "animMenuHandler")
  
   g_cvarAccessFlag = register_cvar("anim_menu_access_flag", "a")
  
   loadModel(ANIM_MODEL)
}

public plugin_precache()
{
   precache_model(ANIM_MODEL)
}

public plugin_end()
{
   ArrayDestroy(g_animData)
}

public loadModel(model[])
{
   new file = fopen(model, "rt")
   new numseq, seqindex, i, Float:framerate
  
   new seqDesc[SEQ_DESC]
  
   fseek(file, 164, SEEK_SET)
   fread(file, numseq, BLOCK_INT)
   fread(file, seqindex, BLOCK_INT)
  
   for(i = 0; i < numseq; i++)
   {
      fseek(file, seqindex + 176*i, SEEK_SET)
      fread_blocks(file, seqDesc[SEQ_LABEL], 32, BLOCK_CHAR)
      
      fread(file, seqDesc[SEQ_FPS], BLOCK_INT)
  
      fseek(file, 20, SEEK_CUR)
      fread(file, seqDesc[SEQ_FRAMES], BLOCK_INT)
      
      framerate = 256.0 * Float:seqDesc[SEQ_FPS] / (seqDesc[SEQ_FRAMES] - 1)
      
      seqDesc[SEQ_FRAMERATE] = _:framerate
      
      ArrayPushArray(g_animData, seqDesc)
      
      menu_additem(g_animMenu, seqDesc[SEQ_LABEL], "")
   }
  
   fclose(file)
}

public client_putinserver(id)
{
   if (!g_playerData[id][ENT_MODEL])
      createPlayerEnt(id)
}

public client_disconnect(id)
{
   stopAnim(id)
}

public createPlayerEnt(id)
{
   new ent = engfunc(EngFunc_CreateNamedEntity, g_allocString)
   set_pev(ent, pev_rendermode, kRenderTransAdd)
   set_pev(ent, pev_renderamt, 0.0)
   set_pev(ent, pev_owner, id)
   engfunc(EngFunc_SetModel, ent, ANIM_MODEL)
  
   g_playerData[id][ENT_CAM] = ent
  
   ent= engfunc(EngFunc_CreateNamedEntity, g_allocString)
   engfunc(EngFunc_SetModel, ent, ANIM_MODEL)
   set_pev(ent, pev_movetype, MOVETYPE_FLY)
   set_pev(ent, pev_controller_1, 63.75)
  
   g_playerData[id][ENT_ANIM] = ent
  
   ent= engfunc(EngFunc_CreateNamedEntity, g_allocString)
   set_pev(ent, pev_movetype, MOVETYPE_FOLLOW)
   set_pev(ent, pev_aiment, g_playerData[id][ENT_ANIM])
   set_pev(ent, pev_effects, EF_NODRAW)
  
   g_playerData[id][ENT_MODEL] = ent
}

public cmdAnim(id)
{
   new access[32], flag
   get_pcvar_string(g_cvarAccessFlag, access, 31)
   flag = read_flags(access)
  
   if (!flag || (get_user_flags(id)&flag))
      menu_display(id, g_animMenu)
   else
      client_print(id, print_chat, "У вас нет прав!")
}

public startAnim(id, anim)
{
   new seqDesc[SEQ_DESC]
   ArrayGetArray(g_animData, anim, seqDesc)
  
   new ent = g_playerData[id][ENT_ANIM]
   new modelEnt = g_playerData[id][ENT_MODEL]
//   set_pev(ent, pev_framerate, seqDesc[SEQ_FRAMERATE])
   set_pev(ent, pev_framerate, 1.0)
//   set_pev(ent, pev_animtime, (seqDesc[SEQ_FRAMES] - 1)/seqDesc[SEQ_FPS])
   set_pev(ent, pev_sequence, anim)
   set_pev(ent, pev_gaitsequence, anim)
  
   new Float:origin[3], Float:mins[3]
   pev(id, pev_origin, origin)
   pev(id, pev_mins, mins)
  
   mins[0] = origin[0]
   mins[1] = origin[1]
   mins[2] += origin[2]
   set_pev(ent, pev_origin, mins)
  
   set_pev(modelEnt, pev_effects, 0)
   new model[64]
   get_user_info(id, "model", model, 63)
   format(model, 63, "models/player/ujbm_v1/ujbm_v1.mdl", model, model)
   engfunc(EngFunc_SetModel, modelEnt, model)
  
   set_pev(modelEnt, pev_body, pev(id, pev_body))
   set_pev(modelEnt, pev_skin, pev(id, pev_skin))
  
   set_pev(ent, pev_controller_0, 128)
   set_pev(ent, pev_controller_1, 128)
  
   pev(id, pev_angles, mins)
   mins[0] = 0.0
   set_pev(ent, pev_angles, mins)
   set_pev(ent, pev_v_angle, mins)
  
   engfunc(EngFunc_SetView, id, g_playerData[id][ENT_CAM])
   g_playerData[id][ANIM_PLAYING] = 1
  
   set_pev(id, pev_effects, EF_NODRAW)
  
}

public stopAnim(id)
{
   set_pev(g_playerData[id][ENT_MODEL], pev_effects, EF_NODRAW)
   g_playerData[id][ANIM_PLAYING] = 0
   set_pev(id, pev_effects, 0)
  
   engfunc(EngFunc_SetView, id, id)
}

public animMenuHandler(id, menu, item)
{
   if(item == MENU_EXIT)
      return PLUGIN_HANDLED
  
   new access[32], flag
   get_pcvar_string(g_cvarAccessFlag, access, 31)
   flag = read_flags(access)
  
   if (flag && !(get_user_flags(id)&flag))
   {
      client_print(id, print_chat, "У вас нет прав!")
      return PLUGIN_HANDLED
   }
  
   if (!(pev(id, pev_flags)&FL_ONGROUND))
   {
      client_print(id, print_chat, "Вы должны быть на земле!")
      return PLUGIN_HANDLED
   }
  
   startAnim(id, item)
  
   menu_display(id, g_animMenu, floatround(item/7.0, floatround_floor))
  
   return PLUGIN_HANDLED
}

public fwdCmdStart(id, uc, randseed)
{
   if (is_user_alive(id) && g_playerData[id][ANIM_PLAYING])
   {
      if (!get_uc(uc, UC_Buttons))
      {
         static Float:fOrigin[3], Float:fAngle[3], Float:origin[3]
         pev( id, pev_origin, origin )
         pev(id, pev_view_ofs, fOrigin)
         xs_vec_add(origin, fOrigin, origin)
         xs_vec_copy(origin, fOrigin)
         pev(id, pev_v_angle, fAngle)
      
         static Float:fVBack[3]
         angle_vector(fAngle, ANGLEVECTOR_FORWARD, fVBack)
      
         fOrigin[2] += 20.0
        
         fOrigin[0] += (-fVBack[0] * 150.0)
         fOrigin[1] += (-fVBack[1] * 150.0)
         fOrigin[2] += (-fVBack[2] * 150.0)
        
         static tr
         tr = 0
         engfunc(EngFunc_TraceLine, origin, fOrigin, IGNORE_MONSTERS, id, tr)
         get_tr2(tr, TR_vecEndPos, fOrigin)
         free_tr2(tr)
      
         engfunc(EngFunc_SetOrigin, g_playerData[id][ENT_CAM], fOrigin)
         set_pev(g_playerData[id][ENT_CAM], pev_angles, fAngle)
      }
      else
         stopAnim(id)
   }
}

public fwdPlayerKilled(id)
{
   stopAnim(id)  
}

Логи чистые,просто всех выкинуло с сервера с этой ошибкой когда я выбрал действие в меню.
Модель закинул на сервер

В исходнике я только исправил саму команду вызова меню и g_cvarAccessFlag = register_cvar("anim_menu_access_flag", "a") (тут небыло флага,пусто было)

Отредактировал: cyber1741, - 8.6.2014, 15:48
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: