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

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

Ответ
 
Creatife
маппер
offline
Опыт: 537
Активность:
Триггеры : появление предмета (нид хэлп)
Надо сделать появление заного предмета после 30 секунд после его поднятия
я тут наработал немного, но ничего правильно не получается..
если ставить олжидание дольше 5 секунд то переменная предмета очищается как то непонятно..
еще если два предмета взять сразу то они оба появляются в месте последнего предмета...
и первый предмет получает тип второго.. вообще не понятные вещи творятся..
как я только не пробовал.. даже через массивы пытался.. ниче не получается..

см. прикрепленный файл

там сообщения я сделал что бы видеть когда пропадает переменная предмета..
и проверку на уровень..(это работает правильно)

помогите пожалуйста...

Creatife добавил:
еще .. эти предметы действуют сразу после поднятия..
леченье, мана, скорость..
Миниатюры
Кликните на картинку для увеличения
Название:  item create.jpg
Просмотров: 75
Размер:  25.7 Кбайт  
Старый 23.12.2005, 14:06
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
Creatife это патамушта когда юнит подбирает предмет, ссылка на него работает нормально. Но через 4 секунды (я так понял что предмет - что-то типа руны) этого предмета уже нету - нечего показывать и восстанавливать
Старый 23.12.2005, 14:15
MapMan
Corey 8 Taylor
offline
Опыт: 21,554
Активность:
Попробуй так:

MapMan добавил:
Для нормального изображения жмите увеличить!!! Хз почему так
Миниатюры
Кликните на картинку для увеличения
Название:  Файл1.JPG
Просмотров: 57
Размер:  55.9 Кбайт  Кликните на картинку для увеличения
Название:  файл2.JPG
Просмотров: 62
Размер:  61.6 Кбайт  
Старый 23.12.2005, 14:53
Creatife
маппер
offline
Опыт: 537
Активность:
MapMan У меня было так уже сделано, я делал для проверки..
к двум предметам..

А на карте у меня порядка 30-40 предметов должно быть.. если так для каждого писать то я умру вообще и карту это подтормозит.. плюс области надо делать для каждого предмета.. триггер создавать(по 2-а на предмет)..
я вот и взялся за написание универсального триггера..

у меня щас получается только воссоздание последнего предмета через 4 секунды..

Creatife добавил:
а через Кеш можно это сделать..
почему предмет не сохраняется в переменной?

Creatife добавил:
Вот здесь предмет появляетсядаже после 5 секунд от момента поднятия.
Но от цели далеко.. если взять подряд два предмета то они оба появятся в точке последнего взятого предмета..надеюсь понятно..
пробовал через массимы - не получается.. но почему?
помогите теперь с этим разобраться..
Миниатюры
Кликните на картинку для увеличения
Название:  stadia2.jpg
Просмотров: 48
Размер:  20.1 Кбайт  
Старый 23.12.2005, 16:39
BoogieMan

offline
Опыт: 562
Активность:
Creatife
я не пойму, в чем проблема-то?
у меня всё работает. качай приаттаченную мапу.

правда с рунами это не работает =)
Прикрепленные файлы
Тип файла: w3x items.w3x (17.0 Кбайт, 51 просмотров )
Старый 23.12.2005, 17:26
Creatife
маппер
offline
Опыт: 537
Активность:
BoogieMan вот именно что с рунами не работает..
я как только начал сделал точно так же..
мне надо именно с рунами..

почему с рунами не получается?

Creatife добавил:
руны до 5 секунды только могут появляться..
обычные предметы после 5 минут тоже могут...
в чем причина??

Creatife добавил:
BoogieMan таким способом создаются только те предметы которые добавилиь в инвентарь, а если успеть использовать подобранный предмет то он не создастся больше..
Старый 23.12.2005, 18:01
BoogieMan

offline
Опыт: 562
Активность:
Creatife
хм...

можно пойти извращенным путём...

креатишь на мапе много-много регионов (так чтобы получилось поле из квадратиков; хотя впринципе форма на твоё усмотрение ;) ).
для каждого региона креатишь свою переменную отвещающую за кол-во итемов в данном регионе (например "i"). делаешь так, чтобы при взятии итема проверялось его местоположение, и если он например находится в регионе А, то и переменную i[A] уменьшаешь на 1. ещё надо сделать триггер, который будет креатить итем в случайной точку региона A, если i[A] меньше, например, 30.

тут уже только рандом поможет.
можно конечно и ещё больше намудрить.. %)

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

BoogieMan добавил:
тебе там ещё придется сделать список предметов, из которых рандомом будет выбираться случайный.. )
ну, думаю, мою мыслю ты уловил ;)


>> почему с рунами не получается?

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

Отредактировано BoogieMan, 23.12.2005 в 19:09.
Старый 23.12.2005, 18:58
Iron
Листовой
offline
Опыт: 24,427
Активность:
А слабо заделать руну на базе итема, но при его подборе просто его ремувать (правда тут есть проблема с тем, что необходим 1-ин свободный слот). Или еще лучше, при входе героя в регион (регион не созданный в редакторе, а созданный функцией convert item to region) ремувать итем (хотя тут уже можно поизвращаться и заделать вместо итема, юнита, тогда все траблы должны отпасть).
А насчет появления 2-х предметов на 1-ой точке, то лучше всего при подборе итема на его месте создавать току и сразу ее заносить в массив, а потом ставить итем на точку, а не на месторасположение itemtake2, так как руна ремувается из игры через несколько секунд после ее взятия и в переменной ее уже не будет.

