Pickup Labels Neuladen lassen.

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 Abend Breadfish


    Ich habe weiß nicht wie ich das anfangen soll das meine Firmengeländepickups nach dem Kauf/Verkauf zurück gesetzt werden.
    Desweiteren möchte ich auch das man den Namen des Firmengeländes selbst eintippen kann über ein Textdraw aber ich weiß nicht so ganz wie das gehen soll.


    Mein Code sieht bis jetzt dank Jeffry so aus:


    forward LadeFirma();
    forward LoadFirmaDaten();


    enum Firmengeleande
    {
    Float:F_MinX,
    Float:F_MinY,
    Float:F_MaxX,
    Float:F_MaxY,
    Float:F_KaufX,
    Float:F_KaufY,
    Float:F_KaufZ,
    F_Price,
    F_Object,
    Text3D:F_Label,
    F_Besitzer[MAX_PLAYER_NAME]
    }


    new Firmengebiete[][Firmengeleande] =
    {
    {647.8892,-1384.1666,786.2288,-1329.5417,777.5681,-1379.9337,13.6566,5},
    {930.1262,-1308.1982,807.7534,-1158.5909,912.7548,-1235.4043,17.2109,5}
    };



    public OnGameModeInit()
    {
    AddPlayerClass(115,329.0244,-1513.3033,36.0391,225.8344,0,0,0,0,0,0); // spawn
    SetGameModeText("Reallife Version 0.1.4");
    DisableInteriorEnterExits();
    EnableStuntBonusForAll(0);
    ManualVehicleEngineAndLights();
    SendRconCommand("mapname <Las Santos>");
    //mysql verbindung:
    dbhandle = mysql_connect(db_host,db_user,db_db,db_pass);
    print("Mysql wurde verbunden!");
    mysql_log(LOG_ERROR | LOG_WARNING | LOG_DEBUG);
    for(new i;i<sizeof(Firmengebiete);i++)
    {
    CreatePickup(1239,1,777.0361,-1383.3553,13.7019);
    Create3DTextLabel("Firmengelände Kaufen ja nein?",grün,777.0361,-1383.3553,13.7019,10,0,1);
    CreatePickup(1239,1,912.7548,-1235.4043,17.2109);
    Create3DTextLabel("Firmengelände Kaufen ja nein?",grün,912.7548,-1235.4043,17.2109,10,0,1);
    return 1;
    }
    LadeFirma();
    return 1;
    }


    public LadeFirma()
    {
    new query[56];
    format(query, sizeof(query),"SELECT * FROM firma"); // *firma* musst du anpassen wie du deine Datenbankname benannt hast
    mysql_function_query(dbhandle, query, false, "LoadFirmaDaten", "");
    return 1;
    }
    public LoadFirmaDaten()
    {
    new num_fields, num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows > 0)
    {
    for(new i = 0; i<num_rows; i++)
    {
    Firmengebiete = cache_get_field_content_float(0,"Firmengebiete[i][Firmengeleande]", dbhandle); //Falls du dbhandle nutzt lassen ansonsten anpassen!
    /*
    und so musst du die weiteren Sachen laden, so sollte eigentlich ein LadeSystem aussehen!
    Kannst aber von mir aus auch das auf Breadfish Teilen und Jeffry fragen
    ob du das so nehmen kannst ;)

    Ich schreibe so meine Lade Systeme und ich glaub das ist auch ganz einfach ;)
    */
    }
    }
    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    if(IsPlayerNPC(playerid)) return 1;
    new nachricht[128];
    format(nachricht,sizeof(nachricht),"Du bist mit der ID %i verbunden.",playerid);
    SendClientMessage(playerid,rot,nachricht);
    //Login/Register:
    new name[MAX_PLAYER_NAME],query[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(query,sizeof(query),"SELECT id FROM user WHERE username='%s' ",name);
    mysql_function_query(dbhandle,query,true,"OnUserCheck","i",playerid);
    SendClientMessage(playerid,grün,"Willkommen auf Reallife Version 0.1.4! Wir wünschen euch ein angenehmen Spiel spaß bei uns!");
    //textdraws anzeigen:
    TextDrawShowForPlayer(playerid,Text:uhrzeitLabel);
    TextDrawShowForPlayer(playerid, Jahr);
    SetPlayerColor(playerid,weiß);
    sInfo[playerid][level]=1;
    SetPlayerScore(playerid,sInfo[playerid][level]);
    sInfo[playerid][firma]=-1;
    return 1;
    }


    savePlayer(playerid)
    {
    if(sInfo[playerid][eingeloggt]==0)return 1;
    //Speichern level,money
    new query[256];
    format(query,sizeof(query),"UPDATE user SET level='%i',money='%i',alevel='%i',fraktion='%i',rang='%i',spawnchange='%i',firma='%i' WHERE id='%i'",sInfo[playerid][level],GetPlayerMoney(playerid),sInfo[playerid][alevel],sInfo[playerid][fraktion],sInfo[playerid][rang],sInfo[playerid][spawnchange],sInfo[playerid][firma],sInfo[playerid][db_id]);
    mysql_function_query(dbhandle,query,false,"","");
    return 1;
    }
    resetPlayer(playerid)
    {
    for(new i=0; i<sizeof(sInfo[]); i++)
    {
    sInfo[playerid][playerInfo:i]=0;
    }
    return 1;
    }


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


    Befehl:
    ocmd:kaufefirmengelaende(playerid,params[])
    {
    if(sInfo[playerid][firma] != -1)return SendClientMessage(playerid,rot,"Fehler: Du Besitzt bereits eine Firma!");
    for(new i;i<sizeof(Firmengebiete);i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 4.0, Firmengebiete[i][F_KaufX], Firmengebiete[i][F_KaufY], Firmengebiete[i][F_KaufZ]))
    {
    if(strlen(Firmengebiete[i][F_Besitzer]) > 2) return SendClientMessage(playerid, 0xFF0000FF, "Error: Diese Firma gehört bereits jemandem.");
    GetPlayerName(playerid, Firmengebiete[i][F_Besitzer], MAX_PLAYER_NAME);
    //Hier das Label aktualisieren.
    sInfo[playerid][firma]= i;
    GivePlayerMoney(playerid,-5000000);
    return SendClientMessage(playerid, 0xFFFFFFFF, "Gekauft.");
    }
    }
    return SendClientMessage(playerid, 0xFF0000FF, "Du bist nich am Kaufpunkt des Firmengelhaändes!");
    }


    public OnPasswordResponse(playerid)
    {
    new num_rows,num_fields;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==1)
    {
    //passwort Richtig
    sInfo[playerid][eingeloggt] = 1;
    sInfo[playerid][level] = cache_get_field_content_int(0,"level",dbhandle);
    SetPlayerScore(playerid,sInfo[playerid][level]);
    sInfo[playerid][db_id] = cache_get_field_content_int(0,"id",dbhandle);
    SetPlayerMoney(playerid,cache_get_field_content_int(0,"money",dbhandle));
    sInfo[playerid][alevel] = cache_get_field_content_int(0,"alevel",dbhandle);
    sInfo[playerid][fraktion] = cache_get_field_content_int(0,"fraktion",dbhandle);
    sInfo[playerid][rang] = cache_get_field_content_int(0,"rang",dbhandle);
    sInfo[playerid][spawnchange] = cache_get_field_content_int(0,"spawnchange",dbhandle);
    sInfo[playerid][firma] =cache_get_field_content_int(0,"firma",dbhandle);
    SetPlayerScore(playerid,sInfo[playerid][level]);
    loadPlayerCars(playerid);


    }
    else
    {
    //Passwort Falsch
    SendClientMessage(playerid,grün,"Du hast dein Passwort falsch eingetippt. Versuche es nochmal!");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Gibt bitte dein Passwort ein:","Anmelden","Abbrechen");
    }
    return 1;
    }


    if(dialogid==DIALOG_LOGIN)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[256],passwort[35];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>0)
    {
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"SELECT * FROM user WHERE username='%s' AND passwort=MD5('%s')",name,passwort);
    mysql_function_query(dbhandle,query,true,"OnPasswordResponse","i",playerid);
    }
    else
    {
    //Keine Eingabe
    SendClientMessage(playerid,grün,"Gibt bitte dein Passwort ein.");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Gibt bitte dein Passwort ein:","Anmelden","Abbrechen");
    }
    }
    else
    {
    Kick(playerid);
    }
    }
    if(dialogid==DIALOG_REGISTER)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[256],passwort[35];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>5)
    {
    //Registrierungsfunktion
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"INSERT INTO user (username, passwort, level, firma) VALUES ('%s',MD5('%s'), '1', '-1')",name,passwort);
    mysql_function_query(dbhandle,query,false,"","");
    sInfo[playerid][level]=1;
    SetPlayerScore(playerid,sInfo[playerid][level]);
    sInfo[playerid][firma]= -1;
    }
    else
    {
    //Kleiner als 4 Zeichen
    SendClientMessage(playerid,helblau,"Dein Passwort muss mindestens 6 Zeichen lang sein.");
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Account Erstellung","Gebe bitte nun dein gewünschtes Passwort ein!","Erstellen","Abbrechen");
    }
    }
    else
    {
    Kick(playerid);
    }
    }


    Wenn ich was vergessen haben sollte Jeffry bitte melden.

  • Wieso werden bei dir pro Firmengelände 2 Pickups und 2 3d texte erstellt? An der selben Stelle. Ich versteh nicht ganz was du da machen willst.
    Du kannst die ids der pickups beim erstllen festhalten, damit du sie später löschen und neu erstellen kannst.
    Firmengebiete[i][f_pickup] = CreatePickup...
    das musst du natürlich auch in dein enum packen. Dann kannst du es löschen und neu erstellen lassen.


    Ich bin grad am Handy deswegen kenn ich die Befehle grade nicht ausm Kopf.. musst du suchen, oder nochmal nachfragen und ich helf dir heute Abend weiter.


    Zum namen selbst eintippen..


    ocmd:firmenname(playerid, params[])
    {
    new fname[64];
    If(sscanf(params,"s[64]",fname)) return....

    //firmengelände herausfinden


    Update3DTextLabelText(Firmengebiete[i][f_Label], RED, fname);


    Du benutzt dann in dem Fall '/firmenname meineFirma'..


    Ich weiss es ist alles durcheinander. Wenn du Probleme haben solltest, helf ich dir später gerne weiter wenn ich am Pc bin.

  • Beitrag von Kasakow ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.