AMX MOD X
Четверг, 28.03.2024, 15:55:38



Приветствую Вас Гость | RSS
[ Главная ] [ DispatchKeyValue() - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » DispatchKeyValue() (непонятки)
DispatchKeyValue()
slogicДата: Пятница, 24.11.2006, 19:55:20 | Сообщение # 1
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
Вот смотрю пример из engine_stocks.inc:
Code

 new entity = create_entity("trigger_hurt")
 if (entity)
 {
    DispatchKeyValue(entity,"classname","trigger_hurt")
    new szDamage[16]
    format(szDamage,15,"%f",takedmgdamage * 2)
    DispatchKeyValue(entity,"dmg",szDamage)
    format(szDamage,15,"%i",damagetype)
    DispatchKeyValue(entity,"damagetype",szDamage)
    Di spatchKeyValue(entity,"origin","8192 8192 8192")
    DispatchSpawn(entity)
    entity_set_string(entity, EV_SZ_classname, szClassname)
    fake_touch(entity,idvictim)
    remove_entity(entity)
    return 1
 }

Вопрос пока следующий. Нафига три раза присваивается classname: в create_entity(), в DispatchKeyValue() и в entity_set_string()?

 
AlModДата: Пятница, 24.11.2006, 20:23:47 | Сообщение # 2
Сонный кодер
Группа: Админы
Сообщений: 600
Репутация: 27
Статус: Не в сети
Это дублирующие команды. Мож по приколу они их написали smile

 
slogicДата: Пятница, 24.11.2006, 20:40:43 | Сообщение # 3
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
Quote (AlMod)
Это дублирующие команды. Мож по приколу они их написали

Вряд ли. Последний я еще кое-как понять могу, т.к. имя этого класса передается в аругменте функции (заголовок которой я не написал):

stock fakedamage(idvictim,szClassname[],Float:takedmgdamage,damagetype)

Но почему используется именно entity_set_string(), а не DispatchKeyValue() в данном случае. Ну создали объект, поэтому DispatchKeyValue() применять видимо к "живому" объекту нельзя. Почему же заранее не присвоили класс вместо DispatchKeyValue(entity,"classname","trigger_hurt") ?

Что вообще дает изменение имени класса уже созданного объекта?

 
VENДата: Пятница, 24.11.2006, 22:10:08 | Сообщение # 4
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
Нужно не 3, а 2.
3, вероятно, потому, что по неопытности они лишний раз подстраховались.

create_entity() - это необходимо, т.к. это по сути "обертка" для pfnCreateNamedEntity, которая требует "правильный" класс entity. Т.е. нельзя например сделать что-то типа create_entity("hello")

В DispatchKeyValue() - это лишнее.

В последнем случае - чтобы изменить "имя" "орудия", например чтобы отобразить его в DeathMsg. Я имею ввиду четвертый аргумент.
Будет что-то типа: Player killed self with the "имя".

Quote
Почему же заранее не присвоили класс вместо DispatchKeyValue(entity,"classname","trigger_hurt")
Вероятно, опасались "физической трансформации" в указанный entity тип.

Quote
Что вообще дает изменение имени класса уже созданного объекта?
Фактически ничего особенного в отношении "физических" свойств.
pfnFindEntityByString будет воспринимать уже новый класс.

 
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » DispatchKeyValue() (непонятки)
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2024