Перейти к содержимому


Фотография

Единая тема для поиска плагинов L4D

поиск плагин помогите найти

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 1447

#1441 Professor77

Professor77

    Участник

  • Пользователь
  • PipPip
  • 55 сообщений

Отправлено 11 Апрель 2024 - 13:44

Спасибо огромное, ребята, за желание помочь!


Сообщение отредактировал Professor77: 12 Апрель 2024 - 2:52


#1442 ???

???

    Новичок

  • Пользователь
  • Pip
  • 45 сообщений

Отправлено 14 Апрель 2024 - 19:24

кто знает о такой чит команде как give_tank, кто баловался?
 
будучи выжившим, прописав данную команду, получаешь возможность бросать камни как танк, вот я и задумался как будет выглядеть использование всех остальных Ability имеющихся в игре.
Вот код, который позволяет использовать все 4 Ability:

CBaseEntity *Create(const char *szName, Vector *vecOrigin, QAngle *vecAngel, CBaseEntity *pOwner)
{
    CBaseEntity* pEnt = (CBaseEntity *)servertools->CreateEntityByName(szName);
    if(!pEnt)
    {
        Msg("Create: only works for CBaseEntity\n");
        return nullptr;
    }

    PropData_set_vecOrigin(pEnt, vecOrigin); //Prop_Data m_vecOrigin
    PropData_set_angRotation(pEnt, vecAngel); //Prop_Data m_angRotation
    Prop_set_hOwnerEntity(pEnt, pOwner); //Prop_Data m_hOwnerEntity

    servertools->DispatchSpawn(pEnt);
    return pEnt;
}

bool AddAbility(CBaseEntity *pThis, const char *szNameAbility, const char *szWeapon)
{
    (*(void (__cdecl **)(CBaseEntity*, int))(*(DWORD *)pThis + 1384))(pThis, 1);
    (*(void (__cdecl **)(CBaseEntity*, const char *, DWORD, int))(*(DWORD *)pThis + 1620))(pThis, szWeapon, 0, 1);

    CBaseEntity *pEntity = Prop_get_customAbility((CBaseEntity*)pThis); //Prop_Send  m_customAbility
    if(pEntity)
    {
        g_HL2->UTILRemove(pEntity); //_Z11UTIL_RemoveP11CBaseEntity
    }

    QAngle *pAngel = g_HL2->GetAbsAngles((CBaseEntity *)pThis); //_ZNK11CBaseEntity12GetAbsAnglesEv
    char pOrigin[12];
    (*(void (__stdcall **)(char *))(*(DWORD *)pThis + 508))(pOrigin);

    char **pAbility = reinterpret_cast<char **>(Create(szNameAbility, (Vector *)pOrigin, pAngel, (CBaseEntity *)pThis));

    if(pAbility)
    {
        *((DWORD *)pThis + 1934) = *(DWORD *)(*((int (__cdecl **)(char **))*pAbility + 3))((char **)pAbility);
    }
    else
    {
	*((DWORD *)pThis + 1934) = -1;
    }

    CBaseEntity *pEnt = Prop_get_customAbility((CBaseEntity*)pThis); //Prop_Send  m_customAbility
    if(pEnt)
    {
        (*(void (__cdecl **)(int, CBaseEntity*))(*(DWORD *)pEnt + 764))((int)pEnt, pThis);
    }
    return true;
}

bool GiveDefaultAbility(CTerrorPlayer *pThis)
{
    (*(void (__cdecl **)(CBaseEntity*, int))(*(DWORD *)pThis + 1384))(pThis, 1);
    (*(void (__cdecl **)(CBaseEntity*, const char *, DWORD, int))(*(DWORD *)pThis + 1620))(pThis, "weapon_pistol", 0, 1);

    CBaseEntity *pEntity = Prop_get_customAbility((CBaseEntity*)pThis); //Prop_Send  m_customAbility
    if(pEntity)
    {
        g_HL2->UTILRemove(pEntity); //_Z11UTIL_RemoveP11CBaseEntity
    }

    return true;
}
А так сделав native можно добавить в плагин:
 
public Action:CmdGiveTank(client, args)
{
	if(client > 0)
	{
		if(IsClientConnected(client) && IsClientInGame(client))
		{
			if(IsClientAlive(client))
			{
				char ar[32];
				GetCmdArg(1, ar, sizeof(ar));
				
				if(StrEqual(ar, "tank")) {
					GiveAbility(client, "ability_throw", "weapon_tank_claw");
				} else if(StrEqual(ar, "boomer")) {
					GiveAbility(client, "ability_vomit", "weapon_boomer_claw");
				} else if(StrEqual(ar, "smoker")) {
					GiveAbility(client, "ability_tongue", "weapon_smoker_claw");
				} else if(StrEqual(ar, "hunter")) {
					GiveAbility(client, "ability_lunge", "weapon_hunter_claw");
				}
			}
		}
	}

	return Plugin_Handled;
}

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

