Сейчас 21:32:55 Вторник, 27 сентября, 2022 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Раздел картостроителя » [НАРАБОТКА]Выбор героев (Наработка на обсуждение и отлов багов)
[НАРАБОТКА]Выбор героев
_Seferot_Дата: Воскресенье, 11 Января 2009, 20:13:57 | Сообщение # 1
3 уровень
Группа: Пользователи
Сообщений: 44
Награды: 0
Репутация: 5
Блокировки:
Заметил что до сих пор среди новичков есть вопрос "Как сделать выбор героя, типа встал на нужный круг и он появился?"

Решил немного облегчить эту задачу. Собственно наработка пригодится не только новичкам я думаю.. Основной её плюс - существенное сокращение триггеров. При настройке указываются только области, для каждого героя нужно 2 (или 3, это зависит от того что нужно) параметра.

Всё, остальное система сделает сама т.е. создаст триггер для каждого из ваших героев. Для дополнения не рекомендуется лезть в код, для этого есть отдельный триггер. Думаю его найдут =)

Т.е. в картах где сотня героев нужно создать 100 триггеров, что есть большой геморой. Наработка позволяет сократить всё это до 3 триггеров (это и есть вся система =)

Наработка написана на скорую руку, так что у кого есть талант к тестированию, потестите плз =) О багах отпишитесь

Прикрепления: sh.w3x(20.7 Kb)


Сообщение отредактировал _Seferot_ - Воскресенье, 11 Января 2009, 20:14:14
 

BuHHu-nyXДата: Воскресенье, 11 Января 2009, 21:09:57 | Сообщение # 2
50 уровень
Превед медвед
Группа: Ветераны
Сообщений: 1941
Награды: 2
Репутация: 437
Блокировки:
Карту не смотрел, но насчет этого:
Quote (_Seferot_)
Т.е. в картах где сотня героев нужно создать 100 триггеров, что есть большой геморой.

Не согласен, ибо можно создавать условия. Но триггер будет большеват.


 

MaSerДата: Воскресенье, 11 Января 2009, 21:14:56 | Сообщение # 3
Котобог
Группа: Стримеры
Сообщений: 3574
Награды: 13
Блокировки:
пробежался глазами, массивы юнитов и областей глаза режут :\

 

_Seferot_Дата: Понедельник, 12 Января 2009, 18:51:27 | Сообщение # 4
3 уровень
Группа: Пользователи
Сообщений: 44
Награды: 0
Репутация: 5
Блокировки:
MaSer, согласен. Но людей, не знающих джасс в код допускать нельзя. Можно было всё полностью на кеше сделать, то тогда заносить параметры было бы менее удобно.

Добавлено (12-01-2009, 18:51)
---------------------------------------------
тестеров нету? =\

Нашёл вапрос о респауне крипов. =) Написал небольшую системку, воскрешает крипов через определённое время в том месте, где они погибли.

Не буду выкладывать всю карту, кода немного. В карте требуются 2 переменные:

Code
cache - Буфер игры (gamecache)
RCS_default_time - Реальная (real)

Это в коде карты:

Code
function GetObjectID takes handle h returns integer
     return h
     return 0
endfunction
function CreateCache takes nothing returns gamecache
     call InitGameCacheBJ("WM_GameCache.w3v")
     call FlushGameCacheBJ(GetLastCreatedGameCacheBJ())
     call InitGameCacheBJ("WM_GameCache.w3v")
     set udg_cache = GetLastCreatedGameCacheBJ()
     return udg_cache
endfunction
function cache takes nothing returns gamecache
     local gamecache gs
     if udg_cache == null then
         set gs = CreateCache()
     else
         set gs = udg_cache
     endif
     return gs
endfunction
function key takes nothing returns string
     return "WCMods_Key"
endfunction
function SetIntForObject takes handle h, integer r, string s returns nothing
     call StoreInteger(cache(), I2S(GetObjectID(h)), s + I2S(GetObjectID(h)), r)
endfunction
function GetIntForObject takes handle u, string s returns integer
     return GetStoredInteger(cache(), I2S(GetObjectID(u)), s + I2S(GetObjectID(u)))
endfunction
function SetRealForObject takes handle h, real r, string s returns nothing
     call StoreReal(cache(), I2S(GetObjectID(h)), s + I2S(GetObjectID(h)), r)
