Beiträge von Jeffry

    Aktualisiere deine Includes, bzw. den ganzen Server.
    Mit SA-MP 0.3z wurde der "bodypart" Parameter hinzugefügt, deine Includes sind noch von einer Version davor.


    Oder schreibe es so:
    public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid)

    Jeffry: kannst es gerne nutzen.


    Haha, Danke, aber dann müsste ich 5 Jahre Arbeit umschreiben, da tu ich mir nicht an, zudem dass mein Server sowieso nicht multilingual ist, sondern nur Englisch.
    Sonst hätte ich mir das schon lange gemacht. :D


    Übrigens, zu deinem System, ich hab den Code mal überflogen. Da der RAM bei 99% aller Server eigentlich keine Rolle mehr spielt (die haben alle 16GB oder mehr), wäre es besser die Daten beim Server-Start zu laden und über ein Array auszugeben, bzw. über Spieler-Variablen Dummies, auszugeben. Sonst kann es bei vielen Spielern möglicherweise zu Problemen kommen, wenn man andauernd die Datei ausliest, da SA-MP ja bekanntlich nur einen Kern unterstützt.
    Aber wie gesagt, für jemanden den auf der Suche nach sowas ist, ist es sicherlich sehr praktisch.



    Ich denke es ist ganz geschickt wenn ich hier gleich noch auf die MySQL Version verweise, dann haben wir hier beide Varianten:
    MySQL Plugin von BlueG R7 Stock aufrufen?

    stock ReturnPlayerID(l_PlayerName[]) //©Jeffry
    {
    new l_name[MAX_PLAYER_NAME];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(GetPlayerName(i, l_name, MAX_PLAYER_NAME))
    {
    if(!strcmp(l_name,l_PlayerName, true)) return i;
    }
    }
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(GetPlayerName(i, l_name, MAX_PLAYER_NAME))
    {
    if(strfind(l_name,l_PlayerName,true)!=-1) return i;
    }
    }
    return INVALID_PLAYER_ID;
    }


    Beispiel hier: http://forum.sa-mp.de/gta-mult…eschnipsel-53#post1833300

    Das liegt daran, dass du da einen String-Platzhalter hast (%s) und bei der Variante oben hast du einen Integer-Platzhalter (%d / %i).
    Für den String-Platzhalter kannst du "inputtext" nehmen, da das ja ein String ist. Für den Integer-Platzhalter musst du "strval(inputtext)", also den Integer-Wert des Strings nehmen, da du ja einen Integer übergeben musst.

    Naja, generell ist das was du gemacht hast schonmal ok.
    Allerdings würde ich das mit der Funktion im switch nicht so machen, außer es gibt dir die Fraktion die der Spieler hat zurück.
    Außerdem passt das playerid im switch nicht, sonst würde sich der Spieler selbst befördern.


    So ist's besser:
    switch(SpielerInfo[pID][Fraktion])
    {
    case 1: frakPass[pID][LSPD] = rangs;
    case 2: frakPass[pID][SFPD] = rangs;
    }
    return 1;


    Falls du es mit Leader/Member hast bei der Spieler Variable (SpielerInfo, kann bei dir ja anders heißen) schreibe es so:
    switch(GetPlayerFraktion(pID))
    {
    case 1: frakPass[pID][LSPD] = rangs;
    case 2: frakPass[pID][SFPD] = rangs;
    }
    return 1;
    und ganz unten im Gamemode:
    stock GetPlayerFraktion(playerid)
    {
    new frak = SpielerInfo[playerid][Member];
    if(frak == 0) frak = SpielerInfo[playerid][Leader];
    return frak;
    }

    [DT]Sniper:
    Jo, das ist auch eine gute Variante für Leute die gerne auf MySQL verzichten (wie ich :D).



    Pascal.:
    Du erstellst zwei Pickups in die gleiche Variable.
    Schreibe es so:


    Spoiler anzeigen
    UpdateHaus(id)
    {
    new string[250];
    if(hInfo[id][h_pickup] != -1)
    {
    DestroyPickup(hInfo[id][h_pickup]);
    }
    if(hInfo[id][h_ipickup] != -1)
    {
    DestroyPickup(hInfo[id][h_ipickup]);
    hInfo[id][h_ipickup] = -1;
    }
    if(hInfo[id][h_text] != Text3D:-1)
    {
    Delete3DTextLabel(hInfo[id][h_text]);
    }
    if(!strlen(hInfo[id][h_besitzer]))
    {
    printf("Kein Besitzer");
    format(string,250,"\
    {007AFF}Besitzer: {FEFEFE}-unbekannt-\n\
    {007AFF}Level: {FEFEFE}%d\n\
    {007AFF}Kaufpreis: {FEFEFE}%d$\n\
    {007AFF}Beschreibung: {FEFEFE}Dieses Haus steht zum Verkauf.\n\n\
    Benutze /buyhouse um das Haus zu kaufen",
    hInfo[id][h_level],hInfo[id][h_preis]);
    hInfo[id][h_pickup] = CreatePickup(1273, 1, hInfo[id][hx],hInfo[id][hy],hInfo[id][hz],-1);
    hInfo[id][h_text] = Create3DTextLabel(string,COLOR_ROT,hInfo[id][hx],hInfo[id][hy],hInfo[id][hz],10,0,1);
    hInfo[id][h_lock] = 1;
    hInfo[id][h_icon] = CreateDynamicMapIcon(hInfo[id][hx],hInfo[id][hy],hInfo[id][hz], 31, -1, -1, -1, -1, 70);
    }
    else
    {
    format(string,250,"\
    {007AFF}Besitzer: {FEFEFE}%s\n\
    {007AFF}Level: {FEFEFE}%d\n\n\
    Benutze die Taste 'ENTER' um in das Haus zu kommen.",
    hInfo[id][h_besitzer],hInfo[id][h_level]);
    hInfo[id][h_pickup] = CreatePickup(1272, 1, hInfo[id][hx],hInfo[id][hy],hInfo[id][hz],-1);
    hInfo[id][h_text] = Create3DTextLabel(string,COLOR_ROT,hInfo[id][hx],hInfo[id][hy],hInfo[id][hz],10,0,1);
    hInfo[id][h_ipickup] = CreatePickup(1318, 1, hInfo[id][i_x],hInfo[id][i_y],hInfo[id][i_z],-1);
    DestroyDynamicMapIcon(hInfo[id][h_icon]);
    }
    return 1;
    }


    Das "h_ipickup" deklarierst du im enum, und initialisierst es mit -1 gleich wie "h_pickup".

    Zitat

    [22:22:21] [ERROR] CMySQLQuery::Execute[] - (error #1054) Unknown column 'alevel' in 'field list'


    Die Spalte alevel existiert in der Tabelle nicht.
    Prüfe nach dem hinzufügen, ob du sonst alle Spalten hast, wenn nicht füge alle hinzu die fehlen.



    EDIT: @swagtiiger:
    Der Thread steht auf erledigt, ich nehme an es klappt somit alles.

    Er hat die Includes schon. ;)
    Hatte es zuerst auch nicht gesehen.


    Öffne die pawno.exe in /pawno/ und öffne dann deinen Gamemode über die öffnen Funktion, dann kompiliere den Code. Geht es dann?


    Du hast ja eigentlich alle Includes, daher sollte es gehen.

    Wenn der gleiche Fehler immer noch kommt im Log, dann hast du die Änderung nicht gemacht, oder den Code nicht konpliliert, oder du startest den falschen Server.


    Ansonsten poste nochmal deinen Code, mit dem du den Spieler speicherst, wie sieht der jetzt aus, und was sagt der Log?

    Was??


    Du sollst
    format(query,sizeof(query),"UPDATE user SET level='%i',money='%i',alevel='%i',fraktion='%i,rang='%i',spawnchange='%i' WHERE id='%i'",sInfo[playerid][level],
    Zu
    format(query,sizeof(query),"UPDATE user SET level='%i',money='%i',alevel='%i',fraktion='%i',rang='%i',spawnchange='%i' WHERE id='%i'",sInfo[playerid][level],
    Ändern.


    Laut Log hast du das nicht gemacht, denn da fehlt das Anführungszeichen noch (nach Fraktion).