DerFlamer Posted January 24, 2020 Posted January 24, 2020 (edited) 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("amb@code_human_cower@male@idle_a");//preload the animation mp.players.local.taskPlayAnim("amb@code_human_cower@male@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("amb@code_human_cower@male@idle_a");//preload the animation mp.players.local.taskPlayAnim("amb@code_human_cower@male@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 January 24, 2020 by DerFlamer
Starblocks Posted January 24, 2020 Posted January 24, 2020 evlt. kannst du den key unbinden. mp.keys.unbind und nach der abgelaufenen zeit somit serverseitig wieder binden?
Starblocks Posted January 24, 2020 Posted January 24, 2020 (edited) 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("amb@code_human_cower@male@idle_a");//preload the animation mp.players.local.taskPlayAnim("amb@code_human_cower@male@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("amb@code_human_cower@male@idle_a");//preload the animation mp.players.local.taskPlayAnim("amb@code_human_cower@male@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 January 24, 2020 by Starblocks
Starblocks Posted January 24, 2020 Posted January 24, 2020 Ah wahrscheinlich geht keybinds nicht serverseitig. Dann musst das nochmal mit einem event überbrücken
DerFlamer Posted January 24, 2020 Author Posted January 24, 2020 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("amb@code_human_cower@male@idle_a");//preload the animation mp.players.local.taskPlayAnim("amb@code_human_cower@male@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("amb@code_human_cower@male@idle_a");//preload the animation mp.players.local.taskPlayAnim("amb@code_human_cower@male@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 !
Starblocks Posted January 24, 2020 Posted January 24, 2020 Dann musst du die events nochmal in events setzen und callen. dass du wieder alles clientseitig bringst
DerFlamer Posted January 24, 2020 Author Posted January 24, 2020 Ich probiere mal rum. Bin da etwas überfordert mit events in events und dann callen. Aber danke für die Hilfe
GoldiVersace Posted March 20, 2020 Posted March 20, 2020 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("amb@code_human_cower@male@idle_a"); mp.players.local.taskPlayAnim("amb@code_human_cower@male@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("amb@code_human_cower@male@idle_a"); mp.players.local.taskPlayAnim("amb@code_human_cower@male@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
Recommended Posts