Beiträge von UncleSub

    `FacVirtualWorld` int(3) NOT NULL,


    Code
    [15:53:36] CMySQLHandler::Query(SELECT `VirtualWorld` FROM `faction` WHERE `id` = 'ÿ') - An error has occured. (Error ID: 1054, Unknown column 'VirtualWorld' in 'field list')


    Schonmal ein Fehler. Das selbe auch bei Interior.


    `Fahrzeug4A` float NOT NULL,


    Code
    [15:53:37] CMySQLHandler::Query(SELECT `Fahrzeu(!!!!g!!!!)4A` FROM `faction` WHERE `id` = 'ÿ') - An error has occured. (Error ID: 1054, Unknown column 'Fahrzeu4A' in 'field list')


    Rechtschreibfehler...


    Also schau alles nach, ob es richtig geschrieben ist und pass es an.


    Mfg,
    UncleSub

    Die hast du jetzt sowieso. Nochmal zum Lesen bevor schreiben: Er verwendet nirgends "return 1;" im Code.
    Ich bleibe übrigens immer noch bei meiner Meinung. Das return macht ja auch nichts anderes als etwas "returnen" also auf Deutsch etwas zurückgeben. Wenn er dort return 1; macht, macht er weiter, da hast du recht. Aber er macht genau so, wie er sonst auch weitermachen würde. Sprich er springt über das else if.
    Nunja das wars von mir. Schönen Abend noch.


    Mfg

    Wenn man keine Ahnung hat sollte man es lassen.

    Da hast du aber recht.


    Das Script liest noch weiter, und die Variable ist auf 1. Also wird auch 1 ausgeführt du .... mein Gott.


    Hast da ja eigentlich recht, aaaaber....Deswegen gibt es if und else if :rolleyes:
    Hier Lektüre zum Lesen dazu: Hier
    Bevor du irgendwo deinen Saft dazu gibst schadet es nicht zu lesen ;)


    Mfg

    What The F*ck gibt ihr ihn für Tipps?
    Das ist der größte Drec* den ich jemals gelesen habe!


    Natürlich ist es mit einem Stock einfacher und auch später praktikabler. Es geht hier aber im großem und ganzem darum, dass er seine Fehler im Script ausbessert. Meine Meinung lasse ich da nirgendwo. Wenn ich solch einen Fehler sehe, behebe ich ihn, wenn man darüber hinaus geht, wissen die meisten Leute nicht mehr weiter und man macht alles nur noch schlimmer. Wenn ich meine persönliche Meinung dazu sagen würde, würde ich ihm auch direkt sagen, dass er sein System mit PVars in die Tonne kloppen soll. Mach ich aber nicht, dann könnte er gleich von vorne anfangen. Also bitte halt dich ein wenig zurück mit deinen Aussagen.


    BTW:

    Zitat

    else if(Adminduty[playerid] == 1) //Setzt weiter oben Adminduty auf 1, also wird das erste und das zweite ausgeführt..


    Ist das selbe wie deins:

    Dann mach ein "else" zwischen die Abfragen.


    Außerdem:

    Variable 1 immer zu erst abfragen. Bzw.


    Was erzählst du? Macht keinen Unterschied.


    Mfg,
    UncleSub

    Durch grobes Überfliegen des Logs, kann man erkennen, dass du in deiner Datenbank ein paar Spalten nicht erstellt hast. (z.B. 'Interior' und 'VirtualWorld')
    Du musst im ganzen Log nachschauen, welche Spalten dir fehlen und diese einfügen.

    Außerdem als Tipp:
    Du lädst die Fraktionen jeweils mit z.B. GetMySQLfloat. Du führst also x male ein Query aus und das für jede x Fraktion! Kannst du dir vorstellen, dass das nicht gerade Ressourcen freundlich ist?

    Als Anregung:

    stock LoadFactions()
    {
    new data[800], field[/*Anzahl der Felder in deiner Datenbank*/][64],factcount;
    mysql_query("SELECT * FROM faction WHERE id='%i'");
    mysql_store_result();
    while(mysql_fetch_row(data))
    {
    splitfu(data, field, '|');
    FacInfo[factcount][fID] = strval(field[0]); //Felder aus der Datenbank
    //usw...
    factcount++;
    }
    mysql_free_result();
    }


    Müssteste halt an dein Script und die Datenbank anpassen. Sollte aber etwas Ressourcen sparen. ;)


    Mfg,
    UncleSub

    1.

    ocmd:aduty(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,COLOR_GRAU,"Diesen Befehl darfst du nicht benutzen.");
    if(Adminduty[playerid] == 0)
    {
    new Adminrang[64];
    switch(GetPVarInt(playerid,"Adminlevel"))
    {
    case 1:(Adminrang="Supporter");
    case 2:(Adminrang="Moderator");
    case 3:(Adminrang="Administrator");
    case 4:(Adminrang="Super Administrator");
    case 5:(Adminrang="Server Manager");
    case 6:(Adminrang="Server Leitung");
    }
    new string[128];
    format(string,sizeof(string),"%s hat sich als %s angemeldet.",SpielerName(playerid),Adminrang);
    SendClientMessageToAll(COLOR_ROT,string);
    Adminduty[playerid] = 1;
    }
    else if(Adminduty[playerid] == 1) //Setzt weiter oben Adminduty auf 1, also wird das erste und das zweite ausgeführt..
    {
    new Adminrang[64];
    switch(GetPVarInt(playerid,"Adminlevel"))
    {
    case 1:(Adminrang="Supporter");
    case 2:(Adminrang="Moderator");
    case 3:(Adminrang="Administrator");
    case 4:(Adminrang="Super Administrator");
    case 5:(Adminrang="Server Manager");
    case 6:(Adminrang="Server Leitung");
    }
    new string1[128];
    format(string1,sizeof(string1),"%s hat sich als %s abgemeldet.",SpielerName(playerid),Adminrang);
    SendClientMessageToAll(COLOR_ROT,string1);
    Adminduty[playerid] = 0;
    }
    return 1;
    }


    2.

    switch(Adminrang)) //Vorher wurd die PVar des Spielers, der /makeadmin eingibt ausgelesen. Wenn du jmd anderen Admin machen wolltest, würde er sagen, dass er als User eingeladen wurde..
    {
    case 0:(Adminlevel="User");
    case 1:(Adminlevel="Supporter");
    case 2:(Adminlevel="Moderator");
    case 3:(Adminlevel="Administrator");
    case 4:(Adminlevel="Super Administrator");
    case 5:(Adminlevel="Server Manager");
    case 6:(Adminlevel="Server Leitung");


    }


    Mfg,
    UncleSub

    DestroyDynamicObject(PlayerInfo[playerid][pRoadblock]);


    Du hast aber:


    CreateObject(981, X, Y, Z, 0.0, 0.0, A+180);


    Entweder du machst CreateDynamicObject, oder du machst DestroyObject.


    Mfg,
    UncleSub


    if(listitem == 0)
    {
    if(GetPlayerWantedLevel(playerid) == 0 )
    {
    SetPlayerWantedLevel(playerid,1);
    SetPlayerCheckpoint(playerid,TaxiJob1,5.0);
    SendClientMessage(playerid,Weiss,"Du bist Taxi-Fahrer,spawn dir ein Taxi und fahre zum Checkpoint[Es gibt 3 Level]");
    }
    else if(GetPlayerWantedLevel(playerid) == 2 )
    {
    GameTextForPlayer(playerid,"Level 2",5000,6);
    SetPlayerCheckpoint(playerid,TaxiJob2,5.0);
    }
    else if(GetPlayerWantedLevel(playerid) == 3 )
    {
    GameTextForPlayer(playerid,"Level 3",5000,6);
    SetPlayerCheckpoint(playerid,TaxiJob3,5.0);
    }
    else //Das wird ausgeführt, wenn es nicht 0, 2, 3 ist, ka ob dus brauchst, kommt drauf an was du bei OnPlayerEnterCheckpoint machst. Sonst löschen
    {
    GameTextForPlayer(playerid,"Level 1",5000,6);
    SetPlayerCheckpoint(playerid,TaxiJob1,5.0);
    }
    }


    Dann so.


    Mfg


    //Edit: Schon erledigt..
    Kein Ding ;)

    Das alles ergibt sowieso für mich keinen Sinn. So wie du es jetzt hast, gibt der Spieler /job ein und kann dann den Befehl immer wieder eingeben und kriegt ein höheres Level. Ich weiß nicht, ob du es so wolltest, oder doch so, dass der Spieler ein höheres Level bekommt, wenn er in einen Checkpoint fährt. Naja egal so wie du es hattest...



    if(listitem == 0)
    {
    if(GetPlayerWantedLevel(playerid) == 0 )
    {
    SetPlayerWantedLevel(playerid,1);
    SendClientMessage(playerid,Weiss,"Du bist Taxi-Fahrer,spawn dir ein Taxi und fahre zum Checkpoint[Es gibt 3 Level]");
    }
    else if(GetPlayerWantedLevel(playerid) == 1 )
    {
    GameTextForPlayer(playerid,"Level 1",5000,6);
    SetPlayerCheckpoint(playerid,TaxiJob1,5.0);
    //Muss dann noch das dazu:
    SetPlayerWantedLevel(playerid, 2);
    }
    else if(GetPlayerWantedLevel(playerid) == 2 )
    {
    GameTextForPlayer(playerid,"Level 2",5000,6);
    SetPlayerCheckpoint(playerid,TaxiJob2,5.0);
    //Muss dann noch das dazu:
    SetPlayerWantedLevel(playerid, 3);
    }
    else if(GetPlayerWantedLevel(playerid) == 3 )
    {
    GameTextForPlayer(playerid,"Level 3",5000,6);
    SetPlayerCheckpoint(playerid,TaxiJob3,5.0);
    //Muss dann noch das dazu:
    SetPlayerWantedLevel(playerid, 4);
    }
    else
    {
    GameTextForPlayer(playerid,"Level 1",5000,6);
    SetPlayerCheckpoint(playerid,TaxiJob1,5.0);
    //Muss dann noch das dazu:
    SetPlayerWantedLevel(playerid, 2);
    }
    }


    Wie gesagt macht keinen Sinn. Musste nochmal drüber nachdenken. ;)


    Mfg,
    UncleSub


    HouseInfo[ID][HouseBesitzer] = na;

    Musst format benutzen.


    Außerdem kannst du dir ein paar Strings sparen. ;)


    Mfg,
    UncleSub


    Edit:
    format(query2, 128, "UPDATE accounts SET `HouseKey`[b]= '%d' [/b]WHERE Name = '%s'", [b]nullstring[/b], HouseInfo[ID][HouseBesitzer]);


    Macht keinen Sinn. %d ist kein String, du verwendest dort aber einen. Außerdem, warum trägst du dort nicht einfach '0' ein, wie du es beim anderem Query getan hast?

    1. Fehler



    if(GetPlayerWantedLevel(playerid) > 1 ) //Muss < sein!


    2.Fehler



    if(GetPlayerWantedLevel(playerid) < 1 )
    {
    if(GetPlayerWantedLevel(playerid) > 3 )
    {


    Du fragst ab, ob der Spieler einen WantedLevel KLEINER 1 hat und dann, ob er GRÖßER 3 ist. Alle Codes werden nie "erreicht", weil die Bedingungen nie erfüllt sind!


    Mfg,
    UncleSub

    Das ist mir klar. Nur entweder er löscht das aus seinem Gamemode, oder nutzt das Script. Ich bin mir nicht sicher, ob er so etwas jetzt schon selber machen könnte. Selber machen ist natürlich immer die bessere Variante, wo man auch am meisten von lernen kann.

    Durch kurzes Googlen konnte ich herausfinden, dass dir das Filterscript fehlt. Falls du es hast, musst du die ganzen Funktionen in dein Gamemode kopieren.
    Beim zweiten Error musst du den String erstellen (new sendername[MAX_PLAYER_NAME]; )


    Mfg,
    UncleSub