Скриптинг Дьюка 3D!

  Вход на форум   логин       пароль   Забыли пароль? Регистрация
On-line:    

Раздел: 
(((_NucleaR * ForuM_))) / Duke Nukem / Скриптинг Дьюка 3D!

Страницы: << Prev 1 2 3 4  новая тема

Автор Сообщение

Sonic & Beatles fan
Группа: Участники
Сообщений: 1918
Добавлено: 31-10-2009 22:28
Вероятно космос можно сделать, но я пока не разобрался как - не приходилось никогда делать подобное

Легенда форума
Группа: Администраторы
Сообщений: 3035
Добавлено: 31-10-2009 22:29
а сможешь сделать так чтоб по стенам и потолкам можно было бегать?

Sonic & Beatles fan
Группа: Участники
Сообщений: 1918
Добавлено: 01-11-2009 01:27
Это невозможно. Билд енжин это тебе не соурс, тут такого нельзя сделать... никто еще не сделал и не сделает.

Звезда форума
Группа: Администраторы
Сообщений: 1676
Добавлено: 01-11-2009 10:43
а впринцыпе космос по свойствам с водой схож))) ну под водой верх вниз плыть можно - то есть летать без джетпака)

Легенда форума
Группа: Администраторы
Сообщений: 3035
Добавлено: 01-11-2009 11:02
если космос сделать водной поверхностью а спрайт водолазного костюма заменить на спрайт скафандра то это уже будет быдло-мошейнечество

Звезда форума
Группа: Администраторы
Сообщений: 1676
Добавлено: 01-11-2009 11:31
это самый простой вариант, на мой взгляд

Бог форума
Группа: Администраторы
Сообщений: 3004
Добавлено: 02-11-2009 01:01
если космос сделать водной поверхностью а спрайт водолазного костюма заменить на спрайт скафандра то это уже будет быдло-мошейнечество

Исходя из такого, получается, что всё новое в DN3D мошенничество. А ты как думал всё делается? Надо хитрости всякие выдумывать и пользоваться всем, чем только можно.
Сделать так, как Mr.Cool написал, это то, что надо получится! Ваще класс будет!

Легенда форума
Группа: Администраторы
Сообщений: 3035
Добавлено: 02-11-2009 08:02
но у меня есть водный уровень..... Хотяяя.....

Легенда форума
Группа: Администраторы
Сообщений: 3035
Добавлено: 28-01-2010 16:52
ыыы я сделал уровень где ДЮК может полетать без джетпака аля в космосе а точнее целых три и все во 2ом эпизоде

PS

ктонить!!! переведите вооот эту статью на русский позяяялюста xD

Scripting
From EDukeWiki
Jump to:navigation, search
EDuke32 Scripting

Scripting · Full command list · EDuke32 event list · Structure members · Categorized command list


About This Guide
Intro

This guide will get you started with the basic aspects of EDuke32's commands -- those which set it apart from vanilla DN3D. This guide assumes both that the reader comprehends and understands the basic CON system as was seen in Duke Nukem 3D 1.3D/1.5, and that the reader is familiar with a few basic programming concepts.
CON Basics

If you are not already familiar with the default commands, the authors of this guide recommend the following guide, imported into the EDukeWiki for your convenience:

* Con FAQ 4.2 by Jonah Bishop (note: some sections have been shuffled around a bit by TX)

Another good source of basic information is the following FAQ:

* Con Editing Information v1.3 by James Ferry

Gamevars
Overview

Gamevars were introduced in WWII GI and remain the single most important aspect of the new commandset. Everything that sets EDuke32 scripting apart from regular Duke Nukem 3D scripting revolves around gamevars. Gamevars work similarly to integer variables in various programming languages, allowing the user to store, manipulate, and compare various information. Prior to gamevars, the only usable alternatives were manipulations of inventory item counters and move commands.
Types

There are three basic types of gamevar, each type storing a signed 32-bit fixed-point integer. The three basic types are as follows:

* Global variable: If a variable is declared as global, there is only one copy of it which may be accessed by any actor in the game.

For example:

gamevar shots_fired 0 0 // gamevar declarations must not occur inside states, events, or actor code

This line tells the game to create a variable named "shots_fired" which is initialized to 0. But wait -- what's the second 0 for? If you're asking yourself this question, go back and read the actual page on gamevars. Now that you know that gamevars have flags which must be declared along with the var's name and value, let's continue.

So, we've created a gamevar. Now what? For this example, we'll find the places in the GAME.CON code where the command "shoot SHOTSPARK1" occurs, and in each instance add the line "addvar shots_fired 1", so that in each case it looks like this:

shoot SHOTSPARK1
addvar shots_fired 1 // increments the counter

This will make the shots_fired var increment each time an enemy fires a SHOTSPARK1 projectile.

* Per-player variable: If a variable is declared as per-player, there is one copy of it for each player in the game, meaning that the variable is set independently for each player. If a player performs an action that triggers a per-player variable change within an event or the APLAYER actor code, it will only change for the player that initiated that action. If an actor changes a per-player variable, it will change for the closest player to the actor what changed it. You can use the setplayervar command to set a per-player var for a particular player who is not the closest one, but this is only necessary in multiplayer games (and even then it is seldom necessary). In single player games, there is little practical difference between a global gamevar and a per-player variable.

