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

Предоставить игрокам модельку. (Reliable chanel overflow)

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

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

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

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

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

Предоставить игрокам модельку. (Reliable chanel overflow)

Сообщение PraVitelb1 » 21 дек 2011, 00:30

Здравствуйте, нужна ваша помощь. Каким способом можно поставить игроку Модельку?

Вот этот способ не предлагать, вызывает Reliable chanel overflow
[pawn]
  1.  

  2. cs_set_user_model(id, "****")

  3.  
[/pawn]
Так же вот этот способ не подходит, конфликтует с многими плагинами на сервере!
Модельки налаживаются друг на друга! :(
[pawn]
  1.  

  2. [pawn]#include < amxmodx >

  3. #include < fakemeta >

  4.  

  5. #define PLUGIN                          "Shooce models"

  6. #define VERSION                                 "0.1"

  7. #define AUTHOR                          "Bos93"

  8.  

  9. enum

  10. {

  11.         FM_CS_TEAM_UNASSIGNED = 0,

  12.         FM_CS_TEAM_T,

  13.         FM_CS_TEAM_CT,

  14.         FM_CS_TEAM_SPECTATOR

  15. }

  16.  

  17. const OFFSET_LINUX =                    5

  18. const OFFSET_CSTEAMS =                  114

  19.  

  20. #define MAXPLAYERS                      32

  21.  

  22. #define IsValidPrivateData(%0)          ( pev_valid( %0 ) == 2 )

  23. #define IsConnected(%0)                 ( 1 <= %0 <= g_iMaxPlayers && ( g_bsIsConnected & ( 1 << %0 ) ) )

  24. #define PLAYERMODEL_CLASSNAME           "ent_playermodel"

  25.  

  26. #define MODELS_T                                 "viplostsanta"

  27.  

  28. new g_player_model[ MAXPLAYERS + 1 ] [ MAXPLAYERS ]

  29. new g_ent_playermodel[ MAXPLAYERS + 1 ]

  30.  

  31. new g_iMaxPlayers

  32. new g_bsIsConnected

  33.  

  34. public plugin_init ( )

  35. {

  36.         register_plugin(PLUGIN,VERSION,AUTHOR);

  37.        

  38.         register_event("HLTV", "event_round_start", "a", "1=0", "2=0")

  39.        

  40.         register_logevent("logevent_round_end", 2, "1=Round_End");

  41.        

  42.        

  43.         g_iMaxPlayers = get_maxplayers( );

  44. }

  45.  

  46. public plugin_precache()

  47. {

  48.         new modelpath_T[100]

  49.         formatex(modelpath_T, sizeof modelpath_T - 1, "models/player/%s/%s.mdl", MODELS_T, MODELS_T)

  50.         engfunc(EngFunc_PrecacheModel, modelpath_T)

  51. }

  52.  

  53. public client_putinserver( Player )

  54.         g_bsIsConnected                 |= ( 1 << Player );

  55.  

  56. public client_disconnect( Player )

  57.         g_bsIsConnected                 &= ~( 1 << Player );

  58.  

  59. public event_round_start ( )

  60. {

  61.         for(new i = 1; i <= g_iMaxPlayers; i++)

  62.         {

  63.                 if(!IsConnected(i))

  64.                         continue

  65.                        

  66.                 if (fm_cs_get_user_team(i) == FM_CS_TEAM_CT)

  67.                         continue                        

  68.                

  69.                 copy(g_player_model[i], sizeof g_player_model[] - 1, MODELS_T)

  70.                 fm_set_playermodel_ent(i, g_player_model[i])

  71.         }

  72. }

  73.  

  74. public logevent_round_end ( )

  75. {

  76.         for(new i = 1; i <= g_iMaxPlayers; i++)

  77.         {

  78.                 if(!IsConnected(i))

  79.                         continue

  80.                        

  81.                 fm_remove_model_ents(i)

  82.         }

  83. }

  84.  

  85. stock fm_set_playermodel_ent(id, const modelname[])

  86. {

  87.     // Make original player entity invisible

  88.     set_pev(id, pev_rendermode, kRenderTransTexture)

  89.     // This is not 0 because it would hide some effects when firing weapons

  90.     set_pev(id, pev_renderamt, 1.0)

  91.    

  92.     // Since we're passing the short model name to the function

  93.     // we need to make the full path out of it

  94.     static modelpath[100]

  95.     formatex(modelpath, sizeof modelpath - 1, "models/player/%s/%s.mdl", modelname, modelname)

  96.    

  97.     // Check if the entity assigned to this player exists

  98.     if (!pev_valid(g_ent_playermodel[id]))

  99.     {

  100.         // If it doesn't, proceed to create a new one

  101.         g_ent_playermodel[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))

  102.        

  103.         // If it failed to create for some reason, at least this will prevent further "Invalid entity" errors...

  104.         if (!pev_valid(g_ent_playermodel[id])) return;

  105.        

  106.         // Set its classname

  107.         set_pev(g_ent_playermodel[id], pev_classname, PLAYERMODEL_CLASSNAME)

  108.  

  109.         // Make it follow the player

  110.         set_pev(g_ent_playermodel[id], pev_movetype, MOVETYPE_FOLLOW)

  111.         set_pev(g_ent_playermodel[id], pev_aiment, id)

  112.         set_pev(g_ent_playermodel[id], pev_owner, id)

  113.     }

  114.    

  115.     // Entity exists now, set its model

  116.     engfunc(EngFunc_SetModel, g_ent_playermodel[id], modelpath)

  117. }

  118.  

  119. stock fm_remove_model_ents(id)

  120. {

  121.     // Make the player visible again

  122.     set_pev(id, pev_rendermode, kRenderNormal)

  123.    

  124.     // Remove "playermodel" ent if present

  125.     if (pev_valid(g_ent_playermodel[id]))

  126.     {

  127.         engfunc(EngFunc_RemoveEntity, g_ent_playermodel[id])

  128.         g_ent_playermodel[id] = 0

  129.     }

  130. }

  131.        

  132. stock fm_cs_get_user_team(id)

  133. {

  134.         if( !IsValidPrivateData( id ) )

  135.                 return FM_CS_TEAM_UNASSIGNED;

  136.        

  137.         return get_pdata_int(id, OFFSET_CSTEAMS, OFFSET_LINUX);

  138. }

  139.  
[/pawn]
Написание плагинов.
Skype: pravitelb1

vk.com/positive_game
Аватара пользователя
PraVitelb1
 
Сообщения: 24
Зарегистрирован: 11 сен 2011, 11:02
Благодарил (а): 8 раз.
Поблагодарили: 6 раз.
Языки программирования: Counter-Strike 1.6

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

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

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