endfunction
function GetRealForObject takes handle u, string s returns real
     return GetStoredReal(cache(), I2S(GetObjectID(u)), s + I2S(GetObjectID(u)))
endfunction
function FlushKeyForObject takes handle h returns nothing
     call FlushStoredMission(cache(), I2S(GetObjectID(h)))
endfunction

Вот собстевнно код наработки (для неё нужно создать триггер с названием RCS, перевести его в JASS и весь код заменить на следующий):

Code
function ConditionAP takes nothing returns boolean
return GetOwningPlayer(GetDyingUnit()) == Player(PLAYER_NEUTRAL_AGGRESSIVE)
endfunction
function RespawnCreep takes nothing returns nothing
local timer t = GetExpiredTimer()
local location cl = Location(GetRealForObject(t, "unit_pos_x"), GetRealForObject(t, "unit_pos_y"))
local integer tu = GetIntForObject(t, "id_dying_unit")
call CreateUnitAtLoc(Player(PLAYER_NEUTRAL_AGGRESSIVE), tu, cl, 200)
call FlushKeyForObject(t)
call DestroyTimer(t)
call RemoveLocation(cl)
set t = null
set tu = 0
endfunction
function RCSAction takes nothing returns nothing
local real time = udg_RCS_default_time
local timer t = CreateTimer()
local integer dc = GetUnitTypeId(GetDyingUnit())
if GetUnitUserData(GetDyingUnit()) > 0 then
   set time = I2R(GetUnitUserData(GetDyingUnit()))
endif
call SetIntForObject(t, dc, "id_dying_unit")
call SetRealForObject(t, GetLocationX(GetUnitLoc(GetDyingUnit())), "unit_pos_x")
call SetRealForObject(t, GetLocationY(GetUnitLoc(GetDyingUnit())), "unit_pos_y")
call TimerStart(t, time, false, function RespawnCreep)
endfunction

//===========================================================================
function InitTrig_RCS takes nothing returns nothing
     set gg_trg_RCS = CreateTrigger()
     call TriggerRegisterAnyUnitEventBJ(gg_trg_RCS, EVENT_PLAYER_UNIT_DEATH)
     call TriggerAddAction(gg_trg_RCS, function RCSAction)
     call TriggerAddCondition(gg_trg_RCS, Condition(function ConditionAP))
endfunction

З.Ы. Если для какого то юнита на карте требуется индивидуальное время респавна, которое будет отличаться от времени, занесённого в переменную RCS_default_time, нужно этому юниту в кастом валуе указать нужное время.

 

АрранДата: Понедельник, 12 Января 2009, 20:45:28 | Сообщение # 5
10 уровень
Группа: Ветераны
Сообщений: 2172
Награды: 1
Репутация: 312
Блокировки:
Quote (_Seferot_)
среди новичков

в томто и дело, что среди новичков...думаешь новички разберутся в таких кодах?макимум что им надо-простые триггеры, и вообще, не думаю, что это так уж много сделать для каждого героя условие по сравнению со всем этим


 

_Seferot_Дата: Понедельник, 12 Января 2009, 23:05:39 | Сообщение # 6
3 уровень
Группа: Пользователи
Сообщений: 44
Награды: 0
Репутация: 5
Блокировки:
Quote (Арран)
в томто и дело, что среди новичков...думаешь новички разберутся в таких кодах?макимум что им надо-простые триггеры, и вообще, не думаю, что это так уж много сделать для каждого героя условие по сравнению со всем этим

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

 

АрранДата: Вторник, 13 Января 2009, 13:05:28 | Сообщение # 7
10 уровень
Группа: Ветераны
Сообщений: 2172
Награды: 1
Репутация: 312
Блокировки:
_Seferot_, хех, как раз таки собственно просмотрел, не думаю, что там легко можно понять что именно в коде надо изменить чтобы выбрать область куда надо заходить или даже как менять какого получаешь героя

 

_Seferot_Дата: Вторник, 13 Января 2009, 15:25:25 | Сообщение # 8
3 уровень
Группа: Пользователи
Сообщений: 44
Награды: 0
Репутация: 5
Блокировки:
Quote (Арран)
_Seferot_, хех, как раз таки собственно просмотрел, не думаю, что там легко можно понять что именно в коде надо изменить чтобы выбрать область куда надо заходить или даже как менять какого получаешь героя

