cs_set_user_model, не мога да сменя ножа

Ако имате затруднения при изработката/преработката на даден плъгин - пишете тук, ще се опитаме да ви помогнем!
Аватар
Buzdrev
Извън линия
Потребител
Потребител
Мнения: 247
Регистриран на: 12 Окт 2016, 16:45
Се отблагодари: 5 пъти
Получена благодарност: 1 път
Обратна връзка:

cs_set_user_model, не мога да сменя ножа

Мнение от Buzdrev » 06 Дек 2017, 15:39

Стана, но сега поради някаква причина, като натискам ляв бутон или десен нищо не се случва, ръцете седят и не правят нищо.

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

cs_set_user_model, не мога да сменя ножа

Мнение от OciXCrom » 06 Дек 2017, 16:21

Код за потвърждение: Избери целия код

strip_user_weapons(id)
set_user_health(id, 3000);
cs_set_user_model(id, "bp_jb_zombie") 
entity_set_string(id, EV_SZ_viewmodel, "v_knife_zombie");
1. Премахваш оръжието.
2. Задаваш кръв.
3. Задаваш модел на играча.
4. Задаваш модел на ножа, а нож нямаш.

strip_user_weapons() премахва всички оръжия, включително и ножа. Преди стъпка №4 добави give_item(id, "weapon_knife").

Аватар
Buzdrev
Извън линия
Потребител
Потребител
Мнения: 247
Регистриран на: 12 Окт 2016, 16:45
Се отблагодари: 5 пъти
Получена благодарност: 1 път
Обратна връзка:

cs_set_user_model, не мога да сменя ножа

Мнение от Buzdrev » 06 Дек 2017, 16:33

Ок до тук добре, но сега се сетих нещо, когато си зомби, можеш да взимаш оръжия от бутоните от гън стаите, както и от земята, а това е неприемливо. Прикачвам плъгина ако може да ми го оправите да не може да се зимат оръжия от земята, от бутони, абе освен нож друг чалъм да няма, оправете ми го за ZombieDay, апък вече нататъка, като ми се наложи за някой друг jailbreak day да го правя, аз ще се ориентирам и ще се опитам сам да си ги наглася другите.

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <CromChat>
#include <engine>
#pragma tabsize 0

#define _jbextreme_crx_included
#define ADM_ACCESS ADMIN_RCON

 // Plugin Vers
 new const VERSION[] = "1.0";

// PREFIX
 new const PREFIX[] = "JailBreak";
 // If you type your name below is like me typing your name on your parent's house owning document
 new const AUTHOR[] = "LordLolzeye";
 // Stop Prefix
 const CountSeconds = 60;
 new g_iCountTime;
 
 // Models
 new bp_jb_zombie[] = "models/player/bp_jb_zombie/bp_jb_zombie.mdl"
 new v_knife_zombie[] = "models/v_knife_zombie.mdl"
 // Stop Models
 
 native bool:is_user_simon(id)
 
 new day = 0;
 
public plugin_init()
{
 	register_plugin("JailBreak DaysMenu", VERSION, AUTHOR);
 	register_logevent("eRoundEnd", 2, "1=Round_End"); 
	register_logevent( "eRoundStart", 2, "1=Round_Start" );
	register_clcmd( "say /days", "fwdSpawnPlayer" )
	register_clcmd( "say_team /days", "fwdSpawnPlayer" )
 	register_clcmd( "say /daymenu", "fwdSpawnPlayer" )
	register_clcmd( "say_team /daymenu", "fwdSpawnPlayer" )
 	register_clcmd( "say /daysmenu", "fwdSpawnPlayer" )
	register_clcmd( "say_team /daysmenu", "fwdSpawnPlayer" )
}

public plugin_precache()
{
	precache_generic(bp_jb_zombie)
	precache_model(v_knife_zombie)
}
public eRoundStart()
{
	day = 0; //F*KIN script,be sure that day == 0
}
public eRoundEnd()
{
	day = 0;
	remove_task()
}
public ResModel(id)
{
	new iPlayers[32], iNum, iPid;
  	get_players( iPlayers, iNum, "a" );

  	for( new i; i < iNum; i++ )
  	{
  	   iPid = iPlayers[i];
	   cs_reset_user_model(iPid)
  	}
}
 public fwdSpawnPlayer(id)
 {
  	if (cs_get_user_team(id) == CS_TEAM_CT && is_user_simon(id) == 1 || get_user_flags(id) & ADM_ACCESS)
	{
		if(day == 0)
		{
			JBDay(id);
		}
		else
		{
			CC_SendMessage(id, "&x01[&x04%s&x01] A &x04day &x01was already choosen for this &x04round&x01!", PREFIX);
		}
	}
	else
	{
		CC_SendMessage(id, "&x01[&x04%s&x01] Only &x03Simon &x01can use this &x04command&x01!", PREFIX);
	}
 }
 
