Problem mit Dynamischen System..

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
  • Hallo,


    undzwar lerne ich zur Zeit das Dynamische Scripten funktioniert soweit auch gut bloss...


    Wenn ich ein Hotel miete, dann kann ich rein gehen in das Hotelzimmer..
    Aber wenn ich /hexit eingebe lande ich nicht vor dem Hotel..
    Hier der Befehl
    ocmd:hexit(playerid, params[])
    {
    if(inHotel[playerid] == -1)return SendClientMessage(playerid,0x00FF00,"Du bist in keinem Haus!");
    new hid = inHotel[playerid];
    new innenraum = HotelInfo[hid][hotel_innen];
    if(!IsPlayerInRangeOfPoint(playerid,5,HotelInnenraum[innenraum][innen_x],HotelInnenraum[innenraum][innen_y],HotelInnenraum[innenraum][innen_z]))return SendClientMessage(playerid,0x00FF00,"Du bist nicht am Ausgang!");


    SetPlayerPos(playerid,HotelInfo[hid][Hotel_X],HotelInfo[hid][Hotel_Y],HotelInfo[hid][Hotel_Z]);
    SetPlayerInterior(playerid,0);
    SendClientMessage(playerid,0x00FF00,"Du hast das Hotel verlassen!");
    inHotel[playerid] = -1;
    return 1;
    }


    Edit://Pawn Code richtig eingerückt..

  • Erstmal, nur zur Information pushen ist verboten.
    Zum Thema, debugg doch einfach mal alles um zu schauen, was das Script überhaupt macht das heißt zum Beispiel
    printf("%f %f %f",HotelInfo[hid][Hotel_X],HotelInfo[hid][Hotel_Y],HotelInfo[hid][Hotel_Z]);
    um zu sehen, wohin der Spieler geportet wird (Welche Kords genommen werden)

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

  • Ja er wird mitten in der Pampa gespawnt..
    sind glaub ich die Koords
    0.0,0.0,0.0

  • Hier ist das ganze Filterscript..
    #include <a_samp>
    #include <dini>
    #include <ocmd>


    #define MAX_HOTELS 30 //Wie viel Hotels es geben soll ;)
    #define SPEICHER_PFAD "Hotels/%d.ini" //Wo sollen die Hotels gespeichert werden ?
    #define PICKUP_ZUVERMIETEN 1272 //Pickupid wenn man das Hotelzimmer meiten kann :)
    #define HOTEL_LABEL "Hotel\nBesitzer: %s" // 3DTextLabel..erklärt sich eig von selber..


    #define COLOR_YELLOW 0xF5FF00FF


    enum HInfo {
    Float:Hotel_X,
    Float:Hotel_Y,
    Float:Hotel_Z,
    hotel_preis,
    hotel_pickup,
    hotel_besitzer,
    hotel_label,
    hotel_innen
    }
    new HotelInfo[MAX_HOTELS][HInfo];


    enum innenraum_info
    {
    Float:innen_x,
    Float:innen_y,
    Float:innen_z,
    innen_interior
    }
    new HotelInnenraum[][innenraum_info] =
    {
    {2454.717041,-1700.871582,1013.5151,2}
    };


    new inHotel[MAX_PLAYERS];
    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print("| iHotel v1.0 Loaded... |");
    print("| iHotel v1.0 wurde erfoglrech geladen..|");
    print("--------------------------------------\n");
    for(new hotelid=1;hotelid<MAX_HOTELS;hotelid++)
    {
    LoadHotel(hotelid);
    }
    return 1;
    }


    public OnFilterScriptExit()
    {
    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    inHotel[playerid] = 0;
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    return 1;
    }


    public OnPlayerDeath(playerid, killerid, reason)
    {
    return 1;
    }


    public OnVehicleSpawn(vehicleid)
    {
    return 1;
    }


    public OnVehicleDeath(vehicleid, killerid)
    {
    return 1;
    }


    public OnPlayerText(playerid, text[])
    {
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/mycommand", cmdtext, true, 10) == 0)
    {
    // Do something here
    return 1;
    }
    return 0;
    }


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    return 1;
    }


    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    return 1;
    }


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    return 1;
    }


    public OnPlayerEnterCheckpoint(playerid)
    {
    return 1;
    }


    public OnPlayerLeaveCheckpoint(playerid)
    {
    return 1;
    }


    public OnPlayerEnterRaceCheckpoint(playerid)
    {
    return 1;
    }


    public OnPlayerLeaveRaceCheckpoint(playerid)
    {
    return 1;
    }


    public OnRconCommand(cmd[])
    {
    return 1;
    }


    public OnPlayerRequestSpawn(playerid)
    {
    return 1;
    }


    public OnObjectMoved(objectid)
    {
    return 1;
    }


    public OnPlayerObjectMoved(playerid, objectid)
    {
    return 1;
    }


    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    for(new hotelid;hotelid<MAX_HOTELS;hotelid++)
    {
    if(pickupid == HotelInfo[hotelid][hotel_pickup])
    {
    for(new hid;hid<MAX_HOTELS;hid++)
    {
    new xname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,xname,sizeof(xname));
    if(strcmp(HotelInfo[hid][hotel_besitzer],xname,false) == 0)
    {
    new innenraum = HotelInfo[hid][hotel_innen];
    SetPlayerPos(playerid,HotelInnenraum[innenraum][innen_x],HotelInnenraum[innenraum][innen_y],HotelInnenraum[innenraum][innen_z]);
    SetPlayerInterior(playerid,HotelInnenraum[innenraum][innen_interior]);
    inHotel[playerid] = hid;
    }
    }
    }
    }
    return 1;
    }


    public OnVehicleMod(playerid, vehicleid, componentid)
    {
    return 1;
    }


    public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
    {
    return 1;
    }


    public OnVehicleRespray(playerid, vehicleid, color1, color2)
    {
    return 1;
    }


    public OnPlayerSelectedMenuRow(playerid, row)
    {
    return 1;
    }


    public OnPlayerExitedMenu(playerid)
    {
    return 1;
    }


    public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
    {
    return 1;
    }


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    return 1;
    }
    stock CreateHotel(Float:X, Float:Y, Float:Z, preis, besitzer[50], innenraum)
    {
    new pfad[50];
    for(new hid=1;hid<MAX_HOTELS;hid++)
    {
    format(pfad,50,SPEICHER_PFAD,hid);
    if(!fexist(pfad))
    {
    dini_Create(pfad);
    dini_FloatSet(pfad,"x",X);
    dini_FloatSet(pfad,"y",Y);
    dini_FloatSet(pfad,"z",Z);
    dini_IntSet(pfad,"preis",preis);
    dini_Set(pfad,"besitzer",besitzer);
    dini_IntSet(pfad,"innenraum",innenraum);
    return LoadHotel(hid);
    }
    }
    return 1;
    }
    stock DeleteHotel(hotelid)
    {
    DestroyPickup(HotelInfo[hotelid][hotel_pickup]);
    Delete3DTextLabel(HotelInfo[hotelid][hotel_label]);
    return 1;
    }
    stock LoadHotel(hotelid)
    {
    new pfad[50], string[128];
    format(pfad,50,SPEICHER_PFAD,hotelid);
    if(!fexist(pfad))return 0; //überprüft ob die Datei existiert, wenn nicht wird 0 zurückgegeben


    HotelInfo[hotelid][Hotel_X] = dini_Float(pfad,"x");
    HotelInfo[hotelid][Hotel_Y] = dini_Float(pfad,"y");
    HotelInfo[hotelid][Hotel_Z] = dini_Float(pfad,"z");
    format(HotelInfo[hotelid][hotel_besitzer],32,"%s",dini_Get(pfad,"besitzer"));
    HotelInfo[hotelid][hotel_preis] = dini_Int(pfad,"preis");

    format(string,sizeof(string),HOTEL_LABEL,HotelInfo[hotelid][hotel_besitzer]);


    HotelInfo[hotelid][hotel_pickup] = CreatePickup(PICKUP_ZUVERMIETEN ,23,HotelInfo[hotelid][Hotel_X],HotelInfo[hotelid][Hotel_Y],HotelInfo[hotelid][Hotel_Z],0);
    HotelInfo[hotelid][hotel_label] = Create3DTextLabel(string,COLOR_YELLOW,HotelInfo[hotelid][Hotel_X],HotelInfo[hotelid][Hotel_Y],HotelInfo[hotelid][Hotel_Z],20.0, 0);
    return print("Hotels erfolgreich geladen");
    }
    ocmd:createhotel(playerid, params[])
    {
    if(IsPlayerAdmin(playerid))
    {
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    CreateHotel(X,Y,Z, 150,"Keiner", 0);
    }
    return 1;
    }
    ocmd:einchecken(playerid, params[])
    {
    for(new hid;hid<MAX_HOTELS;hid++)
    {
    if(IsPlayerInRangeOfPoint(playerid,5,HotelInfo[hid][Hotel_X],HotelInfo[hid][Hotel_Y],HotelInfo[hid][Hotel_Z]))
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof name);
    if(strcmp(HotelInfo[hid][hotel_besitzer],name,false) == 0)return SendClientMessage(playerid,0x00FF00,"Dieses Hotelzimmer gehört dir bereits!");
    if(GetPlayerMoney(playerid) < HotelInfo[hid][hotel_preis])return SendClientMessage(playerid,0x00FF00,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid,-HotelInfo[hid][hotel_preis]);
    new pfad[50];
    format(pfad,50,SPEICHER_PFAD,hid);
    dini_Set(pfad,"besitzer",name);
    DeleteHotel(hid);
    LoadHotel(hid);
    }
    }
    return 1;
    }
    ocmd:eingang(playerid, params[])
    {
    for(new hid;hid<MAX_HOTELS;hid++)
    {
    if(IsPlayerInRangeOfPoint(playerid,5,HotelInfo[hid][Hotel_X],HotelInfo[hid][Hotel_Y],HotelInfo[hid][Hotel_Z]))
    {
    new xname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,xname,sizeof(xname));
    if(strcmp(HotelInfo[hid][hotel_besitzer],xname,false) == 0)
    {
    new innenraum = HotelInfo[hid][hotel_innen];
    SetPlayerPos(playerid,HotelInnenraum[innenraum][innen_x],HotelInnenraum[innenraum][innen_y],HotelInnenraum[innenraum][innen_z]);
    SetPlayerInterior(playerid,HotelInnenraum[innenraum][innen_interior]);
    inHotel[playerid] = hid;
    }
    else {
    return SendClientMessage(playerid,0x00FF00,"Du hast dieses Zimmer nicht gemietet!");
    }
    }
    else {
    return SendClientMessage(playerid,0x00FF00,"Du bist an keinem Hotel");
    }
    }
    return 1;
    }
    /*ocmd:henter(playerid, params[])
    {
    for(new hid;hid<MAX_HOTELS;hid++)
    {
    if(IsPlayerInRangeOfPoint(playerid,50.0,HotelInfo[hid][Hotel_X],HotelInfo[hid][Hotel_Y],HotelInfo[hid][Hotel_Z]))
    {
    new xname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,xname,sizeof(xname));
    if(strcmp(HotelInfo[hid][hotel_besitzer],xname,false) == 0)
    {
    new innenraum = HotelInfo[hid][hotel_innen];
    SetPlayerPos(playerid,HotelInnenraum[innenraum][innen_x],HotelInnenraum[innenraum][innen_y],HotelInnenraum[innenraum][innen_z]);
    SetPlayerInterior(playerid,HotelInnenraum[innenraum][innen_interior]);
    inHotel[playerid] = hid;
    }
    else {
    return SendClientMessage(playerid,0x00FF00,"Du hast dieses Zimmer nicht gemietet!");
    }
    }
    else {
    return SendClientMessage(playerid,0x00FF00,"Du bist an keinem Hotel");
    }
    }
    return 1;
    }*/
    ocmd:hexit(playerid, params[])
    {
    if(inHotel[playerid] == -1)return SendClientMessage(playerid,0x00FF00,"Du bist in keinem Haus!");
    new hid = inHotel[playerid];
    new X=HotelInfo[hid][Hotel_X];
    new Y=HotelInfo[hid][Hotel_Y];
    new Z=HotelInfo[hid][Hotel_Z];
    new innenraum = HotelInfo[hid][hotel_innen];
    if(!IsPlayerInRangeOfPoint(playerid,5,HotelInnenraum[innenraum][innen_x],HotelInnenraum[innenraum][innen_y],HotelInnenraum[innenraum][innen_z]))return SendClientMessage(playerid,0x00FF00,"Du bist nicht am Ausgang!");


    SetPlayerPos(playerid,X,Y,Z);
    SetPlayerInterior(playerid,0);
    SendClientMessage(playerid,0x00FF00,"Du hast das Hotel verlassen!");
    inHotel[playerid] = -1;
    return 1;
    }