2 registered members (AndrewAMD, VoroneTZ),
831
guests, and 5
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
(GER) Hosting Game????
#302471
12/19/09 18:47
12/19/09 18:47
|
Joined: Mar 2008
Posts: 2,247 Baden Württemberg, Germany
Espér
OP
Expert
|
OP
Expert
Joined: Mar 2008
Posts: 2,247
Baden Württemberg, Germany
|
Hallo. Ich hab en kleines problem mit dme hosten eines Spiels. Seit nun 3 Stunden les ich mir hier: MP Anleitung, den letzten Abschnitt immer und immer wieder durch... Und ich komm nicht dahinter was des heißen soll.. bzw.. was ich eigentlich tun muss... Zumal es diesen letzten Abschnitt nicht auf Deutsch gibt.. Ich habe 1 kleinen code nach dieser Anleitung geschrieben. Und will den mal online mit nem freund testen... Ich hab aber kein plan von dem Serverzeugs... Ich hab einen Serverpart bei All-Inkl.com UND, Gibt es einen weg "-sv" und "-cl" zu setzen, ohne das der Spieler "Ausführen"/die kommandozeile nutzen muss??? Kann mir da wer helfen pls ^^?
Last edited by Espér; 12/19/09 19:01.
|
|
|
Re: (GER) Hosting Game????
[Re: Espér]
#302566
12/20/09 14:31
12/20/09 14:31
|
Joined: Mar 2008
Posts: 2,247 Baden Württemberg, Germany
Espér
OP
Expert
|
OP
Expert
Joined: Mar 2008
Posts: 2,247
Baden Württemberg, Germany
|
ok.. vergesst was ich gepostet habe.. Ich erstelle eine Patrone, sobald die linke Maustaste gedrückt wurde. Hier der codepart dazu:
[...]
vec_for_vertex(my_vertex.x, my, 155);
[...]
if(my.skill5 == 1 && my.skill93 == 0 && my.skill94 != 0)
{
bulget[bulnumb] = ent_create("bullet.mdl", my_vertex.x, flybullet);
set(bulget[bulnumb], PASSABLE);
vec_set(bulget[bulnumb].pan, my.pan);
bulnumb += 1;
if(bulnumb > 2900)
{
bulnumb = 0;
}
debugvar_1 = bulnumb;
my.skill94 -= 1;
wait(1);
my.skill93 = 1;
}
else if(my.skill5 == 0 && my.skill93 == 1)
{
my.skill93 = 0;
}
[...]
Das erstellt die Patrone, weißt die richtung des Spielers zu und lässt die aktion abfahren:
action flybullet()
{
//my.z += 5;
wait(1);
//c_setminmax(my);
my.lightrange = 10;
c_move(my, vector(40*time_step, 0,0), NULL, GLIDE | IGNORE_PASSABLE);
while(1)
{
if(you)
{
if(you.skill90 == 1 && my.client_id != dplay_id)
{
if((you.skill96==0) && (you.skill97>0))
{
you.skill97 -= 200;
break;
}
}
else
{
c_move(my, vector(40*time_step, 0,0), NULL, GLIDE | IGNORE_PASSABLE);
c_scan(my.x, my.pan, vector(360, 0, 10), IGNORE_ME);
}
}
else
{
c_move(my, vector(40*time_step, 0,0), NULL, GLIDE | IGNORE_PASSABLE);
c_scan(my.x, my.pan, vector(360, 0, 20), IGNORE_ME);
}
if(my.x > 735 || my.x < -745 || my.y > 115 || my.y < -1385)
{
break;
}
wait(1);
}
my.lightrange = 60;
ExploA2();
ExploB2();
ExploC2();
ExploD2();
killflare2();
ent_remove(my);
}
The problem ist nun folgendes: Ich kann mich selbst abschießen... o.O" Wie kann ich das unterbinden.. ich will nur gegner treffen können. D.h. Nicht mich. Und niemanden aus dem Team. Ein weiteres Problem ist auf folgendem Screenshot zu erkennen: Eigentlich sollte da nur 1 patrone sein... Starte ich nur den Server.. kommt auch nur 1 patrone. Sobald aber ein Client dazukommt, fängt das an mit spinnen und erstellt das alles mehrfach... Hat wer ideen? ^_^
Last edited by Espér; 12/20/09 21:24.
|
|
|
Online Shooting problem
[Re: Espér]
#302633
12/21/09 00:55
12/21/09 00:55
|
Joined: Mar 2008
Posts: 2,247 Baden Württemberg, Germany
Espér
OP
Expert
|
OP
Expert
Joined: Mar 2008
Posts: 2,247
Baden Württemberg, Germany
|
For a better understanding.. The last Problems in English: When i hit the left mouse button, a bullet is created. Here´s the code:
[...]
vec_for_vertex(my_vertex.x, my, 155);
[...]
if(my.skill5 == 1 && my.skill93 == 0 && my.skill94 != 0)
{
bulget[bulnumb] = ent_create("bullet.mdl", my_vertex.x, flybullet);
set(bulget[bulnumb], PASSABLE);
vec_set(bulget[bulnumb].pan, my.pan);
bulnumb += 1;
if(bulnumb > 2900)
{
bulnumb = 0;
}
debugvar_1 = bulnumb;
my.skill94 -= 1;
wait(1);
my.skill93 = 1;
}
else if(my.skill5 == 0 && my.skill93 == 1)
{
my.skill93 = 0;
}
[...]
This creates the bullet, set´s the fly angle and the action:
action flybullet()
{
//my.z += 5;
wait(1);
//c_setminmax(my);
my.lightrange = 10;
c_move(my, vector(40*time_step, 0,0), NULL, GLIDE | IGNORE_PASSABLE);
while(1)
{
if(you)
{
if(you.skill90 == 1 && my.client_id != dplay_id)
{
if((you.skill96==0) && (you.skill97>0))
{
you.skill97 -= 200;
break;
}
}
else
{
c_move(my, vector(40*time_step, 0,0), NULL, GLIDE | IGNORE_PASSABLE);
c_scan(my.x, my.pan, vector(360, 0, 10), IGNORE_ME);
}
}
else
{
c_move(my, vector(40*time_step, 0,0), NULL, GLIDE | IGNORE_PASSABLE);
c_scan(my.x, my.pan, vector(360, 0, 20), IGNORE_ME);
}
if(my.x > 735 || my.x < -745 || my.y > 115 || my.y < -1385)
{
break;
}
wait(1);
}
my.lightrange = 60;
ExploA2();
ExploB2();
ExploC2();
ExploD2();
killflare2();
ent_remove(my);
}
The problem is now: I can shot myself into hell. o.O" How can i say the bullet, not to hit me and my team members? The second problem is shown on the next screen: Actually there should only be 1 bullet... When i just start a servergame - it creates just 1. But, when a client joines the game, multiple bullets are created all over the screen when i shot. I hope someone can help me ^.^
|
|
|
Online Shooting problem!!! need help Y_Y
[Re: MrGuest]
#302635
12/21/09 01:11
12/21/09 01:11
|
Joined: Mar 2008
Posts: 2,247 Baden Württemberg, Germany
Espér
OP
Expert
|
OP
Expert
Joined: Mar 2008
Posts: 2,247
Baden Württemberg, Germany
|
ok.. i updated the Script a bit. here´s the mainscript:
//=================================================================================================================================
//
// EINBINDEN DER UNTERORDNER UND SCRIPTS
//
//=================================================================================================================================
#include <acknex.h>
#include <default.c>
#include "defines.c"
#include "particles.c"
var debugvar_1;
var debugvar_2;
var debugvar_3;
var playercount = 0;
ENTITY* my_id[3000];
//=================================================================================================================================
//
// FUNKTIONEN
//
//=================================================================================================================================
function on_client_event() // terminate client when server disconnects
{
if (event_type == EVENT_LEAVE) sys_exit("Spiel verlassen!");
}
function player_rungame() // reskill2 player when client disconnects
{
if (event_type == EVENT_DISCONNECT) ent_remove(me);
}
//=================================================================================================================================
//
// AKTIONEN
//
//=================================================================================================================================
action flybullet()
{
set(my, PASSABLE | SHADOW | CAST);
while(1)
{
c_move(my, vector(40*time_step,0,0), NULL, GLIDE | IGNORE_FLAG2 | IGNORE_PASSABLE);
c_scan(my, my.pan, vector(360,0,20), IGNORE_FLAG2 | IGNORE_PASSABLE | IGNORE_ME);
if(you)
{
if(you.status == 3)
{
break;
}
else if((you.player_id != my.own_id) && (you.player_team != my.own_team) && (you.status == 2 || you.status == 0))
{
you.health -= 50;
break;
}
else if(my.x >= 5000 && my.x <= -5000 && my.y >= 5000 && my.y <= -5000)
{
break;
}
}
wait(1);
}
ExploA2();
ExploB2();
ExploC2();
ExploD2();
killflare2();
ent_remove(my);
}
action spieleraktion()
{
////////////////////////////////////////////////////// ERSTELLEN DER VIEWS UND LOKALEN OBJEKTE
VIEW* mycam = view_create(500);
mycam.size_x = screen_size.x;
mycam.size_y = screen_size.y;
mycam.tilt = -90;
set(mycam, SHOW);
VIEW* minimap = view_create(1000);
minimap.pos_x = 10;
minimap.pos_y = 10;
minimap.size_x = 250;
minimap.size_y = 150;
set(minimap, SHOW);
reset(camera, SHOW);
PANEL* MM_border = pan_create("", 2000);
MM_border.pos_x = 6;
MM_border.pos_y = 6;
MM_border.bmap = bmap_create("MM_Frame.tga");
set(MM_border, SHOW);
ENTITY* bulget[3000];
////////////////////////////////////////////////////// ERSTELLEN DER EVENTS UND FLAGS
my.event = player_rungame;
my.emask |= ENABLE_DISCONNECT;
my.smask |= NOSEND_FRAME; // don't send animation
set(my, CAST | SHADOW | FAT);
////////////////////////////////////////////////////// ERSTELLEN DER SKILLS
//my.skill1 wird vom Mainscript erstellt und gibt die SpielerID an.
my.health = 1000;
my.energy = 3000;
////////////////////////////////////////////////////// ERSTELLEN DER LOKALEN DATENTYPEN
var aniprozent = 0;
var skill1_old = 0, skill2_old = 0, skill3_old = 0, skill4_old = 0, skill5_old = 0, skill6_old = 0, skill7_old = 0, skill8_old = 0, skill9_old = 0, skill10_old = 0;
var skill11_old = 0, skill12_old = 0, skill13_old = 0, skill14_old = 0, skill15_old = 0;
var skill42_old = 0, skill43_old = 0, skill44_old = 0;
var skill59_old = 0, skill50_old = 0, skill51_old = 0, skill52_old = 0, skill53_old = 0;
var skill97_old = 0, skill98_old = 0, skill99_old = 0;
var bulnumb = 0;
var distance = 0;
VECTOR* my_vertex = nullvector;
VECTOR* my_boneang = {x=0; y=0; z=0;}
ANGLE* my_newboneang;
////////////////////////////////////////////////////// ERSTELLEN DER KOLLISIONSHÜLLE
wait(1);
c_setminmax(my);
vec_set(my.max_x, vector(my.max_x-12, my.max_y, my.max_z+30));
vec_set(my.min_x, vector(my.min_x, my.min_y, my.min_z));
////////////////////////////////////////////////////// MAINCODE
while (1)
{
if (my.client_id == dplay_id) // player created by this client?
{
if (key_w-key_s != my.skill2) { // forward/backward key state changed?
my.skill2 = key_w-key_s;
send_skill(my.skill2,0); // send the key state in reliable mode
}
if (key_a-key_d != my.skill3) { // rotation key changed?
my.skill3 = key_a-key_d;
send_skill(my.skill3,0); // send rotation state in reliable mode
}
if (key_shift != my.skill8) { // running key state changed?
my.skill8 = key_shift;
send_skill(my.skill8,0); // send the key state in reliable mode
}
if (mouse_right != my.skill6) {
my.skill6 = mouse_right;
send_skill(my.skill6,0);
}
if (mouse_left != my.skill5) {
my.skill5 = mouse_left;
send_skill(my.skill5,0);
}
if (key_e != my.button_e) {
my.button_e = key_e;
send_skill(my.button_e,0);
}
if (key_space != my.button_space) {
my.button_space = key_space;
send_skill(my.button_space,0);
}
if (key_enter != my.button_enter) {
my.button_enter = key_enter;
send_skill(my.button_enter,0);
}
if (key_tab != my.button_tab) {
my.button_tab = key_tab;
send_skill(my.button_tab,0);
}
}
if (connection & CONNECT_SERVER) // running on the server?
{
if (my.skill1 != skill1_old) {
send_skill(my.skill1,SEND_ALL);
skill1_old = my.skill1;
}
if (my.skill2 != skill2_old) {
send_skill(my.skill2,SEND_ALL);
skill2_old = my.skill2;
}
if (my.skill3 != skill3_old) {
send_skill(my.skill3,SEND_ALL);
skill3_old = my.skill3;
}
if (my.skill4 != skill4_old) {
send_skill(my.skill4,SEND_ALL);
skill4_old = my.skill4;
}
if (my.skill5 != skill5_old) {
send_skill(my.skill5,SEND_ALL);
skill5_old = my.skill5;
}
if (my.skill5 != skill5_old) {
send_skill(my.skill5,SEND_ALL);
skill5_old = my.skill5;
}
if (my.skill6 != skill6_old) {
send_skill(my.skill6,SEND_ALL);
skill6_old = my.skill6;
}
if (my.skill8 != skill8_old) {
send_skill(my.skill8,SEND_ALL);
skill8_old = my.skill8;
}
if (my.skill10 != skill10_old) {
send_skill(my.skill10,SEND_ALL);
skill10_old = my.skill10;
}
if (my.skill11 != skill11_old) {
send_skill(my.skill11,SEND_ALL);
skill11_old = my.skill11;
}
if (my.skill42 != skill12_old) {
send_skill(my.skill12,SEND_ALL);
skill12_old = my.skill12;
}
if (my.skill15 != skill15_old) {
send_skill(my.skill15,SEND_ALL);
skill15_old = my.skill15;
}
if (my.skill42 != skill42_old) {
send_skill(my.skill12,SEND_ALL);
skill12_old = my.skill12;
}
if (my.skill43 != skill43_old) {
send_skill(my.skill13,SEND_ALL);
skill13_old = my.skill13;
}
if (my.skill44 != skill44_old) {
send_skill(my.skill14,SEND_ALL);
skill14_old = my.skill14;
}
if (my.skill50 != skill50_old) {
send_skill(my.skill50,SEND_ALL);
skill50_old = my.skill50;
}
if (my.skill51 != skill51_old) {
send_skill(my.skill51,SEND_ALL);
skill51_old = my.skill51;
}
if (my.skill53 != skill53_old) {
send_skill(my.skill53,SEND_ALL);
skill53_old = my.skill53;
}
if (my.skill97 != skill97_old) {
send_skill(my.skill97,SEND_ALL);
skill97_old = my.skill97;
}
if (my.skill98 != skill98_old) {
send_skill(my.skill98,SEND_ALL);
skill98_old = my.skill98;
}
if (my.skill99 != skill99_old) {
send_skill(my.skill99,SEND_ALL);
skill99_old = my.skill99;
}
}
if(my.status == 0)
{
my.pan += my.skill3*10*time_step;
distance = my.skill2*(10*(my.skill8+1))*time_step;
c_move(my, vector(distance,0,0), NULL, GLIDE | IGNORE_SPRITES | IGNORE_PASSABLE);
if(my.y < -500 && my.y > -1160 && (my.x > 530 || my.x < -530))
{
vec_set(mycam.x, vector(my.x, my.y, my.z + 400));
}
else
{
c_move(my, NULL, vector(0,0,-1), GLIDE | IGNORE_SPRITES | IGNORE_PASSABLE);
vec_set(mycam.x, vector(my.x, my.y, my.z + 800));
}
minimap.tilt = -90;
vec_set(minimap.x, vector(my.x, my.y, my.z + 1300));
if(my.button_e == 1 && my.get_e == 0)
{
if(my.get_map == 0)
{
set(minimap, SHOW); set(MM_border, SHOW); my.get_map = 1;
}
else
{
reset(minimap, SHOW); reset(MM_border, SHOW); my.get_map = 0;
}
my.get_e = 1;
}
else if(my.button_e == 0 && my.get_e == 1)
{
my.get_e = 0;
}
if(my.skill5 == 1 && my.get_shot1 == 0)
{
if(bulget[bulnumb] != NULL)
{
ent_remove(bulget[bulnumb]);
bulget[bulnumb] = NULL;
}
bulget[bulnumb] = ent_create("Bullet.mdl", my.x, flybullet);
bulget[bulnumb].own_id = my.player_id;
bulget[bulnumb].own_team = my.player_team;
bulget[bulnumb].pan = my.pan;
bulnumb ++;
if(bulnumb >= 2980){bulnumb = 0;}
my.get_shot1 = 1;
}
else if(my.skill5 == 0 && my.get_shot1 == 1)
{
my.get_shot1 = 0;
}
if(my.health <= 1)
{
ExploA();
ExploB();
ExploC();
ExploD();
killflare();
ent_morph(my, "Spielmodell_killed.mdl");
my.status = 1;
}
}
else
{
if(my.button_space == 1 && my.get_space == 0)
{
ent_morph(my, "Spielmodell.mdl");
my.health = 1000;
random_seed(0);
vec_set(my.x, vector(-350+random(700),0,50));
wait(1);
my.status = 0;
my.get_space = 1;
}
else if(my.button_enter == 1 && my.get_enter == 0)
{
ent_morph(my, "Spielmodell.mdl");
my.health = 1000;
random_seed(0);
vec_set(my.x, vector(-350+random(700),0,50));
wait(1);
my.status = 0;
my.get_enter = 1;
}
}
if(my.button_space == 0 && my.get_space == 1){my.get_space = 0;}
if(my.button_enter == 0 && my.get_enter == 1){my.get_enter = 0;}
wait(1);
}
}
//=================================================================================================================================
//
// DAS MAINSCRIPT UND SERVERTEST/SENDEN
//
//=================================================================================================================================
function main()
{
video_mode = 8;
if (!connection) { // not started with -cl / -sv -cl?
if (!session_connect(app_name,"")) // no client found on the localhost?
session_open(app_name); // start as server
}
do { wait(1); }
while (dplay_status < 2); // wait until the session is opened or joined
dplay_entrate = 4; // 16 ticks/4 = 4 updates per second
dplay_smooth = 0; // dead reckoning not needed
dplay_localfunction = 2;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Basis
shadow_stencil = 2;
shadow_mode |= IGNORE_MODELS;
level_load ("mp_game.wmb");
vec_set(camera.x, vector(0, 0, 0));
vec_set(camera.pan, vector (0, -90, 0)); // set a proper camera rotation
vec_set(sky_color.red, vector (10, 10, 10)); // Sky Color
mouse_mode = 2;
mouse_pointer = 1;
mouse_spot.x = 16;
mouse_spot.y = 16;
mouse_map = bmap_create("cursor.png");
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (connection & CONNECT_SERVER) { // this instance of the game runs on the server
video_window(0,0,0,"Servertest");
random_seed(0); // allow random player positions
my_id[playercount] = ent_create ("Spielmodell.mdl", vector(-350+random(700),0,50), spieleraktion); // create OWN player
wait(1);
my_id[playercount].skill1 = playercount;
playercount += 1;
send_var_to(NULL,playercount);
}
else
{ // otherwise, it runs on a connected client
video_window(0,0,0,player_name);
random_seed(0); // allow random player positions
my_id[playercount] = ent_create ("Spielmodell.mdl", vector(-350+random(700),0,50), spieleraktion); // create other players
wait(1);
my_id[playercount].skill1 = playercount;
playercount += 1;
send_var_to(NULL,playercount);
}
while(1)
{
vec_set(mouse_pos.x, mouse_cursor.x);
wait(1);
}
}
#define player_id skill1 // The id of this Player
#define own_id skill99 // The id of this Player
#define player_team skill97 // The id of this Player
#define own_team skill98 // The id of this Player
#define move skill2 // movement in X-Direction
#define rotate skill3 // rotating left/right
#define skinning skill4 // Wich Model is chosen by the player?
#define shot1 skill5 // shot with primary ammo
#define shot2 skill6 // shot with secondary ammo
#define weapon skill7 // Wich Weapon is Equiped?
#define button_shift skill8 // is Shift pressed?
#define button_e skill9 // is E pressed?
#define button_space skill10 // is SPACE pressed?
#define button_enter skill11 // is ENTER pressed?
#define button_tab skill12 // is TAB pressed?
#define health skill42 // Health of the Player
#define energy skill43 // Energy of the Player
#define status skill44 // 0=alive, 1=Dead, 2=frozen, 3=wall
#define towerrotate skill15 // The new Turret-tower angle
#define get_e skill59 // is E pressed SWITCH?
#define get_space skill60 // is SPACE pressed SWITCH?
#define get_enter skill61 // is ENTER pressed SWITCH?
#define get_map skill62 // is Minimap opened SWITCH?
#define get_shot1 skill63 // is Shit1 pressed SWITCH?
What are the Problem at the moment: 1.) The bullets are hitting.. nothing.... o.O 2.) The code creates multiple bullets at the same time... 3.) client seems to lag strong.
Last edited by Espér; 12/21/09 17:44. Reason: redone code
|
|
|
Re: Online Shooting problem!!! need help Y_Y
[Re: Espér]
#302967
12/24/09 01:02
12/24/09 01:02
|
Joined: Feb 2008
Posts: 3,232 Australia
EvilSOB
Expert
|
Expert
Joined: Feb 2008
Posts: 3,232
Australia
|
Have you looked at my last PM?
Bullet hits and multiples fixed...kindof, lag beyond my skills...
"There is no fate but what WE make." - CEO Cyberdyne Systems Corp. A8.30.5 Commercial
|
|
|
|