public Count() 
{ 
         set_hudmessage( 0 , 255 , 0 , -1.0 , 0.28 , 2 , 1.1 , 1.1 , 0.01 , 0.01 ); 
         show_hudmessage( 0 , "The prisoners have %d seconds to hide!" , g_iCountTime-- );
} 

 public JBDay(id)
 {
 	new menu1 = menu_create("Special Days Menu", "menu_handler");

	menu_additem(menu1, "Zombie Day", "1", 0);
	menu_additem(menu1, "Spartan Day", "2", 0);
	menu_additem(menu1, "Free Day", "3", 0);
	menu_additem(menu1, "Night Crawler Day", "4", 0);
	menu_additem(menu1, "Knife Day", "5", 0);
	menu_additem(menu1, "War Day", "6", 0);
                                menu_additem(menu1, "Shark Day", "7", 0);
 
	menu_setprop(menu1, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, menu1, 0);
 }

 public menu_handler(id, menu, item)
 {

 	if( item == MENU_EXIT )
 	{
	       menu_destroy(menu);
	       return PLUGIN_HANDLED;
 	}

 	new data[6], iName[64];
 	new access, callback;

	menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);

 	new key = str_to_num(data);
           
 	switch(key)
 	{
 	case 1:
 	{
	         ZombieDay(id)
		ResModel(id)
		day = 1;
 	}
 	case 2:
 	{
	         SpartanDay(id)
		day = 1;
	}
	case 3:
	{
	         CC_SendMessage(0, "&x01[&x04%s&x01] Today is &x04Free Day&x01!", PREFIX)
	         set_hudmessage(id, 255, 0, 0.60, 0.12, 0, 6.0, 60.0)
	         show_hudmessage(id, "Today is: Free-Day")
		day = 1;
 	}
 	case 4:
 	{
	         NightDay(id)
		day = 1;
 	}
 	case 5:
 	{
	         KnifeDay(id)
	         day = 1;
 	}
 	case 6:
 	{
	         WarDay(id)
		day = 1;
 	}
	case 7:
	{
		SharkDay(id)
		day = 1;
	}
 }
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public SharkDay(id)
{
         new iPlayers[32]
  	new iNum
 	new id

 	 get_players( iPlayers, iNum )

      for( new i = 0; i < iNum; i++ )
      {
         id = iPlayers[i]
         if( !is_user_alive( id ) )
         {
 	  continue;
         }
 	set_hudmessage(0, 255, 0, 0.60, 0.12, 0, 6.0, 60.0)
 	show_hudmessage(id, "Today is: Shark Day")

 	CC_SendMessage(id, "&x01[&x04%s&x01] Today we play &x04Shark Day&x01! &x03Counter-Terrorist &x01were blessed by gods!", PREFIX)

 	strip_user_weapons( id )

 	give_item( id, "weapon_knife" )

  	if (cs_get_user_team(id) == CS_TEAM_CT)
  	{
             set_user_health(id, 150);
	    set_user_noclip (id, true);
  	}

  	if (cs_get_user_team(id) == CS_TEAM_T)
  	{
            set_user_health(id, 200);
	   give_item(id, "weapon_ak47")
 	   cs_set_user_bpammo( id, CSW_AK47, 200 );
	   give_item(id, "weapon_deagle");
	   cs_set_user_bpammo( id, CSW_DEAGLE, 200 );
         }
      }
}

