Team Nachricht erstellen >>benötige hilfe

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
  • Ja hallo erstmal :D
    Ich höffe ihr könnt mir helfen:


    Habe mit dem tutorial temas erstellt.
    ausßerdem habe ich eine zone erstellt, die bei der area51 ist.
    bist jetzt ist es so, dass wenn dort ein spieler aus dem team army darein geht, die nachricht kommt: Player ist in die area51 eingebrochen.


    nun möchte ich gerne, dass die nachricht nur gezeigt wir, wenn ein spieler von einem anderen tema darein geht.


    ich hoffe ihr könnt mir helfen.
    Danke
    Scripter4.0

    Scripter im Ruhestand.

  • Eigentlich nicht so schwer.Du solltest trotzdem mal den Code zeigen,wo erkennt wird, ob Jemand in die Zone eingetreten ist.


    Sonst kann ich dir auch Stichpunktartig vorgeben,was gemacht werden muss.

    • Du musst wissen,welchem Team die Zone gehört ( Area51 vermutlich Army oder sowas in die Richtung,stimmts :-O ? )
    • Beim betreten der Zone abfragen,zu welchem Team der Spieler gehört
    • --> Gehört der Spieler nicht zum Team,welches die Zone besitzt ? Ja / Nein
    • -----> JA: Dann Nachricht erstellen : <NAME> ist in <ZONE> / Area51 eingebrochen
    • -----> NEIN : Nichts tun.


    Mehr ist es eigentlich nicht :\.

  • das versteh ich ja wohl aber wie ich es scripte.
    hier erstmal die zone:


    oben im script:
    forward area51(playerid);


    OnGameModeInit():
    SetTimer("area51",15000,1); //dort wird alle 15sec abgefragt ob sich in der zone ein spieler befindet


    unten im script dann der stock:
    stock IsPlayerInArea(playerid,Float:minX,Float:minY,Float:maxX,Float:maxY)
    {
    new Float:pX,Float:pY,Float:pZ;
    GetPlayerPos(playerid,pX,pY,pZ);
    if(pX >= minX && pX <= maxX && pY >= minY && pY <= maxY) return 1;
    return 0;
    }


    und dann public:
    public area51(playerid)
    {
    {
    if( IsPlayerConnected(playerid) && IsPlayerInArea(playerid,70.06725, 1763.359, 362.0141, 2090.34))
    {
    new string[64], pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
    format(string,sizeof string,"%s ist in die Area51 eingebrochen/eingetreten!",pName);
    SendClientMessageToAll(ROT,string);
    }
    }
    }

    Scripter im Ruhestand.

  • Eines vorweg,ich mach dir den Code nicht fertig. Wenn du an einer Stelle nicht weiter kommst, sag welche.


    Alleine schon der Timer bzw die Funktion area51() ist nicht korrekt.Da du SetTimer benutzt ( SetTimerEx würde mit Paremter funktionieren ) und keine Parameter ( Spielerid ) der Funktion area51 übergibst,wird sie immer für Spielerid 0 laufen.
    Egal ob Jemand mit der ID 5 oder 324 in die Zone läuft,es wird nix passieren. Denn die Funktion läuft nur für Spielerid 0.


    Die einfachste Lösung dafür wäre folgendes.
    Du musst zuerst mal eine Schleife in die Funktion area51 einbauen die durch alle Spieler geht.
    Stichwort:
    for(new i = 0 ; i < MAX_PLAYERS ; i++) {}


    Zitat

    das versteh ich ja wohl aber wie ich es scripte.


    Welchen Schritt verstehst du nicht ?
    Welchen der Punkte kannst du nicht in Code umsetzen ?