Beiträge von StandbyGamer

    Das mit den Waffen habe ich eh wieder raus genommen.


    Wollte eigentlich umgehen alles zu posten aber es ist doch besser. Musste etwas bei PlayerUpdate weglassen nach hinten hin weil der Beitrag zu lang wäre.
    Das geht immer so weiter wie es da auch steht. Der DEBUG ist alles komplett gepostet.



    PlayerUpdate(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][eingeloggt]==0)return 1;
    //Speichern
    new query[128];
    PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
    format(query,sizeof(query),"UPDATE accounts SET level='%i',money='%i',alevel='%i',premiumlevel='%i',haus='%i',eingemietet='%i' WHERE id='%i'",
    PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pCash],PlayerInfo[playerid][pAdmin],PlayerInfo[playerid][pDonateRank],PlayerInfo[playerid][Haus],PlayerInfo[playerid][eingemietet],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET hausbesitz='%s',hausschluessel='%i',upgradepoints='%i',connectedtime='%i',registered='%i' WHERE id='%i'",
    PlayerInfo[playerid][Hausbesitz],PlayerInfo[playerid][Hausschluessel],PlayerInfo[playerid][gPupgrade],PlayerInfo[playerid][pConnectTime],PlayerInfo[playerid][pReg],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET geschlecht='%i',age='%i',origin='%i',zivispawn='%i',ck='%i' WHERE id='%i'",
    PlayerInfo[playerid][pSex],PlayerInfo[playerid][pAge],PlayerInfo[playerid][pOrigin],PlayerInfo[playerid][pZivispawn],PlayerInfo[playerid][pCK],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET muted='%i',respect='%i',bank='%i',kredit='%i',kreditdauer='%i' WHERE id='%i'",
    PlayerInfo[playerid][pMuted],PlayerInfo[playerid][pExp],PlayerInfo[playerid][pAccount],PlayerInfo[playerid][pPlayerKredit],PlayerInfo[playerid][pPlayerKreditDauer],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET crimes='%i',kills='%i',deaths='%i',arrested='%i',wanteddeaths='%i' WHERE id='%i'",
    PlayerInfo[playerid][pCrimes],PlayerInfo[playerid][pKills],PlayerInfo[playerid][pDeaths],PlayerInfo[playerid][pArrested],PlayerInfo[playerid][pWantedDeaths],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET phonebook='%i',lottonr='%i',fishes='%i',biggestfish='%i',job='%i' WHERE id='%i'",
    PlayerInfo[playerid][pPhoneBook],PlayerInfo[playerid][pLottoNr],PlayerInfo[playerid][pFishes],PlayerInfo[playerid][pBiggestFish],PlayerInfo[playerid][pJob],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET jobzeit='%i',paycheck='%i',headvalue='%i',jailed='%i',gangjailed='%i' WHERE id='%i'",
    PlayerInfo[playerid][pJobtime],PlayerInfo[playerid][pPayCheck],PlayerInfo[playerid][pHeadValue],PlayerInfo[playerid][pJailed],PlayerInfo[playerid][pGangJailed],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET mauled='%i',jailtime='%i',materials='%i',drugs='%i',verband='%i' WHERE id='%i'",
    PlayerInfo[playerid][pMauled],PlayerInfo[playerid][pJailTime],PlayerInfo[playerid][pMats],PlayerInfo[playerid][pDrugs],PlayerInfo[playerid][pVerband],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET boxmaterials='%i',boxdrugs='%i',fightingstyle='%i',leader='%i',member='%i' WHERE id='%i'",
    PlayerInfo[playerid][pBoxMats],PlayerInfo[playerid][pBoxDrugs],GetPlayerFightingStyle(playerid),PlayerInfo[playerid][pLeader],PlayerInfo[playerid][pMember],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET fmember='%i',rank='%i',pskin='%i',contracttime='%i',detskill='%i' WHERE id='%i'",
    PlayerInfo[playerid][pFMember],PlayerInfo[playerid][pRank],PlayerInfo[playerid][pChar],PlayerInfo[playerid][pContractTime],PlayerInfo[playerid][pDetSkill],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET sexskill='%i',boxskill='%i',lawskill='%i',mechskill='%i',jackskill='%i' WHERE id='%i'",
    PlayerInfo[playerid][pSexSkill],PlayerInfo[playerid][pBoxSkill],PlayerInfo[playerid][pLawSkill],PlayerInfo[playerid][pMechSkill],PlayerInfo[playerid][pJackSkill],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET carskill='%i',drugsskill='%i',cookskill='%i',fishskill='%i',pshealth='%i' WHERE id='%f'",
    PlayerInfo[playerid][pCarSkill],PlayerInfo[playerid][pDrugsSkill],PlayerInfo[playerid][pCookSkill],PlayerInfo[playerid][pFishSkill],PlayerInfo[playerid][pSHealth],PlayerInfo[playerid][db_id]);


    GetPlayerHealth(playerid,PlayerInfo[playerid][pHealth]);
    format(query,sizeof(query),"UPDATE accounts SET phealth='%f',interior='%i',local='%i',team='%i',model='%i' WHERE id='%i'",
    PlayerInfo[playerid][pHealth],PlayerInfo[playerid][pInt],PlayerInfo[playerid][pLocal],PlayerInfo[playerid][pTeam],PlayerInfo[playerid][pModel],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET gwd='%f',phonenr='%i',house='%i',bizz='%i',handygeld='%i' WHERE id='%i'",
    PlayerInfo[playerid][pGWD],PlayerInfo[playerid][pPnumber],PlayerInfo[playerid][pPhousekey],PlayerInfo[playerid][pPbiskey],PlayerInfo[playerid][pHandyGeld],PlayerInfo[playerid][db_id]);


    if ((PlayerInfo[playerid][pPos_x]==0.0 && PlayerInfo[playerid][pPos_y]==0.0 && PlayerInfo[playerid][pPos_z]==0.0))
    {
    PlayerInfo[playerid][pPos_x] = 1684.9;
    PlayerInfo[playerid][pPos_y] = -2244.5;
    PlayerInfo[playerid][pPos_z] = 13.5;
    }
    if(Spectate[playerid] != 255)
    {
    PlayerInfo[playerid][pPos_x] = Unspec[playerid][sPx];
    PlayerInfo[playerid][pPos_y] = Unspec[playerid][sPy];
    PlayerInfo[playerid][pPos_z] = Unspec[playerid][sPz];
    PlayerInfo[playerid][pInt] = Unspec[playerid][sPint];
    PlayerInfo[playerid][pLocal] = Unspec[playerid][sLocal];
    }
    format(query,sizeof(query),"UPDATE accounts SET handyver='%i',pos_x='%f',pos_y='%f',pos_z='%f',carlic='%i' WHERE id='%i'",
    PlayerInfo[playerid][pHandyVer],PlayerInfo[playerid][pPos_x],PlayerInfo[playerid][pPos_y],PlayerInfo[playerid][pPos_z],PlayerInfo[playerid][pCarLic],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET newlic='%i',flylic='%i',boatlic='%i',fishlic='%i',zollpass='%i' WHERE id='%i'",
    PlayerInfo[playerid][pNewLic],PlayerInfo[playerid][pFlyLic],PlayerInfo[playerid][pBoatLic],PlayerInfo[playerid][pFishLic],PlayerInfo[playerid][pZollPass],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET zollpasstime='%i',statsbox='%i',gunlic='%i',lkwlic='%i',rollerlic='%i' WHERE id='%i'",
    PlayerInfo[playerid][pZollPassTime],PlayerInfo[playerid][pStatsBox],PlayerInfo[playerid][pGunLic],PlayerInfo[playerid][pLKWLic],PlayerInfo[playerid][pRollerLic],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET motolic='%i',navigations='%i',pin='%i',donatorpoints='%i',numberchange='%i' WHERE id='%i'",
    PlayerInfo[playerid][pMotoLic],PlayerInfo[playerid][pNavigations],PlayerInfo[playerid][pPin],PlayerInfo[playerid][pDonatorPoints],PlayerInfo[playerid][pNumberchange],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET zig='%i',kekse='%i',zigsucht='%i',gun1='%i',gun2='%i' WHERE id='%i'",
    PlayerInfo[playerid][pZig],PlayerInfo[playerid][pKekse],PlayerInfo[playerid][pZigSucht],PlayerInfo[playerid][pGun1],PlayerInfo[playerid][pGun2],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET gun3='%i',gun4='%i',ammo1='%i',ammo2='%i',ammo3='%i' WHERE id='%i'",
    PlayerInfo[playerid][pGun3],PlayerInfo[playerid][pGun4],PlayerInfo[playerid][pAmmo1],PlayerInfo[playerid][pAmmo2],PlayerInfo[playerid][pAmmo3],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET ammo4='%i',cartime='%i',payday='%i',paydayhad='%i',cdplayer='%i' WHERE id='%i'",
    PlayerInfo[playerid][pAmmo4],PlayerInfo[playerid][pCarTime],PlayerInfo[playerid][pPayDay],PlayerInfo[playerid][pPayDayHad],PlayerInfo[playerid][pCDPlayer],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET wins='%i',loses='%i',alcoholperk='%i',drugperk='%i',miserperk='%i' WHERE id='%i'",
    PlayerInfo[playerid][pWins],PlayerInfo[playerid][pLoses],PlayerInfo[playerid][pAlcoholPerk],PlayerInfo[playerid][pDrugPerk],PlayerInfo[playerid][pMiserPerk],PlayerInfo[playerid][db_id]);


    format(query,sizeof(query),"UPDATE accounts SET painperk='%i',traderperk='%i',tutorial='%i',warnings='%i',adjustable='%i' WHERE id='%i'",
    PlayerInfo[playerid][pPainPerk],PlayerInfo[playerid][pTraderPerk],PlayerInfo[playerid][pTut],PlayerInfo[playerid][pWarns],PlayerInfo[playerid][pAdjustable],PlayerInfo[playerid][db_id]);


    mysql_pquery(dbhandle,query);
    print("PlayerUpdate wurde aufgerufen.");
    }
    return 1;
    }


    Ouh.. ich und MySQL.. naja, aber auch hier nach noch immer nichts:


    PlayerUpdate(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][eingeloggt]==0)return 1;


    //Speichern
    new query[128];
    PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
    format(query,sizeof(query),"UPDATE accounts SET level='%i',money='%i',alevel='%i',premiumlevel='%i',haus='%i',eingemietet='%i' WHERE id='%i'",
    PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pCash],PlayerInfo[playerid][pAdmin],PlayerInfo[playerid][pDonateRank],PlayerInfo[playerid][Haus],PlayerInfo[playerid][eingemietet],PlayerInfo[playerid][db_id]);


    }
    return 1;
    }


    Im Script ist das natürlich nicht so abgeknickt das eingemietet in einer neuen reihe ist.

    Ok, ganz geladen wird es auch nicht das level zb. wird auch noch nicht geladen das Geld und Adminlevel jedoch schon.


    CaZe: Hab ich doch schon UPDATE ist schon drin und dann hab ich es gedebugt. und genannt habe ich es auch schon.


    Das PlayerUpdate(playerid) lasse ich öfters mal zur Sicherheit mal abfragen nach einigen kauf oder Änderungen und wenn der Spieler den Server wieder verlässt.


    Ja, nun habe ich wieder UPDATE drin und es geht noch immer nicht, es muss auch eindeutig an playerupdate liegen das es da nicht nehmen will. Der DEBUG ist oben.


    Das PlayerUpdate(playerid) lasse ich öfters mal zur Sicherheit mal abfragen nach einigen kauf oder Änderungen und wenn der Spieler den Server wieder verlässt.

    mysql_log auf LOG_ALL


    Das musst du mir erklären wie und wo, mit dem Anderen Fange ich noch mal neu an :)


    Wenn man den Server Betritt kommt folgendes.



    //Login/Register
    new name[MAX_PLAYER_NAME],query[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(query,sizeof(query),"SELECT id FROM accounts WHERE username='%s'",name);
    mysql_function_query(dbhandle,query,true,"OnUserCheck","i",playerid);


    Es wird der Callback OnUserCheck aufgerufen dieser sieht wie folgt aus:



    public OnUserCheck(playerid)
    {
    new num_rows,num_fields,stringlogin[300],stringregister[300];
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==0)
    {
    //Registrierung
    format(stringregister,sizeof(stringregister),"Willkommen Register Text");
    ShowPlayerDialog(playerid,DIALOG_REG2,DIALOG_STYLE_PASSWORD,"Registrierung",stringregister,"Registrieren","");
    }
    else
    {
    //Login
    format(stringlogin,sizeof(stringlogin),"Willkommen LoginText");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Anmeldung",stringlogin,"Anmelden","");
    }
    return 1;
    }


    So, der DIALOG_REG2 sieht so aus:



    if(dialogid == DIALOG_REG2)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[128],passwort[35],stringlogin[300],stringregister[300];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>5 && strlen(inputtext)<35)
    {
    //Registrierungsfunktion
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"INSERT INTO accounts (username,password) VALUES ('%s',MD5('%s')) ",name,passwort);
    mysql_function_query(dbhandle,query,true,"OnPlayerRegister","i",playerid);


    format(stringlogin,sizeof(stringlogin),"Willkommen Login Text");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Anmeldung",stringlogin,"Anmelden","");
    }
    else
    {
    //Kleiner als 6 Zeichen
    SendClientMessage(playerid,FARBE_ROT,"Dein Passwort muss mindestens 6 und maximal 35 Zeichen lang sein.");
    format(stringregister,sizeof(stringregister),"Willkommen Register Text);
    ShowPlayerDialog(playerid,DIALOG_REG2,DIALOG_STYLE_PASSWORD,"Registrierung",stringregister,"Registrieren","");
    }
    }
    return 1;
    }


    Der OnPlayerRegister Callback dazu:



    public OnPlayerRegister(playerid)
    {
    PlayerInfo[playerid][db_id] = cache_insert_id(dbhandle);
    return 1;
    }


    und hier ist der DIALOG_LOGIN



    if(dialogid == DIALOG_LOGIN)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[128],passwort[35],stringlogin[300];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>0)
    {
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"SELECT * FROM accounts WHERE username='%s' AND password=MD5('%s')",name,passwort);
    mysql_function_query(dbhandle,query,true,"OnPasswordResponse","i",playerid);
    }
    else
    {
    //Keine Eingabe
    format(stringlogin,sizeof(stringlogin),"{C9C9C9}Willkommen Login Text");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,""#SERVERFARBE""#SERVERNAME"{FFFFFF}: Anmeldung",stringlogin,"Anmelden","");
    }
    }
    }


    Soo und nun OnPasswordResponse :



    public OnPasswordResponse(playerid)
    {
    new num_fields,num_rows,stringlogin[300];
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==1)
    {
    //Passwort richtig || Spieler Laden
    PlayerInfo[playerid][db_id] = cache_get_field_content_int(0,"id",dbhandle);
    PlayerInfo[playerid][pLevel] = cache_get_field_content_int(0,"level",dbhandle);
    PlayerInfo[playerid][pCash] = cache_get_field_content_int(0,"money",dbhandle);
    PlayerInfo[playerid][pAdmin] = cache_get_field_content_int(0,"alevel",dbhandle);
    PlayerInfo[playerid][pDonateRank] = cache_get_field_content_int(0,"premiumlevel",dbhandle);
    PlayerInfo[playerid][Haus] = cache_get_field_content_int(0,"haus",dbhandle);


    }
    return 1;
    }


    Und im PlayerUpdate wird alles gespeichert:



    PlayerUpdate(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][eingeloggt]==0)return 1;


    //Speichern
    new query[128];
    format(query,sizeof(query),"INSERT INTO accounts (level,money,alevel,premiumlevel,haus,eingemietet) VALUES ('%i','%i','%i','%i','%i')",
    PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pCash],PlayerInfo[playerid][pAdmin],PlayerInfo[playerid][pDonateRank],PlayerInfo[playerid][Haus],PlayerInfo[playerid][eingemietet]);
    }
    return 1;
    }


    So das sollte es erstmal grob gewesen sein. Beim Speichern weiß ich halt jetzt nicht was ich benutzen muss ob die INSERT variante oder das UPDATE (ein paar beiträge oben zu sehen.)


    Es wird der User in die Datenbank geschrieben mit der datenbank id, Namen und Passwort der Rest aber nicht.
    Ich habe auch so mal in der Datenbank das Adminlevel verändert und ging drauf. Das auslesen klappt soweit, ich bin dann auch Admin oder mitn Geld das wird auch ausgelesen.
    Am Speichern harpert es..


    Liebe Grüße,
    StandbyGamer

    Ja, das kann ich machen.


    Login abfrage wenn es stimmt:



    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"SELECT * FROM accounts WHERE username='%s' AND password=MD5('%s')",name,passwort);
    mysql_function_query(dbhandle,query,true,"OnPasswordResponse","i",playerid);


    und hier ist das Callback OnPasswordResponse



    new num_fields,num_rows,stringlogin[300];
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==1)
    {
    //Passwort richtig || Spieler Laden
    new tmp2[256];
    new string2[128];
    new playername2[MAX_PLAYER_NAME];
    GetPlayerName(playerid, playername2, sizeof(playername2));


    PlayerInfo[playerid][eingeloggt] = 1;
    PlayerInfo[playerid][db_id] = cache_get_field_content_int(0,"id",dbhandle);
    PlayerInfo[playerid][pLevel] = cache_get_field_content_int(0,"level",dbhandle);
    PlayerInfo[playerid][pCash] = cache_get_field_content_int(0,"money",dbhandle);
    PlayerInfo[playerid][pAdmin] = cache_get_field_content_int(0,"alevel",dbhandle);
    PlayerInfo[playerid][pDonateRank] = cache_get_field_content_int(0,"premiumlevel",dbhandle);
    PlayerInfo[playerid][Haus] = cache_get_field_content_int(0,"haus",dbhandle);


    Das lustige ist.. die ID, Benutzername und Passwort werden gespeichert und geladen

    Halli Hallo zusammen,


    als erstes möchte ich die Standard frage weg räumen um euch so viele Informationen zu liefern wie möglich.


    Ich bin von Dini auf MySQL gewechselt, alles schien gut zu sein. Nur werden die Accounts nicht gespeichert.
    Schon mal vorab ein paar Antworten:


    • Ja, ich habe die SuFu benutzt und auch Google jedoch nichts brauchbares gefunden.
    • Ja, ich habe Das Aktuellste MySQL Plugin (R39-2) was wunderbar funktioniert.
    • Ja, es sind keine Fehler im Script.
    • Ja, es wird die Verbindung zur MySQL Datenbank aufgebaut.
    • Ja, es werden die Accounts geladen, das auslesen klappt wunderbar.


    Puh.. So ich habe ein sogenanntes Speichern Callback erstellt das auch aufgerufen wird. Woher ich das weiß das es aufgerufen wird?
    Ich habe es mir in der Console ausprinten lassen. Ich denke der Fehler liegt zum Teil darin.


    Ich habe 2 Varianten benutzt und beide gingen nicht.


    Als erstes habe ich Variante 1 benutzt:



    new query[128];
    format(query,sizeof(query),"UPDATE accounts SET level='%i',money='%i',alevel='%i',premiumlevel='%i',haus='%i',eingemietet='%i' WHERE id='%i'",
    PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pCash],PlayerInfo[playerid][pAdmin],PlayerInfo[playerid][pDonateRank],PlayerInfo[playerid][Haus],PlayerInfo[playerid][eingemietet],PlayerInfo[playerid][db_id]);


    Ich dachte mir, vielleicht hat es ein Problem mit dem UPDATE und speichert deswegen nicht. Darum habe ich es umgeschrieben zu:



    new query[128];
    format(query,sizeof(query),"INSERT INTO accounts (level,money,alevel,premiumlevel,haus,eingemietet) VALUES ('%i','%i','%i','%i','%i')",
    PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pCash],PlayerInfo[playerid][pAdmin],PlayerInfo[playerid][pDonateRank],PlayerInfo[playerid][Haus],PlayerInfo[playerid][eingemietet]);



    Aber auch hier geht nichts, es wird noch immer nicht gespeichert. Mit Pawno kenne ich mich mittlerweile gut aus jedoch nicht mit MySQL :D


    Welches vom beiden oben ist besser und sollte ich zum Speichern verwenden?


    Zu dem beiden habe ich einen Error bekommen der mir erst im nachhinein aufgefallen ist. Auszug aus der mysql_log.txt:


    Code
    [ERROR] cache_get_field_content_int - invalid datatype


    So lese ich es aus was komischerweise immer funktioniert.



    PlayerInfo[playerid][db_id] = cache_get_field_content_int(0,"id",dbhandle);
    PlayerInfo[playerid][pLevel] = cache_get_field_content_int(0,"level",dbhandle);
    PlayerInfo[playerid][pCash] = cache_get_field_content_int(0,"money",dbhandle);
    PlayerInfo[playerid][pAdmin] = cache_get_field_content_int(0,"alevel",dbhandle);
    PlayerInfo[playerid][pDonateRank] = cache_get_field_content_int(0,"premiumlevel",dbhandle);
    PlayerInfo[playerid][Haus] = cache_get_field_content_int(0,"haus",dbhandle);


    Nun bin ich etwas Sprachlos und suche selbst die ganze zeit nach einer Lösung.
    Ich würde echt nicht fragen wenn ich es selbst nicht versucht hätte, ich sitze schon gut 3 Tage daran das hin zu bekommen, jedoch bis langen erfolgslos.


    Freue mich über jede nützliche Antworten und hoffe das wir es irgendwie schaffen. :)


    Mit freundlichen Grüßen,
    StandbyGamer



    #EDIT 1: Auslesung hinzugefügt

    Hallo Hallo,


    ich suche schon seid längeren nach einer Möglichkeit ein bestimmtes Interior zu finden, leider vergebens.


    Ich habe diese Seite gefunden (" zu Interior Webseite ") .
    Dort sind sehr viele Interiors aufgelistet und Interior ID: 122 Large office ist das was ich suche.
    Auf meiner Suche danach fand ich heraus das die ID 122 nicht mit dem Originalen übereinstimmt.
    Man würde dann in ein kleinen Ammunation kommen. Ich habe nur die bilder als anhalt was ich suche.
    Ich müsste die ID und XYZ Koordinaten wissen. Ich bin zuversichtlich das es dieses gibt weil es auch
    Interior ID: 114 House, Luxury, 2 floors, 4 bedrooms, 2 bathrooms, large living room, kitchen, inside balcony gibt.


    Irgendwo müssen diese die ja her haben.


    Hoffe das jemand weiter weiß.


    Mit freundlichen Grüßen,
    StandbyGamer

    Manniac; Vielen Dank, geholfen hat es jedoch wird es wenn sich 2 gleichzeitig einloggen bei einem nicht sichtbar und der Dialog steht ohne TextDraws da.
    D.h. es wird nur bei einem angezeigt und wer langsamer ist da verschwindet es.

    Soo gemacht jedoch habe ich nun unmassen an neuen Fehlern..



    C:\xxx\xxx\xxx\xxx\gamemodes\xxx.pwn(520) : error 033: array must be indexed (variable "newlogin0")
    C:\xxx\xxx\xxx\xxx\gamemodes\xxx.pwn(521) : error 035: argument type mismatch (argument 1)
    usw.. Das geht bis zum max. anzeige 26. Errors


    Ich habe oben im Script nun

    new PlayerText:newlogin0[MAX_PLAYERS];
    new PlayerText:newlogin1[MAX_PLAYERS];
    usw..


    und das alte zu folgendes geändert:



    newlogin0 = CreatePlayerTextDraw(playerid, 269.000000, 134.000000, "_");
    TextDrawAlignment(newlogin0, 2);
    TextDrawBackgroundColor(newlogin0, 255);
    TextDrawFont(newlogin0, 1);
    TextDrawLetterSize(newlogin0, 0.500000, 22.299987);
    TextDrawColor(newlogin0, 30);
    TextDrawSetOutline(newlogin0, 0);
    TextDrawSetProportional(newlogin0, 1);
    TextDrawSetShadow(newlogin0, 1);
    TextDrawUseBox(newlogin0, 1);
    TextDrawBoxColor(newlogin0, 80);
    TextDrawTextSize(newlogin0, 0.000000, 787.000000);

    Danke für deine Antwort


    Ich habe nun
    newlogin0 = TextDrawCreate(269.000000, 134.000000, "_");
    zu
    newlogin0 = CreatePlayerTextDraw(269.000000, 134.000000, "_");
    geändert.


    jedoch bekomme ich nun Errors die vorher nicht da waren.



    C:\xxx\xxx\xxx\xxx\gamemodes\xxx.pwn(519) : warning 213: tag mismatch
    C:\xxx\xxx\xxx\xxx\gamemodes\xxx.pwn(519) : error 035: argument type mismatch (argument 3)
    C:\xxx\xxx\xxx\xxx\gamemodes\xxx.pwn(519) : warning 213: tag mismatch
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


    Mit freundlichen Grüßen,
    StandbyGamer

    Halli Hallo,


    so ganz will mein TextDraw nicht wie ich es will.


    Ich habe beim Server betreten ein Login screen mit TextDraws erstellt.


    Im public OnPlayerConnect habe ich folgendes drin:



    // TextDraw erstellen
    newlogin0 = TextDrawCreate(269.000000, 134.000000, "_");
    TextDrawAlignment(newlogin0, 2);
    TextDrawBackgroundColor(newlogin0, 255);
    TextDrawFont(newlogin0, 1);
    TextDrawLetterSize(newlogin0, 0.500000, 22.299987);
    TextDrawColor(newlogin0, 30);
    TextDrawSetOutline(newlogin0, 0);
    TextDrawSetProportional(newlogin0, 1);
    TextDrawSetShadow(newlogin0, 1);
    TextDrawUseBox(newlogin0, 1);
    TextDrawBoxColor(newlogin0, 80);
    TextDrawTextSize(newlogin0, 0.000000, 787.000000);


    LoginScreen(playerid); // Damit die TextDraws angezeigt werden.


    und noch ein paar mehr.


    Im Script habe ich dann dies stehen:



    // TextDraws angezeigen
    LoginScreen(playerid)
    {
    // INTRO
    TextDrawShowForPlayer(playerid, newlogin0);
    usw..
    return 1;
    }
    // TextDraws verstecken
    IntroHide(playerid)
    {
    // INTRO
    TextDrawHideForPlayer(playerid, newlogin0);
    usw..
    return 1;
    }


    Um dies nun zu verstecken habe ich bei OnPlayerRequestClass ( Wo man spawnt ) direkt darunter dies stehen:


    IntroHide(playerid); // TextDraws verstecken


    Nun ist es so wenn ich selbst drauf verbinde auf dem Server passiert nichts, jedoch wenn ich öfters den Server restarte und drauf verbinde bleiben die TextDraws stehen.
    Das gleiche ist wenn sich 2 Personen gleichzeitig einloggen, dann hat einer von beiden immer die TextDraws. Nach einem relog ist es dann wieder weg.
    Hoffe das jemand ne Lösung weiß.


    Liebe Grüße,
    StandbyGamer

    Also am Befehl würde es nicht liegen ich habe es ja in ocmd geschrieben.
    Alles funktioniert benutze ich den Befehl sehe ich selbst den Skin auch mach ich jedoch ein relog dann sehe ich wieder den CJ Skin. Andere sehen aber den richtigen Skin.



    ocmd:setskin(playerid,params[])
    {
    new pID,pskin;
    if(sscanf(params,"ui",pID,pskin))return SendClientMessage(playerid,FARBE_GELB,"INFO: /setskin [playerid] [skinid]");
    if(pskin>299) return SendClientMessage(playerid,FARBE_ROT,"SYSTEM: Bitte wähle ein Skin von 0 - 299 aus!");
    SetPlayerSkin(pID, pskin);
    sInfo[pID][skin] = GetPlayerSkin(pID);
    savePlayer(pID);
    return 1;
    }

    Halli Hallo,


    ich habe schon rum geschaut und die Suchfunktion benutzt aber bin noch nicht fündig geworden.


    Ich habe das Problem das Ich selbst mein Skin nicht sehe aber die anderen auf dem Server sehen den richtigen.
    Kurz gesagt ich sehe immer den CJ Skin und die anderen sehen mein Skin den ich gesetzt habe.
    Bei den anderen ist das gleiche ich sehe deren Skin aber selbst sehen sie ihren eigenen Skin nicht.


    Weitere Informationen:
    Der Skin wird erfolgreich in die Datenbank gespeichert und auch ausgelesen.
    Nur bin ich mir mit dem auslesen etwas unsicher.


    Das ist ein kleiner ausschnitt wenn ich den Account lade.



    sInfo[playerid][skin] = cache_get_field_content_int(0,"skin",dbhandle);
    SetPlayerSkin(playerid,sInfo[playerid][skin]);


    Jedoch habe ich es ebenfalls drin in public OnPlayerRequestClass(playerid, classid)



    SetSpawnInfo(playerid,0,sInfo[playerid][skin],0,0,0,0,0,0,0,0,0,0);
    SetPlayerSkin(playerid,sInfo[playerid][skin]);


    Ich war mir unsicher ob ich das SetPlayerSkin dranhängen soll oder nicht.
    Da durch habe ich es schon so bekommen wie es jetzt ist, vorher habe ich bei jeden den CJ Skin gesehen und nun funktioniert es zur hälfte.


    Ich hoffe das Ihr mir dabei helfen könnt.


    Mit freundlichen Grüßen,
    StandbyGamer

    Halli Hallo,


    ich hab es jetzt mal so ausprobiert wie es DJ Deagle geschrieben hat. Leider Funktioniert das nicht..


    if(dialogid==MEIN_DIALOG)
    {
    if(response)
    {
    switch(listitem)
    {
    case 0: // Registration
    {
    if(strlen(inputtext)>4)
    {
    //Hier ist die 1. Registrierungsfunktion (Passwort)

    }
    else
    {
    //Kleiner als 4 Zeichen
    SendClientMessage(playerid,FARBE_ROT,"Dein Passwort muss mindestens 5 Zeichen lang sein.");
    //Hier wird die 1. Registrierungsfunktion wiederholt
    }
    }
    case 1:
    {
    if(strlen(inputtext)>3)
    {
    // Hier ist die 2. Registrierungsfunktion (Sicherheitscode)
    }
    else
    {
    //Kleiner als 4 Zeichen
    SendClientMessage(playerid,FARBE_ROT,"Dein Sicherheitscode muss mindestens 4 Zeichen lang sein.");
    }
    }
    }
    }
    else
    {
    SendClientMessage(playerid,FARBE_ROT,"Du hast die Registration abgebrochen und bist somit gekickt worden!");
    }
    }


    Nun geht nicht mehr die abfrage ob das Passwort zu Kurz ist. Diese ging vorher.


    Würde gern als erstes den Passwort Dialog anzeigen lassen, dann den SCode Dialog und dann weitere.
    Nur scheitere ich sichtlich daran :/

    Halli Hallo liebe Community,


    Kurz und bündig werde ich nun zum Thema kommen.
    Ich habe ein Registersystem wo man sein Passwort eingeben muss und danach möchte ich gern das noch weitere Dialoge kommen wie zb. Geschlecht, Alter etc. Also ich möchte mehrere Dialoge hintereinander.


    Ich habe mir schon seid gestern Abend den Kopf zerbrochen und gegooglet wie ein verrückter.


    Nur leider finde ich sowas immer doof wenn sie öffentlich fragen und dann alles per PN machen und nicht mal die Lösung hinschreiben.
    So wie hier... -> Frage bzg Dialoge?


    Würde mich freuen wenn Ihr mir weiterhelfen könntest.



    Liebe Grüße,
    StandbyGamer