[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
  • Jeffry:


    Das einzige was ich gefunden habe ist bei OnPlayerUpdate.


    Also so schaut das bei OnPlayerUpdate aus



    Function PlayerUpdate(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    if(gPlayerLogged[playerid])
    {
    new string3[64];
    new playername3[MAX_PLAYER_NAME];
    GetPlayerName(playerid, playername3, sizeof(playername3));
    format(string3, sizeof(string3), "/Accounts/%s.ini", playername3);
    new File: hFile = fopen(string3, io_write);
    if (hFile)
    {
    new var[32];
    format(var, 32, "Key=%s\n", PlayerInfo[playerid][pKey]);fwrite(hFile, var);
    PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
    ...
    ...
    format(var, 32, "Respect=%d\n",PlayerInfo[playerid][pExp]);fwrite(hFile, var);
    format(var, 32, "Money=%d\n",PlayerInfo[playerid][pCash]);fwrite(hFile, var);


    Ich glaube aber ich weis woran das liegen könnte.


    Bei Function OnPlayerLogin(playerid,password[])


    Sehen die Zeilen so aus:
    PlayerInfo[playerid][pCash] = dini_Int(string2, "Money");


    Und da du meintest das es 2 Systeme sind, kann es sein das es da buggt.
    Oder ?

    Einmal editiert, zuletzt von Saphire ()

  • Jeffry:


    Habe es nun so gemacht, aber wenn ich das Passwort eingegeben habe, und dann auf Weiter mache, passiert garnix, also der zweite Dialog wird nicht aufgerufen.




    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    switch(dialogid)
    {
    case Dialog_Register:
    {
    if(!response)
    {
    SendClientMessage(playerid,0xFF0000FF,"Die Registrierung wurde Ab.-oder Unterbrochen\nBitte beenden Sie das Spiel, indem Sie /q als Textnachricht in den Chat eingeben.");
    SetTimerEx("KickPlayer",250,0,"i",playerid);
    return 1;
    }
    if(!inputtext[0] || !(3 <= strlen(inputtext) <= 24))
    {
    ShowPlayerDialog(playerid,Dialog_Register,DIALOG_STYLE_INPUT,"{FFFFFF}SmR: {308EAD}Registrierung","{FFFFFF}Herzlich Willkommen auf San Miami Roleplay\n\nUnser System hat Ihre Spielerinformationen nicht in unserer Datenbank gefunden.\nUm einen Charakter auf unserem Server zu Erstellen\nbenötigen wir einige Informationen von Ihnen.\nAls erstes tragen Sie Bitte ein Passwort in das untere Feld ein.\n\nGeben Sie Ihr Passwort niemals an andere Personen weiter!.","Annehmen","Abbrechen");
    return 1;
    }
    Spieler[playerid][pPasswort] = inputtext[24];
    ShowPlayerDialog(playerid,Dialog_Geburtsdatum,DIALOG_STYLE_INPUT,"{FFFFFF}SmR: {308EAD}Geburtsdatum","{E5E5E5}Nun möchten wir wissen, wann Sie Geboren wurden.\nTragen Sie Bitte Ihr Geburtsdatum in das untere Feld ein.\nHalten Sie sich Bitte an die Vorlage!\n\nAngabe bitte in TT.MM.JJJJ - {23A7F5}Beispiel: {E5E5E5}10.09.1994","Weiter","Verlassen");
    return 1;
    }
    case Dialog_Geburtsdatum:
    {
    if(response == 0)return Kick(playerid);
    else
    {
    Spieler[playerid][pAlter] = GetAge(inputtext);
    if(Spieler[playerid][pAlter] == 0)
    {
    ShowPlayerDialog(playerid,Dialog_Geburtsdatum,DIALOG_STYLE_INPUT,"{FFFFFF}SmR: {308EAD}Geburtsdatum","{E5E5E5}Nun möchten wir wissen, wann Sie Geboren wurden.\nTragen Sie Bitte Ihr Geburtsdatum in das untere Feld ein.\nHalten Sie sich Bitte an die Vorlage!\n\nAngabe bitte in TT.MM.JJJJ - {23A7F5}Beispiel: {E5E5E5}10.09.1994","Weiter","Verlassen");
    return 1;
    }
    format(Spieler[playerid][pGeburtsdatum],20,inputtext);
    if(Spieler[playerid][pAlter] == 0)
    {
    ShowPlayerDialog(playerid,Dialog_Geburtsdatum,DIALOG_STYLE_INPUT,"{FFFFFF}SmR: {308EAD}Geburtsdatum","{E5E5E5}Nun möchten wir wissen, wann Sie Geboren wurden.\nTragen Sie Bitte Ihr Geburtsdatum in das untere Feld ein.\nHalten Sie sich Bitte an die Vorlage!\n\nAngabe bitte in TT.MM.JJJJ - {23A7F5}Beispiel: {E5E5E5}10.09.1994","Weiter","Verlassen");
    return 1;
    }
    ShowPlayerDialog(playerid,Dialog_Geschlecht,DIALOG_STYLE_MSGBOX,"{FFFFFF}SmR: {308EAD}Geschlecht","{FFFFFF}Als letztes möchten wir Ihr Geschlecht wissen\nWählen Sie für die Angabe bitte Ihr Geschlecht welches unten zutrifft.","Männlich","Weiblich");
    return 1;
    }
    }
    case Dialog_Geschlecht:
    {
    new string[128];
    if(response == 0)
    {
    format(string,sizeof(string),"{23A7F5}%s, {E5E5E5}Sie sind also Weiblich, und {23A7F5}%i {E5E5E5}Jahre alt.",Spielername(playerid),AgeOfPlayer(playerid));
    SendClientMessage(playerid,0x00D2D2FF,string);
    new query[950 + MAX_PLAYER_NAME],Tag,Monat,Jahr,Stunde,Minute,Sekunde;
    getdate(Tag,Monat,Jahr);
    gettime(Stunde,Minute,Sekunde);
    format(query,sizeof(query),"%02d.%02d.%d - %02d:%02d:%d",Tag,Monat,Jahr,Stunde,Minute,Sekunde);
    mysql_format(DBHandle, query, sizeof(query),"INSERT INTO `Accounts` (`pName`, `pPasswort`, `pAlter`, `pGeburtsdatum`, `pGeschlecht`, `pAdminlevel`, `pBanned`, `pBargeld`, `pKontoguthaben`, `pLastLogin`, `pRegDatum`, `pWarns`, `pLeben`) VALUES ('%e','%e','%d','%e','%d','%d','%d','0','0','%s','%s','%d','100.0')",
    Spieler[playerid][pName],Spieler[playerid][pPasswort],Spieler[playerid][pAlter],Spieler[playerid][pGeburtsdatum],Spieler[playerid][pGeschlecht],Spieler[playerid][pAdminlevel],Spieler[playerid][pBanned],query,query,Spieler[playerid][pWarns],Spieler[playerid][pLeben]);
    mysql_tquery(DBHandle, query, "", "");
    Spieler[playerid][pLeben] = 100.0;
    Spieler[playerid][pGeschlecht] = 2;
    Spieler[playerid][pLogged] = true;
    SavePlayerData(playerid);
    SpawnPlayer(playerid);
    return 1;
    }
    if(response == 1)
    {
    format(string,sizeof(string),"{23A7F5}%s, {E5E5E5}Sie sind also Männlich, und {23A7F5}%i {E5E5E5}Jahre alt.",Spielername(playerid),AgeOfPlayer(playerid));
    SendClientMessage(playerid,0x00D2D2FF,string);
    new query[950 + MAX_PLAYER_NAME],Tag,Monat,Jahr,Stunde,Minute,Sekunde;
    getdate(Tag,Monat,Jahr);
    gettime(Stunde,Minute,Sekunde);
    format(query,sizeof(query),"%02d.%02d.%d - %02d:%02d:%d",Tag,Monat,Jahr,Stunde,Minute,Sekunde);
    mysql_format(DBHandle, query, sizeof(query),"INSERT INTO `Accounts` (`pName`, `pPasswort`, `pAlter`, `pGeburtsdatum`, `pGeschlecht`, `pAdminlevel`, `pBanned`, `pBargeld`, `pKontoguthaben`, `pLastLogin`, `pRegDatum`, `pWarns`, `pLeben`) VALUES ('%e','%e','%d','%e','%d','%d','%d','0','0','%s','%s','%d','100.0')",
    Spieler[playerid][pName],Spieler[playerid][pPasswort],Spieler[playerid][pAlter],Spieler[playerid][pGeburtsdatum],Spieler[playerid][pGeschlecht],Spieler[playerid][pAdminlevel],Spieler[playerid][pBanned],query,query,Spieler[playerid][pWarns],Spieler[playerid][pLeben]);
    mysql_tquery(DBHandle, query, "", "");
    Spieler[playerid][pGeschlecht] = 1;
    Spieler[playerid][pLogged] = true;
    SavePlayerData(playerid);
    SpawnPlayer(playerid);
    return 1;
    }
    return 1;
    }
    case Dialog_Login:
    {
    if(!response)
    {
    SendClientMessage(playerid,0xFF0000FF,"Dieser Vorgang wurde Ab.-oder Unterbrochen\nBitte beenden Sie das Spiel, indem Sie /q als Textnachricht in den Chat eingeben.");
    SetTimerEx("KickPlayer",250,0,"i",playerid);
    return 1;
    }
    if(!inputtext[0] || !(3 <= strlen(inputtext) <= 25))
    {
    ShowPlayerDialog(playerid,Dialog_Login,DIALOG_STYLE_INPUT,"{FFFFFF}SmR: {308EAD}Einloggen","{0xA70000FF}Das Passwort darf nur 3-25 Zeichen enthalten!{FFFFFF}\n\nSie müssen von unserem System {0xFFFFFF}Identifiziert{FFFFFF} werden.\nGeben Sie dafür Ihr Passwort unten in das Feld ein.\n\n Klicken Sie anschlie�end auf Einloggen, damit Ihre Daten kontrolliert werden können.","Einloggen","Abbrechen");
    return 1;
    }
    new query[180 + MAX_PLAYER_NAME];
    mysql_format(DBHandle, query,sizeof(query),"SELECT COUNT(*) AS `count` FROM `Accounts` WHERE `pName` ='%e' AND `pPasswort` ='%e'",Spieler[playerid][pName],inputtext);
    mysql_function_query(DBHandle, query, true,"LoadPlayerDataSequence","dd",playerid,2);
    Spieler[playerid][pLogged] = true;
    return 1;
    }
    }
    return 1;
    }

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • Schreibe das so:
    Spieler[playerid][pPasswort] = inputtext[24];
    zu
    format(Spieler[playerid][pPasswort], 24, inputtext);


    pPasswort im enum als "pPasswort[24]," deklarieren.


    PS: Erstelle für sowas nächstes mal einen eigenen Thread, da das keine kleine Scripting Frage ist, das sagt die Länge des Codes bereits aus. ;)

  • Jeffry: Dann wird das Passwort als t18.11.1994 gespeichert, also das Geburtsdatum O.o und das "t" ist der Anfangsbuchstabe vom Passwort, hatte test eingegeben.

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Warum können Admins die lvl 1 sind da nichts lesen?



    if(strcmp(cmd, "/admin", true) == 0 || strcmp(cmd, "/a", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "NUTZE: (/a)dmin [admin chat]");
    return 1;
    }
    if(PlayerInfo[playerid][pAdmin] == 1)
    {
    format(string, sizeof(string), "*%d Moderator %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
    }
    if(PlayerInfo[playerid][pAdmin] == 2)
    {
    format(string, sizeof(string), "*%d Super-Moderator %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
    }
    if(PlayerInfo[playerid][pAdmin] == 3)
    {
    format(string, sizeof(string), "*%d Admin %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
    }
    if(PlayerInfo[playerid][pAdmin] == 4)
    {
    format(string, sizeof(string), "*%d Admin %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
    }
    if(PlayerInfo[playerid][pAdmin] == 1337)
    {
    format(string, sizeof(string), "*%d Admin %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
    }
    if(PlayerInfo[playerid][pAdmin] == 1338)
    {
    format(string, sizeof(string), "*%d FrakManager %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
    }
    if(PlayerInfo[playerid][pAdmin] == 2000)
    {
    format(string, sizeof(string), "*%d High-Admin %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
    }
    if(PlayerInfo[playerid][pAdmin] == 2001)
    {
    format(string, sizeof(string), "*%d stelv.Serverleiter %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
    }
    if(PlayerInfo[playerid][pAdmin] == 2002)
    {
    format(string, sizeof(string), "*%d Serverleiter %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
    }
    else if(PlayerInfo[playerid][pSupporter] >= 1)
    {
    format(string, sizeof(string), "*%d Supporter %s[%d]: %s", PlayerInfo[playerid][pSupporter], sendername, playerid, result);
    }


    else return 1;
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(PlayerInfo[i][pSupporter] >= 1 || PlayerInfo[i][pAdmin] >= 1)
    {
    SendClientMessage(i,COLOR_YELLOW4,string);
    }
    }
    }
    Log("OA-Chat.txt",string);
    }
    return 1;
    }


    Also wenn ich /a Hallo eingebe und Admin level 1 bin seh ich die nachricht nicht also niemand sieht das.
    Wenn ich aber Admin lvl 2002 bin dann geht das :>
    Warum?

  • Beitrag von Corvus ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Du hast die else's vor den Abfragen vergessen:

    Spoiler anzeigen
    if(strcmp(cmd, "/admin", true) == 0 || strcmp(cmd, "/a", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "NUTZE: (/a)dmin [admin chat]");
    return 1;
    }
    if(PlayerInfo[playerid][pAdmin] == 1)
    {
    format(string, sizeof(string), "*%d Moderator %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
    }
    else if(PlayerInfo[playerid][pAdmin] == 2)
    {
    format(string, sizeof(string), "*%d Super-Moderator %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
    }
    else if(PlayerInfo[playerid][pAdmin] == 3)
    {
    format(string, sizeof(string), "*%d Admin %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
    }
    else if(PlayerInfo[playerid][pAdmin] == 4)
    {
    format(string, sizeof(string), "*%d Admin %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
    }
    else if(PlayerInfo[playerid][pAdmin] == 1337)
    {
    format(string, sizeof(string), "*%d Admin %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
    }
    else if(PlayerInfo[playerid][pAdmin] == 1338)
    {
    format(string, sizeof(string), "*%d FrakManager %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
    }
    else if(PlayerInfo[playerid][pAdmin] == 2000)
    {
    format(string, sizeof(string), "*%d High-Admin %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
    }
    else if(PlayerInfo[playerid][pAdmin] == 2001)
    {
    format(string, sizeof(string), "*%d stelv.Serverleiter %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
    }
    else if(PlayerInfo[playerid][pAdmin] == 2002)
    {
    format(string, sizeof(string), "*%d Serverleiter %s[%d]: %s", PlayerInfo[playerid][pAdmin], sendername, playerid, result);
    }
    else if(PlayerInfo[playerid][pSupporter] >= 1)
    {
    format(string, sizeof(string), "*%d Supporter %s[%d]: %s", PlayerInfo[playerid][pSupporter], sendername, playerid, result);
    }
    else return 1;
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    {
    if(PlayerInfo[i][pSupporter] >= 1 || PlayerInfo[i][pAdmin] >= 1)
    {
    SendClientMessage(i,COLOR_YELLOW4,string);
    }
    }
    }
    Log("OA-Chat.txt",string);
    }
    return 1;
    }

  • Wie kann ich das machen das nur unbesetzte Cars zurück gespawnt werden ?
    Oder Cars wo jemand nicht drin ist nicht zurück gespawnt werden?


    Also an dem Beispiel:



    if(strcmp(cmd, "/frakrc", true) == 0 || strcmp(cmd, "/frc", true) == 0)
    {

    if(PlayerInfo[playerid][pLeader] == 1)
    {
    for(new pv = 0; pv < sizeof(PolizeiVehs); pv++)
    {
    if(!IsPlayerInAnyVehicle(playerid))
    {
    SetVehicleToRespawn(PolizeiVehs[pv]);
    }
    }
    for(new fc;fc<sizeof(FactionCars);fc++)
    {
    if(FactionCars[fc][fVehid] >= 400 && FactionCars[fc][fVehid] <= 611)
    {
    if(FactionCars[fc][fFaction][0] == GetPlayerFaction(playerid))
    {
    if(!IsPlayerInAnyVehicle(playerid))
    {
    DestroyAndCreateFactionCar(fc);
    }
    }
    }
    }
    SendClientMessage(playerid,FACTION_COL_YELLOW,"Du hast deine Fraktionsfahrzeuge erfolgreich respawnt.");
    return 1;
    }



    Mfg Saphire

  • Jeffry:



    for(new pv = 0; pv < sizeof(PolizeiVehs); pv++)
    {
    if(!IsPlayerInAnyVehicle(playerid))
    {
    SetVehicleToRespawn(PolizeiVehs[pv]);
    }
    }
    for(new fc;fc<sizeof(FactionCars);fc++)
    {
    if(FactionCars[fc][fVehid] >= 400 && FactionCars[fc][fVehid] <= 611)
    {
    if(FactionCars[fc][fFaction][0] == GetPlayerFaction(playerid))
    {
    if(!IsPlayerInAnyVehicle(playerid))
    {
    DestroyAndCreateFactionCar(fc);
    }
    }
    }
    }


    ich habe das ja so aber wenn jemand drin sitzt werden die trotzdem zurück gespawnnt.
    Wie kann ich das ändern ?