Beiträge von Blackshadowscript

    Es gibt gute Scripter Anthony die sowas ohne probleme gute Systeme schreiben könne.
    Du bringst ja keine idden hier in dein Beitrag aus nur deine Meinung "So was bringt kein Spaß. So was wäre unreal. Ein kompetenten Scripter haben der sowas umsetzen kann"


    Ich kann von den ganzen guten System leider nur träumen da ich nicht so weit bin mit dem scripten.


    Und das mit den Aliens das wäre sehr geil für ein reinen Reallife-Script das keine RP sachen drin hat.
    Denn wenn du dich mit der Geschichte befassen würdest wäre dir auf gefallen das es immer noch ein Geheimnis ist das Bermudadreieck und das Geheimnis um Arena 52. Es heißt zwar es sei belegt worden das alles nur Fake aber wer garantiert dir so was?


    Da muss ich BangBus recht geben das du meintest Anthony:
    "Ich muss dir keine direkten Systeme nennen.
    Es geht hier einfach darum das diese Idee relativ sinnlos ist, meiner Meinung nach.
    Natürlich ist das mal was neues, aber was willst du denn mit sowas, das bringt ja nicht wirklich was. :p"


    Das heißt für mich klartext: Bots müssen Bus,Motorrad,Boot,Flugzeug,Autos fahren, Boots müssen durch die Welt gehen und dabei irgendwelche Texte abspielen.
    Für mich ist es einfach nur langweilig mit Boots zu arbeiten. Kein wunder das die meisten auf Java gegangen sind für samp weil man da mehr Freiheiten hat was das Scripten an geht.
    So kann man komplexere System schreiben die bestimmt 10-20mal besser als in PWN sind aber das war klar das es irgendwann dazu kommen musste.

    Das mit den Aliens für Reallife-Server wäre sehr an das Reale Leben gesetzt. Weiß du was in Arena 52 für Sachen liegen?
    Wer weiß vielleicht sind ja Aliens in Area 52 und die Army hat es seit all den Jahren immer nur verheimlicht.
    Ich sage nur Schaut euch mal die Serie Star Gate an das kommt auch nicht einfach so aus dem Himmel die Idde.
    Die Idde kam nur zustande weil es immer noch die Gerüchte gibt das Area 52 Hochentwickelte Teschnologische Waffen da habe so wie Aliens. Das dringt zwar nie ganz durch aber man kann
    immer davon ausgehen das es vielleicht war ist.

    Ich habe mit mein Hauptaccount das Gebiet gekauft. Ich habe mir dann noch mal ein neuen Account gemacht und mit dem konnte ich leider wieder das gebiet kaufen. Was habe ich falsch gemacht?

    Ich habe es so in mein Befehl eingebaut:
    ocmd:kaufefirmengelaende(playerid,params[])
    {
    if(sInfo[playerid][firma] != -1)return SendClientMessage(playerid,rot,"Fehler: Du Besitzt bereits eine Firma!");
    for(new i;i<sizeof(Firmengebiete);i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 4.0, Firmengebiete[i][F_KaufX], Firmengebiete[i][F_KaufY], Firmengebiete[i][F_KaufZ]))
    {
    if(strlen(Firmengebiete[i][F_Besitzer]) > 2) return SendClientMessage(playerid, 0xFF0000FF, "Error: Diese Firma gehört bereits jemandem.");
    GetPlayerName(playerid, Firmengebiete[i][F_Besitzer], MAX_PLAYER_NAME);
    //Hier das Label aktualisieren.
    sInfo[playerid][firma]= i;
    GivePlayerMoney(playerid,-5000000);
    return SendClientMessage(playerid, 0xFFFFFFFF, "Gekauft.");
    }
    }
    return SendClientMessage(playerid, 0xFF0000FF, "Du bist nich am Kaufpunkt des Firmengelhaändes!");
    }

    Das kaufen der Firmengelände geht zwar nur mein Problem ist halt das man die Gebiete 2mal kaufen kann und nicht nur 1mal. Das hießt Spieler X kauft sich ein Firmengelände z.B. Stadthalle und dann kommt Spieler Y und kann sich auf die Stadthalle kaufen wie mach ich das
    man das Gebiet nur 1mal kaufen kann das wenn ein Spieler es hat nicht noch mal kaufen kann?

    Leider funktioniert es immer noch nicht Jeffry:


    Habe neuen Account erstellt und er setzt direkt in der Datenbank auf 0 und nicht auf -1.
    Ich habe auch grade echt kein plan wie ich es entbuggen kann.


    Hier sind Bilder:



    Hier der Code:


    sInfo für abspeichern in denn Spielerinfo:
    /enum bereich:
    enum playerInfo{
    eingeloggt,
    level,
    db_id,
    alevel,
    fraktion,
    rang,
    spawnchange,
    firma
    }


    Firmengeländeenum:
    enum Firmengeleande
    {
    Float:F_MinX,
    Float:F_MinY,
    Float:F_MaxX,
    Float:F_MaxY,
    Float:F_KaufX,
    Float:F_KaufY,
    Float:F_KaufZ,
    F_Price,
    F_Object,
    Text3D:F_Label,
    F_Besitzer[MAX_PLAYER_NAME]
    }


    Firmengelände richtig zuweisen:
    new Firmengebiete[][Firmengeleande] =
    {
    {647.8892,-1384.1666,786.2288,-1329.5417,777.5681,-1379.9337,13.6566,5}
    };


    Spielerverbindet+Speichern+Neusetzen und Verlassen des Server:
    public OnPlayerConnect(playerid)
    {
    if(IsPlayerNPC(playerid)) return 1;
    new nachricht[128];
    format(nachricht,sizeof(nachricht),"Du bist mit der ID %i verbunden.",playerid);
    SendClientMessage(playerid,rot,nachricht);
    //Login/Register:
    new name[MAX_PLAYER_NAME],query[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(query,sizeof(query),"SELECT id FROM user WHERE username='%s' ",name);
    mysql_function_query(dbhandle,query,true,"OnUserCheck","i",playerid);
    SendClientMessage(playerid,grün,"Willkommen auf Reallife Version 0.1.4! Wir wünschen euch ein angenehmen Spiel spaß bei uns!");
    //textdraws anzeigen:
    TextDrawShowForPlayer(playerid,Text:uhrzeitLabel);
    TextDrawShowForPlayer(playerid, Jahr);
    SetPlayerColor(playerid,weiß);
    sInfo[playerid][level]=1;
    SetPlayerScore(playerid,sInfo[playerid][level]);
    sInfo[playerid][firma]=-1;
    return 1;
    }
    savePlayer(playerid)
    {
    if(sInfo[playerid][eingeloggt]==0)return 1;
    //Speichern level,money
    new query[256];
    format(query,sizeof(query),"UPDATE user SET level='%i',money='%i',alevel='%i',fraktion='%i',rang='%i',spawnchange='%i',firma='%i' WHERE id='%i' ",sInfo[playerid][level],GetPlayerMoney(playerid),sInfo[playerid][alevel],sInfo[playerid][fraktion],sInfo[playerid][rang],sInfo[playerid][spawnchange],sInfo[playerid][firma],sInfo[playerid][db_id]);
    mysql_function_query(dbhandle,query,false,"","");
    return 1;
    }
    resetPlayer(playerid)
    {
    for(new i=0; i<sizeof(sInfo[]); i++)
    {
    sInfo[playerid][playerInfo:i]=0;
    }
    return 1;
    }
    public OnPlayerDisconnect(playerid, reason)
    {
    savePlayer(playerid);
    resetPlayer(playerid);
    loadPlayerCars(playerid);
    return 1;
    }


    Der Kaufbefehl:
    ocmd:kaufefirmengelaende(playerid,params[])
    {
    if(sInfo[playerid][firma] != -1)return SendClientMessage(playerid,rot,"Fehler: Du Besitzt bereits eine Firma!");
    for(new i;i<sizeof(Firmengebiete);i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 4.0, Firmengebiete[i][F_KaufX], Firmengebiete[i][F_KaufY], Firmengebiete[i][F_KaufZ]))
    {
    GetPlayerName(playerid, Firmengebiete[i][F_Besitzer], MAX_PLAYER_NAME);
    //Hier das Label aktualisieren.
    sInfo[playerid][firma]= i;
    GivePlayerMoney(playerid,5000000);
    return SendClientMessage(playerid, 0xFFFFFFFF, "Gekauft.");
    }
    }
    return SendClientMessage(playerid, 0xFF0000FF, "Du bist nich am Kaufpunkt des Firmengelhaändes!");
    }


    OnPasswordResponse:
    public OnPasswordResponse(playerid)
    {
    new num_rows,num_fields;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==1)
    {
    //passwort Richtig
    sInfo[playerid][eingeloggt] = 1;
    sInfo[playerid][level] = cache_get_field_content_int(0,"level",dbhandle);
    SetPlayerScore(playerid,sInfo[playerid][level]);
    sInfo[playerid][db_id] = cache_get_field_content_int(0,"id",dbhandle);
    SetPlayerMoney(playerid,cache_get_field_content_int(0,"money",dbhandle));
    sInfo[playerid][alevel] = cache_get_field_content_int(0,"alevel",dbhandle);
    sInfo[playerid][fraktion] = cache_get_field_content_int(0,"fraktion",dbhandle);
    sInfo[playerid][rang] = cache_get_field_content_int(0,"rang",dbhandle);
    sInfo[playerid][spawnchange] = cache_get_field_content_int(0,"spawnchange",dbhandle);
    sInfo[playerid][firma] =cache_get_field_content_int(0,"firma",dbhandle);
    SetPlayerScore(playerid,sInfo[playerid][level]);
    loadPlayerCars(playerid);


    }
    else
    {
    //Passwort Falsch
    SendClientMessage(playerid,grün,"Du hast dein Passwort falsch eingetippt. Versuche es nochmal!");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Gibt bitte dein Passwort ein:","Anmelden","Abbrechen");
    }
    return 1;
    }



    Der Dialog teil wurde aus dem ganzen Public OnDialogResponse kopiert:
    Register/Login:
    if(dialogid==DIALOG_LOGIN)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[256],passwort[35];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>0)
    {
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"SELECT * FROM user WHERE username='%s' AND passwort=MD5('%s')",name,passwort);
    mysql_function_query(dbhandle,query,true,"OnPasswordResponse","i",playerid);
    }
    else
    {
    //Keine Eingabe
    SendClientMessage(playerid,grün,"Gibt bitte dein Passwort ein.");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Gibt bitte dein Passwort ein:","Anmelden","Abbrechen");
    }
    }
    else
    {
    Kick(playerid);
    }
    }
    if(dialogid==DIALOG_REGISTER)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[256],passwort[35];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>5)
    {
    //Registrierungsfunktion
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"INSERT INTO user (username, passwort, level) VALUES ('%s',MD5('%s'), '1')",name,passwort);
    mysql_function_query(dbhandle,query,false,"","");
    sInfo[playerid][level]=1;
    SetPlayerScore(playerid,sInfo[playerid][level]);
    sInfo[playerid][firma]= -1;
    }
    else
    {
    //Kleiner als 4 Zeichen
    SendClientMessage(playerid,helblau,"Dein Passwort muss mindestens 6 Zeichen lang sein.");
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Account Erstellung","Gebe bitte nun dein gewünschtes Passwort ein!","Erstellen","Abbrechen");
    }
    }
    else
    {
    Kick(playerid);
    }
    }

    Wenn ich mir ein Gelände kaufen will sagt er mir "Du Besitzt bereits eine Firma!"


    Und ich weiß jetzt auch nicht den fehler:
    Er setzt in der Datenbank das Firma nicht auf -1 sondern direkt auf 0 und das will ich ja nicht das man direkt am Anfang ein Firmengelände besitzt.


    sInfo für abspeichern in denn Spielerinfo:
    /enum bereich:
    enum playerInfo{
    eingeloggt,
    level,
    db_id,
    alevel,
    fraktion,
    rang,
    spawnchange,
    firma
    }


    Firmengeländeenum:
    enum Firmengeleande
    {
    Float:F_MinX,
    Float:F_MinY,
    Float:F_MaxX,
    Float:F_MaxY,
    Float:F_KaufX,
    Float:F_KaufY,
    Float:F_KaufZ,
    F_Price,
    F_Object,
    Text3D:F_Label,
    F_Besitzer[MAX_PLAYER_NAME]
    }


    Firmengelände richtig zuweisen:
    new Firmengebiete[][Firmengeleande] =
    {
    {647.8892,-1384.1666,786.2288,-1329.5417,777.5681,-1379.9337,13.6566,5}
    };


    Spielerverbindet+Speichern+Neusetzen und Verlassen des Server:
    public OnPlayerConnect(playerid)
    {
    if(IsPlayerNPC(playerid)) return 1;
    new nachricht[128];
    format(nachricht,sizeof(nachricht),"Du bist mit der ID %i verbunden.",playerid);
    SendClientMessage(playerid,rot,nachricht);
    //Login/Register:
    new name[MAX_PLAYER_NAME],query[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(query,sizeof(query),"SELECT id FROM user WHERE username='%s' ",name);
    mysql_function_query(dbhandle,query,true,"OnUserCheck","i",playerid);
    SendClientMessage(playerid,grün,"Willkommen auf Reallife Version 0.1.4! Wir wünschen euch ein angenehmen Spiel spaß bei uns!");
    //textdraws anzeigen:
    TextDrawShowForPlayer(playerid,Text:uhrzeitLabel);
    TextDrawShowForPlayer(playerid, Jahr);
    SetPlayerColor(playerid,weiß);
    sInfo[playerid][level]=1;
    SetPlayerScore(playerid,sInfo[playerid][level]);
    sInfo[playerid][firma]=-1;
    return 1;
    }
    savePlayer(playerid)
    {
    if(sInfo[playerid][eingeloggt]==0)return 1;
    //Speichern level,money
    new query[256];
    format(query,sizeof(query),"UPDATE user SET level='%i',money='%i',alevel='%i',fraktion='%i',rang='%i',spawnchange='%i',firma='%i'WHERE id='%i'",sInfo[playerid][level],GetPlayerMoney(playerid),sInfo[playerid][alevel],sInfo[playerid][fraktion],sInfo[playerid][rang],sInfo[playerid][spawnchange],sInfo[playerid][firma],sInfo[playerid][db_id]);
    mysql_function_query(dbhandle,query,false,"","");
    return 1;
    }
    resetPlayer(playerid)
    {
    for(new i=0; i<sizeof(sInfo[]); i++)
    {
    sInfo[playerid][playerInfo:i]=0;
    }
    return 1;
    }
    public OnPlayerDisconnect(playerid, reason)
    {
    savePlayer(playerid);
    resetPlayer(playerid);
    loadPlayerCars(playerid);
    return 1;
    }


    Der Kaufbefehl:
    ocmd:kaufefirmengelaende(playerid,params[])
    {
    if(sInfo[playerid][firma] != -1)return SendClientMessage(playerid,rot,"Fehler: Du Besitzt bereits eine Firma!");
    for(new i;i<sizeof(Firmengebiete);i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 4.0, Firmengebiete[i][F_KaufX], Firmengebiete[i][F_KaufY], Firmengebiete[i][F_KaufZ]))
    {
    GetPlayerName(playerid, Firmengebiete[i][F_Besitzer], MAX_PLAYER_NAME);
    //Hier das Label aktualisieren.
    sInfo[playerid][firma]= i;
    GivePlayerMoney(playerid,5000000);
    return SendClientMessage(playerid, 0xFFFFFFFF, "Gekauft.");
    }
    }
    return SendClientMessage(playerid, 0xFF0000FF, "Du bist nich am Kaufpunkt des Firmengelhaändes!");
    }


    OnPasswordResponse:
    public OnPasswordResponse(playerid)
    {
    new num_rows,num_fields;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==1)
    {
    //passwort Richtig
    sInfo[playerid][eingeloggt] = 1;
    sInfo[playerid][level] = cache_get_field_content_int(0,"level",dbhandle);
    SetPlayerScore(playerid,sInfo[playerid][level]);
    sInfo[playerid][db_id] = cache_get_field_content_int(0,"id",dbhandle);
    SetPlayerMoney(playerid,cache_get_field_content_int(0,"money",dbhandle));
    sInfo[playerid][alevel] = cache_get_field_content_int(0,"alevel",dbhandle);
    sInfo[playerid][fraktion] = cache_get_field_content_int(0,"fraktion",dbhandle);
    sInfo[playerid][rang] = cache_get_field_content_int(0,"rang",dbhandle);
    sInfo[playerid][spawnchange] = cache_get_field_content_int(0,"spawnchange",dbhandle);
    sInfo[playerid][firma] =cache_get_field_content_int(0,"firma",dbhandle);
    SetPlayerScore(playerid,sInfo[playerid][level]);
    loadPlayerCars(playerid);


    }
    else
    {
    //Passwort Falsch
    SendClientMessage(playerid,grün,"Du hast dein Passwort falsch eingetippt. Versuche es nochmal!");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Gibt bitte dein Passwort ein:","Anmelden","Abbrechen");
    }
    return 1;
    }



    Der Dialog teil wurde aus dem ganzen Public OnDialogResponse kopiert:
    Register/Login:
    if(dialogid==DIALOG_LOGIN)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[256],passwort[35];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>0)
    {
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"SELECT * FROM user WHERE username='%s' AND passwort=MD5('%s')",name,passwort);
    mysql_function_query(dbhandle,query,true,"OnPasswordResponse","i",playerid);
    }
    else
    {
    //Keine Eingabe
    SendClientMessage(playerid,grün,"Gibt bitte dein Passwort ein.");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Gibt bitte dein Passwort ein:","Anmelden","Abbrechen");
    }
    }
    else
    {
    Kick(playerid);
    }
    }
    if(dialogid==DIALOG_REGISTER)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[256],passwort[35];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>5)
    {
    //Registrierungsfunktion
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"INSERT INTO user (username, passwort, level) VALUES ('%s',MD5('%s'), '1')",name,passwort);
    mysql_function_query(dbhandle,query,false,"","");
    sInfo[playerid][level]=1;
    SetPlayerScore(playerid,sInfo[playerid][level]);
    sInfo[playerid][firma]= -1;
    }
    else
    {
    //Kleiner als 4 Zeichen
    SendClientMessage(playerid,helblau,"Dein Passwort muss mindestens 6 Zeichen lang sein.");
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Account Erstellung","Gebe bitte nun dein gewünschtes Passwort ein!","Erstellen","Abbrechen");
    }
    }
    else
    {
    Kick(playerid);
    }
    }

    Falls wer den selben Fehler haben sollte hier die Lösung:



    !ACHTUNG! Es wurde bei mir aus dem Script kopiert und hier rein gestellt. Bitte beachtet das ihr es richtig einsetzt.!


    if(dialogid==DIALOG_LOGIN)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[256],passwort[35];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>0)
    {
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"SELECT * FROM user WHERE username='%s' AND passwort=MD5('%s')",name,passwort);
    mysql_function_query(dbhandle,query,true,"OnPasswordResponse","i",playerid);
    }
    else
    {
    //Keine Eingabe
    SendClientMessage(playerid,grün,"Gibt bitte dein Passwort ein.");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","Gibt bitte dein Passwort ein:","Anmelden","Abbrechen");
    }
    }
    else
    {
    Kick(playerid);
    }
    }
    if(dialogid==DIALOG_REGISTER)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[256],passwort[35];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>5)
    {
    //Registrierungsfunktion
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"INSERT INTO user (username, passwort, level) VALUES ('%s',MD5('%s'), '1')",name,passwort);
    mysql_function_query(dbhandle,query,false,"","");
    sInfo[playerid][level]=1;
    SetPlayerScore(playerid,sInfo[playerid][level]);
    sInfo[playerid][firma]= -1;
    }
    else
    {
    //Kleiner als 4 Zeichen
    SendClientMessage(playerid,helblau,"Dein Passwort muss mindestens 6 Zeichen lang sein.");
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Account Erstellung","Gebe bitte nun dein gewünschtes Passwort ein!","Erstellen","Abbrechen");
    }
    }
    else
    {
    Kick(playerid);
    }
    }