жжёшь) У тебя глобальные методы я сматрю) А изучать надо было внимательней. То что ты сказал "непонятно" вносится всего лишь в глобальные переменные

 

BuHHu-nyXДата: Среда, 14 Января 2009, 19:25:54 | Сообщение # 9
50 уровень
Превед медвед
Группа: Ветераны
Сообщений: 1941
Награды: 2
Репутация: 437
Блокировки:
_Seferot_, я думаю, Ув. Арран имеет ввиду, что многие новички не имеют понятие о массивах и т.д.

 

_Seferot_Дата: Среда, 14 Января 2009, 19:52:59 | Сообщение # 10
3 уровень
Группа: Пользователи
Сообщений: 44
Награды: 0
Репутация: 5
Блокировки:
BuHHu-nyX, мне так не кажется из-за фразы
Quote (Арран)
не думаю, что там легко можно понять что именно в коде надо изменить чтобы выбрать область куда надо заходить или даже как менять какого получаешь героя
 

АрранДата: Среда, 14 Января 2009, 20:39:13 | Сообщение # 11
10 уровень
Группа: Ветераны
Сообщений: 2172
Награды: 1
Репутация: 312
Блокировки:
_Seferot_, я имел в виду все сразу.просто ведь я так понимаю мало вставить все эти триггеры в карту, а там у тебя, как сказал MaSer, хоть и он тут можно сказать больше всех в джаззе понимает, глаза режут коды эти все, а уж новичку сам подумай че думать?че с этим всем сделать?где чего надо переписать или чтото такое?

Добавлено (14-01-2009, 20:39)
---------------------------------------------
хотя вообщето спорить смысла нет, лучше уж у как раз новичков в этом спросить.


 

_Seferot_Дата: Среда, 14 Января 2009, 21:49:05 | Сообщение # 12
3 уровень
Группа: Пользователи
Сообщений: 44
Награды: 0
Репутация: 5
Блокировки:
Quote (Арран)
а там у тебя, как сказал MaSer, хоть и он тут можно сказать больше всех в джаззе понимает, глаза режут коды эти все

Возможно я ошибаюсь, но MaSer всего навсего имелл ввиду что можно было обойтись без этих глобальных переменных))) Что собственно было бы правильней и от чего я отказался в пользу удобства новичков)) А чего ты так прицепился к коду я непайму? В код ни одним, ни двумя глазами заглядывать не надо, тогда и резать их тебе не будет. Если у тебя нет нормальной критики, то лучше держи её при себе. Совет на будущее)

 

АрранДата: Среда, 14 Января 2009, 22:02:15 | Сообщение # 13
10 уровень
Группа: Ветераны
Сообщений: 2172
Награды: 1
Репутация: 312
Блокировки:
нормальная-не нормальная опять же ни тебе ни мне решать

 

MaSerДата: Среда, 14 Января 2009, 22:03:36 | Сообщение # 14
Котобог
Группа: Стримеры
Сообщений: 3574
Награды: 13
Блокировки:
Quote (BuHHu-nyX)
_Seferot_, я думаю, Ув. Арран имеет ввиду, что многие новички не имеют понятие о массивах и т.д.

Это не новички, это идиоты :dunno:


 

_Seferot_Дата: Среда, 14 Января 2009, 22:34:12 | Сообщение # 15
3 уровень
Группа: Пользователи
Сообщений: 44
Награды: 0
Репутация: 5
Блокировки:
Quote (Арран)
нормальная-не нормальная опять же ни тебе ни мне решать

Возможно, просто я вижу глупые посты (сорри, но на самом деле глупые, ибо просто неправильные), а ты при этом упорствуешь что они верные =)

 

АрранДата: Среда, 14 Января 2009, 22:48:52 | Сообщение # 16
10 уровень
Группа: Ветераны
Сообщений: 2172
Награды: 1
Репутация: 312
Блокировки:
в любом случае ничего точно правильно оценить нельзя со стороны, ты ж я так понимаю просто эту систему свою отлично понимаешь, тебе кажется что там все просто и все такое...а я говорю от лица новичков или как сказал масер идиотов.

Добавлено (14-01-2009, 22:48)
---------------------------------------------
_Seferot_, ты кстате не с хгм случайно?


 

