Beiträge von Templer

    Naja, keine Ahnung wie es von Samp her gefixxt wurde mit dem Crash von maximalen Objekten, deswegen halte dich an die Limits

    Weil Objekte andere Höhenunterschiede hat als Spieler. Ich weiß leider jetzt ohne Screenshot nicht wie weit vom Boden entfernt aber ich schätze mal 2, also erstze das unter dcmd_spa


    sp[playerid][gMaxSperre] = CreateObject(1459, x, y, floatdiv(z, 2.0), 0.6, 0.0, 0.0);

    Also eigentlich sollte dies schon funktionieren, weil ich es so auch getestet habe.
    Das hier abändern:

    new gMaxSperre;
    new sp[MAX_PLAYERS][MAX_STRASSENSPERRE+1]; //Somit werden die Straßensperren vom Spieler nach der Reihe abgebaut


    dcmd_spa(playerid,params[])
    {
    #pragma unused params
    if(gMaxSperre == MAX_STRASSENSPERRE) return SendClientMessage(playerid, blau, "Es wurden bereits genug Straßensperren aufgebaut! Baue welche ab!");
    new name[MAX_PLAYER_NAME], s[128];
    new Float:x, Float:y, Float:z;
    GetPlayerName(playerid,name,sizeof(name));
    GetPlayerPos(playerid, x, y, z);
    format(s,sizeof(s),"acc/%s.ini",name);
    new jobid = dini_Int(s, "job");
    new admin = dini_Int(s, "admin");
    if(jobid == 1 || jobid == 2 || jobid == 3 || jobid == 4 || jobid == 15 || admin == 2)
    {
    gMaxSperre++;
    sp[playerid][gMaxSperre] = CreateObject(1459, x, y, z, 0.6, 0.0, 0.0);
    SendClientMessage(playerid, blau, "Strassenspeere aufgebaut.");
    }
    return 1;
    }
    dcmd_spw(playerid,params[])
    {
    #pragma unused params
    new name[MAX_PLAYER_NAME], s[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(s,sizeof(s),"acc/%s.ini",name);
    new jobid = dini_Int(s, "job");
    new admin = dini_Int(s, "admin");
    if(jobid == 1 || jobid == 2 || jobid == 3 || jobid == 4 || jobid == 15 || admin == 2)
    {
    DestroyObject(sp[playerid][gMaxSperre]);
    SendClientMessage(playerid, blau, "Strassenspeere abgebaut.");
    gMaxSperre--;
    }
    return 1;
    }

    Viel Spaß ^^


    new string[128] = "Hallo breadfish, ich bin Robdeflop", sub[128] = "bin";
    new find = strfind(string, sub, false);
    if(find == -1) return printf("Substring '%s' nicht gefunden!", sub);
    strdel(string, find, find+strlen(sub));
    strins(string, "heiße", find);
    printf("Ausgabe: %s", string);

    Ansonsten finde ich dort keinen Fehler, was du probieren könntest ist das
    && !classselection
    zu löschen und dann probieren.

    http://wiki.sa-mp.com/wiki/Limits


    Samp hat ja Limits und bei überschreitung führt es zu einem ClientenCarsh, jedoch haben Streamer eine kleine Sicherung eingebaut die verhindern, dass Sie mehr als so und so viele Objekte einem Spieler in einer Distanz zeigen.

    Per-Player Objects 254
    Bedeutet das jeder Spieler max. 254 Objekte sehen kann (Natürlich kann er noch 10-20 mehr sehen, jedoch fällt dies dann unter nervenden Client Crashes!)


    In Einsteins Objekt Streamer gibt es in der Include oben eine Definition
    #define MAX_STREAM_AT_SAME_TIME 142
    diesen Wert kannst du ohne nachzudenken ruhig auf 250 setzen, dann sind nicht all zuviele Objekte weg ^^.

    Sollte verständlich sein:
    #define MAX_STRASSENSPERRE (4) //Wieviele Straßensperren maximal erlaubt sind


    new gMaxSperre = 0;


    dcmd_spa(playerid,params[])
    {
    #pragma unused params
    if(gMaxSperre == MAX_STRASSENSPERRE) return SendClientMessage(playerid, blau, "Es wurden bereits genug Straßensperren aufgebaut! Baue welche ab!");
    new name[MAX_PLAYER_NAME], s[128];
    new Float:x, Float:y, Float:z;
    GetPlayerName(playerid,name,sizeof(name));
    GetPlayerPos(playerid, x, y, z);
    format(s,sizeof(s),"acc/%s.ini",name);
    new jobid = dini_Int(s, "job");
    new admin = dini_Int(s, "admin");
    if(jobid == 1 || jobid == 2 || jobid == 3 || jobid == 4 || jobid == 15 || admin == 2)
    {
    sp[playerid] = CreateObject(1459, x, y, z, 0.0, 0.0);
    SendClientMessage(playerid, blau, "Strassenspeere aufgebaut.");
    gMaxSperre++;
    }
    return 1;
    }

    ist der Ordner 'Biz' (Groß-/Kleinschreibung Beachten!) im Ordner scriptfiles vorhanden bzw. die Datei im Ordner Biz die Datei 'OiltTransBiz.ini' vorhanden?

    Nütze es so:
    new rtext[256];
    if(Player[playerid][vip] == 1) rtext = "Premium";
    else rtext = "Nein";
    format(string3, sizeof(string3),"[Premium: %s]", rtext);
    SendClientMessage(playerid, COLOR_YELLOW2, string3);

    Ist das ein Ratespiel ? ^^ Ich meine, im Code oben ist alles in Ordnung, also die Antwort zu deiner Frage: Es passt alles.


    Edit:// Wenn es wirklich unter OnPlayerEnterVehicle ist, dann funktioniert GetPlayerVehicleID(playerid) nicht, sondern nütze anstatt von tmp die Variable vehicleid und lösche das
    new tmp = GetPlayerVehicleID(playerid);

    Also dcmd_evict gehört außerhalb von OnPlayerCommandText zB:


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    dcmd(evict, strlen("evict"), cmdtext);
    return 1;
    }
    dcmd_evict(playerid,params[]) { // This needs to be intergrated with your players .ini account
    #pragma unused params
    if(IsPlayerConnected(playerid)){
    new giveplayerid;
    if(sscanf(params, "i", giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "[USAGE]: /evict [id]");
    if(!IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "The given player does not exist");


    for(new h = 0; h <= MAX_HOUSES; h++){
    if(PlayerToPoint(PTP_RADIUS, playerid, HouseInfo[h][hExitX], HouseInfo[h][hExitY], HouseInfo[h][hExitZ])){
    if(strcmp(HouseInfo[h][hName],GetName(playerid), false ) == 0){
    if(PlayerInfo[giveplayerid][pHouse] != h) return SendClientMessage(playerid, COLOR_WHITE, ".:: [ERROR]: This player is not renting your house.");
    PlayerInfo[giveplayerid][pHouse] = -1; PlayerUpdate(giveplayerid);
    SendFormattedMessage(playerid, COLOR_WHITE, ".:: [HOUSE]: You have evicted %s[%d] from your house.", GetName(giveplayerid), giveplayerid);
    } else return SendClientMessage(playerid, COLOR_WHITE, ".:: [HOUSE]: You are not the owner of this house.");
    } } }
    return true;
    }


    und schick mal 3 Zeilen von oben und unten der Nummer 1584

    also du fügst unter OnPlayerCommandText folgendes ein:


    dcmd(evict, strlen("evict"), cmdtext);


    dann ersetzt du überall wo du return 1 true; geschrieben hast um in return 1;, also das true weg!


    dann ersetzt du bitte auch diesen Code:


    dcmd_exit(playerid,params[]) {
    #pragma unused params
    if(IsPlayerConnected(playerid)){
    for(new h = 0; h <= MAX_HOUSES; h++){
    if(PlayerToPoint(PTP_RADIUS, playerid, HousesCoords[HouseInfo[h][hLevel]][0], HousesCoords[HouseInfo[h][hLevel]][1], HousesCoords[HouseInfo[h][hLevel]][2])){
    SetPlayerPos(playerid, HouseInfo[h][hExitX], HouseInfo[h][hExitY], HouseInfo[h][hExitZ]);
    SetPlayerInterior(playerid, 0); SetPlayerVirtualWorld(playerid, 0);
    } } }
    return 1;
    }


    und schickst nebenbei uns die Zeilen 2069 und 2080. Anonsten auch die Errors und Warnings ^^

    Mambo, du kannst dort kein playerid schreiben...


    Ändere also die Zeile wo der Error ist um in:


    new bool:pFirstLog[MAX_PLAYERS;];


    und dann dort wo sich der Spieler registriert machst du das:
    pFirstLog[playerid] = true;
    und wenn er mit dem Tutorial oder sonstwas fertig ist oder sich zum zweiten mal Einloggt machst du:
    pFirstLog[playerid] = false;


    Wenn ich es richtig verstanden habe, aber wofür willste es ansonsten genau nützen?

    Schick mal die Befehle dcmd_enter, dcmd_exit und dcmd_evict. Die anderne zwei Warnings hast du neu eingebaut und ich dir jetzt nicht so sagen kann was du falsch gemacht hast, weil ich ned weiß was überhaupt geschehen ist.