DerFlamer

"Gangwar" Server problem

Recommended Posts

 

 

Moin Leute, 

als allererstes möchte ich gerne anmerken, dass ich kein Programmierer bin und davon relativ wenig verstehe, ich möchte lediglich für mich und ein paar Freunde einen Gangwar-Server erstellen.

Ich würde gerne über Keybinds (Komma und Punkt) nach einem 4 Sekunden timeout das health oder die armour auffüllen, wie hier unten bereits zu sehen.

Mein Problem ist nun, dass man noch beide Tasten gleichzeitig drücken kann und somit in 4 Sekunden Leben + Rüstung gleichzeitig auffüllt.

Außerdem kann man die Taste spamen, sodass man quasi unsterblich ist

Ich hab Stundenlang gegoogelt und rumprobiert aber habe nichts gefunden (bzw nichts gefunden was ich verstehe :D). um die Probleme zu beseitigen.

 

Wäre cool wenn ihr mir einen Tipp geben könntet. 

 

Das ist der vorhandene Code einmal Clientside und Serverside.

	mp.keys.bind(0xBC, true, () => {

        mp.game.streaming.requestAnimDict("[email protected][email protected]@idle_a");//preload the animation
        mp.players.local.taskPlayAnim("[email protected][email protected]@idle_a", "idle_b", 8.0, 1.0, 4000, 1, 1.0, false, false, false);
	setTimeout(function () {
        mp.events.callRemote("Health");  	
   
      }, 4000);          	
});
	mp.keys.bind(0xBE, true, () => {  
     
            mp.game.streaming.requestAnimDict("[email protected][email protected]@idle_a");//preload the animation
            mp.players.local.taskPlayAnim("[email protected][email protected]@idle_a", "idle_b", 8.0, 1.0, 4000, 1, 1.0, false, false, false);
            setTimeout(function () {
                 mp.events.callRemote("Armour");        
           
        }, 4000);
        
});
mp.events.add ('Health', (player) => {
    	
        player.health = 100;
   
});

mp.events.add ('Armour', (player) => {
    	
        player.armour = 100;
   
});

 

Edited by DerFlamer

Share this post


Link to post
Share on other sites

evlt. kannst du den key unbinden.

mp.keys.unbind

und nach der abgelaufenen zeit somit serverseitig wieder binden?

 

 

Share this post


Link to post
Share on other sites


mp.keys.bind(0xBC, true, () => {
  mp.events.callRemote("Heilen");
});
 
mp.keys.bind(0xBE, true, () => {
  mp.events.callRemote("Rüstung");
});

 

mp.events.add("Heilen", () => {
  mp.game.streaming.requestAnimDict("[email protected][email protected]@idle_a");//preload the animation
  mp.players.local.taskPlayAnim("[email protected][email protected]@idle_a", "idle_b", 8.0, 1.0, 4000, 1, 1.0, false, false, false);
  mp.keys.unbind(0xBE, true);
setTimeout(function () {
  mp.events.callRemote("Health");   
 
}, 4000);
});
 
mp.events.add("Rüstung", () => {
  mp.game.streaming.requestAnimDict("[email protected][email protected]@idle_a");//preload the animation
  mp.players.local.taskPlayAnim("[email protected][email protected]@idle_a", "idle_b", 8.0, 1.0, 4000, 1, 1.0, false, false, false);
  mp.keys.unbind(0xBC, true);
setTimeout(function () {
       mp.events.callRemote("Armour");        
 
}, 4000);
});

 


//====SERVERSIDE====

 

 

mp.events.add ('Health', (player) => {
    
    player.health = 100;
    mp.keys.bind(0xBE, true, () => {
        mp.events.callRemote("Rüstung");
      });
});

mp.events.add ('Armour', (player) => {
    
    player.armour = 100;
    mp.keys.bind(0xBC, true, () => {
        mp.events.callRemote("Heilen");
    });
});

Eventuell gehts so

Edited by Starblocks

Share this post


Link to post
Share on other sites

Ah wahrscheinlich geht keybinds nicht serverseitig.

Dann musst das nochmal mit einem event überbrücken

Share this post