MaSerДата: Среда, 14 Января 2009, 22:50:59 | Сообщение # 17
Котобог
Группа: Стримеры
Сообщений: 3574
Награды: 13
Блокировки:
Quote (Арран)
а я говорю от лица новичков или как сказал масер идиотов.

Идиот != новичок, вот только большинство новичков идиоты. Если ты говоришь от лица этой самой большей части новичков, то все весьма печально.
Quote (Арран)
в любом случае ничего точно правильно оценить нельзя со стороны, ты ж я так понимаю просто эту систему свою отлично понимаешь

Она действительно не столь уже сложная. Необходимо знать основы программирования и английский язык, не более того.


 

АрранДата: Среда, 14 Января 2009, 23:16:41 | Сообщение # 18
10 уровень
Группа: Ветераны
Сообщений: 2172
Награды: 1
Репутация: 312
Блокировки:
бесполезно вобщем с вами спорить...скоро до хгм так реально дойдем

 

_Seferot_Дата: Четверг, 15 Января 2009, 07:46:56 | Сообщение # 19
3 уровень
Группа: Пользователи
Сообщений: 44
Награды: 0
Репутация: 5
Блокировки:
Quote (Арран)
_Seferot_, ты кстате не с хгм случайно?

И там тож был... тока давно..

Добавлено (15-01-2009, 07:46)
---------------------------------------------

Quote (Арран)
ты ж я так понимаю просто эту систему свою отлично понимаешь, тебе кажется что там все просто и все такое...а я говорю от лица новичков или как сказал масер идиотов.

Это как спорить со слепым о цвете неба)) Зачем тебе в код лезть, если все параметры задаются в переменных и всё это я показал в примерах. Тебе совершенно не нужно изменять чёто в коде.

 

Ramazan(off)Дата: Суббота, 31 Января 2009, 22:29:56 | Сообщение # 20
11 уровень
Группа: Проверенные
Сообщений: 1670
Награды: 1
Репутация: 765
Блокировки:
Посмотрим сейчас как можно 100 триггером на 3 заменить...
 

sergeevmoreДата: Среда, 24 Июня 2009, 14:44:23 | Сообщение # 21
6 уровень
Группа: Заблокированные
Сообщений: 198
Награды: 0
Репутация: 21
Блокировки:
сделайте плз наработку выбора героя там где входиш в зону юнит умирает и тебе даётся герой
плз очень прошу сделатье эту наработку


<b>Alice</b>, из за тебя пропадает смысл в паролях, а так же постоянно будет требоваться пинать админа...(Enforcer)
 

PUVerДата: Четверг, 25 Июня 2009, 19:25:31 | Сообщение # 22
Сухопутные крысы!
Группа: Модераторы
Сообщений: 4462
Награды: 8
Репутация: 1845
Блокировки:
Лучший способ выбора героя - через таверну(Сэкономит размер карты и парится с тригами особо не нужно).
 

Bob_MarleyДата: Пятница, 26 Июня 2009, 23:11:52 | Сообщение # 23
3 уровень
Группа: Заблокированные
Сообщений: 64
Награды: 0
Репутация: -4
Блокировки:
Quote (PUVer)
Лучший способ выбора героя - через таверну(Сэкономит размер карты и парится с тригами особо не нужно).

Полностью согласен. И описание по чел-ки дать можно, и пятую точку рвать не надо с триггерами. Быстро, удобно и мало места на карте занимает.
 

PUVerДата: Пятница, 26 Июня 2009, 23:30:30 | Сообщение # 24
Сухопутные крысы!
Группа: Модераторы
Сообщений: 4462
Награды: 8
Репутация: 1845
Блокировки:
Я пробовал способ со светляками <_<
Полная лажа <_<

Добавлено (26-06-2009, 23:30)
---------------------------------------------
Ничего полезного, ну если вы любите разглядывать модельки, то пожалуйста.

 

Uchiha_Sasuke12Дата: Суббота, 03 Апреля 2010, 02:42:42 | Сообщение # 25
2 уровень
Группа: Пользователи
Сообщений: 37
Награды: 0
Репутация: 0
Блокировки:
это сделать смотет любой если у него тригеры русские


 

Форум о Warcraft 3 » Раздел для картостроителей » Раздел картостроителя » [НАРАБОТКА]Выбор героев (Наработка на обсуждение и отлов багов)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Copyright © 2006 - 2022 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz