K Kruzya Guest Apr 29, 2018 #1 Здесь я буду выкладывать функции, которые использую где-либо сам. P.S.: В основном по TF2. Оглавление: [TF2] Смена модели игрока Передача прав на указатель Вызов определённого события с клоном указателя [TF2] Получение индекса оружия по номеру энтити игрока и номеру слота [TF2] Получение индекса оружия по номеру энтити оружия Last edited by a moderator: Apr 29, 2018
Здесь я буду выкладывать функции, которые использую где-либо сам. P.S.: В основном по TF2. Оглавление: [TF2] Смена модели игрока Передача прав на указатель Вызов определённого события с клоном указателя [TF2] Получение индекса оружия по номеру энтити игрока и номеру слота [TF2] Получение индекса оружия по номеру энтити оружия
K Kruzya Guest Apr 29, 2018 #2 [TF2] Смена модели игрока C++: stock void TF2_SetPlayerModel(int iClient, const char[] szModel) { if (!iClient || iClient < 1 || iClient > MaxClients || !IsClientInGame(iClient)) return; SetVariantString(szModel); AcceptEntityInput(iClient, "SetCustomModel"); SetEntProp(iClient, Prop_Send, "m_bUseClassAnimations", 1); SetEntProp(iClient, Prop_Send, "m_nBody", 0); }
[TF2] Смена модели игрока C++: stock void TF2_SetPlayerModel(int iClient, const char[] szModel) { if (!iClient || iClient < 1 || iClient > MaxClients || !IsClientInGame(iClient)) return; SetVariantString(szModel); AcceptEntityInput(iClient, "SetCustomModel"); SetEntProp(iClient, Prop_Send, "m_bUseClassAnimations", 1); SetEntProp(iClient, Prop_Send, "m_nBody", 0); }
K Kruzya Guest Apr 29, 2018 #3 Передача прав на указатель Обратите внимание: вызывать эту функцию должен первоначальный владелец указателя для корректной работоспособности. C++: stock void ChangeHandleOwner(Handle &hPointer, Handle hNewOwner = null) { Handle hDummy = CloneHandle(hPointer, hNewOwner); CloseHandle(hPointer); hPointer = hDummy; }
Передача прав на указатель Обратите внимание: вызывать эту функцию должен первоначальный владелец указателя для корректной работоспособности. C++: stock void ChangeHandleOwner(Handle &hPointer, Handle hNewOwner = null) { Handle hDummy = CloneHandle(hPointer, hNewOwner); CloseHandle(hPointer); hPointer = hDummy; }
K Kruzya Guest Apr 29, 2018 #4 Вызов определённого события с клоном указателя C++: stock void CallEventWithClonedHandle(const char[] szFunctionName, Handle hPointer) { Handle hClone; Function ptrFunc; Handle hPlugin; Handle hPlugIter = GetPluginIterator(); Handle hCoreHandle = GetMyHandle(); while (MorePlugins(hPlugIter)) { hPlugin = ReadPlugin(hPlugIter); if (hPlugin == hCoreHandle || GetPluginStatus(hPlugin) != Plugin_Running) continue; ptrFunc = GetFunctionByName(hPlugin, szFunctionName); if (ptrFunc == INVALID_FUNCTION) continue; hClone = CloneHandle(hPointer, hPlugin); Call_StartFunction(hPlugin, ptrFunc); Call_PushCell(hClone); Call_Finish(); } CloseHandle(hPlugIter); }
Вызов определённого события с клоном указателя C++: stock void CallEventWithClonedHandle(const char[] szFunctionName, Handle hPointer) { Handle hClone; Function ptrFunc; Handle hPlugin; Handle hPlugIter = GetPluginIterator(); Handle hCoreHandle = GetMyHandle(); while (MorePlugins(hPlugIter)) { hPlugin = ReadPlugin(hPlugIter); if (hPlugin == hCoreHandle || GetPluginStatus(hPlugin) != Plugin_Running) continue; ptrFunc = GetFunctionByName(hPlugin, szFunctionName); if (ptrFunc == INVALID_FUNCTION) continue; hClone = CloneHandle(hPointer, hPlugin); Call_StartFunction(hPlugin, ptrFunc); Call_PushCell(hClone); Call_Finish(); } CloseHandle(hPlugIter); }
K Kruzya Guest Apr 29, 2018 #5 [TF2] Получение индекса оружия по номеру энтити игрока и номеру слота Обратите внимание: если оружия у игрока в этом слоте нет, вернёт -1. C++: stock int TF2_GetIndexOfWeaponSlot(int client, int slot) { int weapon = GetPlayerWeaponSlot(client, slot); return (weapon > MaxClients && IsValidEntity(weapon) ? GetEntProp(weapon, Prop_Send, "m_iItemDefinitionIndex") : -1); }
[TF2] Получение индекса оружия по номеру энтити игрока и номеру слота Обратите внимание: если оружия у игрока в этом слоте нет, вернёт -1. C++: stock int TF2_GetIndexOfWeaponSlot(int client, int slot) { int weapon = GetPlayerWeaponSlot(client, slot); return (weapon > MaxClients && IsValidEntity(weapon) ? GetEntProp(weapon, Prop_Send, "m_iItemDefinitionIndex") : -1); }
K Kruzya Guest Apr 29, 2018 #6 [TF2] Получение индекса оружия по номеру энтити оружия Обратите внимание: если номер энтити некорректен или это не оружие, вернёт -1. C++: stock int TF2_GetWeaponIndex(int iWeapon) { if (iWeapon <= MaxClients || !IsValidEnt(iWeapon) || !HasEntProp(iWeapon, Prop_Send, "m_iItemDefinitionIndex")) return -1; return GetEntProp(iWeapon, Prop_Send, "m_iItemDefinitionIndex"); }
[TF2] Получение индекса оружия по номеру энтити оружия Обратите внимание: если номер энтити некорректен или это не оружие, вернёт -1. C++: stock int TF2_GetWeaponIndex(int iWeapon) { if (iWeapon <= MaxClients || !IsValidEnt(iWeapon) || !HasEntProp(iWeapon, Prop_Send, "m_iItemDefinitionIndex")) return -1; return GetEntProp(iWeapon, Prop_Send, "m_iItemDefinitionIndex"); }