/event

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Tag liebe Community,


    da ich so etwas noch nie gescriptet habe, habe ich auch derzeit garkeine Ahnung.
    Ich möchte mir einen /event System scripten, dass die Position des Spielers abspeichert, der das Befehl eingegeben hat. Tippt der Spieler noch ein zweites mal /event, können die anderen User auf dem Server nicht mehr in das "Event" kommen.


    Könnt ihr mir helfen?
    (Habe für dieses System bisjetzt garnichts gemacht, wie gesagt)

  • Soll ein Checkpoint für die User angezeigt werden oder was?


    Wenn ja:


    new Float:eventX, Float:eventY, Float:eventZ;


    ocmd:event(playerid, params[]){
    if(/*Rechteabfrage zum Setzen der Position*/){
    //Position in den Variablen speichern
    }else{
    if(eventX != 0 && eventY != 0 && eventZ != 0){
    //Checkpoint anzeigen
    }
    }
    }


    Wenn Du dann einen TP zum Event machen willst, einfach anstatt SetPlayerCheckpoint() SetPlayerPos() verwenden.

  • der Spieler soll einfach nur geportet werden, aber deine Funktion habe ich leider nicht verstanden.

  • Dann erklär ich es dir mal:


    new Float:eventX, Float:eventY, Float:eventZ; //Globale Variablen, in welchen die Position des Jenigen ist, welcher den Checkpoint sozusagen setzt (evtl der Admin)


    ocmd:event(playerid, params[]){
    if(/*Rechteabfrage zum Setzen der Position*/){ //Abfragen, ob er ein Admin ist
    //Position in den Variablen speichern mittels GetPlayerPos() (Wiki)
    }else{
    if(eventX != 0 && eventY != 0 && eventZ != 0){ //Abfrage, ob überhaupt ein Checkpoint gesetzt wurde, da ansonsten die Variablen auf 0 sind.
    //Checkpoint anzeigen
    }
    }
    }

  • Ich möchte nix mit Fahrzeugen oder Checkpoints haben, sondern einfach nur, dass wenn der Admin /event eintippt, dass die Spieler sich mit /event dorthin porten können und wenn der Spieler nachher nocheinmal /event eingibt, dass der Event inaktiv ist, und die Spieler sich dorthin nicht porten können.


    Und der Admin bestimmt das Event individuell, d.h., dass der Admin sich ggf. die Fahrzeuge, Waffen etc. selbst verteilt.

  • So jetzt bin ich wirklich aus dem Kopf draußen...
    Also ich möchte mit /event machen, dass der Spieler sich erst porten kann ,wenn der Admin per /eventaccess das Event aktiviert hat. Diesen /eventaccess Befehl habe ich noch nicht gescriptet.


    Ich habe eigentlich immer noch nicht verstanden, wie ich das eigentlich machen soll.
    Möglicherweise habe ich heute zu viel gescriptet, deswegen habe ich eine Erschöpfung.

  • Okay, dann eben mit mehreren Befehlen:


    new Float: eventX, Float:eventY, Float: eventZ // Globale Fließkommavariablen, in welchen die Position des Eventpunktes gespeichert wird.


    ocmd:eventaccess(playerid,params[]){
    if(/* Adminabfrage */){
    GetPlayerPos(playerid, eventX, eventY, eventZ); // Position für den Port nun in den Variablen gespeichert
    }
    }


    ocmd:event(playerid,params[]){
    if(eventX != 0 && eventY != 0 && eventZ != 0){ // Abfragen, ob eine Positon gesetzt wurde.
    SetPlayerPos(playerid, eventX, eventY, eventZ); //Spieler an die Eventposition porten
    }
    }

  • würde ich hiermit Errors bekommen oder Bugs / Probleme?



    ocmd:pevent(playerid, params[])
    {
    #pragma unused params
    if(!IsPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,Hellrot,"* Du bist kein Admin.");
    GetPlayerPosEx(playerid, eventX, eventY, eventZ, eventA);
    if(EventStatus != 0)return SendClientMessage(playerid,Hellgrün,"Derzeit ist schon ein Event aktiv.");
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    EventStatusForPlayer[i] = 1;
    SendClientMessage(i,Grün,"Info: Ein Event ist aktiv. Tippe /event, um zum Event zu gelangen.");
    }
    return 1;
    }
    ocmd:event(playerid, params[])
    {
    #pragma unused params
    if(EventStatus != 1)return SendClientMessage(playerid, Grau, "* Derzeit ist kein Event aktiv.");
    if(EventStatusForPlayer[playerid] != 1)return SendClientMessage(playerid,Hellrot,"Du bist ausgeschieden aus dem Event.");
    SetPlayerPosEx(playerid,eventX,eventY,eventZ,eventA);
    SendClientMessage(playerid,Hellblau,"* Du hast dich erfolgreich zum Event teleportiert.");
    return 1;
    }