* Per-actor variable: If a variable is declared as per-actor, then there is separate copy of it for each sprite in the game. That means that every monster, projectile, player, decorative sprite -- pretty much anything in the game that isn't a wall or sector -- has its own copy of the variable. This is useful if you want to have actors other than the player store information for more than one tick. For example, suppose you want each monster to keep track of how many bullets it has fired:

gamevar shots_fired 0 2

This line tells the game that there is a variable named "shots_fired" which is initialized to 0 ( the 0 ) and is per-actor( the 2 ). With the gamevar declared, you could then add code to the monsters to increment the var when firing shots (just like in the example above for global gamevars). Since the gamevar is per-actor, the same code would now increment the variable separately for each monster.

There are also some pre-defined gamevars and special constantly updated gamevars which should only be used in certain ways.
Use and manipulation

Custom variables, or "gamevars" are declared with the gamevar command.

The syntax for defining a gamevar is:

gamevar <varname> <value> <flags>

You may use upper or lowercase letters for <varname>. EDuke32 is case-sensitive, so a var named "EXAMPLE1" is different from "example1." Variable names should not begin with a digit.

The <value> of the gamevar may be positive or negative and must be a whole number.

The <flags> may be set to either 0 (global), 1 (per-player), or 2 (per-actor).

Manipulation of gamevars is accomplished by using a variety of commands that range in functionality from simple mathematical functions to grabbing internal values for manipulation in the CONs. Here are a few of the more common variable manipulation primitives:

* setvar, setvarvar
* addvar, addvarvar
* subvar, subvarvar
* mulvar, mulvarvar
* divvar, divvarvar
* randvar, randvarvar

And some of the more rarely used ones:

* andvar, andvarvar
* sin, cos
* orvar, orvarvar
* shiftvarl, shiftvarr
* xorvar, xorvarvar

To test the values of gamevars, the following commands are used:

* ifvarand
* ifvarvarand
* ifvare
* ifvarg
* ifvarl
* ifvarn
* ifvarvare
* ifvarvarg
* ifvarvarl
* ifvarvarn

A complete list of primitives is available here. The importance of manipulating gamevars will become clear when we get to talking about getting and setting the members of the various structures in the game. All commands which accept read-only gamevars will also accept constants in place of them.
Members of game structures
Overview

EDuke32, like prior EDuke iterations, gives you access to game structures--basic elements of the game such as the player, sprites, walls, and sectors--and their predefined property variables, or members. There are many different structures which can be accessed, and a list of the common ones can be found here.
Player

The members of the player structure are controlled using the getplayer and setplayer commands. The player structure members deal with properties unique to the player which are not shared with other actors. These include variables associated to the players weapons, inventory items, special animations, jumping counters, etc. See the complete list of members of the player structure for details. This example shows how to get a member of the player structure into a variable, check its value, then alter a member of the player structure accordingly.
Actor / Sprite

Members of the sprite and hittype structures

Objects in the game world, such as monsters, missiles, bits of debris, and so on, are referred to as "sprites" (because they are typically rendered as 2D pictures). Sprites that execute code are usually referred to as "actors". Every sprite has its own data structure containing all of the member elements in the list linked to above. Various original CON commands, such as "cstat", "spritepal", "sizeat", etc. work by changing values in the sprite structure of the actor executing the command. These structure members can be modified directly in an EDuke32 script by using the setactor command. Commands like setactor enable us to modify every member of the structure, even those that could not be accessed with the original scripting system. See getactor and setactor to see how these commands are used.
Hittype
Spriteext
Sector

Members of the sector structure
Wall

Members of the wall structure
Game configuration

Members of the userdef structure
Player input

Members of the input structure
Events
Overview

EDuke32 provides both an object-oriented and an event-oriented interface to the game's internal workings. As you already know, the object-oriented part of Duke is the actor system -- in contrast to that, we'll be talking about the event-oriented portion in this section. As the name suggests, an event is a block of code that is triggered when a certain event in the game happens. Events in the game are triggered internally whenever a certain point in the code is reached.

Events are a key component in the manipulation of the game. Using events, we can do a variety of things such as intercept keypresses, draw to the screen (more on this later), redefine what a player does when certain actions are executed, et cetera.
Event use

Using an event is very easy — similar to the actor or state primitives, onevent is the primitive used to start the definition of a block of code to be associated with one of the events. Furthering the similarity, onevent must be terminated by the equivalent of an enda or an ends, an endevent.

The following example of event code will cause the player to have a full first aid kit every time the inventory is reset (e.g. when the player starts a game):

onevent EVENT_RESETINVENTORY
setplayer[THISACTOR].firstaid_amount 100
endevent


A note on synchronization

Events introduce the ability for CON code to be run in a manner that isn't synchronized. For example, display events may run a different number of times on each individual system in multiplayer. If you want your mod to function properly in multiplayer, it is very important to note whether an event is synchronized or not. Typically, you'll just want to avoid doing anything that changes the game state (including ifrnd and randvar) in display code.
Drawing to the screen

