XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Барахолка
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Nekit1234007

offline
Опыт: 11,916
Активность:
Portals Sys
Достаточно простая системка динамического создания порталов между зданиями.
Включается и выключается двумя функциями:
((код jass
void AddConnection(unit u, unit u2) Создаёт коннект между двумя зданиями.
void RemoveConnection(unit u) Убивает коннект, берётся один из порталов.
))
Настройки:
((код jass
USE_UNIT_USER_DATA=1 Если UUD уже используется, здесь ставить 0, но карта сможет работать только на 1.24+
RAW_ON='A000' Равкод способности-пустышки, которую можно наводить на юнита(здание), включающая способность
RAW_OFF='A001' Равкод способности-пустышки, без цели, выключающая способность
^ Можно включать и выключать одной способностью, при необходимости. Просто ставьте одинаковый равкод.
RAW_PORTAL='Awrp' Стандартная способность портала, лучше не менять
))
Естественно, попытка коннекта к уже приконнекченному зданию пресекается.
И да, системка на cJass
» Код
((код jass
library PortalSys
{
/*
Sys powered by:
  • Jass New Gen Pack v5d
  • AdicHelper v1.4.1.24 (cJass.xgm.ru)
  • JassHelper v0.A.2.A
Автор: N.e.k.i.t aka Nekit1234007
*/
#include "cj_types.j"
define
{
USE_UNIT_USER_DATA=1 Если UUD уже используется, здесь ставить 0,
но карта сможет работать только на 1.24+
RAW_ON='A000' Равкод способности-пустышки, которую можно наводить на юнита(здание), включающая способность
RAW_OFF='A001' Равкод способности-пустышки, без цели, выключающая способность
RAW_PORTAL='Awrp' Стандартная способность портала, лучше не менять
}
#if USE_UNIT_USER_DATA==0
private hashtable ht=InitHashtable()
#endif
private struct PC PortalConnections
{
unit u1
unit u2
static thistype create(unit un1,unit un2)
{
#if USE_UNIT_USER_DATA==1
if GetUnitUserData(un1)>0 || GetUnitUserData(un2)>0{return -1}
#else
if LoadInteger(ht,GetHandleId(un1),0)>0 || LoadInteger(ht,GetHandleId(un2),0)>0{return -1}
#endif
thistype this=thistype.allocate()
.u1=un1
.u2=un2
UnitAddAbility(un1,RAW_PORTAL)
UnitAddAbility(un2,RAW_PORTAL)
#if RAW_ON!=RAW_OFF
UnitRemoveAbility(un1,RAW_ON)
UnitRemoveAbility(un2,RAW_ON)
UnitAddAbility(un1,RAW_OFF)
UnitAddAbility(un2,RAW_OFF)
#endif
WaygateSetDestination(un1,GetUnitX(un2),GetUnitY(un2))
WaygateActivate(un1,true)
WaygateSetDestination(un2,GetUnitX(un1),GetUnitY(un1))
WaygateActivate(un2,true)
#if USE_UNIT_USER_DATA==1
SetUnitUserData(un1,this)
SetUnitUserData(un2,this)
#else
SaveInteger(ht,GetHandleId(un1),0,this)
SaveInteger(ht,GetHandleId(un2),0,this)
#endif
return this
}
void destroy()
{
if this<=0{return}
UnitRemoveAbility(.u1,RAW_PORTAL)
UnitRemoveAbility(.u2,RAW_PORTAL)
#if RAW_ON!=RAW_OFF
UnitRemoveAbility(.u1,RAW_OFF)
UnitRemoveAbility(.u2,RAW_OFF)
UnitAddAbility(.u1,RAW_ON)
UnitAddAbility(.u2,RAW_ON)
#endif
#if USE_UNIT_USER_DATA==1
SetUnitUserData(.u1,-1)
SetUnitUserData(.u2,-1)
#else
RemoveSavedInteger(ht,GetHandleId(.u1),0)
RemoveSavedInteger(ht,GetHandleId(.u2),0)
#endif
.u1=null
.u2=null
.deallocate()
}
}
void AddConnection(unit u, unit u2)
{PC.create(u,u2)}
void RemoveConnection(unit u) Берётся один из двух законнекченых юнитов.
{
#if USE_UNIT_USER_DATA==1
PC this=GetUnitUserData(u)
this.destroy()
#else
PC this=LoadInteger(ht,GetHandleId(u),0)
this.destroy()
#endif
}
}
))
Карта пример:
Прикрепленные файлы
Тип файла: w3x Portals_Sys_v1.0.0.w3x (17.7 Кбайт, 29 просмотров )

Отредактировано Nekit1234007, 07.11.2010 в 12:24.
Старый 12.01.2010, 22:16
XOR

offline
Опыт: 38,159
Активность:
имхо оно не нужно, т.к. делается довольно легко. Сюда разве новичков с академии посылать =)

Отредактировано XiMiKs, 12.01.2010 в 22:42.
Старый 12.01.2010, 22:36
Nekit1234007

offline
Опыт: 11,916
Активность:
Цитата:
Сообщение от Nekit1234007
...динамического создания порталов между зданиями.

Включается и выключается двумя функциями
Старый 12.01.2010, 22:38
SRes
1110101000
offline
Опыт: 9,997
Активность:
Если использовать где-либо в коде функции 1.24, то на ранних версиях уже работать не будет, не важно используются ли они (ибо компилятор проверит - ага, а что такое HetyV1.23() ).
Некий лулз состоит в том, что у новичков нету cJass'а, и не только у новичков.
Старый 16.02.2010, 11:54
alexprey
познающий Unity
offline
Опыт: 68,501
Активность:
бред полный! Во первых - это можно сделать даже на гуи. Во вторых это вообще не нужно
Старый 16.02.2010, 14:56
YellowStar
poon
offline
Опыт: 15,144
Активность:
У меня круче
waygateadd
waygateremove
waygateenable

стандартные функции вара -.-
Старый 16.02.2010, 15:16
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 21:45.