Beiträge von John_McClain

    Mach es so


    stock mysql_GetInta(Tablae[], Field[], Where[], Is[]) { new query[128]; mysql_real_escape_string(Table, Table); mysql_real_escape_string(Field, Field); mysql_real_escape_string(Where, Where); mysql_real_escape_string(Is, Is); format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is); mysql_query(query); mysql_store_result(); new sqlint = mysql_fetch_int(); mysql_free_result(); return sqlint;mysql_reload }



    Aber dann ließt er die Felder doch nur wieder unter 1 Bedingung aus?!?
    Es hat geklappt, bi auf diesen blöden Warning


    Edit:
    Also das Warning kommt von meinem CarInfo am Anfang. Dann muss ich mir wohl was anderes überlegen.


    Ja Danke. Ich habe mit den MySQL Befehlen selbst noch nicht viel gemacht.


    Neues Problem:
    Ist zwar nur ein Warning aber ich möchte es weg haben:

    Code
    D:\Samp Server\gamemodes\Own.pwn(2532) : warning 213: tag mismatch


    Die Zeilen dazu sehen so aus:
    new car = 1;
    CarInfo[playerid][car][cTyp] = mysql_GetInt2("cars","typ","ownerid",SpielerInfo[playerid][paccID],"usercar","1");

    Hallo,


    ich habe mein User- und MySQLsystem nach dem von maddin gemacht. Nun möchte ich einen String aus einer Tabelle auslesen, in der zwei spalten einen bestimmten Wert haben sollen. Wie mach ich das? Mein stock zum Auslesen sieht so aus:
    stock mysql_GetInt(Table[], Field[], Where[], Is[])
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Is, Is);
    format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    new sqlint = mysql_fetch_int();
    mysql_free_result();
    return sqlint;
    }


    Danke im Vorraus für die Hilfe

    Hallo,


    Ich habe mal wieder 2 kleine Warnings und weiß nicht wie ich sie weg bekommen soll:

    Code
    D:\Samp Server\gamemodes\Own.pwn(1794) : warning 211: possibly unintended assignment
    D:\Samp Server\gamemodes\Own.pwn(1809) : warning 211: possibly unintended assignment
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    
    
    2 Warnings.


    Die STellen dazu habe ich kommentiert:
    ocmd:fkasse(playerid,params[])
    {
    if(SpielerInfo[playerid][pLeader] >= 1)
    {
    if(SpielerInfo[playerid][pLeader] >= 5)
    {
    new act[128],betrag,fkasse[128];
    if(sscanf(params,"si",act,betrag))return SendClientMessage(playerid,COLOR_WHITE,"INFO: Verwende /fkasse [einzahlen/auszahlen] [Betrag]");
    if(SpielerInfo[playerid][pLeader] == 5)
    {
    if(act = "einzahlen") //Warning 1
    {
    if(GetPlayerMoney(playerid) >= betrag)
    {
    new fkassealt,fkasseneu;
    GivePlayerMoney(playerid,- betrag);
    fkassealt = FrakInfo[Hitmen][fKasse];
    fkasseneu = fkassealt + betrag;
    FrakInfo[Hitmen][fKasse] = fkasseneu;
    }
    else
    {
    SendClientMessage(playerid,COLOR_YELLOW,"So viel Geld hast du nicht!");
    }
    }
    else if(act = "auszahlen")//Warning 2
    {
    SendClientMessage(playerid,RED,"auszahlen");
    }
    format(fkasse,sizeof(fkasse),"Fraktionskasse: %i $",FrakInfo[Hitmen][fKasse]);
    }
    Ich hätte die gerne weg, damit alles reibungslos läuft. Danke im Vorraus für die Hilfe.

    Hallo,


    ich habe mir einen eigenen /aduty Befehl gebaut, doch ich bekomme immer diese errors:


    Hier die Codes ich habe die Zeilen 1033 - 1035 kommentiert:
    ocmd:aduty(playerid,params[])
    {
    if(SpielerInfo[playerid][pAdmin] >= 1)
    {
    new aontext[128],aofftext[128],afehler[128],sname[128],rang[128];
    if(SpielerInfo[playerid][pAdmin] == 1)
    {
    format(rang,sizeof(rang),"Supporter");
    }
    if else(SpielerInfo[playerid][pAdmin] >= 2) //fehler
    { //
    format(rang,sizeof(rang),"Administrator"); //
    } //bis hier
    else
    {
    format(rang,sizeof(rang),"Team-Mitglied");
    }
    GetPlayerName(playerid,sname,sizeof(sname));
    format(aontext,sizeof(aontext),"%s hat sich als %s angemeldet.",sname,rang);
    format(aofftext,sizeof(aofftext),"%s hat sich alls %s abgemeldet.",sname,rang);
    if(GetPVarInt(playerid,"Aduty") == 0)
    {
    SetPVarInt(playerid,"Aduty",1);
    SetPlayerColor(playerid,COLOR_RED);
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    SendClientMessage(i,COLOR_RED,aontext);
    }
    }
    if else(GetPVarInt(playerid,"Aduty") == 1)
    {
    SetPVarInt(playerid,"Aduty",0);
    SetPlayerColor(playerid,COLOR_WHITE);
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    SendClientMessage(i,COLOR_RED,aofftext);
    }
    }
    else
    {
    print("Fehler bei /aduty");
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Dazu bist du nicht befugt!");
    }
    return 1;
    }


    Danke im Vorraus für die Hilfe. :thumbup:

    Hallo,


    ich habe beim compilen meines /pay befehls immer diese Warnings:



    Meistens sind die Warnings nicht schlimm und der Befehl funktioniert auch, aber ich hätte sie gerne trotzdem weg.
    Der Befehl:
    ocmd:pay(playerid,params[])
    {
    new pID,pIDname[128],betrag,geldpalt,geldpneu,geldpIDalt,geldpIDneu,stext[128],etext[128],atext[128],sname[128];
    if(sscanf(params, "ui", pID, betrag))return SendClientMessage(playerid,COLOR_WHITE,"INFO: Verwende /pay [ID] [Betrag]");
    {
    new FLOAT:X,FLOAT:Y,FLOAT:Z;
    GetPlayerPos(playerid,X,Y,Z);
    if(IsPlayerInRangeOfPoint(pID,7.0,X,Y,Z))
    {
    if(GetPlayerMoney(playerid) >= betrag)
    {
    geldpalt = GetPlayerMoney(playerid);
    geldpIDalt = GetPlayerMoney(pID);
    GetPlayerName(playerid,sname,sizeof(sname));
    GetPlayerName(pID,pIDname,sizeof(pIDname));
    format(stext,sizeof(stext),"Du nimmst %i $ aus deine Tasche und gibst sie %s",betrag,pIDname);
    format(etext,sizeof(etext),"%s nimmt gibt dir %i $",sname,betrag);
    format(atext,sizeof(atext),"%s nimmt Geld aus seiner Tasche und gibt es %s",sname,pIDname);
    SendClientMessage(playerid,COLOR_WHITE,stext);
    SendClientMessage(pID,COLOR_LIGHTBLUE,etext);
    GivePlayerMoney(playerid,-betrag);
    GivePlayerMoney(pID,betrag);
    geldpneu = geldpalt - betrag;
    geldpIDneu = geldpIDalt + betrag;
    SpielerInfo[playerid][pGeld] = geldpneu;
    SpielerInfo[pID][pGeld] = geldpIDneu;
    }
    else
    {
    SendClientMessage(playerid,COLOR_YELLOW,"So viel Geld hast du nicht!");
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_WHITE,"Der Spieler ist zu weit entfernt!");
    }
    }
    return 1;
    }

    Hallo,


    ich habe ein Problem mit meinem Bank Dialog:
    case DIALOG_BANKEIN:
    {
    new Kontoalt = SpielerInfo[playerid][pKonto];
    if(inputtext >= GetPlayerMoney(playerid) +1)
    {
    SendClientMessage(playerid,COLOR_YELLOW,"So viel Geld hast du nicht/Der Wert ist ungültig.");
    }
    else
    {
    new stext[128];
    GivePlayerMoney(playerid,- inputtext);
    SpielerInfo[playerid][pKonto] = Kontoalt + inputtext;
    SendClientMessage(playerid,COLOR_WHITE,"Die Überweisung war erfolgreich.");
    format(stext,sizeof(stext),"Dein neuer Kontostand beträgt: %i",SpielerInfo[playerid][pKonto]);
    SendClientMessage(playerid,COLOR_WHITE,stext);
    }
    }


    Wenn ich das ganze compiliere kommen folgende errors:

    Code
    D:\Samp Server\gamemodes\Own.pwn(1002) : error 033: array must be indexed (variable "inputtext")
    D:\Samp Server\gamemodes\Own.pwn(1009) : error 035: argument type mismatch (argument 2)
    D:\Samp Server\gamemodes\Own.pwn(1010) : error 033: array must be indexed (variable "inputtext")
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    
    
    3 Errors.


    Der Dialog von dem die Antwort kommen soll wird so erstellt:
    ShowPlayerDialog(playerid,DIALOG_BANKEIN,DIALOG_STYLE_INPUT,"Einzahlen","Bitte gib den Betrag ein den du auf dein Konto einzahlen möchtest:","Absenden","");


    Ich bitte um Hilfe und danke im Vorraus dafür.

    Hallo,


    Ich habe ein Problem mit meinem PayDay. Und zwar bekommt immer nur der erste Spieler der auf dem Server connectet den PayDay.


    Beim Login wird der Timer gestartet:
    SetTimer("PayDay",60000,true);


    Das Public sieht so aus:
    public PayDay(playerid)
    {
    //Respektpunkte-Level Defines
    new respektneed1 = 8;
    new PayDayl = SpielerInfo[playerid][pPayDay];
    new PayDaynew, paydayh[256],payday1[256],payday2[256],payday3[256],payday4[256],payday5[256],payday6[256];
    format(paydayh,sizeof(paydayh),"|===================| PayDay |===================|");
    format(payday1,sizeof(payday1),"| Lohn: %i $ Steuer:%i $ ",SpielerInfo[playerid][pLohn],SpielerInfo[playerid][pSteuern]);
    format(payday2,sizeof(payday2),"| ");
    format(payday3,sizeof(payday3),"| ");
    format(payday4,sizeof(payday4),"| Das PayDaysystem ist noch in Bearbeitung! ");
    format(payday5,sizeof(payday5),"| ");
    format(payday6,sizeof(payday6),"|==============================================|");
    if(PayDayl == 59)
    {
    new Respektalt = SpielerInfo[playerid][pRespekt];
    new Respektneu = Respektalt +1;
    PayDaynew = 0;
    SendClientMessage(playerid,COLOR_YELLOW,paydayh);
    SendClientMessage(playerid,COLOR_YELLOW,payday1);
    SendClientMessage(playerid,COLOR_YELLOW,payday2);
    SendClientMessage(playerid,COLOR_YELLOW,payday3);
    SendClientMessage(playerid,COLOR_YELLOW,payday4);
    SendClientMessage(playerid,COLOR_YELLOW,payday5);
    SendClientMessage(playerid,COLOR_YELLOW,payday6);
    GivePlayerMoney(playerid,SpielerInfo[playerid][pLohn]);
    GivePlayerMoney(playerid,- SpielerInfo[playerid][pSteuern]);
    if(Respektneu == SpielerInfo[playerid][pLevel] * respektneed1)
    {
    SpielerInfo[playerid][pLevel] = SpielerInfo[playerid][pLevel] +1;
    SetPlayerScore(playerid,SpielerInfo[playerid][pLevel]);
    new ltext[256];
    format(ltext,sizeof(ltext),"Du bist zum Level %i aufgestiegen.",SpielerInfo[playerid][pLevel]);
    SendClientMessage(playerid,COLOR_GREEN,ltext);
    SpielerInfo[playerid][pRespekt] = 0;
    }
    else
    {
    SpielerInfo[playerid][pRespekt] = Respektneu;
    }
    }
    else
    {
    PayDaynew = PayDayl +1;
    }
    SpielerInfo[playerid][pPayDay] = PayDaynew;
    SpielerInfo[playerid][pLohn] = 0;
    return 1;
    }


    Jetz habe ich gelesen man sollte SetTimerEx verwenden, doch da weiß ich nicht was ich am ende nach dem repeating setzten soll.
    Ich bitte um Hilfe. Danke im Vorraus.

    Hallo,


    ich habe eine Frage. Und zwar habe ich bis jetzt nur Befehle mit ocmd in einen neuen Gamemode reingeschrieben, und wenn ich jetzt auf dem Server zum beispiel /hgsdo eingebe(den Befehl gibt es natürlich nicht) dann passiert einfach nichts. Wie kann ich das nun machen, dass bei Befehlen die es nicht gibt ein bestimmter Text ausgeworfen wird? Ich habe bis jetzt nichts gefunden bzw. weiß auch nicht ganz mit welchen Begriffen ich das suchen soll.


    Danke im Vorraus für die Hilfe.

    Wenn ich mir das so vorstelle, und einer mit diesem System 200 User hat und etwa 80 Einträge, was dann passieren würde ^^


    mysql_SetInt("accounts", "Team", SpielerInfo[playerid][pTeam], "Name", SpielerInfo[playerid][pName]); // 80mal x 200mal (280x einen Query abrufen, und das nicht unbedingt einmal)


    Ich glaube man sollte die Finger davon lassen wenn man ein größeren Server plant.


    Was würdest du außer dass man das immer mit der UserID der Datenbank auslesen sollte anders machen? Ich wüsste nicht wie.
    Also statt
    mysql_SetInt("accounts", "Team", SpielerInfo[playerid][pTeam], "Name", SpielerInfo[playerid][pName]); // 80mal x 200mal (280x einen Query abrufen, und das nicht unbedingt einmal)#


    mysql_SetInt("accounts", "Team", SpielerInfo[playerid][pTeam], "id", SpielerInfo[playerid][pID]); // 80mal x 200mal (280x einen Query abrufen, und das nicht unbedingt einmal)


    Wenn man die Daten nur abspeichert/ausließt, wenn der Spieler den Server verlässt/betritt ist das doch gar nicht viel. Und wenn die Datenbank auf dem gleichen Server läuft ist das in 5ms getan.