Pickup -> Enter Befehl

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
  • Guten Tag,
    ich habe eine Frage wie schreibe ich die Pickup funktion am besten zu einen /Enter Befehl ?


    public OnPlayerPickUpDynamicPickup(playerid, pickupid)
    {
    if(GetPVarInt(playerid, "HousePickupCooldown") < gettime())
    {
    if(InHouse[playerid] == INVALID_HOUSE_ID) {
    foreach(new i : Houses)
    {
    if(pickupid == HouseData[i][HousePickup])
    {


    SetPVarInt(playerid, "HousePickupCooldown", gettime() + HOUSE_COOLDOWN);
    SetPVarInt(playerid, "PickupHouseID", i);


    if(!strcmp(HouseData[i][Owner], "-")) {
    new string[64];
    format(string, sizeof(string), "{2ECC71}$%s", convertNumber(HouseData[i][Price]));
    ShowPlayerDialog(playerid, DIALOG_BUY_HOUSE, DIALOG_STYLE_MSGBOX, "Haus zu verkaufen", string, "Kaufen", "Schließen");
    }else{
    if(HouseData[i][SalePrice] > 0 && strcmp(HouseData[i][Owner], Player_GetName(playerid)))
    {
    new string[64];
    format(string, sizeof(string), "{2ECC71}$%s", convertNumber(HouseData[i][SalePrice]));
    ShowPlayerDialog(playerid, DIALOG_BUY_HOUSE_FROM_OWNER, DIALOG_STYLE_MSGBOX, "Haus zu verkaufen", string, "Kaufen", "Schließen");
    return 1;
    }


    switch(HouseData[i][LockMode])
    {
    case LOCK_MODE_NOLOCK: SendToHouse(playerid, i);
    case LOCK_MODE_KEYS:
    {
    new gotkeys = Iter_Contains(HouseKeys[playerid], i);
    if(!gotkeys) if(!strcmp(HouseData[i][Owner], Player_GetName(playerid))) gotkeys = 1;


    if(gotkeys) {
    SendToHouse(playerid, i);
    }else{
    SendClientMessage(playerid, 0xE74C3CFF, "Du besitzt keine Schlüssel für dieses Haus.");
    }
    }


    case LOCK_MODE_OWNER:
    {
    if(!strcmp(HouseData[i][Owner], Player_GetName(playerid))) {
    SetPVarInt(playerid, "HousePickupCooldown", gettime() + HOUSE_COOLDOWN);
    SendToHouse(playerid, i);
    }else{
    SendClientMessage(playerid, 0xE74C3CFF, "Nur der Besitzer kann dieses Haus betreten");
    }
    }
    }
    }
    }
    }
    }else{
    for(new i; i < sizeof(HouseInteriors); ++i)
    {
    if(pickupid == HouseInteriors[i][intPickup])
    {
    SetPVarInt(playerid, "HousePickupCooldown", gettime() + HOUSE_COOLDOWN);
    SetPlayerVirtualWorld(playerid, 0);
    SetPlayerInterior(playerid, 0);
    SetPlayerPos(playerid, HouseData[ InHouse[playerid] ][houseX], HouseData[ InHouse[playerid] ][houseY], HouseData[ InHouse[playerid] ][houseZ]);
    InHouse[playerid] = INVALID_HOUSE_ID;
    return 1;
    }
    }
    } }



    Danke

  • Tja im Endeffekt 1:1 rauskopieren und in einen /enter Befehl packen :D


    Allerdings gibt es ja dann das Problem mit der Abfrage if(pickupid ==.


    Tja was das angeht musst du halt hier schauen, wo (also an welcher Position) die jeweiligen Pickups erstellt werden und anschließend musst du prüfen:


    if(IsPlayerInRangeOfPoint(playerid, 2.0, x,y,z))


    x,y,z entsprechen in dem Beispiel den Koordinaten von dem Pickup.


    Musst du einzeln raussuchen und dann ersetzen :)


    Bei der Schleife ist da identisches, da hast du dann wahrscheinlich sowas wie:


    HouseInteriors[i][outsideX],HouseInteriors[i][outsideY],HouseInteriors[i][outsideZ]


    Was du dann in die IsPlayerInRangeOfPoint Abfrage packen kannst :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ja gut, klingt ja logisch irgendwie ? xD
    Werde es morgen mal machen :D
    Danke dir