Donnerstag, 20. September 2018, 20:29 UTC+2

Sie sind nicht angemeldet.

  • Anmelden

Lieber Besucher, herzlich willkommen bei: 3D-Gamestudio Hobbyschmiede. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

nico

Profi

Beiträge: 951

Wohnort: Bundesrepublik Deutschland

Beruf: Bildfälscher

Gamestudio: A7

1

Montag, 3. November 2008, 19:38

Template für alles

Hallo,
ich hab mich entschlossen mal das erste Template in dieses Forum zu bringen ich werde jeden Tag ein neues Stück hinzufügen und ausfürlich erklären was zu tun ist. Der weitere Script wird 2 Post weiter unten erklärt einfach runtegehn und nachschauen.
Alles was fett geschriebn ist ist der Finalcode also bitte nur den kopieren !


EDIT by Poison:
für die, die c-script nicht von lite-c unterscheiden können:
IST IN C-SCRIPT GESCHRIEBEN !!

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »nico« (6. November 2008, 17:12)


Slin

Gruppenleiter: Gemeinschaftsprojekt

Beiträge: 711

Gamestudio: A8

2

Montag, 3. November 2008, 21:15

Wenn ihr jetzt noch beide Codetags und ein schöneres Format nutzen würdet, wäre das ganze gleich noch besser...

Dabei meine ich insbesondere das Einrücken von Zeilen und noch den ein oder anderen Kommentar zur Strukturierug und Klärung des Codes.

Naja... ich brauchs nicht, aber vielleicht hilft es ja jemandem.

nico

Profi

Beiträge: 951

Wohnort: Bundesrepublik Deutschland

Beruf: Bildfälscher

Gamestudio: A7

3

Montag, 3. November 2008, 21:19

So für die die genauso wenig geduld haben wie ich oder Genauso ne langeweile, hier der Verbeserte Main Script:


var video_mode = 11;
var video_depth = 32;
var video_screen = 1;

string level1_wmb = <level1.wmb>;
string film1_wmv = <film1.wmv>;
string maintheme_wav = <music.wav>;

function main()
{
camera.ambient = 100;
level_load (level1_wmb);
media_play ("film1.wmv", null, 100);
wait (5);
media_loop("music.wav", null, 80);
}


Ok die Vorgehendsweise ist immer noch die gleiche jetz muss nur noch eine avi erstellt werden mit dem Namen film1.wmv und eine wav mit den namen music.wav.
Sobald man nun das Script startet wird der Film film1.avi abgespielt und dann in einen unendlichloop die datei music.wav im Hintergrund abgespielt.
Dann muss man noch ein level im Wed erstellen namens level1 das im gleichen verzeichnis abspeichern und builden. Nun müsste alles gehen.


Ok hier kommt der erste Movemnt Script für den eigenen Player :

action player1
{

var movement_speed = 7;
player = my;
my.enable_impact = on;
my.enable_entity = on;

my.enable_block = on;
my.invisible = on;
while (1)
{
player.pan -= 7 * mouse_force.x * time_step;
camera.x = player.x;
camera.y = player.y;
camera.z = player.z + 70;
camera.pan = player.pan;
camera.tilt += 5 * mouse_force.y * time_step;
vec_set (temp.x, my.x);
temp.z -= 1000;
temp.z = -c_trace (my.x, temp.x, ignore_me | ignore_passable | use_box);
temp.x = movement_speed * (key_w - key_s) * time_step;
temp.y = movement_speed * (key_a - key_d) * 0.6 * time_step;
c_move (my, temp.x, nullvector, ignore_passable | glide);
wait (1);
}
}

Ok den Text kopieren und in den Script einfügen.
Dann speichern und das mit dem Wed erstellten Level öffnen eine Entity einfügen und ihr unter Behavior die Action player1 geben. Nun nur noch das level etwas gestallten abspeichern und auf build drücken. Nun auf run dücken und du kannst durchs Level laufen.

Ok hier kommt nun der Script für Sich bewegende Bäume.



