RS Game Maker Community
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

 
Расширенный поиск
  Главная  Форум   Вики Блоги FAQ Игры Статьи Примеры Войти Регистрация  
Вики
Все желающие приглашаются редактировать вики. Можете писать о своих (или чужих) играх, размещать туториалы, постить статьи - главное навесить категорию.
Страниц: 1   Вниз
  Печать  
Помогите разобраться.
0 Пользователей и 1 Гость смотрят эту тему.
Sumoniko
Новичок


Репутация: 0
Offline Offline

Сообщений: 5

31 Январь 2010 в 00:10
Суть проблемы в том что надо сделать что то напоминающее функциии влияния сопротивлений на тип атаки для расчета повреждений. Пример бьем "обычной" атакой по "обычному" сопротивлению наносим урон кратный 1, если бьем "обычной" атакой по "каменному" сопротивлению наносим 0.5 кратный урон, если бьем "водной" атакой по "огненному" сопротивлению наносим 2х кратный урон. В игре будет присутствовать около 20 разных элементов атаки и зашиты и каждому объекту (юниту) их писать довольно сложно можно ли это как то упростить скриптом или как то по другому что бы я 1 функцией могла задать юниту элемент зашиты а атаки элемент атаки?
 
sinusy
__________
Частый посетитель
***

Репутация: 25
Offline Offline

Сообщений: 390


Ответ № 1 31 Январь 2010 в 00:34
Возможно, каждой нужно присвоить свои имена.А далее: в атаках
{
{
if attacktype=fire//Ваш тип оружия
if enemyttacktype=water//Тип оружия врага
global.strenght=0.5//Кратность соотносимости вашей силы, к силе противника(1=равные силы,2=в два раза сильнее,0.5=в два раза слабее)
}
{
if attacktype=water//Ваш тип оружия
if enemyttacktype=fire//Тип оружия врага
global.strenght=2//Кратность соотносимости вашей силы, к силе противника(1=равные силы,2=в два раза сильнее,0.5=в два раза слабее)
}
{
if attacktype=earth//Ваш тип оружия
if enemyttacktype=fire//Тип оружия врага
global.strenght=1//Кратность соотносимости вашей силы, к силе противника(1=равные силы,2=в два раза сильнее,0.5=в два раза слабее)
...
}
}
Sumoniko
Новичок


Репутация: 0
Offline Offline

Сообщений: 5

Ответ № 2 31 Январь 2010 в 01:45
Ну это не совсем то но уже близко возможно на основе этого что то сделаю. Просто суть в том что есть свои элементы атаки и элементы сопротивления. и я хочу задавая в формуле элемент таки а на враге зашиты получать определенный результат а не писать в каждом объекте кучу кода. вот например можно ли присвоить элементу атаки нормальной несколько аргументов на расчет при совпадении т.е выходит что то вроде этого. Normal = (аргумент1(нормальная) =1,аргумент2(огненая) =1,аргумент3(водная)=1...... аргументХХ(железная)=0.5 урона. и потом задавая в формулу как элемент атаки элемент Normal  формула будет рассчитывать урон исходя иэ элемента(ов) защиты того по кому атака. К примеру бьем синего человечка у которого зашита нормального элемента: сила атаки(10)*Norma = 10*1=10 урон. а если бьем по красному человечку у которого зашита Железного элемента то получим: сила атаки(10)*Normal = 10*0.5=5урон.
Lagevae
Норм
Старожил
******

Репутация: 194
Offline Offline

Награды:
За перевод справки Game Maker 8Легенда сайта
Сообщений: 2 703

Ответ № 3 31 Январь 2010 в 11:02
Ну так создай скрипт просчёта атаки, а в аргументы пиши как раз параметры силы атаки и параметры защиты врага.

therein lies the beauty
Sumoniko
Новичок


Репутация: 0
Offline Offline

Сообщений: 5

Ответ № 4 31 Январь 2010 в 13:47
я в скриптах не рублю.
Lagevae
Норм
Старожил
******

Репутация: 194
Offline Offline

Награды:
За перевод справки Game Maker 8Легенда сайта
Сообщений: 2 703

Ответ № 5 31 Январь 2010 в 14:07
я в скриптах не рублю.
Ну хоть копеечишь?)
Я вот мало чего понял из твоих постов. Понял что тебе, в зависимости от вида атаки надо просчитывать урон, не более...

therein lies the beauty
sinusy
__________
Частый посетитель
***

Репутация: 25
Offline Offline

Сообщений: 390


Ответ № 6 31 Январь 2010 в 16:53
писать в каждом объекте кучу кода
Зачем что-то в каждый объект писать?Это нужно будет вставить объект игрока.И всё
Sumoniko
Новичок


Репутация: 0
Offline Offline

Сообщений: 5

