Beiträge von SebMcpepp

    SAMP war einfach die geilste Zeit damals. Ich spiele jedoch kein GTA SA mehr, eher GTA 5. Würde aber alles geben dass es nochmal wie damals wird, aber das wird leider nie wieder was. Ich überlege seit einigen Wochen einen GTA V Server zu starten, jedoch mehr im Stil von SAMP. Mir gefallen 98% der Server nicht die es gibt. Das Feeling ist einfach nich da. Vielleicht fang ich damit mal an, in 2 Wochen habe ich ein wichtiges Projekt beendet und habe wieder Zeit für spaßige Sachen.

    sogar noch mit /whisper haha ^^. Und dort wurde auch der /me benutzt.

    Auf Next-Samp.de gibts noch /whisper und /me wird auch noch benutzt :D Außerdem ist Next-Samp, welches damals noch SA-Reallife.org war von 2008 und war damals noch ein Godfatherscript. Heute sind maximal noch 2-3% vom alten Godfather übrig, trotzdem aber einfach mit /motor usw. Alles in allem ein sehr gutes Script! Und Rocky Balboa muss ich auch zustimmen, gute Server haben kaum User und Server wo man an nem Tag 100te Tausend $ machen kann usw. haben sau viele User. Meiner Meinung nach machen solche Server überhaupt keinen Spaß, da sie keinen Spielanreiz bieten wenn man sonst wie schnell das dicke Geld hat usw. Da haben die erarbeiteten Sachen garkeinen Wert.


    Mit freundlichen Gruß^^

    Einfach das beste Script was ich kenne. Spiele schon seit Anfang 2009 dort und habe keine Minute bereut. Mit ein paar mehr Usern wäre der Server noch viel besser. Denn wenn man ständig verschiedene Leute trifft und oft was erlebt macht es einfach mehr Spaß, vielleicht bekommen wir den Server mal wieder etwas voller, derzeit kommen wir an die 40-50 Leute ran, wäre schön wenn es mehr werden. :) Das Einnahmesystem für Gangs ist meiner Meinung nach einzigartig und das Wirtschaftssystem ist extrem ausgeklügelt. Viele kennen bestimmt diese Server wo man innerhalb eines Tages 100k kriegen kann oder wo die Preise extrem hoch für alles Mögliche sind oder ähnliches. Das ist hier zum Glück nicht so. Hier muss man noch etwas für sein Geld tun, wodurch es sich meiner Meinung nach viel mehr lohnt zu arbeiten usw. Derzeit suchen auch viele Fraktionen neue Mitglieder.


    Ich kann echt nur sagen: Kommt rauf es wird sich lohnen. :)

    In deinem Haus query hast du ID groß geschrieben und in deinem user query klein.

    ehm ist ja wohl klar warum ich das mache?:

    [list=1][*]enum pDataEnum[*]
    {[*] p_id,[*] bool:pLoggedIn,
    [*] pName[MAX_PLAYER_NAME],
    [*] pLevel,
    [*] pAdmin,
    [*] pMoney,
    [*] pBankmoney,
    [*] pKills,
    [*] pDeaths,
    [*] pTeam,
    [*] pFrak,
    [*] pMember,
    [*] pLeader,
    [*] pRang,
    [*] pSkin,
    [*] pHausID
    [*]}[*]
    [*]#define MAX_PLAYER_HAUS 50
    [*]enum Hausenum
    [*]{
    [*] ID,
    [*] IntID,
    [*] MinLevel,
    [*] Preis,
    [*] Besitzer,
    [*] Float:H_X,
    [*] Float:H_Y,
    [*] Float:H_Z,
    [*] Float:H_R,
    [*] Stadt,
    [*] Geld
    [*]}
    [/list]



    Du speicherst die id vom enum in der ersten query ab und nicht die hausid

    Ja ich will doch die HausID auch erst im query2 abspeichern?^^


    Nochjemand vielleicht ne Lösung?


    Mit freundlichem Gruß,
    SebMcpepp




    //PUSH

    Ehm, würde das auf 5 stehen würde das sehr wohl alle Häuser durchgehen da ich nur 2 erstellt habe. Warum sollte ich das umbennen? Das wird ganz normal oben im Script definiert, weiß nicht was du für ein Problem mit meiner Max-Häuserabfrage hast^^ Ich weiß auch nicht wo du siehst dass ich id einmal klein und einmal groß schreibe.


    Bitte kann mir jemand helfen


    hier sollen die Daten geschrieben werden.
    Häuser sind oben per '#define MAX_PLAYER_HAUS 50' definiert


    Hoffe irgendwer könnt mir noch nen Denkanstoß oder ähnliches geben.

    und der Hauskäufer bekommt HausID 1 eingetragen

    Bitte sorgfältiger lesen.


    //edit:


    Habe mal etwas geändert, nun wird beim Spieler die HausID auf 19 gestellt anstatt auf 0. Ich habe nur ein Haus in meiner Tabelle deshalb müsste HausID ja 0 sein. Hier die Änderung


    //EDIT2:


    Habe noch etwas geändert, nun wird die ID vom Account richtig gespeichert in der Tabelle, aber die HausID wird nicht in der Spalte vom Spieler geändert:

    if(dialogid == DIALOG_HAUSKAUF_BARBESTAETIGEN)
    {
    if(response)
    {
    for(new i=0; i<MAX_PLAYER_HAUS; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,2,Hauser[i][H_X],Hauser[i][H_Y],Hauser[i][H_Z]))
    {
    if(PlayerInfo[playerid][pHausID] == -1)
    {
    new str[128];
    new query[128],query2[128];
    format(query, sizeof(query), "UPDATE Hauser SET Besitzer = '%d' WHERE ID = '%d'",PlayerInfo[playerid][p_id],i);
    mysql_tquery(handle,query);
    format(query2, sizeof(query2), "UPDATE users SET hausid = '%d' WHERE id = '%d'",Hauser[i][ID],PlayerInfo[playerid][p_id]);
    mysql_tquery(handle,query2);
    PlayerPlaySound(playerid,1062,Hauser[i][H_X],Hauser[i][H_Y],Hauser[i][H_Z]);
    GameTextForPlayer(playerid,"~g~Glückwunsch!~w~Haus gekauft.",2000,3);
    format(str,sizeof(str),"Ihnen wurden %d€ Bargeld abgezogen.",Hauser[i][Preis]);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,str);
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Sie sind bereits Eigentümer eines Hauses.");
    }
    }
    }
    }
    else
    {
    //NIX
    }
    return 1;
    }


    Mfg,
    SebMcpepp

    Hallo,


    wenn ich /hauskaufen wird in die Tabelle der Häuser der Hausbesitzer des Hauses nicht auf die KontoID vom User gesetzt und der Hauskäufer bekommt HausID 1 eingetragen ob wohl die ID des gekauften Hauses 0 ist. Hier mein Befehl:

    dcmd_hauskaufen(playerid,params[])
    {
    #pragma unused params
    new string[256];
    for(new i=0; i<MAX_PLAYER_HAUS; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,2,Hauser[i][H_X],Hauser[i][H_Y],Hauser[i][H_Z]))
    {//{FF0000} = ROT
    format(string,sizeof(string),"Hallo und vielen Dank für Ihr Interesse!\nDas Mindeslevel beläuft sich auf %d.\nDas Haus kostet %d€\nDrücken Sie Fortfahren um zur Auswahl der Zahlungsart zu kommen.\nDrücken Sie Abbrechen um abzubrechen.",Hauser[i][MinLevel],Hauser[i][Preis]);
    ShowPlayerDialog(playerid,DIALOG_HAUSKAUF,DIALOG_STYLE_MSGBOX,"Hauskauf",string,"Fortfahren","Abbrechen");
    }
    else
    {
    //SPAM
    }
    }
    return 1;
    }

    Dann werden ein paar Dialoge durchgenommen und nach dem letzten Dialog soll er dann die Aktionen ausführen:

    if(dialogid == DIALOG_HAUSKAUF_BARBESTAETIGEN)
    {
    if(response)
    {
    for(new i=0; i<MAX_PLAYER_HAUS; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,2,Hauser[i][H_X],Hauser[i][H_Y],Hauser[i][H_Z]))
    {
    if(PlayerInfo[playerid][pHausID] == -1)
    {
    new str[128];
    PlayerInfo[playerid][pMoney] -= Hauser[i][Preis];
    Hauser[i][Besitzer] = PlayerInfo[playerid][p_id];
    PlayerInfo[playerid][pHausID] = Hauser[i][Besitzer];
    Hauser[i][ID] = PlayerInfo[playerid][pHausID];
    PlayerPlaySound(playerid,1062,Hauser[i][H_X],Hauser[i][H_Y],Hauser[i][H_Z]);
    GameTextForPlayer(playerid,"~g~Glückwunsch!~w~Haus gekauft.",5,3);
    format(str,sizeof(str),"Ihnen wurden %d€ Bargeld abgezogen.",Hauser[i][Preis]);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,str);
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Sie sind bereits Eigentümer eines Hauses.");
    }
    }
    }
    }
    else
    {
    //NIX
    }
    return 1;
    }


    Hoffe mir kann jemand helfen, mit freundlichem Gruß,
    SebMcpepp

    Okey habe es nun so, funktioniert aber immernoch nicht:

    if(strcmp("/magnet", cmdtext, true, 10) == 0)
    {
    new bool:aktiv[MAX_VEHICLES]=false;
    new vid = GetPlayerVehicleID(playerid);
    if(PlayerInfo[playerid][pFrak] == 12)
    {
    if(GetVehicleModel(vid) == 417)
    {
    if(aktiv[vid] == false)
    {
    RopeZPos[vid] = 1.000;
    RopeObject[vid] = CreateObject(19087, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000);
    MagnetObject[vid] = CreateObject(3053, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000);
    AttachObjectToVehicle(RopeObject[vid], vid, 0.0000, 0.0000, RopeZPos[vid], 0.0000, 0.0000, 0.0000);
    AttachObjectToObject(MagnetObject[vid], RopeObject[vid], 0.0000, 0.0000, -2.3000, 0.0000, 0.0000, 0.0000);
    aktiv[vid] = true;
    }
    else if(aktiv[vid] == true)
    {
    KillTimer(AttachVehicleTimer[vid]);
    LeviathanCarryingVehicle[vid] = 0;
    DestroyObject(RopeObject[vid]);
    DestroyObject(MagnetObject[vid]);
    aktiv[vid] = false;
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Sie müssen in einem Leviathan sitzen!");
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Sie sind nicht beim ADAC!");
    }
    return 1;
    }

    Moinmoin,


    habe nen Befehl gemacht der ein Objekt erstellt und ihn an ein Vehicle ranheftet. Das Objekt wird aber nicht erstellt. Alles ist definiert errors gibt es auch keine.
    Hier der Befehl:

    if(strcmp("/magnet", cmdtext, true, 10) == 0)
    {
    new bool:aktiv[MAX_VEHICLES]=false;
    new vid = GetPlayerVehicleID(playerid);
    if(PlayerInfo[playerid][pFrak] == 12)
    {
    if(aktiv[vid] == false)
    {
    if(GetVehicleModel(vid) == 417)
    {
    RopeZPos[vid] = 1.000;
    RopeObject[vid] = CreateObject(19087, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000);
    MagnetObject[vid] = CreateObject(3053, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000);
    AttachObjectToVehicle(RopeObject[vid], vid, 0.0000, 0.0000, RopeZPos[vid], 0.0000, 0.0000, 0.0000);
    AttachObjectToObject(MagnetObject[vid], RopeObject[vid], 0.0000, 0.0000, -2.3000, 0.0000, 0.0000, 0.0000);
    aktiv[vid] = true;
    }
    }
    if(aktiv[vid] == true)
    {
    if(GetVehicleModel(vid) == 417)
    {
    KillTimer(AttachVehicleTimer[vid]);
    LeviathanCarryingVehicle[vid] = 0;
    DestroyObject(RopeObject[vid]);
    DestroyObject(MagnetObject[vid]);
    aktiv[vid] = false;
    }
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Sie sind nicht beim ADAC!");
    }
    return 1;
    }


    Falls ihr noch andere Dinge braucht einfach sagen ^^ Hoffe mir kann jemand helfen. Mfg,
    SebMcpepp

    Wow da muss man ja wirklich genau schauen, vielen Dank für die Mühe. Jetzt wird wieder alles gespeichert wie es soll. Vielen Dank.


    Eine kleine Frage nebenbei noch:
    Würde das funktionieren wenn die FracCars geladen werden?:

    if(fracVehicle[id][e_modelID] >= 400 && fracVehicle[id][e_modelID] <= 611)
    {
    if(fracVehicle[id][e_gekauft] == 1)
    {
    //Nachdem das Fahrzeug geladen wurde, wird es erstellt.
    fracVehicle[id][e_vID] = CreateVehicle(fracVehicle[id][e_modelID], fracVehicle[id][e_x], fracVehicle[id][e_y], fracVehicle[id][e_z], fracVehicle[id][e_a], fracVehicle[id][e_color1], fracVehicle[id][e_color2], -1);
    SetVehicleHealth(fracVehicle[id][e_vID],fracVehicle[id][carheal]);
    }
    }
    else
    {
    //Falls eine nicht existierende Model-ID angegeben wurde, geben wir eine Information aus.
    printf("[Error] Model-ID %d existiert nicht (ID: %d).", fracVehicle[id][e_modelID], id);
    }
    }

    Ja hatte getestet ob es vielleicht daran liegt und dann vergessen wieder zu löschen.


    Also wenn ich in Fahrzeug erstelle schreibt er mir folgendes in die mysql_log Datei:


    Der /fferstellen Befehl sieht so aus:

    ocmd:fferstellen(playerid, params[])
    {
    //Zuerst fragen wir ab, ob wir noch Fahrzeuge erstellen können
    if(GetVehicleModel(MAX_VEHICLES-1) != 0) return SendClientMessage(playerid, 0xFF0000FF, "Es können keine weiteren Fahrzeuge erstellt werden, Limit (MAX_VEHICLES) erreicht.");



    //Wir deklarieren die benötigten temporären Variablen.
    new tmp[20], idx, model, fID, color1 = -1, color2 = -1;



    //Anschließend teilen wir mit strtok die eingegebenen Paramater auf und wandeln sie in eine Zahl um.
    //Falls etwas falsches eingegeben wurde, geben wir eine entsprechende Meldung zurück.
    tmp = strtok(params, idx);
    if(!strlen(tmp) || !IsNumeric(tmp)) return SendClientMessage(playerid, 0xFF0000FF, "Verwendung: /fferstellen [Model] [FraktionsID] [opt:Farbe1] [opt:Farbe2]");
    model = strval(tmp);
    //Eine solche Abfrage kann man auch für nachfolgende FraktionsID (fID) machen, falls gewünscht.
    if(model < 400 || model > 611) return SendClientMessage(playerid, 0xFF0000FF, "Error: Model ID existiert nicht.");
    tmp = strtok(params, idx);
    if(!strlen(tmp) || !IsNumeric(tmp)) return SendClientMessage(playerid, 0xFF0000FF, "Verwendung: /fferstellen [Model] [FraktionsID] [opt:Farbe1] [opt:Farbe2]");
    fID = strval(tmp);
    tmp = strtok(params, idx);
    if(strlen(tmp) && IsNumeric(tmp)) color1 = strval(tmp);
    tmp = strtok(params, idx);
    if(strlen(tmp) && IsNumeric(tmp)) color2 = strval(tmp);



    //Sind alle Parameter korrekt übergeben worden, dann suchen wir uns einen freien Index in den wir das Fraktions-Fahrzeug speichern können.
    for(new i=0; i<MAX_FRAC_VEHICLES; i++)
    {
    //Frei:
    if(fracVehicle[i][e_vID] == 0)
    {
    //Daten werden übergeben
    new Float:x, Float:y, Float:z, Float:a;
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid, a);
    fracVehicle[i][e_modelID] = model;
    fracVehicle[i][e_gekauft] = 1;
    fracVehicle[i][e_zerstoert] = 0;
    fracVehicle[i][e_x] = x;
    fracVehicle[i][e_y] = y;
    fracVehicle[i][e_z] = z;
    fracVehicle[i][e_a] = a;
    fracVehicle[i][carheal] = 1000;
    fracVehicle[i][e_color1] = color1;
    fracVehicle[i][e_color2] = color2;
    fracVehicle[i][e_fracID] = fID;



    //und anschließend in die Datenbank geschrieben.
    new query[512];
    format(query, sizeof(query), "INSERT INTO FracVehicles (ID, ModelID, Gekauft, Zerstoert, PosX, PosY, PosZ, PosA, CarHealth, Color1, Color2, FracID) VALUES ('%d', '%d', '%d, '%d', '%f', '%f', '%f', '%f', '%f', '%d', '%d', '%d')",
    i, fracVehicle[i][e_modelID], fracVehicle[i][e_gekauft], fracVehicle[i][e_zerstoert], fracVehicle[i][e_x], fracVehicle[i][e_y], fracVehicle[i][e_z], fracVehicle[i][e_a], fracVehicle[i][carheal], fracVehicle[i][e_color1], fracVehicle[i][e_color2], fracVehicle[i][e_fracID]);
    mysql_tquery(handle, query);



    //Zuletzt wird dann noch das Fahrzeug erstellt und der Spieler in das Fahrzeug gesetzt.
    fracVehicle[i][e_vID] = CreateVehicle(fracVehicle[i][e_modelID], fracVehicle[i][e_x], fracVehicle[i][e_y], fracVehicle[i][e_z], fracVehicle[i][e_a], fracVehicle[i][e_color1], fracVehicle[i][e_color2], -1);
    SetVehicleHealth(fracVehicle[i][e_vID],fracVehicle[i][carheal]);
    PutPlayerInVehicle(playerid, fracVehicle[i][e_vID], 0);
    return SendClientMessage(playerid, 0x00FF00FF, "Fahrzeug gespeichert.");
    }
    }
    return SendClientMessage(playerid, 0xFF0000FF, "Error: Limit für Fraktions-Fahrzeuge erreicht.");
    }

    Okey, habe den Debugmodus angeschaltet und daraufhin den Server gestartet. Dann erscheint folgendes in der mysql_log Datei:



    GEAENDERT steht da oben nur da ich meine Daten da raus entfernt habe. Wie man sieht startet er die Verbindung baut sich auf zeigt einen Error und lädt dann ganz normal die Sachen. Schlauer bin ich daraus noch nicht geworden :P

    Ah okey, dann weiß ich in Zukunft wie ich diese Fehler zu verstehen habe, vielen Dank.
    Ein Problem ist nun das mir beim Starten immernoch ein Error gezeigt wird welcher wie folgt aussieht:

    Code
    [20:34:15] [ERROR] CMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1

    Den kann ich mir nun wirklich nicht erklären. Und wüsste auch nicht wo ich da nach dem Fehler schauen müsste. Mfg

    Sorry vergessen, ich denke er meint etwas in diesem Abschnitt:



    CreateFVTable()
    {
    new query[512];
    format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `FracVehicles` (");
    format(query, sizeof(query), "%s`ID` int(11) NOT NULL PRIMARY KEY,", query);
    format(query, sizeof(query), "%s `ModelID` int(11) NOT NULL DEFAULT '0',", query);
    format(query, sizeof(query), "%s `Gekauft` int(11) NOT NULL DEFAULT '1',", query);
    format(query, sizeof(query), "%s `Zerstoert` int(11) NOT NULL DEFAULT '0',", query);
    format(query, sizeof(query), "%s `PosX` float NOT NULL DEFAULT '0',", query);
    format(query, sizeof(query), "%s `PosY` float NOT NULL DEFAULT '0',", query);
    format(query, sizeof(query), "%s `PosZ` float NOT NULL DEFAULT '0',", query);
    format(query, sizeof(query), "%s `PosA` float NOT NULL DEFAULT '0',", query);
    format(query, sizeof(query), "%s `CarHealth` float NOT NULL DEFALUT '1000',", query);
    format(query, sizeof(query), "%s `Color1` int(11) NOT NULL DEFAULT '0',", query);
    format(query, sizeof(query), "%s `Color2` int(11) NOT NULL DEFAULT '0',", query);
    format(query, sizeof(query), "%s `FracID` int(11) NOT NULL DEFAULT '-1',", query);
    format(query, sizeof(query), "%s) ENGINE=InnoDB DEFAULT CHARSET=latin1;", query);



    //handle = die Connection Handle ID die vor mysql_connect steht.
    mysql_tquery(handle, query);
    return 1;
    }

    Stimmt, danke für den Tipp. Ich habe das nun mal verbessert mit der Zertoert in Zerstoert aber er macht es immer noch nicht.


    Wenn ich den Server starte kommt diese Errorline:

    Code
    [20:15:54] [ERROR] CMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''1000',  `Color1` int(11) NOT NULL DEFAULT '0',  `Color2` int(11) NOT NULL DEFAU' at line 1

    Kannst du mir eventuell erklären was ich daraus an Informationen entnehmen kann?