Beiträge von Templer

    new info[32], h=-1;
    while(h < sizeof(Carinfo))
    {
    h++;
    format(info, sizeof(info), "/Autohausauto/rentcar%d.car",h);
    if(!dini_Exists(info)) continue;
    Carinfo[h][aID] = dini_Int(info, "aID");
    Carinfo[h][aX] = dini_Float(info, "aX");
    Carinfo[h][aY] = dini_Float(info, "aY");
    Carinfo[h][aZ] = dini_Float(info, "aZ");
    Carinfo[h][aR] = dini_Float(info, "aR");
    Carinfo[h][ac1] = dini_Int(info, "ac1");
    Carinfo[h][ac2] = dini_Int(info, "ac2");
    CreateVehicle(Carinfo[h][aID], Carinfo[h][aX], Carinfo[h][aY], Carinfo[h][aZ], Carinfo[h][aR], Carinfo[h][ac1], Carinfo[h][ac2], 60000);
    }

    Nütze meine Version, da ich von den dcmd ned viel halte und sscanf in diesem Falle sinnlos ist.
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strfind(cmdtext, " ", false) != -1 && !strcmp(cmdtext, "/v", false, strfind(cmdtext, " ", false)))
    {
    strdel(cmdtext, 0, strfind(cmdtext, " ", false)+1);
    new veh = strval(cmdtext), Float:PlayerPos[4], farbe = random(40);
    if(!strlen(cmdtext)) return SendClientMessage(playerid,nefarbe," /v <Fahrzeug-ID>");
    if(400 < veh < 622) return SendClientMessage(playerid, nefarbe, " Die ModelID vom Fahrzeug nicht niedriger als 400 oder höher als 622!");
    GetPlayerPos(playerid,PlayerPos[0],PlayerPos[1],PlayerPos[2]); GetPlayerFacingAngle(playerid, PlayerPos[3]);
    CreateVehicle(veh,Pos[0],Pos[1]+3,Pos[2], PlayerPos[3], farbe, farbe, -1);
    return true;
    }
    }

    Wow [NeS]Fischer coole Vorurteile, als ob du zu einem farbigen sagen würdest, ob er für dich Obama anrufen könnte..
    Zum Topic:
    Benenne in der morphinc.inc in der Zeile 3 die ParameterFunktionen um von x2 y2 z2 in sagen wir x3 y3 z3 und in deinem Script das gleiche bzw. eine höhere Zahl nehmen, oder du vielleicht die Floats nach der Funktion benennen würdest ^^.
    In der public OnPlayerConnect ganz am Ende normalerweise ein return true; jedoch sollte das letzte eine ELSE IF Abfrage sein, wo eine Abfrage abgebrochen wird mit einem return und die andere nicht, so erklärt sich meine Feststellung von alleine und fügst der anderern Abfrage auch ein return true ein ^^ (bzw. sonst irgendeinen Wert...)
    Füge dann folgende Funktion in dein Script, wenn möglich, oben ein!
    stock strtok(const string[], &index)
    {
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
    index++;
    }
    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
    result[index - offset] = string[index];
    index++;
    }
    result[index - offset] = EOS;
    return result;
    }
    Danach poste uns die neuen ErrorZeilen, während ich mir die zwei unbekannten error Meldungen ansehe...

    Im Include oben kannst du es nach belieben einstellen, zu deinem Problem:
    #define NoDM_NOWEAPONS (1) //Sollen die Waffen vom Spieler in der NoDM Zone abgenommen und wieder zurückgegeben werden? (Ja = 1; Nein = 0) (Default: 1)

    Also ich versteh dich, am besten lässt du einen globalen String erstellen wie zB.:


    new gTextdrawString[256];


    und erstellt den Textdraw mit dem String wie:


    TextDrawCreate(X, Y, gTextdrawString);


    und ändern tust du es halt dann mit


    format(gTextdrawString, sizeof(gTextdrawString), "Blah Blah");

    #define MAX_DESTROY_TIME (120) //Nach wieviel Sekunden Fahrzeug zerstört werden soll.


    new gVehiclesLastUsed[MAX_VEHICLES];
    new bool:gVehiclesCreated[MAX_PLAYERS];


    forward Check_DestroyVehicle(vehicleid);


    public Check_DestroyVehicle(vehicleid)
    {
    gVehiclesCreated[vehicleid] = false;
    return DestroyVehicle(vehicleid);
    }


    #define DestroyVehicle Check_DestroyVehicle


    //Dieser obige Code muss soweit wie möglich oben im Script sein, der Rest ist egal ^^


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if((newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER) && gVehiclesCreated[GetPlayerVehicleID(playerid)]) gVehiclesLastUsed[GetPlayerVehicleID(playerid)] = gettime();
    }


    public OnVehicleSpawn(vehicleid)
    {
    gVehiclesLastUsed[vehicleid] = gettime();
    gVehiclesCreated[vehicleid] = true;
    }


    public OnVehicleStreamIn(vehicleid, forplayerid)
    {
    if((gettime() - gVehiclesLastUsed[vehicleid]) > MAX_DESTROY_TIME && gVehiclesCreated[vehicleid]) DestroyVehicle(vehicleid);
    }

    Das Folgende ist natürlich für alle Autos derzeit (musst halt umschreiben) und ist um einiges besser als der Vorschlag von ]hp[


    #define MAX_DESTROY_TIME (120) //Nach wieviel Sekunden Fahrzeug zerstört werden soll.


    new gVehiclesLastUsed[MAX_VEHICLES];


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER) gVehiclesLastUsed[GetPlayerVehicleID(playerid)] = gettime();
    }


    public OnVehicleSpawn(vehicleid)
    {
    gVehiclesLastUsed[vehicleid] = gettime();
    }


    public OnVehicleStreamIn(vehicleid, forplayerid)
    {
    if((gettime() - gVehiclesLastUsed[vehicleid]) > MAX_DESTROY_TIME) DestroyVehicle(vehicleid);
    }

    Ok, ich hasse diese Extra Labels, die man nicht ohne Probleme ändern kann... Also lösch einfach alles raus, was du von oben eingefügt hast und füg diese Sachen neu ein...


    new PlayerText3D:TextForPlayer[MAX_PLAYERS];


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(!strcmp(cmdtext, "/a", true, strfind(cmdtext, " ", false)))
    {
    if(!IsPlayerConnected(playerid)) return 1;
    new reason[32], Float:PlayerPos[3];
    strmid(reason, cmdtext, strfind(cmdtext, " ", false)+1, strlen(cmdtext));
    if(!strlen(reason)) return SendClientMessage(playerid, 0xFFFFFF00, "Benutze : /a [Text]");
    GetPlayerPos(playerid, PlayerPos[0], PlayerPos[1], PlayerPos[2]);
    DeletePlayer3DTextLabel(playerid, TextForPlayer[playerid]);
    TextForPlayer[playerid] = CreatePlayer3DTextLabel(playerid,reason,0x008080FF,PlayerPos[0], PlayerPos[1], PlayerPos[2],40.0);
    return SendClientMessage(playerid, 0xFFFFFF00, "3D-Text (Spielerseitig) erstellt.");
    }
    }