Beiträge von Kaliber

    Die Idee stammt ja auch von mir :rolleyes:


    Moment mal, dass stimmt so ja nicht !


    Die Grundidee stammt schon von mir nur, dass mit den pVars stammt von dir :whistling:


    Sieht man auch sofort am Code.Du hast den identischen Ablauf ineinander verschachtelt anstatt es 1x logisch aufzubauen mit einer Schleife.
    Was mach ich eigentlich,wenn ich wirklich mal ein $-Zeichen im Text haben möchte? Solltest zumindest ein Doppel-$ erlauben ( $$ ).
    "Du hast $Bank$$ auf deinem Bankkonto" -> "Du hast 1000$ auf deinem Bankkonto"


    Das mit dem Dollar zeichen, daran habe ich nicht gedacht, werde ich gleich mal machen, aber mit einer for-Schleife ist das nicht direkt möglich, da man mit strfind arbeiten muss und das nicht einfach erhöhen kann...sprich sowas:
    for(new z = strfind(format, "$", true); z<strlen(format); z++)
    macht gar keinen Sinn, hast du da eine bessere Idee ?


    mfg. :thumbup:

    So:


    //Oben im Script
    new rID[MAX_PLAYERS];


    //Bei OnPlayerConnect
    rID[playerid] = -1;


    //Der Befehl
    ocmd:rep(playerid,params[])/*Befehl =/rep*/
    {
    new pID;
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,ROT,"Du sitzt in keinem Auto !");
    if(!istPlayerJob(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Mechaniker!");/*Abfrage ob er den Job id hat*/
    if(sscanf(params,"u",pID)) return SendClientMessage(playerid,ROT,"Verwendung: /rep [spielerid]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,ROT,"Dieser Spieler ist nicht online !");
    if(GetPlayerVehicleID(playerid) != GetPlayerVehicleID(pID)) return SendClientMessage(playerid,ROT,"Du sitzt nicht im selben Auto wie der Spieler !");
    new name[24], string[128];
    GetPlayerName(playerid, name, 24);
    format(string, 128,"Mechaniker %s bietet dir an dein Auto zu reparieren. Tippe: /accept rep",name);
    SendClientMessage(pID, ROT, string);
    GetPlayerName(pID, name, 24);
    format(string, 128,"Du bietest %s an sein Auto zu reparieren !",name);
    SendClientMessage(playerid,ROT,string);
    rID[pID] = playerid;
    return 1;
    }


    //Der accept Befehl
    ocmd:accept(playerid, params[])
    {
    if(!strcmp(params, "rep", true))
    {
    if(rID[playerid] == -1) return SendClientMessage(playerid,ROT,"Dir hat niemand eine Reparatur angeboten !");
    if(!IsPlayerConnected(rID[playerid])) { rID[playerid] = -1; SendClientMessage(playerid,ROT,"Der Spieler der dir dies angeboten hat ist offline !"); return 1; }
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,ROT,"Du sitzt in keinem Auto !");
    new name[24], string[128];
    GetPlayerName(rID[playerid], name, 24);
    format(string, 128,"Dein Auto wurde dir von %s repariert !",name);
    SendClientMessage(playerid,ROT,string);
    GetPlayerName(playerid, name, 24);
    format(string, 128,"Du hast das Auto von %s repariert !",name);
    SendClientMessage(rID[playerid],ROT,string);
    rID[playerid] = -1;
    RepairVehicle(GetPlayerVehicleID(playerid));
    }
    return 1;
    }


    mfg. :thumbup:

    Das macht man so:


    ocmd:tie(playerid,params[])
    {
    if(!isPlayerInFrakt(playerid,2))return SendClientMessage(playerid,ROT,"Du bist nicht in der Frak");
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,ROT,"Du bist in keinem auto!");
    new string[128],pID;
    if(sscanf(params,"u",pID)) return SendClientMessage(playerid,ROT,"Verwendung: /tie [spielerid]");
    if(GetPlayerVehicleID(playerid) != GetPlayerVehicleID(pID)) return SendClientMessage(playerid,ROT,"Dieser Spieler sitzt nicht in deinem Fahrzeug !");
    new name[24];
    GetPlayerName(playerid, name, 24);
    format(string, sizeof(string), "* Du wurdest von %s gefesselt.", name);
    SendClientMessage(pID, BLAU, string);
    GetPlayerName(pID, name, 24);
    format(string, sizeof(string), "Du hast %s gefesselt.", name);
    SendClientMessage(playerid, BLAU, string);
    GameTextForPlayer(pID, "~r~Gefesselt", 2500, 3);
    TogglePlayerControllable(pID,0);
    return 1;
    }


    mfg. :thumbup:

    if(!IsPlayerInRangeOfPoint(playerid, 20.0, X, Y, Z))//20.0 = Radius von dem Gebiet | X,Y,Z durch koordinaten von dem Gebiet ersetzen
    {
    PlayAudioStreamForPlayer(playerid, "http://somafm.com/tags.pls", X, Y, Z,40.0, 1);//1 leiser oder gangz weg/aus
    return 1;
    }


    Wenn, dann mich auch bitte richtig verbessern:


    if(IsPlayerInRangeOfPoint(playerid, 40.0, X, Y, Z))//20.0 = Radius von dem Gebiet | X,Y,Z durch koordinaten von dem Gebiet ersetzen
    {
    PlayAudioStreamForPlayer(playerid, "http://somafm.com/tags.pls", X, Y, Z, 40.0, 1);//1 leiser oder gangz weg/aus
    return 1;
    }


    mfg. :thumbup:

    Leute, lest doch die seite in der wiki durch.....ihr brauch IsPlayerInRangeOfPoint gar nicht...


    Wenn mich nicht alles täuscht braucht man es doch, da die Musik zwar wenn man mehr Parameter in die Funktion baut an dieser bestimmten Stelle/Zone anfängt aber nicht wieder von alleine aufhört ;)


    mfg. :thumbup:

    Ups...ja mein Fehler, schreibe es so:


    if(dialogid==DIALOG_PINBEANTRAGEN)
    {
    if(!response) return SendClientMessage(playerid,Hellblau,"Dein Konto wurde nicht erstellt, da du den Vorgang abgebrochen hast.");
    if(response)
    {
    if(strlen(inputtext) != 4 || !IsNumeric(inputtext)) //Error Zeile
    {
    SendClientMessage(playerid,Gelb,"Bitte gebe eine PIN Nummer ein.");
    ShowPlayerDialog(playerid,DIALOG_PINBEANTRAGEN,DIALOG_STYLE_INPUT,"Volksbank Konto beantragen","Willkommen bei der Volksbank Los Santos.\nIhre Daten sind im System nicht gespeichert, also wollen Sie sich ein Konto beantragen.\nBitte geben Sie hierzu einfach ihren gewünschten PIN in das Fenster unten ein.\nSollten Sie ihren PIN verlieren, schauen Sie unter /stats nach.","Fortsetzen","Abbrechen");
    }
    else
    {
    SetPVarInt(playerid,"BankPIN",strval(inputtext));
    }
    }
    }

    Das könnte man zum Beispiel so machen:


    //Oben im Script
    new bool:InZone[MAX_PLAYERS];


    //Bei OnPlayerConnect
    SetTimerEx("Audio_Timer", 1000, 1, "i", playerid);


    //Der Callback
    forward Audio_Timer(playerid);
    public Audio_Timer(playerid)
    {
    if(!IsPlayerInRangeOfPoint(playerid, 20.0, X, Y, Z))//20.0 = Radius von dem Gebiet | X,Y,Z durch koordinaten von dem Gebiet ersetzen
    {
    if(InZone[playerid] == false) return 1;
    InZone[playerid] = false;
    StopAudioStreamForPlayer(playerid);
    return 1;
    }
    if(InZone[playerid] == true) return 1;
    PlayAudioStreamForPlayer(playerid, "http://XXX.de/fetteBeats.mp3");
    InZone[playerid] = true;
    return 1;
    }


    mfg. :thumbup:

    Mhm, okay, dann mache die if-Abfrage mal so:


    if(strlen(inputtext) != 4)


    Wenn man halt Buchstaben eingibt, wird das auch in eine Zahl umgewandelt, aber man ist dann selber dran Schuld :whistling:


    mfg. :thumbup:

    Hmmm Irgendwelche Errors Oder Klappt es einfach nicht ? Ich kenn jemand der das bestimmt gleich weis Kaliber: Hast du zufällig ne idee ?


    Sehr lustig :whistling:


    Schreibe den Code einfach mal so:


    if(dialogid==DIALOG_PINBEANTRAGEN)
    {
    if(!response) return SendClientMessage(playerid,Hellblau,"Dein Konto wurde nicht erstellt, da du den Vorgang abgebrochen hast.");
    if(response)
    {
    if(strlen(inputtext) != 4 || !IsNumeric(inputtext))
    {
    SendClientMessage(playerid,Gelb,"Bitte gebe eine PIN Nummer ein.");
    ShowPlayerDialog(playerid,DIALOG_PINBEANTRAGEN,DIALOG_STYLE_INPUT,"Volksbank Konto beantragen","Willkommen bei der Volksbank Los Santos.\nIhre Daten sind im System nicht gespeichert, also wollen Sie sich ein Konto beantragen.\nBitte geben Sie hierzu einfach ihren gewünschten PIN in das Fenster unten ein.\nSollten Sie ihren PIN verlieren, schauen Sie unter /stats nach.","Fortsetzen","Abbrechen");
    }
    else
    {
    SetPVarInt(playerid,"BankPIN",strval(inputtext));
    }
    }
    }


    Falls du einen Error bekommen solltest der so aussieht:


    Code
    undefined symbol 'IsNumeric'


    Packe das in dein Script:


    stock IsNumeric(const string[])
    {
    for (new i = 0, j = strlen(string); i < j; i++)
    {
    if (string[i] > '9' || string[i] < '0') return -1;
    }
    return 0;
    }


    mfg. :thumbup: