Надеюсь мои старания помогут желающим людям научиться скриптингу. Урок сделан выходя из одной вещи, не писать мне больше в скайп вопросы, ответы на которые можно найти тут. С первого раза думаю все не запомните, начинайте с простого. Стоком идеи и адаптации основ в этот текст является modsrepository.com Автор: Firex
Тут я опишу самое необходимое, без которого нет смысла читать эти уроки. 1) Редактировать скрипты удобнее всего будет программой NotePad++. 2) Старайтесь оформлять красиво написанный код, а иначе потом будет путаница. 3) Не пытайтесь запомнить два раза как делать однотипные вещи, этим вы запутаете себя. 4) Старайтесь меньше копировать чужие скрипты, но для "вникания" в их суть все же старайтесь их собрать у себя побольше.
Посоветую по личному опыту: Никогда не начинайте большой проект, он вам через пол месяца надоест и вы его забросите. Если хотите мод на уровне RotU , либо K3 - начинайте с простого, напишите альфу версию с основными чертами мода и пляшите от нее дальше.
Переменные: Служат для хранения информации в пределах одной функции.
Code
имя = значение; //Имя переменной не должно содержать пробелов и символов. Только qwerty. объект.имя = значение; // Присваиваем значение индивидуальной переменной объекта. text = "пример 123"; //Текст должен быть в кавычках, а иначе игра посчитает его за переменную. text = oldtext; //Присвоит переменной text значение переменной oldtext. logic = true; //true,false ,undefined. Подробнее о логических выражениях рассказано ниже.
Также есть глобальная переменная level , считывание данных может происходить откуда угодно. level.имя = значение;
Функции: Совершают определенное действие либо операцию, также могут возвращать исход действия в вызываемую переменную (return, об этом позже). При старте, игра загружает 2 gsc скрипта: Скрипт режима и скрипт карты. Имеются также и стандартные функции, подробнее о них читаем тут: ссылка http://openwarfaremod.com/cod4script/
Code
имя() //Имя функции { //Открывает функцию. } //Закрывает ее.
load_ent() { ent getEnt( "test", "targetname" ); //Подгружает объект со значением таргетнейма "test". ent startMove(100500,10) }
startMove(distance, time) { self moveZ(distance, time); //distance = Дистанция смещения по Z(так как функция moveZ). time = за какое время объект преодолеет это расстояние. }
self Это текущий объект в данной функции, в данном случае им является "test". Им может быть как и игрок, так брашмодель.
Пример: variable = 5 + 5 - 1; //Итого значение у нас будет 9. Также можно использовать текст:
Code
text = "test"; text_two = "Firex"; newtext = text + text_two; //У нас выйдет testFirex.
Также есть еще операторы, но их редко используют:
Code
переменная ++; //Прибавит 1 к значению. переменная --; //Отнимет 1 от значения. переменная += значение; //Добавит значение к значению переменной. переменная -= значение; //Противоположность +=
Оператор if проверяет данные и если они удовлетворяют условию - переходит к выполнению определенного кода. Операторы для сравнения:
Code
== >> Равно != >> Не равно ! >> Отключено либо на 0. < >> Меньше > >> Больше <= >> Меньше либо равно >= >> Больше либо равно && >> И || >> Или
Code
Пожалуй пора ставить примеры: if(переменная) //Если значение переменной true - удовлетворит. if(!переменная) //Если значение переменной false - удовлетворит. if(переменная >= переменная2) //Если значение переменной не равно переменной2 - удовлетворит. if(переменная == переменная2 && переменная3 >= переменной4 &&(переменная5 != переменная6 || переменная7 == переменная8)) //Переменная равна перменной2 И переменная 3 больше/равна переменной 4 И переменная 5 не равна переменной6 ЛИБО переменная 7 равна переменной8 - удовлетворит.
Вот полноценный пример:
Code
if(переменная == переменной2 || !переменная3) { Выполняемый код если условие удовлетворено. } else { Выполняемый код если условие Не удовлетворено. }
Вот еще один для разнообразия:
Code
if(переменная >= переменной2 && переменная3 <= переменной4) { Выполняемый код если условие удовлетворено. } else if(!переменная) { Выполняемый код если условие удовлетворено. } else { Выполняемый код если оба условия НЕ удовлетворены. }
}
Далее расскажу вам о циклах:
Code
while(условие) //Если место условия будет стоять 1 либо true - он будет бесконечен. { Код который в цикле. }
Пример:
Code
while(level.trololo <= 2) { Код будет в цикле пока level.trololo <= 2 }
Также есть система циклов for:
for( i=0;i оператор значение;i++) Это стандартное оформление, приступим к примеру:
В данном примере мы подгруужаем все объекты с таргетнеймом object. Далее с помощью цикла запускаем от имени каждого объекта функцию init. В функции init - self бдует являться этим объектом.
Вот еще пример для разнообразия:
Code
for(;;) //Этим мы сделали бесконечный цикл { wait 1; //В бесконечном цикле должно присутствовать ожидание, иначе игра перегрузится и зависнет/вылет D: if(переменная == переменная2) break; //Прекращает выполнение цикла. }
Если это поможет хоть кому, я допишу и перепишу полностью от себя. Просто не очень хочу тратить время попросту. Ах да, нет нужды писать в теме: "Круто, молодец" , это будет считаться флудом и караться 20 кусками.
Добавлю на заметку, полученных знаний с этого урока хватит для создания лифтов, магазинов(это у нас самые популярные вещи). Рекомендую использовать совместно с уроком Хидана, начинайте с простого.
Сообщение отредактировал =paha= - Пятница, 08.07.2011, 01:56