Beiträge von Austrianer

    ocmd:w(playerid,params[]) {
    new pID, spname[MAX_PLAYER_NAME], string[128];
    GetPlayerName(playerid, spname, sizeof(spname));
    if(sscanf(params,"us", pID, string)) return SendClientMessage(playerid,Orange,"Benutze: /w [playerid] [text]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,Rot,"Der Spieler ist nicht online.");
    format(string, sizeof(string), "(( %s: %s ))", spname, string);
    SendClientMessage(pID,Gelb,string);
    SendClientMessage(playerid,Gelb,string);
    return 1;
    }


    So solle es funktionieren.
    Du wolltest den string bereits formatieren obwohl du nicht spname oder string Werte bekommen hat. Du musst es erst ganz am Schluss bevor du string verwendest formatieren. Außerdem hab ich es ein bisschen gekürzt deinen Code.


    Hoffe habe dir geholfen.

    Kennst du die strcat-Methode? Diese ist sehr nützlich als dreimal drei verschieden werte zu formatieren.


    new string[512];
    strcat(string,"[LSPD] Los Santos Police Department\n[BSN] Buerger Shot Nord\nFahrschule (SF)\nBotfahrschule (LV)\nBank (Los Santos)\nSealife (Museum: Meer LS)\n");
    strcat(string, "......");
    ShowPlayerDialog(playerid,DIALOG_NAVI,DIALOG_STYLE_LIST,"Navigationssystem", string, "Anfahren", "Abbrechen");


    Probier mal ob es dann geht

    Guten Tag Scripter von Breadfish.


    Ich habe eine kleine Frage. Ich habe mir nun ein sehr dynamisches Haussystem gescriptet, leider habe ich nun ein Problem. Ich bräuchte etwas das wenn jemand ein anderes Haus hat jedoch das gleiche Interior er aber nicht den anderen sieht wenn sie beide drinnen sind.
    Ich habe gehört das soll mit Virtual World funktionieren. Da ich es aber noch nie gebraucht habe würde ich gerne eine kleine Beratung darüber gebrauchen.


    Also ich möchte es so haben, das nur die Spieler die in dem Haus wohnen also entweder besitzen oder gemietet haben in die gleiche VW kommen und andere in eine andere.


    Geht dies irgendwie oder bin ich da ganz falsch am denken? ?(


    Also ich hab es auf einem Server gesehen da konnten sich die anderen nicht mehr sehen jedoch konnten die anderen es lesen.


    Mit freundlichen Grüßen,
    Austrianer



    PS: Ich möchte hier keinen Code den ich zum Copy&Paste ins Script einfüge sondern eine Erklärung wie und warum das funktioniert ;)

    ocmd:kick(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,ROT,"{C30000}[SERVER]: Du musst mindestens Adminlevel 2 haben.");
    new pID, reason[128],string[128];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,BLAU,"{FFFF00}[SERVER]: Benutzung /kick [Id] [Grund]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,ROT,"{FFFF00}[SERVER]: Der gewählte Spieler ist nicht online.");
    if(isPlayerAnAdmin(pID,1)) return SendClientMessage(playerid,0xFFFFFF,"{FFFF00}[SERVER]: Du kannst keine Administratoren kicken.");
    format(string,sizeof(string),"{FF000F}[KICK]: {FF0000}%s{FF000F} wurde von >>%s<< gekickt. (Grund: %s)",SpielerName(pID),SpielerName(playerid),reason);
    SendClientMessageToAll(ROT,string);
    Kick(pID);
    return 1;
    }


    Jetzt funktioniert es. Du musst zuerst die pID-Variable mit einem Wert
    befüllen bevor du abfragst ob der Spieler connected ist :)

    So hab sie dir rausgesucht: 3018, 3019, 3020, 3021, 3022, 3023, 3024, 3025

    So dann danke ich dir nochmals für deine Mühe. Hab mir jetzt einen eigenen Befehl gescriptet denn man halt nur im Schießstand verwenden kann. So werden die Puppen immer neu gespawned. Danke dir. Ist richtig geil. Wenn du willst kannst du es mal anschauen ;)
    Melde dich einfach per PN.

    Dieser Schießstand ist richtig nice, richtig nice. Aber könntest du vielleicht mehr Ziele hineinmappen. Also das insgesamt jetzt 6 sind. Weil man müsste immer entweder Relog machen oder den Server neustarten. Oder du schreibst die genau die Create-Befehle auf die das Objekt erstellt, damit ich daraus einen eigenen Befehl schreiben kann damit die Objekte immer neu erzeugt werden.

    1. Problem


    Dein Array für string ist zu klein. Mach das viel größer. Das passt niemals alles rein.


    2.


    Weiters um Text farbig zu machen musst du es so machen {FF0A00} - Das ist z.B. Die rote Farbe. {FFFFFF} - Weiße Farbe

    Bei OnPlayerConnect


    Setzt du die Methode
    SetPlayerColor(playerid, WEISS); // Weiss steht für die Farbe die du halt für jeden User haben möchtest.


    Und hier entfernst du die Marker für die Spieler von der Minimap bei OnGameModeInit() einsetzen
    ShowPlayerMarkers(0); // Die Farbigen Marker sind nicht mehr sichtbar für alle Spieler

    Weil du If-Bedingungen verwendest. du Solltest Switch-Case benutzen.


    Ich erklär dir mal was passiert.


    Ein Admin Level 1339 greift darauf hin. Nun greifen wir auf die erste Bedingung zu. Wenn der Admin ein AdminLevel von 3 hat oder höher greift er darauf zu. Ok passt stimmt er ist höher als 3. Damit greift er auf Adminhilfe zu. Da bereits eine Bedingung erfüllt wurde greift er auf die anderen nicht mehr zu.


    Du musst es so machen.


    switch (Adminlevel des Spielers): {
    case 3: { Nur AL-3 }
    case 4: { Nur AL-4 }
    case 1338: { Nur AL-1338 }
    case 1339: { Nur AL-1339 }
    default: { falls er keines der AL besitzt }
    }

    Das bedeutet das du die Variable Zeitrechnen nicht benutzt.


    new Zeitrechnen = pSincePayday[playerid]-60;


    Wo wird denn in deiner Methode Zeitrechnen benutzt? Nirgends also kommt diese Warnung das du das entfernen kannst oder du hast es vergessen zu benutzen.