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

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

Ответ
 
Nerevar
I'll be back!
offline
Опыт: 18,352
Активность:
Думаю за сегодня допишу спелы
Правда есть пара вопросов
Старый 28.09.2011, 17:51
Fakov
Viva la Fa
offline
Опыт: 102,058
Активность:
будет. но чуть позже. я на выходных проверю стабильность некоторых абил(они просто помечены на проверку, надо освежить почему).
Я вернулся к разработке, неделю тестил в ггц, народ оценил, скажу честно - абилы все же акуеть как круты и важны. Мелкие недочеты исправил, сейчас собираюсь сделать систему крафта оружия, потому что народ клюет на подписанный магазин, и расстраивается, не находя там самого крафта. И после этого продолжу просто расставлять/балансировать крипов и боссов, и сюжетно-квестовую линейку. Щас на тест уходило около часа, при кривоватом балансе(нужно было долго качаться если втроем играли, да и Воин как класс был слаб).
Пока просто еще не все так готово, я присматриваюсь к товарищам, которые смогут в случае чего подсобить с сейв-лоадом, ибо вещь незаменима, а сохранять надо до черта всего.
Вот Nerevar, скажи, ты сможешь сейв-лоад написать рабочий? и тяжелый(в моем понимании...)
Старый 24.10.2011, 22:37
Nerevar
I'll be back!
offline
Опыт: 18,352
Активность:
яхз смогу ли - но попробовать стоит
Мб сделаю как-нить отдельную мапу с предметами\лвлом\статами\золотом(деревом) которое сохраняется
Старый 24.10.2011, 22:44
Fakov
Viva la Fa
offline
Опыт: 102,058
Активность:
ок. перспективы которые должны сейвится у нас:
  • герой (тушка перманентная)
  • лвл героя
  • характеристики героя(тут меня смущает то, что гер с каждым уровнем характеристики апает, но еще же книжками прокачаться может например).
  • 11 абилок характеристик(эти абилки в спеллбуке лежат, прокачиваются через эскейп, каждый навык имеет 10 уровней, у всех героев и игроков одинаковый)
  • 4 абилки покупаемые с уровнями
  • голд
  • 12 слотов предметов(герой и рюкзак-герой)
На мой взгляд это трындец 0_о
Старый 24.10.2011, 22:50
Nerevar
I'll be back!
offline
Опыт: 18,352
Активность:
11 абилок перманентные? то бишь изначально есть и только апаются?
герой\лвл героя\хар-ки\голд и предметы и 11 абилок(если они только качаются) относительно просто
а вот 4 добавляемые абилки придется подумать
Старый 24.10.2011, 22:57
Fakov
Viva la Fa
offline
Опыт: 102,058
Активность:
11 абилок перманентные? то бишь изначально есть и только апаются?
смотри: выбирается герой, у него пустой спеллбук изначально есть. Нажав эсекейп, можем выбрать прокачку любой из 11 абилок. После того как выбрали абилка появляется если ее не было в спеллбуке, или просто апается ее лвл.
а вот 4 добавляемые абилки придется подумать
если память не изменяет, то я абилки заносил в глобалки в момент их покупки. Но это не факт, мог просто счетчик на кол-во купленных абилок делать. собственно думаю запись в глобалки при нужде организовать можно)
Старый 24.10.2011, 23:08
Fakov
Viva la Fa
offline
Опыт: 102,058
Активность:
Nerevar, глянь код. Абилка - исцеляющий поток. Суть - триггерная волна исцеления, отскакивает от нескольких целей, восстанавливая ХП. Проблема в том, что молния не останавливается после исцеления единственной возможной цели. Поясню конкрентнее: играют двое, один является хилом. Хил кастует волну на единственного дружественного героя, она летит в него, исцеляет как положено, а потом мечется в рандомные точки оставшееся для отскоков количество раз, и только после этого исчезает.
плюс еще глянь - я там перенастроил строчку с нанесением урона, глянь, правильно ли. Ставил так: (РАзум кастера *5)+(ХП цели в момент поражения волной * 2)
» код
function Trig_HealLightning_Conditions takes nothing returns boolean
local integer spellId='A02Y'//здесь указываешь равкод своей способности
return GetSpellAbilityId() == spellId
endfunction

function GetUnitZZ takes unit u returns real
local location loc=GetUnitLoc(u)
local real z=GetUnitFlyHeight(u)+GetLocationZ(loc)+50.// эта строчка нужна для того,
 //чтобы молния создавалась не у ног,а чуть выше(на 50,можешь поменять)
