Подарок
| |
panorama
|
Дата: Понедельник, 26.08.2013, 09:56:09 | Сообщение # 1 |
|
Сообщений: 203
Репутация: 2 [ +/- ]
|
|
Здравствуйте ! Я пытаюсь узнать название модели подарка , но не как не получается !
Код #include <sourcemod> #include <sdktools> #include <cstrike> #include <sdkhooks>
new Float:Pos[3];
public OnPluginStart() { RegConsoleCmd("prop", create_prop); }
public Action:create_prop(i, args) { GetClientAbsOrigin(i, Pos); new String:buffer_modelsname[PLATFORM_MAX_PATH]; Pos[0] += 80.0; new index = CreateEntityByName("holiday_gift"); if (index > 0) { DispatchKeyValueVector(index, "origin", Pos); GetEntPropString(index, Prop_Data, "m_ModelName", buffer_modelsname, sizeof(buffer_modelsname)); DispatchSpawn(index); CreateTimer(30.0, Prop_delete, index); HookSingleEntityOutput(index, "OnStartTouch", OnStartTouch); } PrintToChatAll("%s", buffer_modelsname); return Plugin_Handled; }
public OnStartTouch(const String:output[], ent, activator, Float:delay) { if(activator > 0){ if(IsClientInGame(activator) && IsPlayerAlive(activator)){ PrintToChatAll("Игрок %N Нашел подарок !", activator); } } }
public Action:Prop_delete(Handle:event, any:index) { ExtinguishEntity(index); decl String:target[32]; Format(target, sizeof(target), "target_%d", index); new ent = CreateEntityByName("env_entity_dissolver"); if (ent > 1) { DispatchKeyValue(index, "targetname", target); DispatchKeyValue(ent, "dissolvetype", "3"); DispatchKeyValue(ent, "target", target); AcceptEntityInput(ent, "Dissolve"); AcceptEntityInput(ent, "kill"); } } Этот пример немного изменен и был взят с этого форума ...
Сообщение отредактировал panorama - Понедельник, 26.08.2013, 09:56:21 |
|
| |
_wS_
|
Дата: Понедельник, 26.08.2013, 10:10:10 | Сообщение # 2 |
|
Код new index = CreateEntityByName("holiday_gift"); DispatchSpawn(index); decl String:model[PLATFORM_MAX_PATH]; model[0] = '\0'; GetEntPropString(index, Prop_Data, "m_ModelName", model, PLATFORM_MAX_PATH); PrintToServer("-> '%s'", model); -> 'models/items/cs_gift.mdl'
|
|
| |
panorama
|
Дата: Понедельник, 26.08.2013, 10:25:58 | Сообщение # 3 |
|
Сообщений: 203
Репутация: 2 [ +/- ]
|
|
Цитата (_wS_) new index = CreateEntityByName("holiday_gift"); DispatchSpawn(index); decl String:model[PLATFORM_MAX_PATH]; model[0] = '\0'; GetEntPropString(index, Prop_Data, "m_ModelName", model, PLATFORM_MAX_PATH); PrintToServer("-> '%s'", model);
-> 'models/items/cs_gift.mdl'
Спасибо !
|
|
| |
Geny
|
Дата: Вторник, 27.08.2013, 23:05:32 | Сообщение # 4 |
|
Сообщений: 110
Репутация: 0 [ +/- ]
|
|
Закомпелировал пример из 1 поста и сам с помощью HookSingleEntityOutput(index, "OnBreak", EntityOutput:OnBreak_Func, true); пытаюсь чтоб "cs_gift.mdl" отлавливал момент кто поднимает его но ниче не получается.Дайте плиз пример с другим mdl все получается а с этим нет(((( карма наверно. дайте пример пожалуйсто.
|
|
| |
panorama
|
Дата: Среда, 28.08.2013, 07:04:07 | Сообщение # 5 |
|
Сообщений: 203
Репутация: 2 [ +/- ]
|
|
Цитата (Geny) Закомпелировал пример из 1 поста и сам с помощью HookSingleEntityOutput(index, "OnBreak", EntityOutput:OnBreak_Func, true); пытаюсь чтоб "cs_gift.mdl" отлавливал момент кто поднимает его но ниче не получается.Дайте плиз пример с другим mdl все получается а с этим нет(((( карма наверно. дайте пример пожалуйсто. Дело в том что вы пытаетесь создать не проп а подарок уже готовый . Код new index = CreateEntityByName("holiday_gift"); замени на Код new index = CreateEntityByName("prop_dynamic");
|
|
| |
Geny
|
Дата: Среда, 28.08.2013, 13:05:43 | Сообщение # 6 |
|
Сообщений: 110
Репутация: 0 [ +/- ]
|
|
Код DispatchKeyValue(index, "solid", "6"); как можно заменить чтоб игрок не приостанавливался когда касался предмета, а он сразу изчезал при чем чтоб Код HookSingleEntityOutput(index, "OnBreak", EntityOutput:OnBreak_Func, true); работалДобавлено (28.08.2013, 12:59:33) ---------------------------------------------
Код public OnBreak_Func(const String:output[], index, activator, Float:delay) { if (activator > 0 && activator <= MaxClients) { PrintToChatAll("Предмет поднял %N", activator); } else PrintToChatAll("FUCK"); } Почему когда срабатывает эта функция всегда пишит FUCK. Такое чуство что воздух\Оружие\стены тоже могут касаться к предмету.... так как можно поставить условие чтоб мог поднять только человек.Добавлено (28.08.2013, 13:05:43) --------------------------------------------- Предмет создается в моменте playerDeath
|
|
| |
ThRunningMan
|
Дата: Среда, 28.08.2013, 15:50:38 | Сообщение # 7 |
|
Сообщений: 140
Репутация: 12 [ +/- ]
|
|
Мне кажется тут вообще никто не поинимает что ты хочешь... Причем тут ломание прдмета и его качание и вообще как это можео был освязать... Зачем вообще ломание прдмета.... Хукать качание и все, прикоснулся к нужному предмету удалил предмет коснувшемуся игроку дал пряник...
Сообщение отредактировал ThRunningMan - Среда, 28.08.2013, 15:53:05 |
|
| |
Geny
|
Дата: Четверг, 29.08.2013, 11:25:25 | Сообщение # 8 |
|
Сообщений: 110
Репутация: 0 [ +/- ]
|
|
Код [11:23:39] Создатель JailBreake CSS Server: #include <sourcemod> #include <cstrike> #include <sdktools> #include <sdktools_entoutput> #include <sdktools_functions> #include <sdkhooks> #include <clientprefs> new Float:wS_PosBox[3]; public OnPluginStart() { HookEvent("player_death", playerDeath); } public Action:playerDeath(Handle:event, const String:name[], bool:dontBroadcast) { new client = GetClientOfUserId(GetEventInt(event, "userid")); new killer = GetClientOfUserId(GetEventInt(event, "attacker")); GetClientAbsOrigin(client, wS_PosBox); new index = CreateEntityByName("prop_dynamic"); if (index > 0) { SetEntityModel(index, "models/items/cs_gift.mdl"); DispatchKeyValueVector(index, "origin", wS_PosBox); DispatchKeyValue(index, "solid", "6"); DispatchKeyValue(index, "spawnflags", "16"); DispatchSpawn(index); HookSingleEntityOutput(index, "OnBreak", EntityOutput:OnBreak_Func, true); } }
public OnBreak_Func(const String:output[], index, activator, Float:delay) { if (activator > 0 && activator <= MaxClients) { PrintToChatAll("Предмет поднял %N", activator); } else PrintToChatAll("ОШИБКА!!!!"); } Цель. когда игрок умирает на его месте коробка. Но происходит всегда ошибка коробка создается и сразу изчезает и пишит PrintToChatAll("ОШИБКА!!!!");
помогите понять в чем дело?
|
|
| |
_wS_
|
Дата: Четверг, 29.08.2013, 15:55:34 | Сообщение # 9 |
|
"spawnflags" "16"
Код 16 : Break on Touch 32 : Break on Pressure 16 - как только к подарку что-то касается, он удаляется (я проверил щас, activator'ом был weapon_usp - поч сам не проверил?) 32 - удалится, только если на него встать/надавить
- или spawnflags 32 ставь - или добавь к Y/X координатам немного, чтобы подарок создался в стороне - или создай подарок с задержкой - др.
|
|
| |
Geny
|
Дата: Пятница, 30.08.2013, 12:29:48 | Сообщение # 10 |
|
Сообщений: 110
Репутация: 0 [ +/- ]
|
|
Проврял оружием.. неуспел отписать. с "32" все вроде бы как норм но, хотелось бы чтобы при касании Террористов к подарку он не исчезал, только когда на него давят КТ он реагировал... условия в Код public OnBreak_Func типа if (activator > 0 && activator <= MaxClients && IsClientInGame(activator) && (GetClientTeam(activator) == 3) && IsPlayerAlive(activator)) не помогают как быть. В идеале хотелось бы чтоб игрок живой за КТ касался - да имено касался "16" к подарку и происходило действие, но когда касаются Т то подарок не пропадал (игнорировал касание)
|
|
| |
_wS_
|
Дата: Пятница, 30.08.2013, 12:53:04 | Сообщение # 11 |
|
Нельзя так, SDKHook_StartTouch в помощь (хотя может там фильтр как-то настроить можно, не зн).
|
|
| |
|