Перейти к публикации
  • Сейчас на странице   Всего пользователей: 2   (0 пользователей, 2 гостя)

Архивировано

Эта тема находится в архиве и закрыта для публикации сообщений.

АПЕЛЬСИН

ProDota.ru Arena

Рекомендованные сообщения

чехир, запости, пожалуйста, код парочки скиллов жассовых прям сюда, хочу поглядеть, как это выглядит, начну разбираться :hmm:

апельсинка, так всеже вернулись к системе 3 скилла+ульт? раньше хотели же 2+ульт

 

 

 

   public unit caster=null
   public unit target=null
   scope spell2
    public constant integer ID='A006'
    public struct spell
	    unit target=null
	    unit dummy =null
	    real x
	    real y
	    real t
	    lightning lg=null
	    effect    fx=null
	    effect    ex=null
	    static thistype array data
	    static integer	   count=0
	    static timer timer	    =CreateTimer()

    endstruct
    private function RAbs takes real r returns real
	   if r<0 then
		 return -r
	   endif
	   return r
    endfunction

    private function MoveToCircle takes unit user, real x,real y, real r returns nothing
	    real zx=GetUnitX(user)
	    real zy=GetUnitY(user)
	    real dm=0
	    if zx>x+r then
		  dm=RAbs(zx-(x+r))
		  UnitDamageTarget(caster,user,dm,true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
		  zx=x+r
	    elseif zx<x-r then
		  dm=RAbs((x-r)-zx)
		  UnitDamageTarget(caster,user,dm,true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
		  zx=x-r
	    endif
	    if zy>y+r then
		  dm=RAbs(zy-(y+r))
		  UnitDamageTarget(caster,user,dm,true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
		  zy=y+r
	    elseif zy<y-r then
		  dm=RAbs((y-r)-zy)
		  UnitDamageTarget(caster,user,dm,true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
		  zy=y-r
	    endif
	    SetUnitX(user,zx)
	    SetUnitY(user,zy)
    endfunction

    public function onUpdate takes nothing returns nothing
	    integer i=0
	    spell   s
	    loop
		    exitwhen i==spell.count
		    s=spell.data[i]
		    s.t=s.t-.04
		    MoveToCircle(s.target,s.x,s.y,150)
		    MoveLightningEx(s.lg,true,s.x,s.y,50,GetUnitX(s.target),GetUnitY(s.target),GetUnitFlyHeight(s.target)+50.)
		    if s.t<=0 or GetWidgetLife(s.target)<.405 then
				 RemoveUnit(s.dummy)
				 DestroyLightning(s.lg)
				 DestroyEffect(s.fx)
				 DestroyEffect(s.ex)
				 s.destroy()
				 spell.count=spell.count-1
				 spell.data[i]=spell.data[spell.count]
				 i--
				 if spell.count==0 then
				    PauseTimer(spell.timer)
				 endif
		    endif

		    i++
	    endloop
    endfunction

    public function ACT takes nothing returns nothing
	    spell this=spell.create()

	    this.target=target
	    this.x=GetUnitX(this.target)
	    this.y=GetUnitY(this.target)
	    this.t=1.5*GetUnitAbilityLevel(caster,ID)
	    this.lg=AddLightningEx("MFPB",true,this.x,this.y,25,this.x,this.y,GetUnitFlyHeight(this.target)+25.)
	    SetLightningColor(this.lg,1.,0,1.,.5)
	    this.fx=AddSpecialEffectTarget("Abilities\\Spells\\Undead\\Curse\\CurseTarget.mdl",this.target,"chest")
	    this.dummy=CreateUnit(Player(15),'e000',this.x,this.y,0)
	    SetUnitScale(this.dummy,5,5,5)
	    this.ex=AddSpecialEffectTarget("Abilities\\Spells\\Orc\\SpiritLink\\SpiritLinkTarget.mdl",this.dummy,"origin")

	    if spell.count==0 then
		   TimerStart(spell.timer,.04,true,function onUpdate)
	    endif
	    spell.data[spell.count]=this
	    spell.count=spell.count+1

    endfunction

   endscope

 

 

 

 

Пока еще не идеальный спелл, а всего лишь набросок.


"/quit Chehir" is not supported by prodota.ru kernel.

Поделиться сообщением


Ссылка на сообщение

обычный код, зная синтаксис фиолетовых функций, можно работать.

Апельсинка, опять ушел в подполье :hmm:


hs228.png
PROFIT Velen

1jYI7i0.jpg

 

There is a rainbow in the sky

sun.gif     rainbowsmile.gif

Поделиться сообщением


Ссылка на сообщение

у него лимитный интернет закончился просто, в июле ворвется наверно


1319992710_flyingburningcat.gif

Поделиться сообщением


Ссылка на сообщение
:opasnoste: куда убил весь трафик :opasnoste:

hs228.png
PROFIT Velen

1jYI7i0.jpg

 

There is a rainbow in the sky

sun.gif     rainbowsmile.gif

Поделиться сообщением


Ссылка на сообщение

поиграл бы за адольфа :trollface:

Поделиться сообщением


Ссылка на сообщение

обычный код, зная синтаксис фиолетовых функций, можно работать.

Апельсинка, опять ушел в подполье :hmm:

офк. там все очень просто, его боятся все, потому что там есть пару нюансов. нет автосборщика мусора, и потому даже самый простой спелл, через полчаса игры может заставить варкрафт жрать дополнительные 300 мегабайт оперативной памяти.

 

А, так. Все просто.

 

struct имя

данные

 

можно методы всякие воткнуть

 

endstruct

 

а потом инициализируешь функции.

 

 

 

 

 

 

В идеале, напишу пару героев (они так-то готовы, ожидаю апельсинку. он будет рад Адольфу. Может буду делать гомосека :]] ), потом помогу с оптимизацией кода и самой составляющей карты.


"/quit Chehir" is not supported by prodota.ru kernel.

Поделиться сообщением


Ссылка на сообщение

чехир молодец, а апельсинка цитрус :nate:


hs228.png
PROFIT Velen

1jYI7i0.jpg

 

There is a rainbow in the sky

sun.gif     rainbowsmile.gif

Поделиться сообщением


Ссылка на сообщение

Апельсинка конфу в скайпе сделаешь потом?

Поделиться сообщением


Ссылка на сообщение

чехир молодец, а апельсинка цитрус :nate:

А то.

 

Вот пока тебе еще код. В прицнипе это маленькая системка, позволяющая создавать крюки. Не хуже чем у пуджа. Делаю для одного спелла :yes:

 

 

library Hook
globals
constant real FRAMES = 40
constant real HOOKSPACING = 27
constant real TRIGTOQUADCUTOFF = 900
constant real TIMEREXEC = 1/FRAMES
constant real halfpi = 3.14159 / 2
constant real BARRICADEOFFSET = 100
hashtable hash=null
group HOOKHEADS
group OBJS=CreateGroup()
endglobals
define
GHInt(handle,int)=LoadInteger(hash,handle,int)
SHInt(handle,int,integer)=SaveInteger(hash,handle,int,integer)
FHInt(handle)=FlushChildHashtable(hash,handle)
enddefine
function alive takes nothing returns boolean
return GetWidgetLife(GetFilterUnit()) > .415
endfunction
function DoesQuadContainOrigin takes real x1, real y1, real x2, real y2, real x3, real y3, real x4, real y4 returns boolean
local integer counter = 0
if (x1-x2)*y1 < x1 * (y1-y2) then
	set counter = counter + 1
endif
if (x2-x3)*y2 < x2 * (y2-y3) then
	set counter = counter + 1
endif
if (x3-x4)*y3 < x3 * (y3-y4) then
	set counter = counter + 1
endif
if (x4-x1)*y4 < x4 * (y4-y1) then
	set counter = counter + 1
endif
return ((counter == 4) or (counter == 0))
endfunction
function IsPointInQuadFast takes real x, real y, real x1, real y1, real x2, real y2, real x3, real y3, real x4, real y4 returns boolean
return DoesQuadContainOrigin(x1-x,y1-y,x2-x,y2-y,x3-x,y3-y,x4-x,y4-y)
endfunction
struct MeatHook
timer t		   = null
LinkedList list   = 0
boolean hitTarget = false
unit caster = null
unit target = null
player p = null
trigger HeadDetect
integer bounces = 0
real angle = 0
real distance = 0
real distinterval = 0
real CosAngle = 0
real SinAngle = 0
real oldtx = 0
real oldty = 0
unit hookHead
method onDestroy takes nothing returns nothing
	if .t!=null then
		//call FHLocals(.t)
		call DestroyTimer(.t)
		set .t = null
	endif
	if .target != null then
		set .target = null
	endif
	if .caster != null then
		set .caster = null
	endif
	if .HeadDetect!=null then
		//call FHLocals(.HeadDetect)
		call DestroyTrigger(.HeadDetect)
		set .HeadDetect = null
	endif
	if .p!=null then
		set .p = null
	endif
	if .hitTarget then
		set .hitTarget = false
	endif
endmethod
static method ValidHookTarget takes nothing returns boolean
	local unit target  = GetTriggerUnit()
	local trigger trig = GetTriggeringTrigger()
	local MeatHook this= GHInt(GetHandleId(trig),StringHash("hook"))
	local boolean b	= (GetWidgetLife(target)>.415 and target!=.caster)
	set target		 = null
	set trig		   = null
	return b
endmethod
static method HookReverse takes nothing returns nothing
	local timer t = GetExpiredTimer()
	local MeatHook this = GHInt(GetHandleId(t),StringHash("this"))
	local Node node
	local unit hookGraphic
	local real hooky
	local real hookx
	local real cx = GetUnitX(.caster)
	local real cy = GetUnitY(.caster)
	local unit lastlink
	local real angle
	local real tx
	local real ty
	local real distancedamage
	local unit fire
	local boolean b = false
	local real tempsin
	local real tempcos
	local real tempsin2
	local real tempcos2
	local unit u
	local group g
	local real x
	local real x1
	local real x2
	local real x3
	local real x4
	local real y
	local real y1
	local real y2
	local real y3
	local real y4
//Cleanup
	if .list.size == 0 then
		//set tdata.beingHooked = false
		if GetWidgetLife(.caster)>.415 then
			call SetUnitAnimation(.caster,"stand")
		endif
		call PauseTimer(t)
		call FHInt(GetHandleId(t))
		if .HeadDetect!=null then
			call FHInt(GetHandleId(.HeadDetect))
			call DestroyTrigger(.HeadDetect)
		endif
		//if not(.isagrapple) then
		//	set .pd.hookout = CreateUnit(.p,'h00C',0,0,0)
		//endif

		call DestroyTimer(t)
		call LinkedList.destroy(.list)
		call MeatHook.destroy(this)
	else
			if .target!=null and .hookHead != null then
				call SetUnitX(.target,GetUnitX(.hookHead))
				call SetUnitY(.target,GetUnitY(.hookHead))
			endif
//Hook Retraction
			set node = .list.end
			loop
				exitwhen node == 0
				set hookGraphic = node.part
				set hooky = GetUnitY(hookGraphic)
				set hookx = GetUnitX(hookGraphic)
				if hookGraphic == .list.end.part then
					set angle = Atan2(cy-hooky,cx-hookx)
				else
					set angle = Atan2(GetUnitY(lastlink)-hooky,GetUnitX(lastlink)-hookx)
//Hit checking
					if 1000. >= TRIGTOQUADCUTOFF/FRAMES then
					if not(.hitTarget) and hookGraphic==.hookHead then
					set x = GetUnitX(hookGraphic)
					set y = GetUnitY(hookGraphic)
					set tempcos = Cos(angle+halfpi)
					set tempsin = Sin(angle+halfpi)
					set tempcos2 = Cos(angle)
					set tempsin2 = Sin(angle)
					set x1 = x + 200 * tempcos
					set x2 = x - 200 * tempcos
					set x3 = x + (1000/40)*tempcos2 + 200 * tempcos
					set x4 = x + (1000/40)*tempcos2 - 200 * tempcos
					set y1 = y + 200 * tempsin
					set y2 = y - 200 * tempsin
					set y3 = y + (1000/40)*tempsin2 + 200 * tempsin
					set y4 = y + (1000/40)*tempsin2 - 200 * tempsin
					set g = CreateGroup()
					call GroupAddGroup(OBJS,g)
					loop
						set u = FirstOfGroup(g)
						exitwhen u==null or b
						if IsPointInQuadFast(GetUnitX(u),GetUnitY(u),x1,y1,x2,y2,x4,y4,x3,y3) and u!=.caster then
							//call this.HitUnit(u)
							set b = true
						endif
						call GroupRemoveUnit(g,u)
					endloop
					call DestroyGroup(g)
					endif
					endif
				endif

				call SetUnitX(hookGraphic, GetUnitX(hookGraphic)+((1000/40)*Cos(angle)))
				call SetUnitY(hookGraphic, GetUnitY(hookGraphic)+((1000/40)*Sin(angle)))
				call SetUnitFacing(hookGraphic,angle*(bj_RADTODEG)+180)
				if ((hookx-cx)*(hookx-cx)+(hooky-cy)*(hooky-cy)) <= 2500 and node==.list.end then
					call .list.remove(node, node.prev)
				endif
				set lastlink = hookGraphic
				set node = node.prev
			endloop
	endif
	set g = null
	set fire = null
	set t = null
	set hookGraphic = null
	set lastlink = null
endmethod
static method HookForward takes nothing returns nothing
	local timer t = GetExpiredTimer()
	local MeatHook this = GHInt(GetHandleId(t),StringHash("this"))
	local Node frontnode = .list.front
	local unit lastlink
	local Node node
	local unit hookGraphic
	local real cx = GetUnitX(.caster)
	local real cy = GetUnitY(.caster)
	local real x
	local real y
	local real lang
	local real scale
	local real x1
	local real x2
	local real x3
	local real x4
	local real y1
	local real y2
	local real y3
	local real y4
	local real tempcos
	local real tempsin
	local real tempsin2
	local real tempcos2
	local boolean b = false
	local group g
	local unit u

	set .distinterval = .distinterval + (1000/40)
//Head Creation
	if .list.size == 0 then
		set scale = 1.
		set frontnode = .list.add()
		set hookGraphic = CreateUnit(.p,'h000',cx+(((1000/40)+3)*.CosAngle),cy+(((1000/40)+3)*.SinAngle),.angle*bj_RADTODEG)
		set .hookHead = hookGraphic
		set frontnode.part = hookGraphic

		call SetUnitScale( hookGraphic, scale, scale, scale )
		call SetUnitUserData(hookGraphic,this)
		call GroupAddUnit(HOOKHEADS,hookGraphic)
		call SetUnitUserData(hookGraphic,this)

//Hit detection trigger
		if (1000/40) < TRIGTOQUADCUTOFF/FRAMES then
			set .HeadDetect = CreateTrigger()
			call SHInt(GetHandleId(.HeadDetect),StringHash("hook"),this)
			call TriggerRegisterUnitInRange(.HeadDetect,.hookHead,200,Condition(function alive) )
			call TriggerAddCondition(.HeadDetect,Condition( function MeatHook.ValidHookTarget) )
			//call TriggerAddAction(.HeadDetect,function MeatHook.HitUnitT)
		endif
	else
//Normal creation
		if .distinterval >= HOOKSPACING then
			set .distinterval = 0
			set node = .list.add()
			set hookGraphic = CreateUnit(.p,'h001',cx,cy,Atan2(GetUnitY(node.prev.part)-cy,GetUnitX(node.prev.part)-cx)*bj_RADTODEG)
			set node.part = hookGraphic
		endif
	endif

//Chain Movement
	set node = frontnode
	loop
		exitwhen node == 0
		set hookGraphic = node.part
		if hookGraphic == .hookHead then
			set lang = .angle
//Hit Checking
			if (1000/40) >= TRIGTOQUADCUTOFF/FRAMES then
			set x = GetUnitX(hookGraphic)
			set y = GetUnitY(hookGraphic)
			set tempcos = Cos(lang+halfpi)
			set tempsin = Sin(lang+halfpi)
			set tempcos2 = Cos(lang)
			set tempsin2 = Sin(lang)
			set x1 = x + 200 * tempcos
			set x2 = x - 200 * tempcos
			set x3 = x + (1000/40)*tempcos2 + 200 * tempcos
			set x4 = x + (1000/40)*tempcos2 - 200 * tempcos
			set y1 = y + 200 * tempsin
			set y2 = y - 200 * tempsin
			set y3 = y + (1000/40)*tempsin2 + 200 * tempsin
			set y4 = y + (1000/40)*tempsin2 - 200 * tempsin
			set g = CreateGroup()
			call GroupAddGroup(OBJS,g)
			loop
				set u = FirstOfGroup(g)
				exitwhen u==null or b
				if IsPointInQuadFast(GetUnitX(u),GetUnitY(u),x1,y1,x2,y2,x4,y4,x3,y3) and u!=.caster then
					//call this.HitUnit(u)
					set b = true
				endif
				call GroupRemoveUnit(g,u)
			endloop
			call DestroyGroup(g)
			endif
		else
			set lang = Atan2(GetUnitY(lastlink)-GetUnitY(hookGraphic),GetUnitX(lastlink)-GetUnitX(hookGraphic))
		endif
		set x = GetUnitX(hookGraphic)+((1000/40)*Cos(lang))
		set y = GetUnitY(hookGraphic)+((1000/40)*Sin(lang))
//Reflection off walls
		if hookGraphic == .hookHead then
			if x<GetRectMinX(gg_rct_game) or x>GetRectMaxX(gg_rct_game) then
				if  .angle < 0 then
					set .angle = (-halfpi) + ((-halfpi)-.angle)
				else
					set .angle = (halfpi) - (.angle-(halfpi))
				endif
				set .bounces = .bounces+1
			elseif y<GetRectMinY(gg_rct_game) or y>GetRectMaxY(gg_rct_game) then
				if  .angle < halfpi then
					set .angle = 0-.angle
				else
					set .angle = -.angle
				endif
				set .bounces = .bounces+1
			endif
		endif
		call SetUnitX(hookGraphic, x)
		call SetUnitY(hookGraphic, y)
		call SetUnitFacing(hookGraphic,lang*bj_RADTODEG)

		set lastlink = hookGraphic
		set node = node.next
	endloop
	set .distance = .distance + ((1000/40))

	if .distance >= 200 or .hitTarget then
		call PauseTimer(t)
		call TimerStart(t,TIMEREXEC,true,function MeatHook.HookReverse)
		set .bounces = 0
	endif
	set g = null
	set t = null
	set lastlink = null
	set hookGraphic = null
endmethod
method SpawnHook takes unit caster, real angle returns nothing
	set .list	 = LinkedList.create()
	set .t		= CreateTimer()
	set .caster   = caster
	set .angle	= angle
	set .CosAngle = Cos(angle)
	set .SinAngle = Sin(angle)
	set .p		= GetOwningPlayer(caster)
	call SHInt(GetHandleId(.t),StringHash("this"),this)
	call TimerStart(.t, TIMEREXEC, true, function MeatHook.HookForward)
endmethod
endstruct
struct LinkedList
Node front =0
Node end =0
Node rem = 0
integer size = 0
method add takes nothing returns Node
	local Node current = Node.create()
	if .size == 0 then
		set .front = current
	elseif .size == 1 then
		set current.prev = .front
		set .front.next = current
	elseif .size > 1 then
		set current.prev = .end
		set .end.next = current
	endif
	set .rem = current
	set .end=current
	set .size = this.size+1
	return current
endmethod
method remove takes Node r, Node par returns nothing
	if r.next!=0 and r.prev!=0 then
		set r.prev.next = r.next
		set r.next.prev = r.prev
	endif
	if .front == r then
		set .front = r.next
	endif
	if .end == r then
		set .end = r.prev
	endif
	call RemoveUnit(r.part)
	set .size = .size -1
	set r.rem = par
endmethod
method onDestroy takes nothing returns nothing
	local Node node = .rem
	local Node storage
	loop
		exitwhen node==0
		set storage = node.rem
		call Node.destroy(node)
		set node = storage
	endloop
endmethod
endstruct
struct Node
unit part=null
Node next=0
Node prev=0
Node rem = 0
method onDestroy takes nothing returns nothing
	if .rem !=0 then
		set .rem = 0
	endif
	if .next!=0 then
		set .next=0
	endif
	if .prev!=0 then
		set .prev=0
	endif
	if .part!=null then
		call RemoveUnit(.part)
	endif
endmethod
endstruct

endlibrary

 

 


"/quit Chehir" is not supported by prodota.ru kernel.

Поделиться сообщением


Ссылка на сообщение

этот код уже по-серьёзнее :yes:


hs228.png
PROFIT Velen

1jYI7i0.jpg

 

There is a rainbow in the sky

sun.gif     rainbowsmile.gif

Поделиться сообщением


Ссылка на сообщение

чтобы быстрее все шло и не было неразберих

Поделиться сообщением


Ссылка на сообщение

хочу выглядеть вот так

s95418854.jpg


hs228.png
PROFIT Velen

1jYI7i0.jpg

 

There is a rainbow in the sky

sun.gif     rainbowsmile.gif

Поделиться сообщением


Ссылка на сообщение

Простой совет. Чем больше станадртных моделей героев - тем лучше. Гарантирую :yes:.

 

Я например себя значительно упростил.

 

Хотя в принципе, принимаются идеи героев (для моей реализации дальнейшой) общим весом не выше 150 килобайт. Можно поставить себе одну unique модельку, или парочку unique эффектов и иконок :vau:


"/quit Chehir" is not supported by prodota.ru kernel.

Поделиться сообщением


Ссылка на сообщение

хочу просто посмотреть анимации этой модели, может он бегает как паралитик, в таком случае лучше просто волка :yes:


hs228.png
PROFIT Velen

1jYI7i0.jpg

 

There is a rainbow in the sky

sun.gif     rainbowsmile.gif

Поделиться сообщением


Ссылка на сообщение

Гарантирую что анимация от кентавра. :rickroll:


"/quit Chehir" is not supported by prodota.ru kernel.

Поделиться сообщением


Ссылка на сообщение

Дополню пока идеями, составлю из прошлых идей, и своих идей, небольшой списочек.

 

Герои.

- Делятся на 12 таверн [идея ваша], в зависимости от таверны даётся стандартный первый скилл.

--- В моей идее, таверна будет одна. В ней игрок выбирает уже какой год (отталкиваюсь от вашей идеи), а потом героя.

--- Максимальный уровень героя - 25. Сделать ставку на высокий адреналин в игре. Касты частые. Атаки очень быстрые.

----- Надавить на то, что фармить миньонов - выгодно. Но долгий респ миньонов заставят двигаться.

----- 25 уровней делятся так. [Q-5][W-5][E-5][R-4/ульт качается на 5/10/15/20][Плюсы-5], по достижению 25 уровня, даётся еще одна абилка [G] или суперульта. Для затянувшихся игр, самое то. Разнообразит.

 

Предметы.

- Совершенно не думали о предметах. А ведь нужны предметы + их апгрейды. Есть пару идей на этот счёт.

--- Каждый предмет имеет три уровня апгрейда и зависит от ветки которую ты выбрал.

Пример: Меч(+7 атаки) + Меч(+7 атаки) = Усиленный меч(+15 атаки), Усиленны меч + меч = Наисильнейший меч.(30 атаки).

 

Далее уже из Наисильнейшего меча, можно собирать всякие крутые штукенции.

 

Крипы.

- Мне идея с опущенными юзерами в виде крипов понравилось. Теперь осталось в каждом разделе найти своего ненавистного, и поставить с таким же в своей локации.

Пример. Поставить слеера с моделькой Рака, в водной пучине. Будут выплывать на берег.

Алексинус и Арканию, можно моделькой петушкой, отправить пастись в лесах.

Слабачка на турничке, которого тут предлагали, худым зомби сделать, и поместить в свою локацию.

Ward - ну тут понятно, моделька птички :3 и с другими альбатросами порхающими

 

Пока набросок идей. Я дальше займусь системами и героями.


"/quit Chehir" is not supported by prodota.ru kernel.

Поделиться сообщением


Ссылка на сообщение

ну норм, всегда заебись им ластхитил :hmm:хотя анимация его магий не очень.

 

чехир :geys:

да насчет предметов ты правильно подметил, нифига не думали, предполагая позаимствовать из доту большую часть.

 

двенадцать лет в одной таверне как раз 12 ячеек - в принципе надо уже с апельсинкой и вермом обсуждать, потому что 12 таверн они добавили с соответсвующими модельками. Идея норм твоя.

 

про скилл на 25 лвле тоже поддерживаю обеими руками :rickroll:


hs228.png
PROFIT Velen

1jYI7i0.jpg

 

There is a rainbow in the sky

sun.gif     rainbowsmile.gif

Поделиться сообщением


Ссылка на сообщение

двенадцать лет в одной таверне как раз 12 ячеек - в принципе надо уже с апельсинкой и вермом обсуждать, потому что 12 таверн они добавили с соответсвующими модельками.

Там проблема в том, что это занимает пиздец сколько места. Для карты 96х96 - а я думаю что нужен именно такой размер, так как в Арене потребуется много драйва и 128х128 почти в два раза больше по размерам, ну то есть бегать то особо не выйдет.

 

Я бы, в самый центр карты, на начало пика, тыкнул бы таверну. И дал бы минуту времени на выбор героя. Хватит чтобы почитать, иначе случайно выпадет. Затем бы таверну просто удалил бы.

 

По поводу магазинов. С ними тоже сложностей куча. Если их раскидать где попало, то сложно будет собирать арты, и игра будет затягиваться. Можно тут таки сделать небольшую область, в которую можно попасть с пары порталов на острове. Ну и там ты неуязвимый в целом. После воскрешения в этой области появляешься. Ну и в ней портал, который кидает в рандомную точку на карте. Тяжело объяснять :3, нужно показывать примерами...

 

Забыл добавить в таверне по 10 героев всего будет. Две кнопочки зарезервирую под взять рандмного с таверны, и вернуться к выбору таверн.


"/quit Chehir" is not supported by prodota.ru kernel.

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...