Probleme mit dem Stock LoadTanke()

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 Morgen,


    Ich habe folgendes Problem:


    Ich bin grade dabei ein TankStellen System zuschreiben und habe will erst mal die Floats laden doch habe folgende Errors:


    Spoiler anzeigen
    C:\Users\Fabian\Desktop\Mein Samp Server\gamemodes\Selfmade.pwn(581) : error 035: argument type mismatch (argument 4)
    C:\Users\Fabian\Desktop\Mein Samp Server\gamemodes\Selfmade.pwn(582) : error 035: argument type mismatch (argument 4)
    C:\Users\Fabian\Desktop\Mein Samp Server\gamemodes\Selfmade.pwn(583) : error 035: argument type mismatch (argument 4)
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase

    Spoiler anzeigen
    3 Errors.


    Bei diesem Code:


    Spoiler anzeigen
    stock LoadTanke()
    {
    for(new i = 0; i < MAX_TANKSTELLEN; i++) {
    TankeInfo[i][tPosX] = mysql_GetFloat("tankstellen", "PosX", "id", i);//hir Zeile 581
    TankeInfo[i][tPosY] = mysql_GetFloat("tankstellen", "PosY", "id", i);//hir Zeile 582
    TankeInfo[i][tPosZ] = mysql_GetFloat("tankstellen", "PosZ", "id", i);//hir Zeile 583
    }
    return 1;
    }


    Ich bedanke mich für jede hilfe die ihr mit geben könnt.


    mfg. Fabi.StaR

    Mit freundlichen Grüßen,


    Fabi.StaR :love::saint:


  • mysql_GetFloat, ist von maddin auf den Spielernamen ausgelegt, wenn du das ändern willst, mache es so:


    stock Float:mysql_GetFloat2(Table[], Field[], Where[], Is)//Oberhalb von deiner Funktion (stock) schreiben
    {
    new query[128], Float:sqlfloat;
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%d'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_float(sqlfloat);
    mysql_free_result();
    return sqlfloat;
    }


    Dann halt mysql_GetFloat2 schreiben und des funktioniert ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Warum wird nix in die Datenbank Tabelle geschrieben hir der code:


    Spoiler anzeigen
    ocmd:createtanke(playerid, params[])
    {
    new Float:oldPosX,Float:oldPosY,Float:oldPosZ,query[128],gname[MAX_PLAYER_NAME],pr,level;
    GetPlayerPos(playerid,oldPosX,oldPosY,oldPosZ);
    GetPlayerName(playerid,gname,sizeof(gname));
    if(IsPlayerAdmin(playerid) || SpielerInfo[playerid][pAdmin] >= 6) {
    if(sscanf(params,"ud",pr,level))return SCM(playerid,Rot,"[BENUTZE]: /createtanke [KaufPReis] [kauflevel]");
    for(new i=0; i < MAX_TANKSTELLEN; i++) {
    pr = TankeInfo[i][tKaufPreis];
    level = TankeInfo[i][tKaufLevel];
    TankeInfo[i][tPosX] = oldPosX;
    TankeInfo[i][tPosY] = oldPosY;
    TankeInfo[i][tPosZ] = oldPosZ;
    TankeInfo[i][tOwned] = 0;
    format(query, 128, "INSERT INTO `tankstellen` (`Besitzer`,`Erpresser`,`Besetzt`,`KaufLevel`,`KaufPreis`,`PosY`, `PosX`, `PosZ`) VALUES ('s','s','%i', '%f', '%f', '%f')",
    TankeInfo[i][tOwned],TankeInfo[i][tExtortion],TankeInfo[i][tOwner],TankeInfo[i][tKaufLevel],TankeInfo[i][tKaufPreis],TankeInfo[i][tPosX],TankeInfo[i][tPosY], TankeInfo[i][tPosZ]);
    mysql_query(query);
    UpdateTank3DText(i);
    }
    }
    return 1;
    }

    Mit freundlichen Grüßen,


    Fabi.StaR :love::saint:


  • Warum wird nix in der Tabelle geupdatet hir der code:



    Spoiler anzeigen
    ocmd:buytanke(playerid, params[])
    {
    new gname[MAX_PLAYER_NAME],str1[128],query[258];
    GetPlayerName(playerid,gname,sizeof(gname));
    format(str1,128,"Diese Tankstelle wurde von %s gekauft",gname);
    for(new t=0; t<sizeof(TankeInfo); t++) {
    if(IsPlayerInRangeOfPoint(playerid,8.0,TankeInfo[t][tPosX],TankeInfo[t][tPosY],TankeInfo[t][tPosZ])) {
    if(TankeInfo[t][tOwned] == 0 && SpielerInfo[playerid][pTankKey] == 0) {
    if(GetPlayerScore(playerid) >= TankeInfo[t][tKaufLevel]) {
    if(GetPlayerMoney(playerid) >= TankeInfo[t][tKaufPreis]) {
    TankeInfo[t][tOwner] = gname;
    //TankeInfo[t][tExtortion] = str;
    TankeInfo[t][tMessage] = str1;
    TankeInfo[t][tOwned] = 1;
    GivePlayerMoney(playerid,-TankeInfo[t][tKaufPreis]);
    UpdateTank3DText(t);
    format(query, sizeof(query), "UPDATE `tankstellen` SET (`Besitzer`,`Erpresser`,`TankeText`) WHERE ('%s','%s','%s')", TankeInfo[t][tOwner],TankeInfo[t][tExtortion],TankeInfo[t][tMessage]);
    mysql_query(query);
    } else {
    new str[128];
    format(str,128,"[ERROR]: Du hast zuwenig Geld dabei du benötigst noch $%d.",TankeInfo[t][tKaufPreis]-GetPlayerMoney(playerid));
    SCM(playerid,Rot,str);
    }
    } else {
    new str[128];
    format(str,128,"[ERROR]: Dein Level mus %d sein!",TankeInfo[t][tKaufLevel]);
    SCM(playerid,Rot,str);
    }
    }
    }
    }
    return 1;
    }

    Mit freundlichen Grüßen,


    Fabi.StaR :love::saint:


  • format(query, sizeof(query), "UPDATE `tankstellen` SET (`Besitzer`,`Erpresser`,`TankeText`) WHERE ('%s','%s','%s')", TankeInfo[t][tOwner],TankeInfo[t][tExtortion],TankeInfo[t][tMessage]);


    Ja, kein wunder, weil dein SQL-Statement falsch ist ^^


    So muss das aussehen:


    format(query, sizeof(query), "UPDATE `tankstellen` SET `Besitzer`='%s',`Erpresser`='%s',`TankeText`='%s' WHERE `id`='%d'", TankeInfo[t][tOwner],TankeInfo[t][tExtortion],TankeInfo[t][tMessage],t);


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

    Einmal editiert, zuletzt von Kaliber ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Warum werden die Strings net geladen (Besitzer und Erpresser ...):



    hir der laden code:


    Spoiler anzeigen
    stock LoadTanke()
    {
    for(new i = 0; i < MAX_TANKSTELLEN; i++) {
    TankeInfo[i][tExtortion] = mysql_GetTankeString("tankstellen","Erpresser","ID",i);//hir die Zeile : 766
    TankeInfo[i][tOwner] = mysql_GetTankeString("tankstellen","Besitzer","ID",i);//hir die Zeile : 767
    TankeInfo[i][tMessage] = mysql_GetTankeString("tankstellen","TankeText","ID",i);//hir
    TankeInfo[i][tTankPreis] = mysql_GetTankeInt("tankstellen","TankPreis","ID",i);
    TankeInfo[i][tKaufLevel] = mysql_GetTankeInt("tankstellen","KaufLevel","ID",i);
    TankeInfo[i][tKaufPreis] = mysql_GetTankeInt("tankstellen","KaufPreis","ID",i);
    TankeInfo[i][tKasse] = mysql_GetTankeInt("tankstellen","Kasse","ID",i);
    TankeInfo[i][tOwned] = mysql_GetTankeInt("tankstellen","Besetzt","ID",i);
    TankeInfo[i][tPosX] = mysql_GetTankFloat("tankstellen","PosX","ID",i);
    TankeInfo[i][tPosY] = mysql_GetTankFloat("tankstellen","PosY","ID",i);
    TankeInfo[i][tPosZ] = mysql_GetTankFloat("tankstellen","PosZ","ID",i);
    if(TankeInfo[i][tOwned] == 0)
    {
    //format(tankestring, sizeof(tankestring), "%s\n Diese Tankstelle steht zum verkauf!\nPreis: $%d \nLevel: %d \nBenutze /buytanke um die Tankstelle zu kaufen",TankeInfo[h][tMessage],TankeInfo[h][tKaufPreis],TankeInfo[h][tKaufLevel]);
    format(tankestring, sizeof(tankestring), " Diese Tankstelle steht zum verkauf!\nPreis: $%d \nLevel: %d \nBenutze /buytanke um die Tankstelle zu kaufen",TankeInfo[i][tKaufPreis],TankeInfo[i][tKaufLevel]);
    text_tanke[i] = Create3DTextLabel(tankestring,0xFFFFFFAA,TankeInfo[i][tPosX], TankeInfo[i][tPosY], TankeInfo[i][tPosZ]+0.50,15,0,1);
    Update3DTextLabelText(text_tanke[i],0xFFFFFFAA,tankestring);
    AddStaticPickup(1239, 1, TankeInfo[i][tPosX], TankeInfo[i][tPosY], TankeInfo[i][tPosZ]+0.25,-1);
    pickups++;
    }
    if(TankeInfo[i][tOwned] == 1)
    {
    format(tankestring, sizeof(tankestring), "%s\nInhaber: %s\nTeilhaber: %s\nPreis pro Liter: $%d \nLevel: %d",TankeInfo[i][tMessage],TankeInfo[i][tOwner],TankeInfo[i][tExtortion],TankeInfo[i][tTankPreis],TankeInfo[i][tKaufLevel]);
    text_tanke[i] = Create3DTextLabel(tankestring,0xFFFFFFAA,TankeInfo[i][tPosX], TankeInfo[i][tPosY], TankeInfo[i][tPosZ]+0.50,15,0,1);
    Update3DTextLabelText(text_tanke[i],0xFFFFFFAA,tankestring);
    AddStaticPickup(1239, 1, TankeInfo[i][tPosX], TankeInfo[i][tPosY], TankeInfo[i][tPosZ]+0.25);
    pickups++;
    }
    }
    return 1;
    }


    Hir der Stock mysql_GetTankeString:


    Spoiler anzeigen
    stock mysql_GetTankeString(Table[], Field[], Where[], Is)
    {
    new query[128], Get[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%d'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(Get);
    mysql_free_result();
    return Get;
    }


    hir die errors:


    C:\Users\Fabian\Desktop\Mein Samp Server\gamemodes\Selfmade.pwn(766) : error 047: array sizes do not match, or destination array is too small
    C:\Users\Fabian\Desktop\Mein Samp Server\gamemodes\Selfmade.pwn(767) : error 047: array sizes do not match, or destination array is too small
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Errors.

    Mit freundlichen Grüßen,


    Fabi.StaR :love::saint:


  • Probier es mal so, für String Werte musst du ' benutzen (also einen einzelnen Strich), für Integer nicht:


    stock mysql_GetTankeString(Table[], Field[], Where[], Is)
    {
    new query[128], Get[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    format(query, 128, "SELECT `%s`FROM `%s` WHERE `%s`= %d", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(Get);
    mysql_free_result();
    return Get;
    }


    BlackLegend