call RemoveLocation(loc)
set loc=null
return z
endfunction

function HealLightning_m takes nothing returns nothing
local timer t=GetExpiredTimer()
local integer id=GetHandleId(t)
local unit caster=LoadUnitHandle(udg_ah2,id,0)
local unit target=LoadUnitHandle(udg_ah2,id,1)
local real damage = (GetHeroInt(caster,true)*2)+(GetHeroStr(target,true)*2)
//local real damage=LoadReal(udg_ah2,id,2)
local lightning lg=LoadLightningHandle(udg_ah2,id,3)
local integer number=LoadInteger(udg_ah2,id,4)-1
local group gn=LoadGroupHandle(udg_ah2,id,5)
local lightning lg2=LoadLightningHandle(udg_ah2,id,6)
local real x=GetUnitX(target)
local real y=GetUnitY(target)
local real z=GetUnitZZ(target)
local real tx
local real ty
local real tz
local group g
local unit target2
local integer end=0
local string lgstring="CLPB"// здесь указываешь название эффекта молнии,если захочешь изменить
// её вид
local string lgstring2="MFPB"// здесь указываешь название эффекта 2 молнии,если захочешь изменить
// её вид
local real radius=700.00// здесь расстояние поиска следующей цели для скачка молнии
    call DestroyLightning(lg)
    call DestroyLightning(lg2)
if number>0 then
    set g=CreateGroup()
    call GroupEnumUnitsInRange(g,x,y,radius,null)
    call GroupRemoveGroup(gn,g)
if CountUnitsInGroup(g)==0 then
    call GroupClear(gn)
    call DestroyGroup(gn)
    call GroupClear(g)
    call DestroyGroup(g)
    call PauseTimer(t)
    call DestroyTimer(t)
    call FlushChildHashtable(udg_ah2,id)
else
loop
    set target2=FirstOfGroup(g)
exitwhen end==1
if IsPlayerAlly(GetOwningPlayer(caster),GetOwningPlayer(target2)) and GetWidgetLife(target2)>=0.405 and not IsUnitType(target2,UNIT_TYPE_STRUCTURE) and not IsUnitType(target2,UNIT_TYPE_MAGIC_IMMUNE) and not IsUnit(caster, target2) then
    set end=1
else
    call GroupRemoveUnit(g,target2)
if CountUnitsInGroup(g)==0 then
    set end=1
    call GroupClear(gn)
    call DestroyGroup(gn)
    call PauseTimer(t)
    call DestroyTimer(t)
    call FlushChildHashtable(udg_ah2,id)    
endif
endif
endloop
    call GroupClear(g)
    call DestroyGroup(g)
if target2!=null then
    set tx=GetUnitX(target2)
    set ty=GetUnitY(target2)
    set tz=GetUnitZZ(target2)
    set lg=AddLightningEx(lgstring,true,x,y,z,tx,ty,tz)
    set lg2=AddLightningEx(lgstring2,true,x,y,z,tx,ty,tz)
    call GroupAddUnit(gn,target2)
    call SetUnitLifeBJ(target2,GetUnitStateSwap(UNIT_STATE_LIFE, target2) + damage)
