[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
  • Aber ich möchte ja nicht, dass es zu einem String wird. Ich möchte diese Zahl in meinem Fall zB als Farbe für SendClientMessage verwenden.


    Edit:
    Danke für die Antwort - mir ist ganz entfallen, dass ich einfach {FARBCODE} vor die Zeichenkette schreiben kann.

  • Kann wer helfen warum ich den Decknamen nicht
    auslesen kann bzw Setzen kann ?


    Ich lade es mit:
    cache_get_field_content(0,"Deckname",Spieler[playerid][pDeckname]);


    Der Befehl dazu:
    COMMAND:setdeckname(playerid,params[])
    {
    if(ImTutorial[playerid] != 0)return SendClientMessage(playerid,GRAU,"Du kannst keine Befehle nutzen,da du im Tutorial bist.");
    if(GetPVarInt(playerid,"Eingeloggt") == 0)return SendClientMessage(playerid,GRAU,"Du bist nicht eingeloggt!");
    if(Spieler[playerid][pAWAYFROMKEYBOARD] == 1)return SendClientMessage(playerid,WRONGCMD,"Du bist im AFK-Modus und kannst somit keine Befehle nutzen."),SendClientMessage(playerid,WRONGCMD,"BENUTZE: /back");
    new pID,deckname[MAX_PLAYER_NAME],query[256];
    if(!isPlayerInFrakt(playerid,19))return SendClientMessage(playerid,GRAU,"Du bist nicht in der jeweiligen Fraktion.");
    if(!isPlayerAMember(playerid,6))return SendClientMessage(playerid,GRAU,"Du besitzt nicht den jeweiligen Rang.");
    if(sscanf(params,"us[24]",pID,deckname))return SendClientMessage(playerid,WRONGCMD,"BENUTZE: /setdeckname [playerid/Name][Neuername]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,GRAU,"Der angegebene Spieler ist nicht eingeloggt!");
    if(GetPVarInt(pID,"Eingeloggt") == 0)return SendClientMessage(playerid,GRAU,"Der angegebene Spieler ist nicht eingeloggt!");
    if(IsPlayerNPC(pID))return SendClientMessage(playerid,GRAU,"Das kannst du nicht!");
    if(!strcmp(deckname,Spieler[pID][pDeckname],true))return SendClientMessage(playerid,GRAU,"Spieler hat bereits den selben Decknamen!");
    mysql_format(MySqlConnection,query,sizeof(query),"SELECT * FROM "#SQLTAG"_account_main WHERE Deckname = '%s'",deckname);
    mysql_function_query(MySqlConnection,query,true,"OnQueryFinish2","ssiiii",query,deckname,_SQL_SETDECKNAME_QUERY,playerid,pID,MySqlConnection);
    return 1;
    }



    case _SQL_SETDECKNAME_QUERY:
    {
    cache_get_data(rows,fields);
    if(rows)
    {
    SendClientMessage(extraid,GRAU,"Name wir schon verwendet.");
    return 1;
    }
    mysql_format(MySqlConnection,query,sizeof(query),"UPDATE "#SQLTAG"_account_main SET Deckname='%s' WHERE Deckname='%s'",index2,Spieler[extraid2][pDeckname]);
    mysql_function_query(MySqlConnection,query,false,"","");
    mysql_format(MySqlConnection,query,sizeof(query),"Du hast den Decknamen von %s zu %s umbenannt!",Spieler[extraid2][pDeckname],index2);
    SendClientMessage(extraid,GELB,query);
    mysql_format(MySqlConnection,query,sizeof(query),"AdminBefehl: Der Admin %s (ID:%i) hat deinen Decknamen in %s umgeändert. Dein Account wurde geupdatet!",Spieler[extraid][pDeckname],extraid,index2);
    SendClientMessage(extraid2,GELB,query);
    return 1;
    }


    Kann leider keine Threads eröffnen...

  • @tayson87:
    1. return SendClientMessage(playerid,0xFAF0CEFF,"Du kannst keine Befehle nutzen,da du im Tutorial bist.");
    kann man nicht machen, entweder erst SendClientMessage(...) und danach der return oder nur SendClientMessage(...) und ne richtige Programmordnung ^^
    2. return SendClientMessage(playerid,WRONGCMD,"Du bist im AFK-Modus und kannst somit keine Befehle nutzen."),SendClientMessage(playerid,WRONGCMD,"BENUTZE: /back"); geht auch nicht, statt Komma musst du ein Semikolon setzten, also
    if(Spieler[playerid][pAWAYFROMKEYBOARD] == 1) {
    SendClientMessage(playerid,WRONGCMD,"Du bist im AFK-Modus und kannst somit keine Befehle nutzen.");
    SendClientMessage(playerid,WRONGCMD,"BENUTZE: /back");
    return 1;
    }
    Keine Angst vor geschweiften Klammern ;)

  • Alf das geht Problemlos, achte mal darauf was mein eigentliches Problem ist. Mein Problem liegt daran, dass das Deckname nicht funktioniert. Ich kann keinen Decknamen setzen. Es kommt immer wieder "Spieler hat bereits den selben Decknamen!"

  • @tayson87


    Du musst die Abfrage so schreiben:


    if(!strcmp(deckname,Spieler[pID][pDeckname]) && Spieler[pID][pDeckname][0] != EOS)return SendClientMessage(playerid,GRAU,"Spieler hat bereits den selben Decknamen!");


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • @Kaliber danke funktioniert jedoch hab ich ein Problem undzwar wenn ich dann SetPlayerName(playerid,Spieler[playerid][pDeckname]); mache funktioniert es nicht und der server stürzt ab


    zb der Befehl: /Setdeckname gibt einen anderne namen ein der gespeichert werden soll. und wenn ich dann den namen abrufen will mit SetPlayerName(playerid,Spieler[playerid][pDeckname]); stürzt der server ab

  • Musst auch prüfen ob der String nicht leer ist...


    Anscheinend tritt da irgendein Fehler beim speichern auf..


    Mal ein bisschen print-Debug betreiben und Fehler suchen ^^

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Leute wieso wird mir ingame keine Sirene als Texdraw angezeigt ?
    Ich lass den Textdraw anzeigen wenn man in einen Wagen steigt, hab ich irgendwas vergessen?



    TextCC[playerid] = CreatePlayerTextDraw(playerid, 581.500000, 387.277770, "hud:radar_police");
    PlayerTextDrawLetterSize(playerid, TextCC[playerid], 0.000000, 1.895678);
    PlayerTextDrawTextSize(playerid, TextCC[playerid], 561.500000, 0.000000);
    PlayerTextDrawAlignment(playerid, TextCC[playerid], 1);
    PlayerTextDrawColor(playerid, TextCC[playerid], 1);
    PlayerTextDrawSetShadow(playerid, TextCC[playerid], 0);
    PlayerTextDrawSetOutline(playerid, TextCC[playerid], 0);
    PlayerTextDrawFont(playerid, TextCC[playerid], 4);
    PlayerTextDrawSetSelectable(playerid, TextCC[playerid], true);



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Da ist der Code doch :D?
    das einzige was ich nicht gepostet habe ist unter onplayerstatechange

    if(newstate == PLAYER_STATE_DRIVER) {
    new string [60];
    PlayerTextDrawShow(playerid, Tacho1[playerid]);
    PlayerTextDrawShow(playerid, Tacho2[playerid]);
    PlayerTextDrawShow(playerid, Tacho3[playerid]);
    PlayerTextDrawShow(playerid, CarFahrzeug[playerid]);
    PlayerTextDrawShow(playerid, CarTankart[playerid]);
    PlayerTextDrawShow(playerid, CarSpeed[playerid]);
    PlayerTextDrawShow(playerid, CarKmh[playerid]);
    PlayerTextDrawShow(playerid, MotorIMG[playerid]);
    PlayerTextDrawShow(playerid, TextCC[playerid]); }



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Moin.
    Ich hab ein Problem, undzwar hab ich bei OnDialogResponse etwas gescriptet, doch bekomme tonnnweiße Errors...
    Code:

    case 1501:
    {
    if(!response)
    {
    SendClientMessage(playerid,COLOR_RED,"{33CCFF}Uwe {FFFFFF}Mhm, Aufwiedersehen!");
    return 1;
    }

    switch(listitem)
    {
    case 0:
    {
    if(GetPlayerMoney(playerid) < 0) return SendClientMessage(playerid,COLOR_RED,"{33CCFF}Uwe {FFFFFF}Du hast nicht genügend Geld!");
    SetPlayerFightingStyle (playerid, FIGHT_STYLE_NORMAL);
    SendClientMessage(playerid,COLOR_RED,"{33CCFF}Uwe {FFFFFF}Dein Kampfstyle wurde nun in 'Normal' geändert!");
    }
    case 1;
    {
    if(GetPlayerMoney(playerid) < 50000) return SendClientMessage(playerid,COLOR_RED,"{33CCFF}Uwe {FFFFFF}Du hast nicht genügend Geld!");
    SetPlayerFightingStyle (playerid, FIGHT_STYLE_BOXING);
    SendClientMessage(playerid,COLOR_RED,"{33CCFF}Uwe {FFFFFF}Dein Kampfstyle wurde nun in 'Boxing' geändert!");
    }
    case 3;
    {
    if(GetPlayerMoney(playerid) < 75000) return SendClientMessage(playerid,COLOR_RED,"{33CCFF}Uwe {FFFFFF}Du hast nicht genügend Geld!");
    SetPlayerFightingStyle (playerid, FIGHT_STYLE_KUNGFU);
    SendClientMessage(playerid,COLOR_RED,"{33CCFF}Uwe {FFFFFF}Dein Kampfstyle wurde nun in 'KungFu' geändert!");
    }
    case 4;
    {
    if(GetPlayerMoney(playerid) < 100000) return SendClientMessage(playerid,COLOR_RED,"{33CCFF}Uwe {FFFFFF}Du hast nicht genügend Geld!");
    SetPlayerFightingStyle (playerid, FIGHT_STYLE_KNEEHEAD);
    SendClientMessage(playerid,COLOR_RED,"{33CCFF}Uwe {FFFFFF}Dein Kampfstyle wurde nun in 'Kneehead' geändert!");
    }
    case 5;
    {
    if(GetPlayerMoney(playerid) < 100000) return SendClientMessage(playerid,COLOR_RED,"{33CCFF}Uwe {FFFFFF}Du hast nicht genügend Geld!");
    SetPlayerFightingStyle (playerid, FIGHT_STYLE_GRABKICK);
    SendClientMessage(playerid,COLOR_RED,"{33CCFF}Uwe {FFFFFF}Dein Kampfstyle wurde nun in 'Grabkick' geändert!");
    }
    case 6;
    {
    if(GetPlayerMoney(playerid) < 125000) return SendClientMessage(playerid,COLOR_RED,"{33CCFF}Uwe {FFFFFF}Du hast nicht genügend Geld!");
    SetPlayerFightingStyle (playerid, FIGHT_STYLE_ELBOW);
    SendClientMessage(playerid,COLOR_RED,"{33CCFF}Uwe {FFFFFF}Dein Kampfstyle wurde nun in 'Elbow' geändert!");
    }
    }
    }


    Dazugehöriger Dialog:

    format(string1, sizeof(string1),"Uwe: Bitte wähle eine Aktion!");
    format(string2, sizeof(string2),"1. Kampfstyle 'Normal'\t\t\tKosten: 0$\n\2. Kampfstyle 'Boxing'\t\t\tKosten: 50.000$\n\3. Kampfstyle 'KungFu'\t\t\tKosten: 75.000$\n\4. Kampfstyle 'Kneehead'\t\t\tKosten: 100.000$\n\5. Kampfstyle 'Grabkick'\t\t\tKosten: 100.000$\n\6. Kampfstyle 'Elbow'\t\t\tKosten: 125.000$");
    ShowPlayerDialog(playerid,1501,DIALOG_STYLE_LIST,string1,string2,"Wählen","Schließen");

  • @ENEF Hab die Errors gefunden, hatte "case (Nr);" geschrieben, statt dem ";" musste ein ":" hin... xd


    Nun hab ich ein anderes Problem.
    Undzwar hab ich jetzt mein OnDialogResponse Code nun so:


    Dialog:

    Code
    ShowPlayerDialog(playerid, DIALOG_SPEAK, DIALOG_STYLE_LIST, "Uwe: Bitte wähle eine Aktion!","1. Kampfstyle 'Normal'\t\t\tKosten: 0$\n2. Kampfstyle 'Boxing'\t\t\tKosten: 50.000$\n3. Kampfstyle 'KungFu'\t\t\tKosten: 75.000$\n4. Kampfstyle 'Kneehead'\t\tKosten: 100.000$\n5. Kampfstyle 'Grabkick'\t\tKosten: 100.000$\n6. Kampfstyle 'Elbow'\t\t\tKosten: 125.000$", "Wählen", "Schließen");

    Ich bekomme keine Erorrs, garnichts..


    Jedoch wenn ich dann Ingame, auf "3. Kampfstyle 'KungFu'" klicke, dann passiert garnichts, wenn ich dann auf "4. Kampfstyle 'Kneehead'" drücke, dann gibt er mir den Text von KungFu raus, und halt den Style, das ganze ist irgendwie etwas verschoben, jedoch finde ich im Code mein Fehler nicht...
    jemand ne idee?

  • Es funktioniert jetzt allerding wenn ich dann den Namen ersetzen will
    mit SetPlayerName(playerid,Spieler[playerid][pDeckname]); Dann liest er
    das nicht ab. Aber in der Datenbank steht dann der Decknamen ganz
    normal es speichert auch ganz normal ab..
    Nur könntes einer mir sagen wie ich des hinbekäme das er den Decknamen abliest ?