The ability to properly draw to the screen is a huge improvement over the hackish abominations involving quotes and unused ch aracters that we were forced to endure when using 1.3d and 1.5. There are several different drawing commands available, ranging in functionality from drawing graphics to the screen to printing text stored in quotes (see the section on string manipulation for more information).
Drawing commands

* rotatesprite
* gametext
* minitext
* digitalnumber
* myos (deprecated)
* myospal (deprecated)
* myosx (deprecated)
* myospalx (deprecated)

Changing the rendering properties of a sprite in the world

Members of the tsprite structure
Custom projectiles
Overview

EDuke32 adds the ability to create new projectiles in addition to the default types. A few basic types exist (shorthand: melee, bullet, and slow projectile) which can be used to create a nearly infinite variety of weapon types and even some entirely new effects, such as new types of debris, gibs, clouds of billowing smoke, et cetera.
Defining custom projectiles

Projectiles are defined via the defineprojectile command. The syntax for this command is:

defineprojectile <tilenum> <function> <value>

Before using this command list of defines should be created:

define PROJ_WORKSLIKE 1
define PROJ_SPAWNS 2
define PROJ_SXREPEAT 3
define PROJ_SYREPEAT 4
define PROJ_SOUND 5
define PROJ_ISOUND 6
define PROJ_VEL 7
define PROJ_EXTRA 8
define PROJ_DECAL 9
define PROJ_TRAIL 10
define PROJ_TXREPEAT 11
define PROJ_TYREPEAT 12
define PROJ_TOFFSET 13
define PROJ_TNUM 14
define PROJ_DROP 15
define PROJ_CSTAT 16
define PROJ_CLIPDIST 17
define PROJ_SHADE 18
define PROJ_XREPEAT 19
define PROJ_YREPEAT 20
define PROJ_PAL 21
define PROJ_EXTRA_RAND 22
define PROJ_HITRADIUS 23
define PROJ_VEL_MULT 24
define PROJ_OFFSET 25
define PROJ_BOUNCES 26
define PROJ_BSOUND 27
define PROJ_RANGE 28

These defines are used to fill the <function> block of defineprojectile.
Manipulating custom projectiles mid-game

Members of the tsprite structure
String manipulation
Quote redefinition mid-game

redefinequote <quotenumber> <string> // sets the quote number <quotenumber>'s text to <string>

Copying and concatenation

qstrcpy <quotenumber1> <quotenumber2> // sets the text of <quotenumber1> to the text of <quotenumber2>
qstrcat <quotenumber1> <quotenumber2> // adds the text of <quotenumber2> to the text of <quotenumber1>

Dynamic quotes
References

* Full command list
* EDuke32 event list
* Full list of structure members

* Categorized documentation

Легенда форума
Группа: Администраторы
Сообщений: 3035
Добавлено: 28-01-2010 16:56
тут всё написанно про скриптинг Eduke32 и стыренна она вот отсюда - http://wiki.eduke32.com/wiki/Scripting

Бог форума
Группа: Администраторы
Сообщений: 3004
Добавлено: 28-01-2010 22:09


...



Я такое максимум с Google переведу, но там я думаю не всё переведётся + к этому даже то, что переведётся, будет сделано не корректно.

Легенда форума
Группа: Администраторы
Сообщений: 3035
Добавлено: 28-01-2010 22:26
ыыы словарь рулит в общем давайте переводить)))

Звезда форума
Группа: Администраторы
Сообщений: 1676
Добавлено: 31-01-2010 22:44
мда... я ваще ничо не понял

Легенда форума
Группа: Администраторы
Сообщений: 3035
Добавлено: 01-02-2010 00:17
это полное описания скриптинга дюка))) Я уже третий день разбираю и перевожу американские иероглифы на русский юникодЪ

Легенда форума
Группа: Администраторы
Сообщений: 3035
Добавлено: 03-02-2010 12:17
тэкс у меня пара вопросов по скрипту)))

1) мне нужно сделать так чтобы буквы на главном меню были окрашенны в синюю палитру. Как такое сделать?

2) я нарезал демку в demorecord`инге! А как её просмотреть понятия не имею! Что нужно делать для просмотра демок дюка? Я так понимаю это всё идёт через главное меню но сколько я не ждал демо не появляется и при нажатии ESC тоже.

Легенда форума
Группа: Администраторы
Сообщений: 3035
Добавлено: 08-03-2010 12:14
мне кто нибудь поможет? -_-

Бог форума
Группа: Администраторы
Сообщений: 3004
Добавлено: 09-03-2010 14:14
Думаю только те, кому это не менее интересно и времени на всё хватает.

Легенда форума
Группа: Администраторы
Сообщений: 3035
Добавлено: 09-03-2010 20:42
жаль что эдди ушел отсюда((( но зато он есть в асе

Страницы: << Prev 1 2 3 4  новая тема
Раздел: 
(((_NucleaR * ForuM_))) / Duke Nukem / Скриптинг Дьюка 3D!

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

KXK.RU