//    call UnitDamageTarget(caster,target2,damage,true,false,ATTACK_TYPE_CHAOS,DAMAGE_TYPE_NORMAL,null)
// этот эффект можешь удалить,если хочешь
  call DestroyEffect(AddSpecialEffectTarget("Abilities\\Weapons\\Bolt\\BoltImpact.mdl",target2,&q​uot;origin"))
  call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Demon\\DemonBoltImpact\\DemonBoltImpac​t.mdl",target2,"origin"))
// я его добавил для красоты    call GroupAddUnit(gn,target2)
    call SaveUnitHandle(udg_ah2,id,1,target2)
    call SaveLightningHandle(udg_ah2,id,3,lg)
    call SaveInteger(udg_ah2,id,4,number)
    call SaveGroupHandle(udg_ah2,id,5,gn)
    call SaveLightningHandle(udg_ah2,id,6,lg2)
elseif target==null then
    call GroupClear(gn)
    call DestroyGroup(gn)
    call PauseTimer(t)
    call DestroyTimer(t)
    call FlushChildHashtable(udg_ah2,id)
endif
endif
elseif number==0 then
    call GroupClear(gn)
    call DestroyGroup(gn)
    call PauseTimer(t)
    call DestroyTimer(t)
    call FlushChildHashtable(udg_ah2,id)
endif
set caster=null
set t=null
set target=null
set target2=null
set lg=null
set lg2=null
set g=null
set gn=null
endfunction

function Trig_HealLightning_Actions takes nothing returns nothing
local unit caster=GetTriggerUnit()
local unit target=GetSpellTargetUnit()
local real x=GetUnitX(caster)
local real y=GetUnitY(caster)
local real z=GetUnitZZ(caster)
local real tx=GetUnitX(target)
local real ty=GetUnitY(target)
local real tz=GetUnitZZ(target)
local real damage=(GetHeroInt(caster,true)*5)+( GetUnitStateSwap(UNIT_STATE_LIFE, GetTriggerUnit()) * 2.00 )// это настройка урона,в данном случае урон=
// разум кастера(включая бонусы)*2
local timer t=CreateTimer()
local integer id=GetHandleId(t)
local real time=0.25// здесь указываешь период срабатывания таймера
local string lgstring="CLPB"// здесь указываешь название эффекта молнии,если захочешь изменить
// её вид
local string lgstring2="MFPB"// здесь указываешь название эффекта 2 молнии,если захочешь изменить
// её вид
local lightning lg=AddLightningEx(lgstring,true,x,y,z,tx,ty,tz)
local lightning lg2=AddLightningEx(lgstring2,true,x,y,z,tx,ty,tz)
local group gn=CreateGroup()
local integer number=5// здесь указываешь количество скачков молний
    call SetUnitLifeBJ(target,GetUnitStateSwap(UNIT_STATE_LIFE, target) + damage)
   // call UnitDamageTarget(caster,target,damage,true,false,ATTACK_TYPE_CHAOS,DAMAGE_TYPE_NORMAL,null)
// этот эффект можешь удалить,если хочешь
  call DestroyEffect(AddSpecialEffectTarget("Abilities\\Weapons\\Bolt\\BoltImpact.mdl",target,&qu​ot;origin"))
    call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Demon\\DemonBoltImpact\\DemonBoltImpac​t.mdl",target,"origin"))
// я его добавил для красоты
    call GroupAddUnit(gn,target)
    call SaveUnitHandle(udg_ah2,id,0,caster)
    call SaveUnitHandle(udg_ah2,id,1,target)
    call SaveReal(udg_ah2,id,2,damage)
    call SaveLightningHandle(udg_ah2,id,3,lg)
    call SaveInteger(udg_ah2,id,4,number)
    call SaveGroupHandle(udg_ah2,id,5,gn)
    call SaveLightningHandle(udg_ah2,id,6,lg2)
    call TimerStart(t,time,true,function HealLightning_m)
set caster=null
set target=null
set t=null
set gn=null
set lg=null
set lg2=null
endfunction

//===========================================================================
function InitTrig_HealLightning takes nothing returns nothing
    set gg_trg_HealLightning = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_HealLightning, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_HealLightning, Condition( function Trig_HealLightning_Conditions ) )
    call TriggerAddAction( gg_trg_HealLightning, function Trig_HealLightning_Actions )
// если будешь удалять эффект выше, то удаляй и эту строчку
    call Preload("Abilities\\Weapons\\Bolt\\BoltImpact.mdl")
    call Preload("Abilities\\Spells\\Demon\\DemonBoltImpact\\DemonBoltImpact.mdl")
// она была использована лишь для подгрузки спецэффекта
endfunction
Старый 17.12.2011, 01:26
Nerevar
I'll be back!
offline
Опыт: 18,352
Активность:
Надо так
Это
local real damage=(GetHeroInt(caster,true)*5)+( GetUnitStateSwap(UNIT_STATE_LIFE, GetTriggerUnit()) * 2.00 )
заменяем на это =>
local real damage=GetHeroInt(caster,true)*5+GetUnitState(caster,UNIT_STATE_LIFE) * 2.
Это
// я его добавил для красоты    call GroupAddUnit(gn,target2)
заменяем на это =>
// я его добавил для красоты
    call GroupAddUnit(gn,target2)
Это
call SetUnitLifeBJ(target2,GetUnitStateSwap(UNIT_STATE_LIFE, target2) + damage)
заменяем на это =>
call SetUnitState(target2,GetUnitState(target2,UNIT_STATE_LIFE) + damage)
Если ещё чё неправильного найду - напишу,но замена строки где добавление в группу было закоменчено думаю решит проблему

Отредактировано Nerevar, 17.12.2011 в 09:11.
Старый 17.12.2011, 08:58
ShamaN26

offline
Опыт: 9,546
Активность:
Товарищи проет жив?
Старый 15.05.2012, 12:19
Ответ

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

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

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

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



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