Link to post
Share on other sites
vor 7 Minuten schrieb Starblocks:


mp.keys.bind(0xBC, true, () => {
  mp.events.callRemote("Heilen");
});
 
mp.keys.bind(0xBE, true, () => {
  mp.events.callRemote("Rüstung");
});

 

mp.events.add("Heilen", () => {
  mp.game.streaming.requestAnimDict("[email protected][email protected]@idle_a");//preload the animation
  mp.players.local.taskPlayAnim("[email protected][email protected]@idle_a", "idle_b", 8.0, 1.0, 4000, 1, 1.0, false, false, false);
  mp.keys.unbind(0xBE, true);
setTimeout(function () {
  mp.events.callRemote("Health");   
 
}, 4000);
});
 
mp.events.add("Rüstung", () => {
  mp.game.streaming.requestAnimDict("[email protected][email protected]@idle_a");//preload the animation
  mp.players.local.taskPlayAnim("[email protected][email protected]@idle_a", "idle_b", 8.0, 1.0, 4000, 1, 1.0, false, false, false);
  mp.keys.unbind(0xBC, true);
setTimeout(function () {
       mp.events.callRemote("Armour");        
 
}, 4000);
});

 


//====SERVERSIDE====

 

 

mp.events.add ('Health', (player) => {
    
    player.health = 100;
    mp.keys.bind(0xBE, true, () => {
        mp.events.callRemote("Rüstung");
      });
});

mp.events.add ('Armour', (player) => {
    
    player.armour = 100;
    mp.keys.bind(0xBC, true, () => {
        mp.events.callRemote("Heilen");
    });
});

Eventuell gehts so

Ja, das funktioniert leider nicht. Da passiert nichts wenn ich den button drücke..Trotzdem schon mal danke für die Antworten !

Share this post


Link to post
Share on other sites

Dann musst du die events nochmal in events setzen und callen. dass du wieder alles clientseitig bringst

Share this post


Link to post
Share on other sites

Ich probiere mal rum.

Bin da etwas überfordert :D mit events in events und dann callen.

Aber danke für die Hilfe

Share this post


Link to post
Share on other sites

probier mal des

const cooldownMilliseconds = 4000;
mp.events.add("Armour", (player) => {
    if (Date.now() - player.lastArmorTimestamp < cooldownMilliseconds) {
        player.outputChatBox("Du kannst noch keine neue Weste ziehen.");
        return;
    }

    player.armour = 100;
    player.lastArmorTimestamp = Date.now();
    player.outputChatBox("Deine Rüstung wurde aufgefüllt");
});

mp.events.add("Health", (player) => {
    if (Date.now() - player.LastHealthTimestamp < cooldownMilliseconds) {
        player.outputChatBox("Du kannst noch kein neuen Verbandskasten nehmen");
        return;
    }


    player.health = 100;
    player.LastHealthTimestamp = Date.now()
    player.outputChatBox("Dein Leben wurde aufgefüllt")
});

und

mp.keys.bind(0xBE, false, () => {
    mp.events.callRemote("Armour");

    mp.players.local.freezePosition(true);
    mp.game.streaming.requestAnimDict("[email protected][email protected]@idle_a");
    mp.players.local.taskPlayAnim("[email protected][email protected]@idle_a",
        "idle_b", 8.0, 1.0, 4000, 1, 1.0, false, false, false);

    setTimeout(
        () => {
            mp.players.local.freezePosition(false);
        },
        4 * 1000
    );
});

mp.keys.bind(0xBC, false, () => {
    mp.events.callRemote("Health");

    mp.players.local.freezePosition(true);
    mp.game.streaming.requestAnimDict("[email protected][email protected]@idle_a");
    mp.players.local.taskPlayAnim("[email protected][email protected]@idle_a",
        "idle_b", 8.0, 1.0, 4000, 1, 1.0, false, false, false);

    setTimeout(
        () => {
            mp.players.local.freezePosition(false);
        },
        4 * 1000
    );
});

löst nicht problem mit beides gleichzeitig aber sollte das mit dem spammen lösen

Share this post


Link to post
Share on other sites

  • Recently Browsing   0 members

    No registered users viewing this page.