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

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

Ответ
 
DZuMPER

offline
Опыт: 3,170
Активность:
3 ресурс
как добавить третий ресурс на пример камень
Старый 24.10.2009, 11:43
No-D
Ноуди
offline
Опыт: 5,611
Активность:
Если тебя лимит в игре не интересует, то через пищу вполне возможно. Только при наводке на этот ресурс будет отображаться красная дробь, но это можно даже использовать по-своему.
No-D добавил:
И вот сюда зайди. xgm.ru/forum/search.php?searchid=591630
Старый 24.10.2009, 11:48
alexprey
познающий Unity
offline
Опыт: 68,501
Активность:
No-D, можно заменить на пищу и с правельными руками даже лимита не будет))) но тогда не будет отображаться в инфо панели сколько требуется!
Старый 24.10.2009, 13:19
alexprey
познающий Unity
offline
Опыт: 68,501
Активность:
DZuMPER, а по какому принцепу должны ресурс приносить?
Старый 24.10.2009, 16:01
DZuMPER

offline
Опыт: 3,170
Активность:
камни должны быть в шахтах (как и золото то же принцып)
Старый 24.10.2009, 16:17
alexprey
познающий Unity
offline
Опыт: 68,501
Активность:
~DZuMPER, ясно

King Ksel добавил:
Значит воть
Нужно создать 2 переменные:
namenewres - название ресурса, тип "строчка"
gcahe - игровой кеш, тип "Буфер игры"
И создашь юнита с нулевой моделью, добавишь ему способности неуязвимый и москиты, требует еды 1, и радиус обзора 0
Код:
function AddNewRes takes integer count, player pl returns nothing
 local integer uid = 'h000' //Создашь юнита с нулевой моделью, добавишь ему способности неуязвимый и москиты, требует еды 1, и радиус обзора 0
 local integer n = 0
 loop 
  exitwhen n >= count
  call CreateUnit(pl,uid,0,0,0)
  set n = n + 1
 endloop
 set n = 0
 set uid = 0
endfunction
function RemoveNewRes takes integer count, player pl returns nothing
 local group gr = CreateGroup()
 local group lg = CreateGroup()
 local integer n = 0
 set bj_groupEnumTypeId = 'h000' //id того юнита который отвечает за 3 ресурс
 call GroupEnumUnitsOfPlayer(lg, pl, filterGetUnitsOfPlayerAndTypeId)
 call GroupAddGroup( lg, gr )
 call DestroyGroup(lg)
 loop
  exitwhen n >= count
  call RemoveUnit(GroupPickRandomUnit(gr))
  set n = n + 1
 endloop
 call DestroyGroup(gr)
 set n = 0
 set lg = null
 set gr = null
endfunction
function GetCountNewRes takes player pl returns integer
 local group gr = CreateGroup()
 local group lg = CreateGroup()
 local integer count
 set bj_groupEnumTypeId = 'h000' //id того юнита который отвечает за 3 ресурс
 call GroupEnumUnitsOfPlayer(lg, pl, filterGetUnitsOfPlayerAndTypeId)
 call GroupAddGroup( lg, gr )
 call DestroyGroup(lg)
 set count = CountUnitsInGroup(gr)
 call DestroyGroup(gr)
 set gr = null
 set lg = null
 return count
endfunction
function AddNeedNewRes takes integer uid, integer count returns nothing
 call StoreInteger(udg_gcahe,I2S(uid),"neednewres",count)
endfunction
function CreateStructure takes nothing returns nothing
 local unit u = GetConstructingStructure()
 local integer id = GetUnitTypeId(u)
 local player p = GetOwningPlayer(u)
 local integer cost = GetStoredInteger(udg_gcahe,I2S(id),"neednewres")
 if GetCountNewRes(p) >= cost then
  call RemoveNewRes(cost,p)
 else
  call DisplayTextToPlayer(p,1,-1,"|c00FFFF00Недостаточно " + udg_namenewres + "|r")
  call RemoveUnit(u)
 endif
 set u = null
 set id = 0
 set p = null
 set cost = 0