#1443 Alexander_Mirny

Alexander_Mirny

    Пользователь

  • Пользователь
  • PipPipPip
  • 369 сообщений

Отправлено 15 Апрель 2024 - 8:55

Добрый вечер!Скажите пожалуйста а эти коды их надо обоих скомпилитовать?


Первый кусок кода можно использовать как библиотеку или поместить едино.
Второй кусок кода уже команда.

#1444 ???

???

    Новичок

  • Пользователь
  • Pip
  • 45 сообщений

Отправлено 15 Апрель 2024 - 14:47

Первый кусок кода можно использовать как библиотеку или поместить едино.
Второй кусок кода уже команда.

Значит нужно скомплектовать только 1 код?

#1445 DenMarko

DenMarko

    Участник

  • Пользователь
  • PipPip
  • 59 сообщений

Отправлено 15 Апрель 2024 - 17:04

Добрый вечер!Скажите пожалуйста а эти коды их надо обоих скомпилитовать?

первый код на с++ (для добавления в .so .dll)
второй код уже для самого плагина


#1446 Alexander_Mirny

Alexander_Mirny

    Пользователь

  • Пользователь
  • PipPipPip
  • 369 сообщений

Отправлено 16 Апрель 2024 - 11:18

Библиотека 

Скрытый текст

 

Создается в формате .h 

 



#1447 DenMarko

DenMarko

    Участник

  • Пользователь
  • PipPip
  • 59 сообщений

Отправлено 18 Апрель 2024 - 13:13

Библиотека 

Скрытый текст

 

Создается в формате .h 

 

если в header файл то не забудь про inline

inline bool GiveDefaultAbility(CTerrorPlayer pthis)


а лучше разделить на два файла

ability.cpp
 

#include "ability.h"
CBaseEntity create(const char[] szname, Vector vecorigin, QAngle vecangel, CBaseEntity powner) 
{
    CBaseEntity pent = (CBaseEntity)CreateEntityByName(szname);
 
    pent.pev.origin = vecorigin;
    pent.pev.angles = vecangel;
    pent.pev.owner = powner.edict();
 
    DispatchSpawn(pent.edict());
    return pent;
}
 
bool AddAbility(CBaseEntity pthis, const char[] sznameability, const char[] szweapon) 
{
    pthis.SetTouchFunction(TouchFunction.CUSTOM);
    pthis.SetThinkFunction(ThinkFunction.CUSTOM, szweapon, ThinkFuncType.NONE, 1);
 
    CBaseEntity pentity = pthis.m_customability;
    if (pentity.IsValid())
    {
        UTIL_Remove(pentity);
    }
 
    QAngle pangel = pthis.GetAbsAngles();
    char porigin[12];
    pthis.GetVectorOrigin(porigin);
 
    CBaseEntity pability = create(sznameability, porigin, pangel, pthis);
    if (pability.IsValid()) 
    {
        pthis.pev.punchangle = pability.m_punchangle;
    } 
    else 
    {
        pthis.pev.punchangle = -1;
    }
 
    CBaseEntity pent = pthis.m_customability;
    if (pent.IsValid())
    {
        pent.Use(pthis, pthis, USE_ON, 0);
    }
    return true;
}
 
bool GiveDefaultAbility(CTerrorPlayer pthis) 
{
	
    pthis.SetTouchFunction(TouchFunction.CUSTOM);
    pthis.SetThinkFunction(ThinkFunction.CUSTOM, "weapon_pistol", ThinkFuncType.NONE, 1);
 
    CBaseEntity pentity = pthis.m_customability;
    if (pentity.IsValid()) 
    {
        UTIL_Remove(pentity);
    }
 
    return true;
}

ability.h
 

CBaseEntity create(const char[] szname, Vector vecorigin, QAngle vecangel, CBaseEntity powner);
bool AddAbility(CBaseEntity pthis, const char[] sznameability, const char[] szweapon);
bool GiveDefaultAbility(CTerrorPlayer pthis);

  • Alexander_Mirny это нравится

#1448 DenMarko

DenMarko

    Участник

  • Пользователь
  • PipPip
  • 59 сообщений

Отправлено 18 Апрель 2024 - 15:35

я обновил код, там видны какие функции нужно вызывать

Сообщение отредактировал DenMarko: 18 Апрель 2024 - 15:36




Темы с аналогичным тегами поиск, плагин, помогите, найти

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных