Beiträge von Maksimo007

    Hier wäre der Ladecode:
    stock LoadBank(BankID)
    {
    new pfad[50];
    format(pfad,50,"/Bankautomat/%d.txt",BankID);
    if(!fexist(pfad))return 0;
    BankInfo[BankID][bank_x] = dini_Float(pfad,"x");
    BankInfo[BankID][bank_y] = dini_Float(pfad,"y");
    BankInfo[BankID][bank_z] = dini_Float(pfad,"z");
    BankInfo[BankID][bank_id] = dini_Int(pfad,"BankautomatID");
    return 1;
    }



    Außerdem das Create:
    stock CreateBankautomat(Float:x,Float:y,Float:z)
    {
    new pfad[50];
    for(new bank=1;bank<MAX_BANK;bank++)
    {
    format(pfad,50,"/Bankautomat/%d.txt",bank);
    if(!fexist(pfad))
    {
    dini_Create(pfad);
    dini_FloatSet(pfad,"x",x);
    dini_FloatSet(pfad,"y",y);
    dini_FloatSet(pfad,"z",z);
    dini_IntSet(pfad,"BankautomatID",bank);
    return LoadBank(bank);
    }
    }
    return 1;
    }



    Und wenn ich in die Datei schaue, stehen auch Koordinaten da.

    "Hi


    2 Kleine Sachen:


    Arrays sind nullbasiert, sprich bank muss den Startwert 0 und nicht 1 haben
    Du kannst die Grösse eines Arrays mit dem sizeof Operator abfragenGruss"


    Habe es aber schon immer so gemacht, da die Datei mit dem Namen 1 anfängt und nicht mit 0. Es hat bisher auch immer funktioniert.

    Hey,
    ich brauche Hilfe bei If(IsPlayerInRangeOfPoint) beim Banksystem. Hier mein Code:
    ocmd:bank(playerid,params[])
    {
    #pragma unused params
    for(new bank=1;bank<MAX_BANK;bank++)
    {
    if(IsPlayerInRangeOfPoint(playerid,10,BankInfo[bank][bank_x],BankInfo[bank][bank_y],BankInfo[bank][bank_z]))
    {
    ShowPlayerDialog(playerid,DIALOG_BANK,DIALOG_STYLE_LIST,"Bank","Einzahlen\nAbheben\nKontostand","Bestätigen","Abbrechen");
    }
    else SendClientMessage(playerid,Color_DarkRed,"Du bist nicht in der Nähe eines Bankautomaten!");
    break;
    }
    return 1;
    }



    Außerdem hier das Enum:
    #define MAX_BANK 100
    enum bankautomat_info
    {
    Float:bank_x,
    Float:bank_y,
    Float:bank_z,
    bank_id
    }
    new BankInfo[MAX_BANK][bankautomat_info];



    Das Problem: Er gibt mir aus, dass er nicht an dem Punkt ist. Also die Fehlermeldung von oben.
    Was soll ich machen?


    //Edit: Weiß denn keiner weiter??


    Mfg Maksimo007

    Hey,
    ich bräuchte Hilfe beim Tanken Befehl. Habe schon einen erstellt, bloß scheitert er an der Abfrage, ob der Spieler an einer Tankstelle ist.
    Hier der Code:
    ocmd:tanken(playerid,params[])
    {
    #pragma unused params
    new vehid = GetPlayerVehicleID(playerid);
    for(new biz=1;biz<MAX_BIZ;biz++)
    {
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    if(IsPlayerInRangeOfPoint(playerid,40,BizInfo[biz][biz_x],BizInfo[biz][biz_y],BizInfo[biz][biz_z]))
    {
    if(TanktGerade[vehid])
    {
    if(Motor[vehid] == true)
    {
    new ZuTanken = 100-Tank[vehid];
    new preis = ZuTanken * BENZINPREIS;
    if(GetPlayerMoney(playerid)-preis <0)return SendClientMessage(playerid,Color_DarkRed,"Du hast nicht genügend Geld dabei!");
    GivePlayerMoney(playerid,-preis);
    SendClientMessage(playerid,Color_Green,"Tankvorgang wurde gestartet! Bitte warten...");
    SetCameraBehindPlayer(playerid);
    TogglePlayerControllable(playerid,0);
    TanktGerade[vehid] = true;
    tanktimer[playerid] = SetTimerEx("Auftanken",500,true,"i",playerid);
    }
    else SendClientMessage(playerid,Color_DarkRed,"Schalten den Motor bitte vor dem Tanken aus!");
    break;
    }
    else SendClientMessage(playerid,Color_DarkRed,"Du tankst doch schon!");
    break;
    }
    else SendClientMessage(playerid,Color_DarkRed,"Du bist nicht in der Nähe einer Tankstelle!");
    break;
    }
    else SendClientMessage(playerid,Color_DarkRed,"Du musst der Fahrer sein!");
    break;
    }
    return 1;
    }



    Ich hoffe, ihr könnt mir helfen!


    Mfg Maksimo007 :)

    Hey,
    ich habe ein Problem mit meinem Bizsystem (/enter). Hier habe ich den Code:
    ocmd:enter(playerid,params[])
    {
    for(new haus=1;haus<MAX_HAUS;haus++)
    {
    for(new biz=1;biz<MAX_BIZ;biz++)
    {
    if(IsPlayerInRangeOfPoint(playerid,5,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z]))
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof name);
    if(strcmp(HausInfo[haus][haus_besitzer],name,false) == 0)
    {
    new innenraum = HausInfo[haus][haus_innenraum];
    SetPlayerPos(playerid,HausInnenraum[innenraum][innen_x],HausInnenraum[innenraum][innen_y],HausInnenraum[innenraum][innen_z]);
    SetPlayerInterior(playerid,HausInnenraum[innenraum][innen_interior]);
    inHaus[playerid] = haus;
    }
    else SendClientMessage(playerid,Color_DarkRed,"Du bist nicht der Besitzer!");
    break;
    }
    else if(IsPlayerInRangeOfPoint(playerid,5,BizInfo[biz][biz_x],BizInfo[biz][biz_y],BizInfo[biz][biz_z]))
    {
    SendClientMessage(playerid,Color_Red,"Hey-Ho!");
    new innenraum = BizInfo[biz][biz_innenraum];
    SendClientMessage(playerid,Color_LightBlue,"Hey-Ho!");
    SetPlayerPos(playerid,BizInnenraum[innenraum][innen_x],BizInnenraum[innenraum][innen_y],BizInnenraum[innenraum][innen_z]);
    SendClientMessage(playerid,Color_Yellow,"Hey-Ho!");
    SetPlayerInterior(playerid,BizInnenraum[innenraum][innen_interior]);
    SendClientMessage(playerid,Color_Blue,"Hey-Ho!");
    inBiz[playerid] = biz;
    }
    }
    }
    return 1;
    }


    Oben ist das mit Haus, und unten das Bizsystem. Er kommt bis zur 2. SendClientMessage. Also die in Hell-Blau. Es muss also an der SetPlayerPos liegen.


    Hier die anderen Codes:
    new BizInnenraum[][innenraum_info] =
    {
    {-25.884498,-185.868988,1003.546875,17}
    };


    enum biz_info
    {
    Float:biz_x,
    Float:biz_y,
    Float:biz_z,
    biz_name[32],
    biz_besitzer[32],
    biz_preis,
    Text3D:biz_3DText,
    biz_innenraum,
    biz_id
    }
    new BizInfo[MAX_BIZ][biz_info];



    Ich hoffe, ihr könnt mir helfen.


    Mfg Maksimo007 :)

    Hey,
    ich habe mir ja ein Haussystem gescripted und bin nun beim Bussiness-System. Um ein Biz zu betreten, schreibt man /enter, wie bei einem Haus. Nun habe ich beim Haus ja eine For-Schleife und danach was mit if(IsPlayerInRangeOfPoint....) (betreten). Wie binde ich hier nun ein Bussiness-System ein? Könnte ja auch einfach mit else if arbeiten, bloß dann funkioniert das mit der for-Schleife ja nicht, da sie nur die Werte von den Hausdateien und nicht von den Bussiness-Dateien nimmt. Also meine Frage: Wie binde ich eine 2. For-Schleife in das Kommando mit ein?


    Mein Code:
    ocmd:enter(playerid,params[])
    {
    for(new haus=1;haus<MAX_HAUS;haus++)
    {
    if(IsPlayerInRangeOfPoint(playerid,5,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z]))
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof name);
    if(strcmp(HausInfo[haus][haus_besitzer],name,false) == 0)
    {
    new innenraum = HausInfo[haus][haus_innenraum];
    SetPlayerPos(playerid,HausInnenraum[innenraum][innen_x],HausInnenraum[innenraum][innen_y],HausInnenraum[innenraum][innen_z]);
    SetPlayerInterior(playerid,HausInnenraum[innenraum][innen_interior]);
    inHaus[playerid] = haus;
    }
    else SendClientMessage(playerid,Color_DarkRed,"Du bist nicht der Besitzer!");
    }
    }
    return 1;
    }
    Hier will ich das ganze nun mit einem Biz machen, d.h. eine neue For-Schleife mit Biz statt Haus und if(IsPlayerInRangeOfPoint) mit den jeweiligen Koordinaten von den bizs. Wie mache ich das?


    Mfg Maksimo007

    Hey, ich bräuchte Hilfe bei meinem Zeitensystem.
    Hier ist ein kleiner Ausschnitt:
    forward ZeitTimer();
    public ZeitTimer()
    {
    new Zeit, Stunde;
    if(gettime(Stunde) == 1)
    {
    Zeit = 1;
    }
    else if(gettime(Stunde) == 2)
    {
    Zeit = 2;
    }
    else if(gettime(Stunde) == 3)
    {
    Zeit = 3;
    }
    else if(gettime(Stunde) == 4)
    {
    Zeit = 4;
    }
    return SetWorldTime(Zeit);



    Den Timer habe ich unter OnGameModeInit.


    So habe ich es mit jeder Zeit gemacht, nur ändert sich sie sich nicht. Was soll ich machen?
    Es soll an den If-Abfragen scheitern, aber was ist da falsch???


    Mfg Maksimo007

    Dann kommen noch mehr Fehler xD
    The_Shadow007.pwn(1872) : warning 215: expression has no effect
    The_Shadow007.pwn(1872) : error 001: expected token: ";", but found "-label-"
    The_Shadow007.pwn(1872) : warning 221: label name "Text3D" shadows tag name
    The_Shadow007.pwn(1872) : error 029: invalid expression, assumed zero
    The_Shadow007.pwn(1872) : warning 215: expression has no effect
    The_Shadow007.pwn(1872) : error 001: expected token: ";", but found "]"
    The_Shadow007.pwn(1872) : fatal error 107: too many error messages on one line


    Hatte das eig. auch immer ohne 3DText:


    //Edit: Habs gelöst.

    Hey,
    habe ein Problem mit dem 3DTextLabel:
    BizInfo[BizID][biz_3DText] = Create3DTextLabel(BizInfo[BizID][biz_name],Color_Red,BizInfo[BizID][biz_x],BizInfo[BizID][biz_y],BizInfo[BizID][biz_z],80,0);


    Habe dies erstellt, nun kommt aber der Fehler:
    "Tag mismatch", was ist daran falsch?


    Mfg Maksimo007

    Hey,
    ich würde gerne bei der Skinauswahl haben, dass, wenn ein Spieler neu ist, er einen Skin auswählen muss, sonst nicht. Dies habe ich zurzeit so gemacht, dass er beim connect von der Datei die Variable "Skin" ausliest. Falls diese 0 ist (niemand darf auch Pejay sein), leitet er zur Skinauswahl weiter. Dies funktioniert zwar, aber nicht, wenn ein Restart war. Manchmal schon, manchmal nicht.
    Wie kann ich das noch machen?


    Mfg Maksimo007

    Hey,
    wenn ein Spieler ein Pickup betritt (Haussystem) öffnet sich ein TextDraw und beim verlassen schließt es sich aber nicht mehr.
    Hier der Code:
    public OnPlayerPickUpPickup(playerid, pickupid)
    { for(new i=1;i<MAX_HAUS;i++)
    {
    if(HausInfo[i][haus_pickup] == pickupid)
    {
    TextDrawShowForPlayer(playerid,HausInfoText[i]);
    }
    else
    {
    TextDrawHideForPlayer(playerid,HausInfoText[i]);
    }
    }
    return 1;
    }


    Ich hoffe, ihr könnt mir helfen.


    Mfg Maksimo007