CreatePickup ~ CreateDynamicPickup

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hey, habe jetzt alle Läden usw mit CreatePickup gemacht. Aber manchmal waren einfach bei manchen Läden keine Pickups mehr...


    Ist dort ne Grenze wie bei CreateObject?


    Wenn ja, habe CreateDynamicPickup gemacht, aber kann dort nicht mehr reinlaufen...
    Wie kann ich das scripten?


    Danke im voraus

  • CreateDynamicPickup hat auch eine andere Syntax:


    CreateDynamicPickup(modelid, type, Float:x, Float:y, Float:z, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 100.0);


    Engelsflügel am Astonkühler, als Schutz vor dem Teufel!

  • Es gibt auch ein anderes Callback, welches OnPlayerPickUpDynamicPickup heißt und aufgerufen wird wenn der spieler ein pickup betritt welches über den streamer läuft also
    mit CreateDynamicPickup erstellt wurde


    Habs jez so gemacht:


    public OnPlayerPickupDynamicPickup(playerid,pickupid)
    {
    if(pickupid == vuzsenter)
    {
    SetPlayerPos(playerid,-25.884498,-185.868988,1003.546875);
    SetPlayerInterior(playerid,17);
    SetPlayerVirtualWorld(playerid,2222);
    }
    if(pickupid == vuzsexit)
    {
    SetPlayerPos(playerid,1351.7335,-1750.6332,13.3600);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,0);
    }
    return 1;
    }


    Funzt leider immer noch nicht :/

  • Wenn du so deine pickups nur deklariert hast wie oben geschrieben wird dies aus nicht funktionieren

    CreateDynamicPickup(1318,1,1352.4542,-1759.2408,13.5078,0,-1,-1,50);


    dazu sollte schon die id des Pickups im integer speichern


    vuzsenter = CreateDynamicPickup(1318,1,1352.4542,-1759.2408,13.5078,0,-1,-1,50);

  • Da brauchst du dich auch nicht wundern


    OnPlayerPickupDynamicPickup


    Das Callback heißt auch


    OnPlayerPickUpDynamicPickup


    an deiner stelle würde ich den aufbau anders machen

    #define MAX_ICONS 1
    enum icon_data {
    e_ID,
    a_ID,
    Float:e_X,
    Float:e_Y,
    Float:e_Z,
    e_VW,
    e_INT,
    Float:a_X,
    Float:a_Y,
    Float:a_Z,
    a_VW,
    a_INT,
    }
    new bool:IconWait[MAX_PLAYERS char];
    new IconInfo[MAX_ICONS][icon_data]= {
    {0,0,1351.7335,-1750.6332,13.3600,0,0,-25.884498,-185.868988,1003.546875,2222,17}
    };



    public OnGameModeInit()
    {
    new i;
    for(; i < MAX_ICONS; ++i){
    IconInfo[i][e_ID] = CreateDynamicPickup(1318,1,IconInfo[i][e_X],IconInfo[i][e_Y],IconInfo[i][e_Z],IconInfo[i][e_VW],IconInfo[i][e_INT],-1,50);
    IconInfo[i][a_ID] = CreateDynamicPickup(1318,1,IconInfo[i][a_X],IconInfo[i][a_Y],IconInfo[i][a_Z],IconInfo[i][a_VW],IconInfo[i][a_INT],-1,50);
    }
    return 1;
    }




    public OnPlayerPickUpDynamicPickup(playerid, pickupid)
    {
    new i;
    for(; i < MAX_ICONS; ++i){
    if(IconWait{playerid})return (IconWait{playerid}=false),1;
    else if(IconInfo[i][e_ID] == pickupid)return SetPlayerPos(playerid,IconInfo[i][a_X],IconInfo[i][a_Y],IconInfo[i][a_Z]),IconWait{playerid}=true,SetPlayerInterior(playerid,IconInfo[i][a_INT]),SetPlayerVirtualWorld(playerid,IconInfo[i][a_VW]);
    else if(IconInfo[i][a_ID] == pickupid)return SetPlayerPos(playerid,IconInfo[i][e_X],IconInfo[i][e_Y],IconInfo[i][e_Z]),IconWait{playerid}=true,SetPlayerInterior(playerid,IconInfo[i][e_INT]),SetPlayerVirtualWorld(playerid,IconInfo[i][e_VW]);
    }
    return 1;
    }


  • Kann man das nicht genau wie CreatePickup machen?


    Habe nämlich alles eig genau so, funzt aber nicht:


    new restaurantlv2enter;
    new restaurantlv2exit;


    restaurantlv2enter=CreateDynamicPickup(1318,1,-2524.5066,1216.0653,37.6721,0,-1,-1,50);
    restaurantlv2exit=CreateDynamicPickup(1318,1,460.5563,-88.5829,999.5547,4,-1,-1,50);


    if(pickupid==restaurantlv2enter)
    {
    SetPlayerVirtualWorld(playerid,4);
    SetPlayerPos(playerid,457.304748,-88.428497,999.554687);
    SetPlayerInterior(playerid,4);
    }
    if(pickupid==restaurantlv2exit)
    {
    SetPlayerVirtualWorld(playerid,0);
    SetPlayerPos(playerid,-2520.7576,1216.4044,37.4283);
    SetPlayerInterior(playerid,0);
    }


    Oder muss mans so machen wie du es gemacht hast?


    Aber schonmal Danke!

  • Hast du vergessen den Text zu lesen

    Siehe bei deinem geposteten code


    public OnPlayerPickupDynamicPickup(playerid,pickupid)


    und nein so wie ich muss man es nicht zwingend machen es ist eine besser Option