action baumbewegung
{
my.shadow = on;
my.skill21 = random(360);

while(1)
{
my.skill21 = (my.skill21+my.skill1*time_step)%360;
my.pan = sin(my.skill21)*my.skill2;
my.tilt=sin(my.skill21)*my.skill2;

wait(1);
}
}


Text kopieren und in den Script einfügen, Speichern den wed öffnen das level öffnen und nun eine Pflanze ins Level einfügen und ihr die action baumbewegung geben. Nun speichern auf buld drücken und dann auf run. Der Baum sollte sich nun bewegen. Unter Skill 1 und 2 sind die Geschwindigleit und die Stärke des Windes einstellbar.

Ok hier der WaffenCode :


var trace_coords;
var weapon_height;
var current_ammo = 20;

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

string hithole_tga = <hithole.tga>;
string target_mdl = <target.mdl>;

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

sound bullet_wav = <bullet.wav>;
sound gotweapon2_wav = <gotweapon2.wav>;
sound nobullets_wav = <nobullets.wav>;
sound gotammo_wav = <gotammo.wav>;

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function fire_bullets();
function show_target();
function display_hithole();

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

entity weapon2_ent
{

type = <coltroot.mdl>; //
pan = 0;
x = 55;
y = -22;
z = -22;
pan = 2;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

action players_weapon2
{
my.shadow = on;
my.passable = on;
while (player == null) {wait (1);}
while (vec_dist (player.x, my.x) > 50)
{
my.pan += 3 * time_step;
wait (1);
}
snd_play (gotweapon2_wav, 80, 0);
my.invisible = on;
weapon2_ent.visible = on;
sleep (1);
ent_remove (my);
}

starter use_weapon2()
{
proc_late();
var player1_pos;
var player2_pos;
while (player == null) {wait (1);}
while (1)
{
vec_set (player1_pos.x, player.x);
if (weapon2_ent.visible == on)
{
vec_set(trace_coords.x, vector(10000, 0, 0));
vec_rotate(trace_coords.x, camera.pan);
vec_add(trace_coords.x, camera.x);
if (c_trace(camera.x, trace_coords.x, ignore_me | ignore_passable | scan_texture) > 0)
{
ent_create (target_mdl, target.x, show_target);
}
}
wait (1);
vec_set (player2_pos.x, player.x);
if (vec_dist (player1_pos.x, player2_pos.x) != 0)
{
weapon_height += 30 * time_step;
weapon2_ent.z += 0.03 * sin(weapon_height);
}
}
}

function show_target()
{
my.passable = on;
my.ambient = 100;
my.scale_x = min (6, vec_dist (my.x, camera.x) / 500);

my.scale_y = my.scale_x;
my.scale_z = my.scale_x;
wait (1);
ent_remove (my);
}

on_mouse_left = fire_bullets;

function fire_bullets()
{
if (weapon2_ent.visible == off) {return;}
if (current_ammo > 0)
{
c_trace(camera.x, trace_coords.x, ignore_me | ignore_passable | activate_shoot);

if ((you == null) && (tex_flag1 == off))
{
ent_create (hithole_tga, target.x, display_hithole);


}

snd_play (bullet_wav, 100, 0);
current_ammo -= 1;
}
else
{
snd_play (nobullets_wav, 100, 0);
}
}

function display_hithole()
{
vec_to_angle (my.pan, normal);
vec_add(my.x, normal.x);
my.passable = on;
my.transparent = on;
my.ambient = 50;
my.flare = on;
my.oriented = on;
my.roll = random(360);
my.scale_x = 0.5;
my.scale_y = my.scale_x;
sleep (200);
ent_remove (my);
}

action ammo_pack
{

my.passable = on;
while (player == null) {wait (1);}
while (vec_dist (player.x, my.x) > 50)
{
my.pan += 3 * time_step;
wait (1);
}
snd_play (gotammo_wav, 80, 0);
my.invisible = on;
current_ammo += 20;
sleep (1);
ent_remove (my);
}








on_c = cammera;
function cammera()

{

camera.x = player.x;
camera.y = player.y;
camera.z = player.z - 20;
camera.pan = player.pan;
camera.tilt += 5 * mouse_force.y * time_step;
wait (10);


}

----------------------------------------------

So jetz erstelst du erstmal eine Tga datei die du hithole.tga nennst:
Dann erstellst du eine Mdl datei die du target.mdl nennst.
Dann erstellst du eine Mdl datei die als waffe dienen soll und diese nennst du coltroot.mdl .
Dann erstellst du diese Tondateien
<bullet.wav>;
<gotweapon2.wav>;
<nobullets.wav>;
<gotammo.wav>;

Nun einen neuen Script erstellen und ihn weopons2.wdl nennen und im gleichen verzeichnis abspeichern.
Oh hatte ich fast vergessen öffne den ersten Script den ich dir gegeben habe und schreibe dort
include <weapons2.wdl>;
hin.
Nun im Level deiner Waffe diezugehörige Action geben und deinen Muni Pack auch.

Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von »nico« (6. November 2008, 17:16)


Karotte

Fortgeschrittener

Beiträge: 508

Beruf: Schüler

Gamestudio: A6

4

Dienstag, 4. November 2008, 09:35

var video_mode = 11;
var video_depth = 32;
var video_screen = 1;

string level1_wmb = "level1.wmb";
string film1_wmv = "film1.wmv";
string maintheme_wav = "music.wav";

function main()
{
____camera.ambient = 100;
____level_load (level1_wmb);
____wait(7);
____media_play (film1_wmv", null, 100);
____wait (5);
____media_loop(maintheme_wav, null, 80);
}

und hier mal mit einrückungen und benutzung von strings, sonst sind die oben umsonst definiert.

edit: einrückungen gehen nicht, deshalb habe ich jetzt _ dafür verwendet

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Karotte« (4. November 2008, 09:36)


CetiLiteC

unregistriert

5

Dienstag, 4. November 2008, 14:48

darf ich mal fragen, was um Himmelswillen das bringen soll???
Außer, das das ganze hier zu einem Spam-Thread ausartet?

6

Dienstag, 4. November 2008, 14:57

RE: Template für alles

Zitat

Original von nico
RE: Template für alles

Hi,

Ich glaub das wird so ne mischung aus a Rpg und Shooter. Da kommt noch nen Waffenscript hinzu nen Levelwechselscript ne verbesserte Main ne KI Vögel und andere Tiere Laufende Menschen und Pflanzen die Sich bewegen wenn man Durchlaüft pflanzen die Sich so schon Bewegen und nen Leitersript. Vieleich auch noch etwas mehr. Naja und wie du es gesehen hast das ist etwas viel um alles an einen Tag zu machen. Ausserdem mach ich das nur nebenbei da mir nin letzter Zeit langeweilig ist.

@Nico: Am besten du editierst deinen ersten Post und fügst die neuen Schnipsel ein.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »B. Eagle« (4. November 2008, 14:58)


CetiLiteC

unregistriert

7

Dienstag, 4. November 2008, 15:01

Ich würde das ganz so machen:
Wirklich NUR den fertigen Code posten, und dannach keine lanatmigen Diskussionen halten, sondern den nächsten Code posten. Denn was bringt es denen(wer immer es ist^^) die den Code benutzen wollen, wenn sie stundenlang in dem Thread rumwühlen müssen, und dann auch noch finalen, von schlechtem code trennen müssen...

Poison

Moderator

Beiträge: 834

Wohnort: Deutschland

Beruf: Schüler

Gamestudio: A7

8

Dienstag, 4. November 2008, 16:26

Stimmt da hast du aber sowas von Recht ;)
Man entdeckt ja vor lauter Posts den eigenlichen code nicht :P

edit:
btw was bringt es eigentlich denn eine Main-Funktion zu posten?? Gamestudio generiert den doch automatisch xD :D
Everything is possible...just DO IT!!:D

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Poison« (4. November 2008, 16:28)


Thema bewerten