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

Выбор скинов

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

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

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

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

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

Выбор скинов

Сообщение ilya9754 » 15 май 2019, 18:05

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

Код: Выделить всё
#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <engine>
 
#pragma semicolon 1
 
#define MAX_PLAYERS 32
 
#define BIT_VALID(%1,%2) ((%1) & (1 << ((%2) - 1)))
#define BIT_ADD(%1,%2) ((%1) |= (1 << ((%2) - 1)))
#define BIT_SUB(%1,%2) ((%1) &= ~(1 << ((%2) - 1)))
#define BIT_NOT_VALID(%1,%2) (~(%1) & (1 << ((%2) - 1)))
 
new g_iBitClientAccessg_iBitCustomModel;
 
public 
plugin_init()
{
   
register_plugin("Models""0.1b""Freedo.m");
   
RegisterHam(Ham_Spawn"player""Ham_PlayerSpawn_Post"1);
   
register_forward(FM_SetClientKeyValue"FM_SetClientKeyValue_Pre"0);
   
register_clcmd("say /models""amodels"ADMIN_BAN);
}
 
public 
plugin_precache()
{
   
precache_model("models/player/vip/vip.mdl");
   
precache_model("models/player/admin/admin.mdl");
   
precache_model("models/player/model_1/model_1.mdl");
   
precache_model("models/player/model_2/model_2.mdl");
   
precache_model("models/player/model_3/model_3.mdl");
   
precache_model("models/player/model_4/model_4.mdl");
   
   
precache_model("models/player/vip_tt/vip_tt.mdl");
   
precache_model("models/player/admin_tt/admin_tt.mdl");
   
precache_model("models/player/model_1_tt/model_1_tt.mdl");
   
precache_model("models/player/model_2_tt/model_2_tt.mdl");
   
precache_model("models/player/model_3_tt/model_3_tt.mdl");
   
precache_model("models/player/model_4_tt/model_4_tt.mdl");
}
 
public 
client_putinserver(id)
{
   
BIT_ADD(g_iBitClientAccessid);
}
 
public 
client_disconnect(id)
{
   
BIT_SUB(g_iBitClientAccessid);
   
BIT_SUB(g_iBitCustomModelid);
}
 
public 
amodels(id) {
               new 
i_Menu menu_create("\rВыбери \yмодель""Ham_PlayerSpawn_Post");
           
               
menu_additem(i_Menu"\wМодель 1""1"0);
               
menu_additem(i_Menu"\wМодель 2""2"0);
          
menu_additem(i_Menu"\wМодель 3""3"0);
          
menu_additem(i_Menu"\wМодель 4""4"0);
          
               
menu_additem(i_Menu"\wМодель Админ""5"0);           
               
menu_additem(i_Menu"\wМодель Вип""6"0);
           
          
               
menu_setprop(i_MenuMPROP_NEXTNAME"\rДалее");
               
menu_setprop(i_MenuMPROP_BACKNAME"\rНазад");
               
menu_setprop(i_MenuMPROP_EXITNAME"\rВыход");
        
               
menu_display(idi_Menu0);
        } 
 
 
public 
Ham_PlayerSpawn_Post(idmenuitem)
{
   if( 
item && get_user_team(id) = 1) return PLUGIN_CONTINUE;
               new 
cmd[3], accesscallback;
               
menu_item_getinfo(menuitemaccesscmd,2,_,_callback);
               new 
Choise str_to_num(cmd);
               switch (
Choise) {

           case 
1fm_cs_set_user_model(id"vip");
          case 
2fm_cs_set_user_model(id"admin");
     case 
3fm_cs_set_user_model(id"model_1");
     case 
4fm_cs_set_user_model(id"model_2");
     case 
5fm_cs_set_user_model(id"model_3");

   }
   else if(
get_user_team(id) = 2)
   {
        case 
1fm_cs_set_user_model(id"vip_tt");
          case 
2fm_cs_set_user_model(id"admin_tt");
     case 
3fm_cs_set_user_model(id"model_1_tt");
     case 
4fm_cs_set_user_model(id"model_2_tt");
     case 
5fm_cs_set_user_model(id"model_3_tt");
    }
  }
  


 
new 
g_szPlayerModel[MAX_PLAYERS 1][32];
 
public 
FM_SetClientKeyValue_Pre(id, const szInfobuffer[], const szKey[])
{
   if(
BIT_VALID(g_iBitCustomModelid) && equal(szKey"model"))
   {
      static 
szCurrentModel[32];
      
fm_cs_get_user_model(idszCurrentModelcharsmax(szCurrentModel));
      if(!
equal(szCurrentModelg_szPlayerModel[id])) fm_cs_set_user_model(idg_szPlayerModel[id]);
      return 
FMRES_SUPERCEDE;
   }
   return 
FMRES_IGNORED;
}
 
stock fm_cs_get_user_model(idszModel[], szLenengfunc(EngFunc_InfoKeyValueengfunc(EngFunc_GetInfoKeyBufferid), "model"szModelszLen);
stock fm_cs_set_user_model(id, const szModelName[])
{
   
engfunc(EngFunc_SetClientKeyValueidengfunc(EngFunc_GetInfoKeyBufferid), "model"szModelName);
   
copy(g_szPlayerModel[id], charsmax(g_szPlayerModel[]), szModelName);
   
BIT_ADD(g_iBitCustomModelid);
}
 
stock fm_cs_reset_user_model(id)
{
   
BIT_SUB(g_iBitCustomModelid);
   
dllfunc(DLLFunc_ClientUserInfoChangedidengfunc(EngFunc_GetInfoKeyBufferid));
Аватара пользователя
ilya9754
 
Сообщения: 228
Зарегистрирован: 20 дек 2011, 19:05
Благодарил (а): 28 раз.
Поблагодарили: 6 раз.
Опыт программирования: Меньше недели
Языки программирования: Counter-Strike 1.6

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

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

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