public NightDay(id)
{
	new iPlayers[32]
  	new iNum
 	new id

 	get_players( iPlayers, iNum )

      for( new i = 0; i < iNum; i++ )
      {
         id = iPlayers[i]
         if( !is_user_alive( id ) )
         {
 	  continue;
         }
 	set_hudmessage(0, 255, 0, 0.60, 0.12, 0, 6.0, 60.0)
 	show_hudmessage(id, "Today is: Night Crawler Day")

 	CC_SendMessage(id, "&x01[&x04%s&x01] Today we play &x04Night Crawler Day&x01! &x03Terrorist &x01must kill all &x03Counter Terrorists&x01!", PREFIX)

 	strip_user_weapons(id)

 	give_item( id, "weapon_knife" )

  	if (cs_get_user_team(id) == CS_TEAM_CT)
  	{
          set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 50);
  	}

  	if (cs_get_user_team(id) == CS_TEAM_T)
  	{
          set_user_health(id, 200);
	   give_item(id, "weapon_ak47")
 	   cs_set_user_bpammo( id, CSW_AK47, 200 );
	   give_item(id, "weapon_deagle");
	   cs_set_user_bpammo( id, CSW_DEAGLE, 200 );
         }
      }
}
public ZombieDay(id)
{
  	new iPlayers[32]
  	new iNum
 	new id

 	 get_players( iPlayers, iNum )

      for( new i = 0; i < iNum; i++ )
      {
         id = iPlayers[i]
         if( !is_user_alive( id ) )
         {
 	  continue;
         }
 	set_hudmessage(0, 255, 0, 0.60, 0.12, 0, 6.0, 60.0)
 	show_hudmessage(id, "Today is: Zombie Day")

 	CC_SendMessage( id, "&x01[&x04%s&x01] Today is &x04Zombie Day&x01! &x03The prisoners &x01have been infected!", PREFIX)

 	strip_user_weapons(id)

 	give_item( id, "weapon_knife" )

  	if (cs_get_user_team(id) == CS_TEAM_CT)
  	{
 	      give_item(id, "weapon_ak47")
 	      cs_set_user_bpammo( id, CSW_AK47, 200 );
 	      set_user_health(id, 500);
  	}

  	if (cs_get_user_team(id) == CS_TEAM_T)
  	{
		   strip_user_weapons(id)
 	       set_user_health(id, 3000);
	       cs_set_user_model(id, "bp_jb_zombie") 
		   give_item(id, "weapon_knife")
		   entity_set_string(id, EV_SZ_viewmodel, v_knife_zombie);
		   
         }
      }
 }

 public SpartanDay(id)
 {
  	new iPlayers[32]
  	new iNum
 	new id

  	get_players( iPlayers, iNum )

       for( new i = 0; i < iNum; i++ )
       {
 	id = iPlayers[i]
	if(cs_get_user_team(id) == CS_TEAM_T)
  	{
            strip_user_weapons(id)
	}
  	if( !is_user_alive( id ) )
  	{
  	continue;
  	}
 	set_hudmessage(0, 255, 0, 0.60, 0.12, 0, 6.0, 60.0)
 	show_hudmessage(id, "Today is: Spartan Day")

 	CC_SendMessage( id, "&x01[&x04%s&x01] Today we play &x04Spartan Day&x01!", PREFIX)

  	if(cs_get_user_team(id) == CS_TEAM_T)
  	{
 	give_item( id, "weapon_knife" )
 	give_item( id, "weapon_deagle")
 	give_item( id, "weapon_shield")
 	cs_set_user_bpammo( id, CSW_DEAGLE, 200 );
 	set_user_health(id, 200);
  	}
       }
 }

 public KnifeDay(id)
 {

  	new iPlayers[32]
  	new iNum
 	new id

  	get_players( iPlayers, iNum )

       for( new i = 0; i < iNum; i++ )
       {
 	id = iPlayers[i]
  	if( !is_user_alive(id) )
  	{
  	continue;
  	}
 	set_hudmessage(0, 255, 0, 0.60, 0.12, 0, 6.0, 60.0)
 	show_hudmessage(id, "Today is: Knife Day")

 	CC_SendMessage( id, "&x01[&x04%s&x01] Today we play &x04Knife Day&x01!", PREFIX)
	
 	strip_user_weapons(id)
 	give_item( id, "weapon_knife" )
 	set_user_health(id, 200);
       }
 }

 public WarDay(id)
 {
  	new iPlayers[32]
  	new iNum
 	new id

  	get_players( iPlayers, iNum )

        for( new i = 0; i < iNum; i++ )
        {
 	id = iPlayers[i]
 	if( !is_user_alive( id ) )
  	{
  	continue;
  	}
 	set_hudmessage(0, 255, 0, 0.60, 0.12, 0, 6.0, 60.0)
 	show_hudmessage(id, "Today is: War Day")

 	CC_SendMessage( id, "&x01[&x04%s&x01] Today we play &x04War Day&x01! Let the better team win!", PREFIX)

 	strip_user_weapons(id)
 	give_item(id, "weapon_knife")
 	give_item(id, "weapon_m3")
 	cs_set_user_bpammo( id, CSW_M3, 200 );
 	set_user_health(id, 200);
        }
 }
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1048\\ f0\\ fs16 \n\\ par }
*/
EDIT

По този начин, както е в момента да дава нож преди да сложи модела, поради някаква причина, не се слага модела а си седи с обикновения нож.

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

cs_set_user_model, не мога да сменя ножа

Мнение от OciXCrom » 06 Дек 2017, 17:17

