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: Автор: 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 } } )) Карта пример: Отредактировано Nekit1234007, 07.11.2010 в 12:24. |
12.01.2010, 22:16 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
XOR
offline
Опыт:
38,284Активность: |
имхо оно не нужно, т.к. делается довольно легко. Сюда разве новичков с академии посылать =) Отредактировано XiMiKs, 12.01.2010 в 22:42. |
12.01.2010, 22:36 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nekit1234007
offline
Опыт:
11,916Активность: |
Цитата:
|
|
12.01.2010, 22:38 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
SRes
1110101000
offline
Опыт:
9,997Активность: |
Если использовать где-либо в коде функции 1.24, то на ранних версиях уже работать не будет, не важно используются ли они (ибо компилятор проверит - ага, а что такое HetyV1.23() ).
Некий лулз состоит в том, что у новичков нету cJass'а, и не только у новичков. |
16.02.2010, 11:54 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
alexprey
познающий Unity
offline
Опыт:
68,501Активность: |
бред полный! Во первых - это можно сделать даже на гуи. Во вторых это вообще не нужно |
16.02.2010, 14:56 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
YellowStar
poon
offline
Опыт:
15,144Активность: |
У меня круче waygateadd waygateremove waygateenable стандартные функции вара -.- |
16.02.2010, 15:16 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|