[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
  • @Pinguin: Dein CreateDynamicObject Code stimmt, jetzt musst du die Include Datei im Script eingebunden haben #include <streamer> und du musst das Streamer Plugin im plugins Ordner haben sowie es in der server.cfg eingetragen haben: Bei Linux streamer.so, bei Windows streamer.
    Bevor du das alles machst update nochmal deinen Streamer und um sicher zu gehen dass du wirklich in VirtualWorld 1 bist schreib dir nen Befehl der die aktuelle virtuelle Welt ausgibt ;)

  • Es weiß nicht zufällig einer, ob es möglich ist, einen Integer zu einer hexadezimalen Zahl zu konvertieren?
    Auf normalem Wege ist es ja leider nicht möglich, da die Zahl für einen Integer zu groß ist.


    Ich habe es bisher so versucht, aber ohne Erfolg (Die Zahl für FF0088:(
    (16711816 * 256) + 255
    (16711816 * 0x100) + 0xFF


    Ich habe danach noch einiges mit Sscanf versucht und mit diesem Code, jedoch ging nichts davon.

  • 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

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • @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)

  • 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?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen