Как поменять модель entity (holiday_gift)

pokypka20

Участник
Сообщения
244
Реакции
31
Подскажите как изменить модель подарка?

PHP:
new entity = CreateEntityByName("holiday_gift");
DispatchKeyValue(entity, "model", Gift_model);

// Пробовал так не работает, а вот так

new entity = CreateEntityByName("prop_dynamic");
DispatchKeyValue(entity, "model", Gift_model);

// Работает, но подарок нельзя поднять он как предмет.
 

Серый™

CS:S Server
Сообщения
2,925
Реакции
1,376
pokypka20, вместо этого Gift_model пишешь свой путь до модели.
 

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
SetEntityModel(entity, model)?
 

Серый™

CS:S Server
Сообщения
2,925
Реакции
1,376
pokypka20, вот код из плагина подарков рико...
PHP:
SpawnGift(Float:vOrigin[3], index)
{
	new iEntity = CreateEntityByName("prop_dynamic_override");
	decl String:sTargetName[32], String:tmp[70];
	IntToString(index, sTargetName, sizeof(sTargetName));
	DispatchKeyValueVector(iEntity, "origin", vOrigin);
	DispatchKeyValue(iEntity, "solid", "6");
	decl Float:fValue, String:sValue[PLATFORM_MAX_PATH];
	DispatchKeyValue(iEntity, "model", (GetTrieString(g_hGiftsTrie[index], "Model", sValue, sizeof(sValue))) ? sValue:MODEL);

	DispatchKeyValue(iEntity, "targetname", sTargetName);
	DispatchSpawn(iEntity);

	SetEntProp(iEntity, Prop_Send, "m_usSolidFlags", 8);
	SetEntProp(iEntity, Prop_Send, "m_CollisionGroup", 1);

	Format(tmp, sizeof(tmp), "OnUser1 !self:kill::%0.2f:-1", (GetTrieValue(g_hGiftsTrie[index], "Lifetime", fValue)) ? fValue : LIFETIME);
	SetVariantString(tmp);
	AcceptEntityInput(iEntity, "AddOutput"); 
	AcceptEntityInput(iEntity, "FireUser1");


	new iRotating = CreateEntityByName("func_rotating");
	DispatchKeyValueVector(iRotating, "origin", vOrigin);
	DispatchKeyValue(iRotating, "targetname", sTargetName);
	DispatchKeyValue(iRotating, "maxspeed", "180");
	DispatchKeyValue(iRotating, "friction", "0");
	DispatchKeyValue(iRotating, "dmg", "0");
	DispatchKeyValue(iRotating, "solid", "0");
	DispatchKeyValue(iRotating, "spawnflags", "64");
	DispatchSpawn(iRotating);

	SetVariantString("!activator");
	AcceptEntityInput(iEntity, "SetParent", iRotating, iRotating);
	AcceptEntityInput(iRotating, "Start");

	Call_StartForward(g_hOnCreate);
	Call_PushCell(iEntity);
	Call_Finish();

	SDKHook(iEntity, SDKHook_StartTouch, Hook_GiftStartTouch);
}

public Hook_GiftStartTouch(iEntity, iClient)
{
	if (iClient > 0 && iClient <= MaxClients && IsPlayerAlive(iClient))
	{
		decl String:sIndex[10];
		GetEntPropString(iEntity, Prop_Data, "m_iName", sIndex, sizeof(sIndex));
		new index = StringToInt(sIndex);
		Call_StartForward(g_hOnPickUp);
		Call_PushCell(g_hGiftsTrie[index]);
		Call_PushCell(iClient);
		Call_PushCell(iEntity);
		Call_PushCell(index);
		Call_Finish();
	}
}

public Gifts_OnPickUpGift(Handle:hTrie, iClient, iEntity, index)
{
	AcceptEntityInput(iEntity, "Kill");
	g_iHasClientGift[iClient] = index;
	decl String:sValue[PLATFORM_MAX_PATH];

	new Float:iVec[3];
	GetClientAbsOrigin(iClient, Float:iVec);
	EmitAmbientSound(((GetTrieString(hTrie, "Sound", sValue, sizeof(sValue))) ? sValue:SOUND), iVec, iClient, SNDLEVEL_NORMAL);

	if(GetTrieString(hTrie, "TextToAll", sValue, sizeof(sValue)))
	{
		EditString(sValue, sizeof(sValue), iClient);
		for (new i = 1; i <= MaxClients; i++)
		{
			if (IsClientInGame(i) && i != iClient) PrintToChat(i, sValue);
		}
	}

	if(GetTrieString(hTrie, "TextToPlayer", sValue, sizeof(sValue)))
	{
		EditString(sValue, sizeof(sValue), iClient);
		PrintToChat(iClient, sValue);
	}
}
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #6
2 способа:
DispatchKeyValue(entity, "model", Gift_model);
SetEntityModel(entity, model);

Я хз какой лучше, быстрее и оптимальней.
 

pokypka20

Участник
Сообщения
244
Реакции
31
Еще вопрос как удалить эфект после поднятия подарка?
Тоесть игрок поднял подарок, а эфект на месте его остаётся.
PHP:
new effects = CreateEntityByName("env_sprite");
DispatchKeyValue(effects, "rendermode", "5");
DispatchKeyValue(effects, "rendercolor", "0 0 255");
DispatchKeyValue(effects, "renderamt", "127");
DispatchKeyValue(effects, "scale", "1");
DispatchKeyValue(effects, "model", "sprites/glow01.spr");
DispatchKeyValueVector(effects, "origin", position);
DispatchKeyValue(effects, "spawnflags", "64");
DispatchSpawn(effects);
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #8
AcceptEntityInput(iEntity, "Kill");
 

pokypka20

Участник
Сообщения
244
Реакции
31
Немного не получилось, помогите отредактировать

PHP:
if (test)
{
	decl Float:pos[3];
	GetClientAbsOrigin(victim, pos);

	new entity = CreateEntityByName("holiday_gift");
	DispatchKeyValueVector(entity, "origin", pos);
	DispatchSpawn(entity);
	HookSingleEntityOutput(entity, "OnPlayerTouch", Bonus, false);
	
	new effects = CreateEntityByName("env_sprite");
	DispatchKeyValue(effects, "rendermode", "5");
	DispatchKeyValue(effects, "rendercolor", "0 0 255");
	DispatchKeyValue(effects, "renderamt", "127");
	DispatchKeyValue(effects, "scale", "1");
	DispatchKeyValue(effects, "model", "sprites/glow01.spr");
	DispatchKeyValueVector(effects, "origin", pos);
	DispatchKeyValue(effects, "spawnflags", "64");
	DispatchSpawn(effects); 
			}
		}
	}
}

public Bonus(const String:output[], caller, activator, Float:delay, any:entity) // error: 092 argument
{
	if (0 < activator <= MaxClients)
	{
		if ( GetRandomInt(1, 2) == 1 )
		{
			AcceptEntityInput(caller, "Kill"); // убирается подарок
		}
		else
		{
			AcceptEntityInput(caller, "Kill"); // убирается подарок
		}
		AcceptEntityInput(entity, "Kill"); // по идеи должен убраться эфект, но этого не происходит плагин не компилится.
	}
}
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #10
pokypka20, ты ловил он тач подарка, а эффекта нет. Попробуй привязать эффект к подарку
 
Сверху Снизу