/Eventpunkt setzen

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
  • Moin,


    Ich möchte einen dynamischen Eventpunkt erstellen den ich mit /evento erstellen kann und die Spieler sollen dann mit /event zu Punkt geportet werden.


    das sind im moment meine Befehle:



    ocmd:evento(playerid,params[])
    {
    if(IsPlayerAdmin(playerid))
    {
    if(EventTime == 0)
    {
    new Float:X1;
    new Float:Y1;
    new Float:Z1;
    GetPlayerPos(playerid,X1,Y1,Z1);
    EventTime = 1;
    SendClientMessage(playerid,gelb,"Der Eventpunkt wurde erstellt.");
    }
    if(EventTime == 1)
    {
    SendClientMessage(playerid,gelb,"Es gibt schon einen Eventpunkt!");
    }
    }
    return 1;
    }


    ocmd:event(playerid,params[])
    {
    if(IsPlayerAdmin(playerid))
    {
    if(EventTime == 1)
    {
    new Float:X1;
    new Float:Y1;
    new Float:Z1;
    GetPlayerPos(pID,X1,Y1,Z1);
    SetPlayerPos(playerid,X1,Y1,Z1);
    SendClientMessage(playerid,gelb,"Du wurdest zum Event geportet.");
    }
    if(EventTime == 0)
    {
    SendClientMessage(playerid,gelb,"Der Eventport ist momentan nicht offen.");
    }
    }
    return 1;
    }



    Jetzt weiß ich grad nicht mehr weiter..


    Der Spieler soll ja da hingeportet werden wo der Eventpunkt entsanden ist.
    Aber wie kann ich die Positionen von dem einen CMD in den anderen übertragen?

  • Also ist relativ einfach, du definierst bei deinen globalen Variablen ein Float das den Index von 3 besitzt, also in dem Fall 3 Postitionen, X,Y,Z. (Beispiel : new Float:EventPos[3];
    Dann gettest du beim /evento die Positionen vom Spieler also
    GetPlayerPos(playerid, EventPos[0],EventPos[1],EventPos[2],
    Dann wenn der Spieler Event macht setzt du einfach die Event Pos, genau gleich wie GetPlayerPos halt einfach SetPlayerPos.


    Und am besten noch VirtualWorld und Interior machen, das wars :)

    Mit unfreundlichen Grüßen
    Buschmensch

  • Du machst das ungefähr so:


    new Float: eventX, Float: eventY, Float: eventZ; //Oben in dein Script


    ocmd:evento(playerid,params[])
    {
    if(IsPlayerAdmin(playerid))
    {
    if(EventTime == 0)
    {
    GetPlayerPos(playerid, eventX, eventY, eventZ);
    EventTime = 1;
    SendClientMessage(playerid,gelb,"Der Eventpunkt wurde erstellt.");
    }
    if(EventTime == 1)
    {
    SendClientMessage(playerid,gelb,"Es gibt schon einen Eventpunkt!");
    }
    }
    return 1;
    }


    ocmd:event(playerid,params[])
    {
    if(IsPlayerAdmin(playerid))
    {
    if(EventTime == 1)
    {
    SetPlayerPos(playerid, eventX, eventY, eventZ);
    SendClientMessage(playerid,gelb,"Du wurdest zum Event geportet.");
    }
    if(EventTime == 0)
    {
    SendClientMessage(playerid,gelb,"Der Eventport ist momentan nicht offen.");
    }
    }
    return 1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Das was ihr beiden geschrieben habt ist doch ungefähr das gleiche oder? ^^


    Er erstellt jetzt zwar den Eventpunkt aber wenn ich dann /event eingeben kommt überhaupt keine Meldung bzw der Spieler wird nicht geportet.


    Hier nochmal meine Befehle:


    ocmd:evento(playerid,params[])
    {
    if(GetPVarInt(playerid,"Adminlevel")>=2)
    {
    if(EventTime == 0)
    {
    GetPlayerPos(playerid, eventX, eventY, eventZ);
    EventTime = 1;
    SendClientMessage(playerid,gelb,"Der Eventpunkt wurde erstellt.");
    }
    else if(EventTime == 1)
    {
    SendClientMessage(playerid,gelb,"Es gibt schon einen Eventpunkt!");
    }
    }
    return 1;
    }


    ocmd:event(playerid,params[])
    {
    if(EventTime == 1)
    {
    SetPlayerPos(playerid, eventX, eventY, eventZ);
    SendClientMessage(playerid,gelb,"Du wurdest zum Event geportet.");
    }
    else if(EventTime == 0)
    {
    SendClientMessage(playerid,gelb,"Der Eventport ist momentan nicht offen.");
    }
    return 1;
    }


    :S

  • Ums dir zu vereinfachen :


    new Float:EventP[3];
    new EventVWorld;
    new EventInterior;



    ocmd:evento(playerid,params[])
    {
    if(GetPVarInt(playerid,"Adminlevel")>=2)
    {
    if(EventTime == 0)
    {
    GetPlayerPos(playerid, EventP[0], EventP[1], EventP[2]);
    EventInterior = GetPlayerInterior(playerid);
    EventVWorld = GetPlayerVirtualWorld(playerid);
    EventTime = 1;
    SendClientMessage(playerid,gelb,"Der Eventpunkt wurde erstellt.");
    }
    else
    {
    SendClientMessage(playerid,gelb,"Es gibt schon einen Eventpunkt!");
    }
    }
    return 1;
    }



    ocmd:event(playerid,params[])
    {
    if(EventTime == 1)
    {
    SetPlayerPos(playerid, EventP[0], EventP[1], EventP[2]);
    SetPlayerInterior(playerid,EventInterior);
    SetPlayerVirtualWorld(playerid,EventVWorld);
    SendClientMessage(playerid,gelb,"Du wurdest zum Event geportet.");
    }
    else
    {
    SendClientMessage(playerid,gelb,"Der Eventport ist momentan nicht offen.");
    }
    return 1;
    }

    Mit unfreundlichen Grüßen
    Buschmensch

  • Ganz oben ins Script
    new Float:EventPosX;
    new Float:EventPosY;
    new Float:EventPosZ;
    new EventAktiv;


    if(strcmp(cmdtext, "/markevent", true) == 0)
    {
    if(isPlayerAnAdmin(playerid,2)) // Abfrage ob der jenige Admin level 2 Hat! (Anpassen!
    {
    GetPlayerPos(playerid, EventPosX, EventPosY, EventPosZ); // Hier fragen wir die Position ab
    EventAktiv = 1; // Hier schalten wir das Event Online!
    SendClientMessage(playerid, COLOR_GRAU, "Du hast ein Event an dieser Position gesetzt!");
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAU, "Du bist kein Admin!"); // Hier ist das wenn man Admin level 2 nicht hat!
    }
    return 1;
    }
    if(strcmp(cmdtext, "/event", true) == 0)
    {
    if(EventAktiv == 1) // hier fragen wir ab ob das Event online ist.
    {
    new string[250];
    new sendername[128];
    SetPlayerPos(playerid, EventPosX, EventPosY, EventPosZ); // hier telepotieren wir den Spieler an die Makierte Position!
    SendClientMessage(playerid, COLOR_GRAU, "Du hast dich zum Event telepotiert!");
    GetPlayerName(playerid, sendername, sizeof(sendername)); // Hier suchen wir den Namen der den Befehl ausführt
    format(string, sizeof(string), "%s hat sich zum Event geportet!", sendername); // Hier wird eine Nahricht an die Admins geschickt!
    SendClientMessageToAll(0xFFFF00FF, string);
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAU, "Es ist kein Event am Laufen!"); // wenn kein Event Online ist.
    }
    return 1;
    }
    if(strcmp(cmdtext, "/eventaus", true ) == 0)
    {
    if(isPlayerAnAdmin(playerid,2)) // Abfrage ob der jenige Admin level 4 hat! (Anpassen!)
    {
    SendClientMessage(playerid, COLOR_GRAU, "Event ausgeschaltet");
    EventAktiv = 0; // Schaltet das Event aus!
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAU, "Du bist kein Admin!"); // wenn der jenige das Admin level nicht hat.
    }
    return 1;
    }