Ответ № 7 31 Январь 2010 в 18:40
а как вариант того что объектов игрока будет около 300? Плюс в каждом  объекте разные типы атак? плюс столько же примерно объектов противника. мне кажется что все же проще додуматься до 1 кусочка кода и потом чтоб само считало при совпадениях чем каждому типу писать кучу вариантов огромным кодом.
Lagevae
Норм
Старожил
******

Репутация: 194
Offline Offline

Награды:
За перевод справки Game Maker 8Легенда сайта
Сообщений: 2 703

Ответ № 8 31 Январь 2010 в 19:23
а как вариант того что объектов игрока будет около 300? Плюс в каждом  объекте разные типы атак? плюс столько же примерно объектов противника. мне кажется что все же проще додуматься до 1 кусочка кода и потом чтоб само считало при совпадениях чем каждому типу писать кучу вариантов огромным кодом.
А не проще сделать один объект игрока, и в зависимости устанавливать нужные переменные, чем при той же зависимости делать его клон?

therein lies the beauty
sinusy
__________
Частый посетитель
***

Репутация: 25
Offline Offline

Сообщений: 390


Ответ № 9 31 Январь 2010 в 22:03
а как вариант того что объектов игрока будет около 300? Плюс в каждом  объекте разные типы атак? плюс столько же примерно объектов противника. мне кажется что все же проще додуматься до 1 кусочка кода и потом чтоб само считало при совпадениях чем каждому типу писать кучу вариантов огромным кодом.
Зачем 300 объектов игрока?Тебе одного не хватает?А врагов что?Хоть 10 000.Им главное поставить генератор выбора магии.Хотябы рандомный, например:(если количество магий равно 20): (в крит или степ, смотря как по игре):

enemyttacktype=random(20)

Вот и всё

А в игроке attacktype игрок выбирает сам.Например если он выбрал огонь, то  переменная игрока attacktype равна 10

Ну вот и представим, что враг сгенерировал воду(13 например), а ты выбрал огонь(10 например).Вот и получается:

if attacktype=10//Твой тип магии
if enemyttacktype=13r//Тип магии врага
global.strenght=0.5//Кратность соотносимости вашей силы, к силе противника(Огонь против воды, его вода какбэ в 2 раза сильнее)

Этот код будет всего лишь один, и длинной в 100 строчек(copypast каждые три строчки)


Вообщем тебе решать
Sumoniko
Новичок


Репутация: 0
Offline Offline

Сообщений: 5

Ответ № 10 01 Февраль 2010 в 11:30
Ну в игре будет не совсем так. А будет следующее: Сам игрок будет иметь элемент 1или2 каждый уникальный враг будет иметь элемент 1-2 каждая атака что игрока что врага будет тоже иметь элемент 1 и  в зависимости попадания определенного элемента атаки по элементу(игрока.врага в зависимости кто бьет) урон будет от полного игнорирования до 2х кратного. Т.е не будет случайной генерации элемента он будет четким и задан тому или другому объекту а будет случайный генер врагов. Я вот думала как мне это все сделать и больше  склоняюсь к скрипту в котором будут переменные элемента и проверка по ним но я в них не разбираюсь как там и что даже приблизительно как его писать. наверно что то подобное var = normal,fire,water,wind,earth,.......и т.д
а потом проверка к примеру if attakelement = (normal) and
{defelement = normal {Xdmg = 1}
if defelement = fire {Xdmg = 0.5}
if defelement = water {Xdmg = 2}}// ну вот что то вроде этого можно сделать?
deathsoul
дезсоул
Ветеран форума
*****

Репутация: 548
Offline Offline

Награды:
Легенда сайта
Сообщений: 1 853


Ответ № 11 01 Февраль 2010 в 22:56
Да, что-то вроде этого можно сделать. К примеру, если враг атакует героя, предположим - в событии столкновения:
control>execute code
other.HP-=dam_ex(dam,other.element,element) 
//HP - переменная жизней героя, dam - переменная силы атаки врага, element - переменная которая указывает какой элемент у героя и врага
Потом - создаём новый скрипт (Shift+cntrl+с для гм 8, resources>create script), называем его "dam_ex" и записываем в него такой код:
if  argument1 = 0 //элемент защиты, в данном случае - героя. Предположим, 0 - normal
{
if argument2 = 0 return argument0*0.5 //элемент врага
if argument2 = 1 return argument0*1 //если 1 - fire
}

if  argument1 = 1 //элемент защиты, в данном случае - героя
{
if argument2 = 0 return argument0*1 //элемент врага
if argument2 = 1 return argument0*0.5
}
Вот, что-то в этом роде. switch в данном случае не уместен - всё равно код обрывается после возвращения числа.  ;)
Последнее редактирование: 02 Февраль 2010 в 20:27 от DeatHSoul
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

RSGMC (gmakers.ru) © 2007—2018
Счётчик–@Mail.ru