Beiträge von Jeffry

    Ok, dann ist es so wie ich es vermutet habe, das würde auch deinem Code entsprechen.
    Um die Virtuelle Welt, in der du bist, herauszufinden, nutze diesen Befehl:


    if(!strcmp(cmdtext, "/meinewelt", true))
    {
    new str[128];
    format(str, sizeof(str), "Meine Welt: %d", GetPlayerVirtualWorld(playerid));
    SendClientMessage(playerid, -1, str);
    return 1;
    }


    Wenn du dir dann die ID der Virtuellen Welt ausgelesen hast, trägst du sie jeweils hier ein:


    new dP[MAX_DPOINTS][dutyPoints] =
    {
    {"LSPD-Duty Punkt",1239, 324.7148, 305.5775, 999.1484,Text3D:-1,HIER},
    {"SFPD-Duty|Equip Punkt",1239,238.0306,125.4313,1003.2188,Text3D:-1,HIER},
    {"Army-Duty Punkt",1239,223.7495,1869.6224,13.1406,Text3D:-1,HIER},//AB
    {"Army-Duty|Equip Punkt",1239,414.5320,2531.6768,19.1618,Text3D:-1,HIER},//HB
    {"SAMAG-Duty Punkt",1239,1805.0970,-1303.9603,71.2734,Text3D:-1,HIER},
    {"SAMAG-EQUIP Punkt",1239,1803.2406,-1304.9993,71.2734,Text3D:-1,HIER},


    //HEALS
    {"SFPD-Heal Punkt",1240,242.3738,108.9842,1003.2188,Text3D:-1,HIER},
    {"LSPD-Heal Punkt",1240,321.9749,315.2595,999.1484,Text3D:-1,HIER},
    {"Army-Heal Punkt",1240,240.0738,1859.0677,14.0840,Text3D:-1,HIER}, //AB
    {"Army-Heal Punkt",1240,413.9103,2539.3020,16.5276,Text3D:-1,HIER} //HB
    };



    Wieso hast du im enum eigentlich zwei mal was mit der Virtuellen Welt stehen?
    dv,
    v_world


    Gegegebenenfalls kannst du da eins entfernen, ansonsten trage oben zur Sicherheit die Virtuelle Welt zwei mal bei "HIER" ein, also: 3,3 anstatt nur 3 (Beispiel).


    Wenn du das für alle gemacht hast, sollten die Pickups nach dem kompilieren und Neustart des Servers alle in der richtigen Virtuellen Welt sichtbar sein.

    Beides kannst du mit einem Command Prozessor machen. Da gibt es einige zur Auswahl, zum Beispiel dcmd, ocmd, zcmd,... Such dir einen raus. Beispiele zu Befehlen sind eigentlich bei allen dabei.


    Splitten kannst du die params dann mit sscanf oder strtok, welches dir lieber ist.


    Lege dir die Befehle mal an, schau mal ob du das komplett hinbekommst. Wenn nicht, sag Bescheid wenn und wo du hängst, und Beschreibe was das Problem ist.

    Ahja, ok!
    Ein Pickup kannst du nicht an ein Objekt attachen. Aber du kannst mit dieser Funktion die Position (mit angegebener Distanz) vor dem Objekt herausfinden, und dann das Pickup nach der Drehung des Objektes wieder erstellen:
    stock GetPosVorObjekt(objectid, Float:dist, &Float:x, &Float:y, &Float:z) //©Jeffry
    {
    new Float:rotX,Float:rotY,Float:rotZ;
    GetObjectRot(objectid, rotX, rotY, rotZ);
    GetObjectPos(objectid, x, y, z);
    x += (dist * floatsin(-rotZ, degrees));
    y += (dist * floatcos(-rotZ, degrees));
    return true;
    }


    Beispiel:
    new Float:x, Float:y, Float:z;
    GetPosVorObjekt(deinATMObjekt, 5.0, x, y, z);
    deinPickup = CreatePickup(1240, 1, x, y, z, 0);

    Willst du, dass die ATM Maschine immer in etwa die Richtung schaut, in der du stehst? (Rote Position = Spieler-Position?)
    Oder soll es sich einfach im Kreis drehen?


    Oder wie darf ich das Bild verstehen? Bin mir nicht sicher, wie genau du das meinst.

    Ahja, ok.
    Hast du Includes, die OnDialogResponse hooken?


    Nutzt du nur den Gamemode und einen Filterscript, oder hast du noch andere Filterscripts?


    Am Gamemode kann es eigentlich nicht liegen, da zuerst die Filterscripts ausgeführt werden, daher gehe ich davon aus, dass du noch andere Filterscripts hast. Hast du diese bei OnDialogResponse auch geprüft?

    Warum hast du das geändert?
    if(Postinfo[playerid][post_Checkpoint] == 0)


    wieder zu:
    if(Postinfo[playerid][post_Checkpoint] == 1)
    (Am besten den Code auf Post #28 nehmen.)


    Dann nochmal den Log posten.

    Du bist nicht in einem der solchen Fahrzeuge:
    if(IsPlayerInVehicle(playerid,postg[f]))


    Prüfe das mal. Wenn doch (wenn du denkst), dann debugge es so:

    Spoiler anzeigen
    printf("aktiv: %d", Post[playerid][post_bAktiv]);
    if(Post[playerid][post_bAktiv])
    {
    printf("checkpoint: %d", Post[playerid][post_Checkpoint]);
    if(Post[playerid][post_Checkpoint] == 1)
    {
    for(new i = 0; i < sizeof(postCars); i++)
    {
    if(IsPlayerInVehicle(playerid,postCars[i]))
    {
    new veh = GetPlayerVehicleID(playerid);
    Post[playerid][post_Checkpoint] = 0;
    DisablePlayerCheckpoint(playerid);
    printf("Setze random checkpoint");
    new rand = random(sizeof(RandomSpawn1));
    SetPlayerCheckpoint(playerid,RandomSpawn1[rand][0], RandomSpawn1[rand][1],RandomSpawn1[rand][2],5.0);
    return 1;
    }
    }
    }
    else
    {
    for(new f = 0; f < sizeof(postg); f++)
    {
    printf("Fahrzeug: %d / postg: %d", GetPlayerVehicleID(playerid), postg[f]);
    if(IsPlayerInVehicle(playerid,postg[f]))
    {
    sInfo[playerid][post]++;
    Post[playerid][post_Checkpoint] = 1;
    printf("post: %i",sInfo[playerid][post]);
    if(sInfo[playerid][post] == 10)
    {
    SendClientMessage(playerid,0xFF0000FF,"Fertig");
    DisablePlayerCheckpoint(playerid);
    return 1;
    }
    else
    {
    printf("Setze checkpoint hinter Fahrzeug.");
    new Float:x,Float:y,Float:z;
    GetPosHinterFahrzeug(veh,7,Float:x,Float:y,Float:z);
    sInfo[playerid][postx] = x;
    sInfo[playerid][posty] = y;
    sInfo[playerid][postz] = z;
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,sInfo[playerid][postx], sInfo[playerid][posty],sInfo[playerid][postz],3.0);
    return 1;
    }
    }
    }
    }
    }

    Was steht im Log?

    Debugge es bitte mal so:
    printf("aktiv: %d", Post[playerid][post_bAktiv]);
    if(Post[playerid][post_bAktiv])
    {
    printf("checkpoint: %d", Post[playerid][post_Checkpoint]);
    if(Post[playerid][post_Checkpoint] == 1)
    {
    for(new i = 0; i < sizeof(postCars); i++)
    {
    if(IsPlayerInVehicle(playerid,postCars[i]))
    {
    new veh = GetPlayerVehicleID(playerid);
    Post[playerid][post_Checkpoint] = 0;
    DisablePlayerCheckpoint(playerid);
    printf("Setze random checkpoint");
    new rand = random(sizeof(RandomSpawn1));
    SetPlayerCheckpoint(playerid,RandomSpawn1[rand][0], RandomSpawn1[rand][1],RandomSpawn1[rand][2],5.0);
    return 1;
    }
    }
    }
    else
    {
    for(new f = 0; f < sizeof(postg); f++)
    {
    if(IsPlayerInVehicle(playerid,postg[f]))
    {
    sInfo[playerid][post]++;
    Post[playerid][post_Checkpoint] = 1;
    printf("post: %i",sInfo[playerid][post]);
    if(sInfo[playerid][post] == 10)
    {
    SendClientMessage(playerid,0xFF0000FF,"Fertig");
    DisablePlayerCheckpoint(playerid);
    return 1;
    }
    else
    {
    printf("Setze checkpoint hinter Fahrzeug.");
    new Float:x,Float:y,Float:z;
    GetPosHinterFahrzeug(veh,7,Float:x,Float:y,Float:z);
    sInfo[playerid][postx] = x;
    sInfo[playerid][posty] = y;
    sInfo[playerid][postz] = z;
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,sInfo[playerid][postx], sInfo[playerid][posty],sInfo[playerid][postz],3.0);
    return 1;
    }
    }
    }
    }
    }

    Poste dann, was im Log steht, wenn du in den Checkpoint fährst.

    Bist du Leader dieser Fraktion? Wenn ja, dann schreibe es doch mal so:
    new frakid = PlayerInfo[playerid][pMember];
    if(frakid == 0) frakid = PlayerInfo[playerid][pLeader];
    format(query,sizeof(query),"UPDATE `gangrangs` SET `rangname%i` = '%s' WHERE `frakid`='%i'",level,result,frakid);
    printf(query);
    Gegebenenfalls eben `fID` im Query, je nach dem was richtig ist.

    Also wenn du es so schreibst, und ganz unten in die letzte Zeile deines Filterscript einfügst, dann sollte es ohne Probleme klappen.


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(!strcmp("/zeit", cmdtext, true))
    {
    SetWorldTime(12);
    return 1;
    }


    if(!strcmp("/wetter", cmdtext, true))
    {
    SetWeather(19);
    return 1;
    }
    return 0;
    }


    Edit:
    @[LnD]JustMe.77: Filterscript natürlich :D