Beiträge von Pascal.

    Code
    CreateDynamicObject(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = STREAMER_OBJECT_SD, Float:drawdistance = STREAMER_OBJECT_DD);


    Schraub die Streamdistance und drawdistance hoch.


    Eventuell alles beide auf 300.0.

    Ich hatte es schon mit einer anderen Größe versucht, leider ging das auch nicht.
    Da alles nicht so geklappt hat habe ich das ganz anders gemacht.
    Nun muss man einfach sobald man eine Map downloadet, den Name in der meta.xml umschreiben.
    So klappt es eigentlich auch bisher sehr gut.
    Deshalb kann man das hier abschließen, ich bedanke mich trotzdem für die Hilfe.

    Das was ich davor sagte kannst du wieder zum stock ändern.
    Kenne mich leider nicht ganz damit aus aber:


    #define GetBenzinArt(%0) sprit{GetVehicleModel(%0)-400}


    Soll das nicht so sein?


    #define GetBenzinArt(%0) sprit[GetVehicleModel(%0)-400]

    Ja, die Maps die ein langen Ordner Namen haben werden nicht geladen.
    loadstr ist der Pfad, den ich bei LoadRandomMap printe.
    Bei längeren Ordner Name ist dort nicht der vollständige Name, dann wird die Map auch nicht geladen.


    //EDIT:


    Unten in mein Thread ist ein Debug code, das wird ausgegeben, daran sieht man auch das der Ordner Name nicht ganz geladen wird.

    Hallo Community.
    Wenn eine Random map geladen wird und der Ordner Name zu Groß ist dann wird die Map nicht geladen.
    Grund ist, der Ordner Name ist zu groß und bei ca 40 Zeichen ist Schluss.
    Aber die Ordner Namen haben Durchschnittlich 50-60 Zeichen.


    Jeffry:


    Ist aus dem Include ^^


    stock LoadRandomMap(Float:offZ = 5.0)
    {
    new rand;
    do {
    rand = random(LoadData[lMaxMaps]-10000000)+10000000;
    }
    while(LoadData[lLastMap] == rand);
    LoadData[lLastMap] = rand;
    new loadstr[256];
    if(!existproperty(0, "", rand))return print("Es konnte keine Map geladen werden!"),0;
    getproperty(0, "", rand, loadstr);
    strunpack(loadstr, loadstr, 256);
    strins(loadstr,"/Racemaps/",0);
    strcat(loadstr,"/objects.map");
    print(loadstr);
    return LoadMap(loadstr,offZ);
    }


    stock LoadMap(path[], Float:offZ = 5.0)
    {
    if(UnloadMap()){
    new loadstr[400],mapValues[mapData],count;
    if(!fexist(path))return 0;
    new length = strfind(path,"/",true,2), lstring[128];
    strmid(lstring,path,length,strfind(path,"/",true,++length));
    format(LoadData[lLastMapName],128,lstring);


    // GetAuthorName
    new file[256];
    format(file, sizeof(file), "/Racemaps/%s/meta.xml", LoadData[lLastMapName]);
    new XML:xml = xml_open(file);
    new buf[128];
    xml_get_string(xml, "meta/info/@author", buf);
    format(LoadData[Author], sizeof(LoadData[Author]), buf);

    format(file, sizeof(file), "/Racemaps/%s/meta.xml", LoadData[lLastMapName]);
    new item[128];
    new File:thandle = fopen(file, io_read);
    while (fread(thandle, item))
    {
    if(strfind(item, "#time") != -1)
    {
    strmid(item, item, strfind(item, "value=")+7, strfind(item,":"));
    SetWorldTime(strval(item));
    }
    }
    fclose(thandle);


    new File:fhandle = fopen(path,io_read);
    while(fread(fhandle, loadstr))
    {
    if(!loadstr[0])continue;
    if(!sscanf(loadstr, "p<">'object''model='d'posX='f'posY='f'posZ='f'rotX='f'rotY='f'rotZ='f",mapValues[pMmodelid], mapValues[pMX], mapValues[pMY], mapValues[pMZ], mapValues[pMRX], mapValues[pMRY], mapValues[pMRZ]))
    {
    CreateDynamicObject(mapValues[pMmodelid], mapValues[pMX], mapValues[pMY], mapValues[pMZ]+offZ, mapValues[pMRX], mapValues[pMRY], mapValues[pMRZ],-1,-1,-1,300.0,300.0);
    }
    else if(!sscanf(loadstr, "p<">'racepickup''type='s[30]'vehicle='d'posX='f'posY='f'posZ='f'rotX='f'rotY='f'rotZ='f",mapValues[pMtype],mapValues[pMmodelid], mapValues[pMX], mapValues[pMY], mapValues[pMZ], mapValues[pMRX], mapValues[pMRY], mapValues[pMRZ]))
    {
    if(strcmp(mapValues[pMtype],"nitro") == 0)CreateRacePickup(mapValues[pMX], mapValues[pMY], mapValues[pMZ]+offZ,1);
    else if(strcmp(mapValues[pMtype],"repair") == 0)CreateRacePickup(mapValues[pMX], mapValues[pMY], mapValues[pMZ]+offZ,2);
    else if(strcmp(mapValues[pMtype],"vehiclechange") == 0)CreateRacePickup(mapValues[pMX], mapValues[pMY], mapValues[pMZ]+offZ,3,mapValues[pMmodelid]);
    }
    else if(!sscanf(loadstr, "p<">'spawnpoint''vehicle='d'posX='f'posY='f'posZ='f'rotX='f'rotY='f'rotZ='f",mapValues[pMmodelid], mapValues[pMX], mapValues[pMY], mapValues[pMZ], mapValues[pMRX], mapValues[pMRY], mapValues[pMRZ]))
    {
    ++count;
    CreateRaceSpawn(mapValues[pMmodelid], mapValues[pMX], mapValues[pMY], mapValues[pMZ]+offZ, mapValues[pMRZ],count);
    }
    else if(!sscanf(loadstr, "p<">'marker''color='s[10]'posX='f'posY='f'posZ='f",mapValues[pMtype],mapValues[pMX], mapValues[pMY], mapValues[pMZ]))
    {
    mapValues[pMmodelid] = CreateDynamicObject(1559,mapValues[pMX], mapValues[pMY], mapValues[pMZ]+offZ,0.0,0.0,0.0,-1,-1,-1,400.0,400.0);
    mapValues[pMcolorID] = ConvertStringToHex(mapValues[pMtype]);
    SetDynamicObjectMaterial(mapValues[pMmodelid], 0, 1231, "dynsigns", "white64", mapValues[pMcolorID]);
    }
    else if(!sscanf(loadstr, "p<">'speedboost''posX='f'posY='f'posZ='f'veloX='f'veloY='f'veloZ='f",mapValues[pMX], mapValues[pMY], mapValues[pMZ], mapValues[pMRX], mapValues[pMRY], mapValues[pMRZ]))
    {
    CreateRacePickup(mapValues[pMX], mapValues[pMY], mapValues[pMZ]+offZ,4, 0 ,mapValues[pMRX], mapValues[pMRY], mapValues[pMRZ]);
    }
    else if(!sscanf(loadstr, "p<">'teleport''posX='f'posY='f'posZ='f'nposX='f'nposY='f'nposZ='f'rotX='f'rotY='f'rotZ='f",mapValues[pMX], mapValues[pMY], mapValues[pMZ], mapValues[pMRX], mapValues[pMRY], mapValues[pMRZ],mapValues[pNMRZ],mapValues[pNMRZ],mapValues[pNMRZ]))
    {
    CreateRacePickup(mapValues[pMX], mapValues[pMY], mapValues[pMZ]+offZ,5 , 0 ,mapValues[pMRX], mapValues[pMRY], mapValues[pMRZ]+offZ,mapValues[pNMRZ]);
    }
    }
    fclose(fhandle);
    if(!count)return print("Map konnte nicht geladen werden"),0;
    strdel(path,strfind(path,"objects.map"),strlen(path));
    strdel(loadstr,0,sizeof(loadstr));
    format(loadstr,128,"/Racemaps/%s/meta.xml",LoadData[lLastMapName]);
    LoadFromMeta(loadstr);
    }
    return 1;
    }


    Debug:

    Code
    /Racemaps/(DM) RaZoR ft. =Maty=! - Melancholic Pi/objects.map

    Mit der Funktion "LoadRandomMap" soll eine Zufällige Map geladen werden.
    Problem ist das der loadstr abgekürzt wird aber der Ordner Name länger ist.
    Der Ordner hat ca 50 Zeichen aber es werden höchstens 40 Zeichen nur ausgegeben.
    Den Ordner Name kann ich nicht ändern, ansonsten ist mein Converter umsonst.
    Jemand eine Idee?


    stock LoadRandomMap(Float:offZ = 5.0)
    {
    new rand;
    do {
    rand = random(LoadData[lMaxMaps]-10000000)+10000000;
    }
    while(LoadData[lLastMap] == rand);
    LoadData[lLastMap] = rand;
    new loadstr[256];
    if(!existproperty(0, "", rand))return print("Es konnte keine Map geladen werden!"),0;
    getproperty(0, "", rand, loadstr);
    strunpack(loadstr, loadstr, 256);
    strins(loadstr,"/Racemaps/",0);
    strcat(loadstr,"/objects.map");
    print(loadstr);
    return LoadMap(loadstr,offZ);
    }


    Debug code:

    Code
    /Racemaps/(DM) Drift Project - The Hard Loop By A/objects.map


    Jeffry: Kannst du mir eventuell hierbei Helfen?

    Hi,
    ich wollte Sonderzeichen aus einem String Entfernen lassen, klappt leider nicht ganz.


    Code:
    RemoveSpecialCharacter(text[])
    {
    print(text);
    for (new i = 0; i < strlen(text); i++)
    {
    if (strfind(text[i], "/", true) != -1) strdel(text[i], strfind(text, "/"), strfind(text[i], "/")+1);
    else if (strfind(text[i], "\", true) != -1) strdel(text[i], strfind(text, "\"), strfind(text[i], "\")+1);
    else if (strfind(text[i], """, true) != 1) strdel(text[i], strfind(text, """), strfind(text[i], """)+1);
    else if (strfind(text[i], "|", true) != -1) strdel(text[i], strfind(text, "|"), strfind(text[i], "|")+1);
    else if (strfind(text[i], "<", true) != -1) strdel(text[i], strfind(text, "<"), strfind(text[i], "<")+1);
    else if (strfind(text[i], ">", true) != -1) strdel(text[i], strfind(text, ">"), strfind(text[i], ">")+1);
    else if (strfind(text[i], "*", true) != -1) strdel(text[i], strfind(text, "*"), strfind(text[i], "*")+1);
    else if (strfind(text[i], ":", true) != -1) strdel(text[i], strfind(text, ":"), strfind(text[i], ":")+1);
    else if (strfind(text[i], "?", true) != -1) strdel(text[i], strfind(text, "?"), strfind(text[i], "?")+1);
    }
    print(text);
    return strlen(text);
    }


    Debug code:

    Code
    [22:00:45] AmiabLe v8 - | Levitate | // Das ist der richtige text
    [22:00:45] ibev   eiae|  // Das kommt am ende raus

    ocmd:delsupport(playerid,params[])
    {
    if(!isAdmin(playerid,1))return SendClientMessage(playerid,-1,"Du bist kein Admin!");
    new pID;
    if (sscanf(params, "u", pID)) {
    return SendClientMesage(playerid, COLOR_GREY, "Info: /delsupport [playerid/name]");
    }
    if (!IsPlayerConnected(pID)) {
    return SendClientMessage(playerid, COLOR_RED, "Spieler ist Offline.");
    }
    if (SubAccept[playerid] == 0 || SubAccept[pID] == 0) {
    return SendClientMessage(playerid, COLOR_RED, "Du oder der Spieler ist nicht im Support!");
    }
    SendClientMessage(playerid,-1,"Du hast den Report geschlossen!");
    SupAccept[playerid] = 0;
    //...
    SupAccept[pID] = 0;
    SupportText[pID] = " ";
    return 1;
    }

    Blacktrax:


    Naja so ganz verstehe ich nicht die Frage aber was Du machen könntest wäre wenn du LoadRandomMap(); oder LoadMap(path[]); ausführst direkt darunter ein Timer starten.
    Dort alle Spieler die Online sind eine Variable zuweisen, beispiel:



    // Oben im script zu den Variablen
    new alive[MAX_PLAYERS];


    // Wenn der Timer vorbei ist und das Public aufgerufen wird was du angegeben hast:
    for (new i = 0; i < MAX_PLAYERS; i++)
    {
    if (!IsPlayerConnected(i)) continue;
    alive[i] = 1;
    }


    Sowas ähnliches halt.


    So und zum bei spiel bei OnPlayerDeath, OnPlayerKeyStateChange und OnPlayerStateChange, kannst du abfragen ob noch welche leben.
    Wenn nein --> Map laden
    Wenn Ja --> zum beispiel Spectaten.

    Haste auch das forward SekundenTimer(playerid);?


    Wenn nein, tue oben im Script unter deine Variablen oder so folgendes hin:
    forward SekundenTimer(playerid);