instance_deactivate_object(object0); //отключить все экземпляры object0 instance_activate_region(view_xview[0],view_yview[0],view_wview[0],view_hview[0],1); // активировать все в виде0
Добавлено (19.02.2014, 16:28) --------------------------------------------- Вот так попробуй
Сообщение отредактировал HSP - Среда, 19 Февраля 2014, 16:28
АААААААААААА, Братан, сегодня я думал как реализовать одну вещь, но тут ты заговорил про ID, и, короче, это то, что мне нужно, спасибо!!! Я ДАЖЕ НЕЗНАЮ КАК ОТБЛАГОДАРИТЬ ТЕБЯ!!!!!!
Ну зачем же тебе экспериментировать если я уже все сделал?
ЦитатаHSP ()
В обьекте персонажа создай событие Create: Код
max_ammo[0] = 10 // максимальное количество патронов в первом оружии ammo[0] = max_ammo[0] // патроны = макс.патроны max_ammo[1] = 100 // максимальное количество патронов во втором оружии ammo[1] = max_ammo[1] // патроны = макс.патроны // создашь этих переменных столько, сколько у тебя оружий
weapon = 0 // оружие, которое персонаж получит в начале игры
событие Step: Код
rate += 1
и Global Left Mouse (или на какую ты там стреляешь) Код if(rate >=2 and ammo[weapon]>0) если патронов в выбранном оружии больше 0 { bullet = instance_create(x+lengthdir_x(16, image_angle), y+lengthdir_y(16, image_angle), o_bullet) // создаем пулю o_bullet (у себя поменяй этот оьект на свою пулю) bullet.direction = image_angle // направляем пулю туда куда смотрит персонаж bullet.image_angle = image_angle // поворачиваем пулю так же как и игрока bullet.speed = 10 // скорость пули ammo[weapon] -= 1 // уменьшаем количество пуль у выбранного оружия rate = 0 }
Сообщение отредактировал HSP - Вторник, 18 Февраля 2014, 19:10
как только i становится равна 300 происходит удаление обьекта, в дебаггере я вижу что напротив моей переменной "error" - такой переменной не существует, следовательно при попытке увеличить несуществующую переменную Game maker выдаст ошибку, но он ее не выдает
Это удаление объекта. А если нужно будет изменить спрайт объекта, а не удалить его то что тогда?
Он перестанет работать после того как объьект удалится
Я так не думаю. Так как код в Step'e то проверка все-ровно будет выполнятся, да и код большой.
Второй эксперимент:
я создал обьект (object0), в нем есть событие Create
Код
i = 0
и step
Код
i+=1 if(i = 300){instance_destroy()}
я запускаю тест с дебаггером и в дебаггере начинаю мониторить переменную i обьекта object0 (object0.i) как только i становится равна 300 происходит удаление обьекта, в дебаггере я вижу что напротив моей переменной "error" - такой переменной не существует, следовательно при попытке увеличить несуществующую переменную Game maker выдаст ошибку, но он ее не выдает
Вывод: При удалении обьекта все переменные этого обьекта удаляются и Step не выполняется
Цитата HSP () Неужели никто из вас не понимает что instance_change(object2,1) это и есть instance_create(x,y,object2) и instance_destroy() просто в одну строчку?
Неужели ты не понимаешь, что чем меньше код, тем удобнее с ним работать и тем правильнее он считается? Ты же делаешь все слишком сложно. Твой таймер в шаге просто ни в какие рамки не лезет, это очень, повторюсь, глупо и нерационально.
Неужели ты не понимаешь, что "правильный код" это понятие для всех разное, я, например, не переношу ваш аларм и никогда им пользоваться не буду, для меня правильней и удобнее работать с таймером, уж привык я так, простите
HSP, зачем создавать новый/удалять старый, для этого придумана функция instance_change("объект, на который нужно сменить","цифра 1 или 0(1-в новом объекте выполняется событие create, 0 -не выполняется)")
Дело в том, что на моей практике я никогда не пользовался instance_change() (мне не требовалась замена одного обьекта на другой), чаще всего мне нужно либо удалить, либо создать, поэтому мой метод немного примитивный, но работает безотказно, так же как твой.
Добавлено (18.02.2014, 14:52) --------------------------------------------- Извиняюсь, за свой "просто ужасный код, к тому же работающий не так, как нужно" (С) Гуру Леонид PS: Работает он корректно.
Вот новый: Создаешь обьект 1 (object1) с событием Create:
Код
Time = 0 // таймер на ноль LifeTime = random(100) // максимальное значение таймера (время через которое произойдет какое-то действие)
Добавляешь в этот обьект 1 (object1) событие Step:
Код
Time += 1 // каждый кадр увеличиваем значение таймера на 1 if(LifeTime<=Time) // если таймер больше или равен максимальному значению таймера, то выполняется следующее действие { instance_change(object2,1) // заменяем обьект, в котором выполняется код (object1), на обьект 2 (object2) (by zzzzza) }
Все хорошо, только alarm надо рандомный. Легче всего так: Код alarm[0]=random(минимальное кол-во шагов, максимальное кол-во шагов)
Если я, используя твой просто ужасный random(минимальное кол-во шагов, максимальное кол-во шагов), к тому же не существующий, то я получу ошибку "Wrong number of arguments to function or script.". Напомню, что нам нужно получить случайное число, а не ошибку. Советую использовать один из следующих:
ЦитатаСправка
random(x) Returns a random real number between 0 and x. The number is always smaller than x.
random_range(x1,x2) Returns a random real number between x1 (inclusive) and x2 (exclusive).
либо
ЦитатаСправка
irandom(x) Returns a random integer number between 0 and x (inclusive when x is an integer).
irandom_range(x1,x2) Returns a random real number between x1 (inclusive) and x2 (inclusive). Both x1 and x2 must be integer values (otherwise they are rounded down).
Сообщение отредактировал HSP - Вторник, 18 Февраля 2014, 14:53