endfunction
function InitNewRes takes nothing returns nothing
 local trigger t = CreateTrigger()
 local integer i = 0
 loop
  exitwhen i >= 12
  call TriggerRegisterPlayerUnitEvent( gg_trg_s, Player(i), EVENT_PLAYER_UNIT_CONSTRUCT_START,null )
  set i = i + 1
 endloop
 call TriggerAddAction(t,function CreateStructure)
 set t = null
 set i = 0
endfunction

call AddNewRes(i,p) - добавляет "i" ед. ресурса "p" игроку
call RemoveNewRes(i,p) - удаляет (обратное AddNewRes)
call GetCountNewRes(p) - возвращает кол-во ресурса "p" игрока
call AddNeedNewRes(id,count) - устанавливает стоимость здания по его ID "id" на "count" ед. ресурса
call InitNewRes() - инициализирует данную систему! ОБЯЗАТЕЛЬНЫЙ КОД
Ну вот! Добычу не писал, времени нет!
Старый 24.10.2009, 17:21
agentex

offline
Опыт: 34,834
Активность:
Обнуление переменных базовых типов - фейл
Старый 24.10.2009, 21:16
DZuMPER

offline
Опыт: 3,170
Активность:
*~King_Ksel, * у мя пару вопросов к таму коду который ты написал
  1. зачем создавать юнита с 0 моделью добавить способнось москиты сделать штоб он не созавал игроку видимость и самое главно зачем ставить потребление еды 1 ед.
  2. в смысле id того юнита который отвечает за 3 ресурс. юнит с которого добывают камни, юнит который тягает ресурс т.е. работник или юнит который принимает камни (к примеру ратуша)
  3. куда вставлять скрипт всамом верху дерева триггеров или в триггер для кода????
Старый 25.10.2009, 22:03
bee
vjass.optimizer
offline
Опыт: 16,615
Активность:
Создашь юнита с нулевой моделью, добавишь ему способности неуязвимый и москиты, требует еды 1, и радиус обзора 0
зачем изменять кол-во ресурса созданием невидимых воинов? они же тоже игру тормозят в большом количестве. триггерным действием легче и удобнее имхо.
Старый 25.10.2009, 22:19
theFT
Kicked by Dron
offline
Опыт: 4,441
Активность:
Цитата:
Цитата:
Создашь юнита с нулевой моделью, добавишь ему способности неуязвимый и москиты, требует еды 1, и радиус обзора 0


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

А точнее
Код:
call SetPlayerStateBJ( Player(NP-1), PLAYER_STATE_RESOURCE_FOOD_USED, NF )

или
Код:
call AdjustPlayerStateBJ( NF, Player(NP-1), PLAYER_STATE_RESOURCE_FOOD_USED )

где NP - номер игрока, а NF количество еды.
Первое действие приравнивает количество ресурса к NF, а второе прибавляет к NF

Впринципе, это же самое есть на ГУИ...
Старый 26.10.2009, 07:05
DZuMPER

offline
Опыт: 3,170
Активность:
мне срочно нуна сделать 3 ресурс (весь форум облазил ниде не нашёл) на jass мне не совсем понятно оно не работает у мя, сделайте на GUI.
Старый 26.10.2009, 08:59
alexprey
познающий Unity
offline
Опыт: 68,501
Активность:
theFT, хоть бы нативку достал бы!
Старый 26.10.2009, 19:00
theFT
Kicked by Dron
offline
Опыт: 4,441
Активность:
King_Ksel, если считаешь нужным сам и доставай.
На GUI это выглядит как
Игрок - Set <номер игрока> сделать Потребление пищи равно <число>
или
Игрок - Add <номер игрока> сделать Потребление пищи равно <число>
Старый 26.10.2009, 19:58
alexprey
познающий Unity
offline
Опыт: 68,501
Активность:
theFT, я просто никогда и незадумывался что потребление пищи можно тригерно делать
Старый 26.10.2009, 21:17
DZuMPER

offline
Опыт: 3,170
Активность:
[b]theFT[/b], Ну это понятно шо мона так но как делать требование. Ну и как сделать шоб показывало токо потребление пищи (просто видел давно ищё но не помню де, да исам делал када ещё был полным нубом в едиторе я и сам ненал ка я это сделал).
И ещё как сделать шоб юнит при добытой части ресурса побежал в ратушу???????

Отредактировано DZuMPER, 28.10.2009 в 10:17.
Старый 28.10.2009, 09:57
Ответ

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

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

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

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



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