Моделът се рестартира когато смениш оръжие. Трябва да го задаваш при всяко избиране на нож.

Аватар
Buzdrev
Извън линия
Потребител
Потребител
Мнения: 247
Регистриран на: 12 Окт 2016, 16:45
Се отблагодари: 5 пъти
Получена благодарност: 1 път
Обратна връзка:

cs_set_user_model, не мога да сменя ножа

Мнение от Buzdrev » 06 Дек 2017, 17:27

Еми значи в случая трябва да работи, първо се махат оръжията, после се дава нож и накрая се сменя и модела на ножа, ама дефакто това не се случва.

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

cs_set_user_model, не мога да сменя ножа

Мнение от OciXCrom » 06 Дек 2017, 20:54

Явно има някакво забавяне, и аз не съм сигурен защо. Иначе ето какво трябва да направиш:

В plugin_init():

Код за потвърждение: Избери целия код

register_event("CurWeapon", "OnSelectKnife", "be", "1=1", "2=29")
И отделна функция:

Код за потвърждение: Избери целия код

public OnSelectKnife(id)
{
	if(cs_get_user_team(id) == CS_TEAM_T && is_zombie_day)
		entity_set_string(id, EV_SZ_viewmodel, v_knife_zombie)
}
Обаче трябва да добавиш и променлива (в случая съм добавил is_zombie_day), която ще е true когато zombie day е активен. Обаче препоръчвам ти вместо да добавяш отделна променлива за всеки ден, да направиш една g_iDay и примерно zombie day да е с число 1, night day с число 2 и тн. После ще трябва да провериш if(g_iDay == 1) за да разбереш дали е активен zombie day.

Иначе, това какво е?

Код за потвърждение: Избери целия код

#define _jbextreme_crx_included
Не трябва да е в кода.

Също така, не слагай разстояние преди public и началните скоби, при мен изкара един куп loose indentation грешки на AMXX 1.8.3.

Аватар
Buzdrev
Извън линия
Потребител
Потребител
Мнения: 247
Регистриран на: 12 Окт 2016, 16:45
Се отблагодари: 5 пъти
Получена благодарност: 1 път
Обратна връзка:

cs_set_user_model, не мога да сменя ножа

Мнение от Buzdrev » 06 Дек 2017, 22:02

Не съумявам как да регистрирам тази променлива, било то само за този ден или за всички.

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

cs_set_user_model, не мога да сменя ножа

Мнение от OciXCrom » 06 Дек 2017, 22:19

Глобална променлива new g_iDay. По подразбиране е 0, което означава, че няма активен ден. Когато се пусне някакъв ден, примерно zombie day, правиш g_iDay = 1, демек ако променливата е 1, значи zombie day е активен. В случая трябва да го добавиш в края на ZombieDay() функцията. Когато денят свърши, задаваш я отново на 0.

Аватар
Buzdrev
Извън линия
Потребител
Потребител
Мнения: 247
Регистриран на: 12 Окт 2016, 16:45
Се отблагодари: 5 пъти
Получена благодарност: 1 път
Обратна връзка:

cs_set_user_model, не мога да сменя ножа

Мнение от Buzdrev » 07 Дек 2017, 15:02

Оправих се с ножа, но имам проблем със звуците му. Искам, когато си с ръцете на зомби, да ти слага обикновенните звуци от ножа, а да не се чуват юмруците от JailBreak.
Какво направих до сега? Мисля, че регистрирах звуците, както трябва, но не знам каква фукнция трябва да се използва, за да ги задава когато е зомби ден, и как да ги маха и да връща тези от JailBreak, след като свърши зомби дена.

Код за потвърждение: Избери целия код

new zm_knife_sounds[] = { "weapons/knife_deploy1.wav", "weapons/knife_hit1.wav", "weapons/knife_hit2.wav", "weapons/knife_hit3.wav", "weapons/knife_hit4.wav", "weapons/knife_hitwall1.wav", "weapons/knife_slash1.wav", "weapons/knife_slash2.wav", "weapons/knife_stab.wav" }

public plugin_precache()
{
	precache_generic(bp_jb_zombie)
	precache_model(v_knife_zombie)
	precache_sound(zm_knife_sounds)
}
Мисля, че това е така, но погледнете за всеки случай, да не греша.

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

cs_set_user_model, не мога да сменя ножа

Мнение от OciXCrom » 07 Дек 2017, 16:52

Трябва ти този форвард - register_forward(FM_EmitSound, "OnEmitSound"). Погледни Knife Models плъгина ми.

Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Помощ в скриптирането”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 7 госта