Отредактировано Iron, 23.12.2005 в 19:22.
Старый 23.12.2005, 19:17
BoogieMan

offline
Опыт: 562
Активность:
вот только щас дошло, что можно и так сделать =))
Прикрепленные файлы
Тип файла: w3x items2.w3x (18.5 Кбайт, 52 просмотров )
Старый 23.12.2005, 19:21
Iron
Листовой
offline
Опыт: 24,427
Активность:
УУУУУУУУУ, слишком усложнил код.
Перечитай пост выше, я его отредил, и поймешь почему переменная itemtake обнуляется.
Старый 23.12.2005, 19:26
BoogieMan

offline
Опыт: 562
Активность:
Iron
ну не знаю блин...
по-моему описанный тобою способ намного замудрённей =)
Старый 23.12.2005, 19:51
Creatife
маппер
offline
Опыт: 537
Активность:
Iron я уже выложил код с точками и массивами..
не получается с его помощью ничего...

BoogieMan слишком сложный способ... до этого я делал с регионами(но проще),
но хочется сделать общий триггер(или два триг.) ..

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

Creatife добавил:
Да, так и есть...
РЕшил с помощь таймеров...
в итоге два триггера используются.. по 10 строчек ) без областей гадких ))
Старый 23.12.2005, 20:56
Iron
Листовой
offline
Опыт: 24,427
Активность:
Смотри мой вариант, в 1-ин триггер.
Используются всего 2-е глобальные и 2-е локальные переменные (1-а для сохранения точки предмета, а 2-я для сохранения его типа). Таймер поставил на 15 сек. Теперь можешь подобрать хоть 1000 рун и предметов в произвольном порядке и с произвольным интервалом, но каждый из них восстановится ровно через 15 сек после того, как ты взял именно его.

Creatife не гони пургу, я даже без массивов с точками сделал, и все пашет.

PS: Я твои триггеры оставил, судя по всему твой вариант срабатывал не через 30 сек, а каждые 30 сек восстанавливались все недостающие итемы, т.е. не совсем то, что тебе было нужно вначале.
Прикрепленные файлы
Тип файла: w3x items2.w3x (18.5 Кбайт, 52 просмотров )

Отредактировано Iron, 24.12.2005 в 00:02.
Старый 23.12.2005, 23:56
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
Iron лол а нафига этот прикол с глобалами? не легче ли просто вот так?
Код:
function Trig_item_Give_Actions takes nothing returns nothing
 local item it = GetManipulatedItem()
 local localtion loc = GetItemLoc(it)
 local integer id = GetItemTypeId(it)

   call TriggerSleepAction(15.00)
   call CreateItemLoc(i, p)

 call RemoveLocation(loc)
 set loc = null
 set it = null
endfunction

function InitTrig_item_Give takes nothing returns nothing
    set gg_trg_item_Give = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ(gg_trg_item_Give, EVENT_PLAYER_UNIT_PICKUP_ITEM)
    call TriggerAddAction(gg_trg_item_Give, function Trig_item_Give_Actions)
endfunction
проста создаёшь триггер "item Give", конвертишь в кастом текст изаменяешь там всё вот этим
Старый 24.12.2005, 01:34
BoogieMan

offline
Опыт: 562
Активность:
>> а каждые 30 сек восстанавливались все недостающие итемы, т.е. не совсем то, что тебе было
>> нужно вначале.
угу, да впринципе то без разницы ;)
а в этих кустом скриптах я ваще полный нуп.. =)
Старый 24.12.2005, 14:29
Creatife
маппер
offline
Опыт: 537
Активность:
Iron я с локальными переменными не работал никогда...
щас гляну на атач твой..

Van Damm я тож ниче не понимаю в этом ))
Старый 24.12.2005, 15:06
Iron
Листовой
offline
Опыт: 24,427
Активность:
Van Damm Я делал с глобалами, т.к. понял, что Creatife не очень дружит с jass-ом. А так проще разобраться.

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

Отредактировано Iron, 24.12.2005 в 18:44.
Старый 24.12.2005, 18:39
Creatife
маппер
offline
Опыт: 537
Активность:
Iron я знаю что такое локальные переменные, просто я не знал как ими пользоваться,
т.к. небыло нужды..
Я посмотрел твой атач с локальными, это то что надо, респект, спасиб...
Старый 24.12.2005, 19:00
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
Creatife BoogieMan хм... как-то сразу об этом не подумал. В принципе мой кусок кода - это то же самое, что в аттаче у Iron, но для его работы не нужны глобальные переменные. Вот и вся разница. И ещё - если есть время и желание или знание какого-то другого языка программирования, - учите жасс, с ним фсё намного проще (признаюсь честно, ещё пол-года назад я сам пугался и падал со стула при виде custom script =)
Старый 24.12.2005, 23:09
Korneliy
DMF
offline
Опыт: 23,443
Активность:
Van Damm Преогромнейший тебе сенькс и респект!!!
Старый 25.12.2005, 02:10
Ответ

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

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

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

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



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