[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


  • Machs so:

    ocmd:ban(playerid,params[])


    {


    if(!isPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,Rot,"Du bist kein Admin!");


    new pID, reason[128],string1[128],string2[128];


    new Name[MAX_PLAYER_NAME];


    GetPlayerName(playerid,Name,sizeof(Name));


    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,Weiss,"/ban [ID] [Grund]");


    format(string1,sizeof(string1),"AdmCmd: %s wurde von %s gebannt. Grund: %s",SpielerName(pID),SpielerName(playerid),reason);


    format(string2,sizeof(string2),"Du wurdest vom Admin [%s] gebannt. Grund: %s",SpielerName(playerid),reason);


    SendClientMessageToAll(Rot,string1);


    SendClientMessage(pID,Rot,string2);


    SpielerInfo[pID][pBanned] = 1;


    format(SpielerInfo[pID][pBanAdmin], 128, "%s", SpielerName(playerid));
    format(SpielerInfo[pID][pBanGrund], 128, "%s", reason);


    Kick(pID);


    TogglePlayerControllable(pID,0);


    return 1;


    }

  • Hallo. Ich möchte das Jede Fraktion Natürlich Anders Spawnd.


    Bisheer Habe ich es so gemacht:


    public OnPlayerSpawn(playerid)
    {
    if(GetPVarInt(playerid,"Fraktion")==1)
    SetPlayerPos(playerid, 2495.2605,-1703.7449,1018.3438);
    return 1;
    }


    Hoffe ma das Es richtig ist, Zeigt Zummindest keine Error's o.a


    Nur wie Füge ich jetz weitere hinzu habe es so versucht:


    public OnPlayerSpawn(playerid)
    {
    if(GetPVarInt(playerid,"Fraktion")==1)
    SetPlayerPos(playerid, 2495.2605,-1703.7449,1018.3438);
    }
    else
    {
    if(GetPVarInt(playerid,"Fraktion")==2)
    SetPlayerPos(playerid, 2495.2605,-1703.7449,1018.3438);
    }
    return 1;
    }


    mfg feni12


  • public OnPlayerSpawn(playerid)
    {
    if(GetPVarInt(playerid,"Fraktion")==1)
    SetPlayerPos(playerid, 2495.2605,-1703.7449,1018.3438);
    }
    else if(GetPVarInt(playerid,"Fraktion")==2)
    {
    SetPlayerPos(playerid, 2495.2605,-1703.7449,1018.3438);
    }
    return 1;
    }

    graphics frontend web


  • Das ist ein Klammerfehler ^^


    Schreibe es so:


    public OnPlayerSpawn(playerid)
    {
    switch(GetPVarInt(playerid,"Fraktion")) {
    case 1: SetPlayerPos(playerid, 2495.2605,-1703.7449,1018.3438);
    case 2: SetPlayerPos(playerid, 2495.2605,-1703.7449,1018.3438);
    }
    return 1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Kann man irgendwie die Standard Schriftfarbe der Dialoge die ja normalerweise leicht blau-grau sind ändern? klar kann ich vor jedem Text {MEINEFARBE} setzen aber ich dachte eher an etwas wie bei css wo man Global Farben definieren kann und nicht für jeden Satz?


    Mfg Zyan

  • Kann man irgendwie die Standard Schriftfarbe der Dialoge die ja normalerweise leicht blau-grau sind ändern? klar kann ich vor jedem Text {MEINEFARBE} setzen aber ich dachte eher an etwas wie bei css wo man Global Farben definieren kann und nicht für jeden Satz?


    Mfg Zyan


    Nein, nur wenn du es so machst ^^



    #define ShowPlayerColorDialog(%0,%1,%2,%3,%4,%5,%6,%7) ShowPlayerDialog(%0,%1,%2,%4,"{"%3"}"%5,%6,%7)
    /*
    Funktionsweise:
    %0 = playerid
    %1 = dialogid
    %2 = dialog_type
    %3 = Farbe (string)
    %4 = headline
    %5 = text
    %6 = Button 1
    %7 = Button 2
    */
    Ist aber ungetestet!!!


    Edit:


    Hier ist auch ein stock:



    stock ShowPlayerColorDialog(playerid,dialogid,dialogtype,color[],headline[],text[],b1[],b2[]) // made by NicoAiko
    {
    if(dialogtype > 3 || dialogtype < 0) return SendClientMessage(playerid,0xFF0000FF,"Warning: dialogtype is lower than 0 or higher than 3! Contact Administrator!");
    new clen = strlen(color);
    if(color[0] == '{' || color[clen-1] == '}' || clen != 6) return SendClientMessage(playerid,0xFF0000FF,"Warning: color[] length is not 6 or has a { or } Contact Administrator!");
    new string[128];
    format(string,sizeof(string),"{%s}%s",color,text);
    ShowPlayerDialog(playerid,dialogid,dialogtype,headline,string,b1,b2);
    return 1;
    }


    Auch ungetestet!

  • Kann man irgendwie die Standard Schriftfarbe der Dialoge die ja normalerweise leicht blau-grau sind ändern? klar kann ich vor jedem Text {MEINEFARBE} setzen aber ich dachte eher an etwas wie bei css wo man Global Farben definieren kann und nicht für jeden Satz?


    Mfg Zyan


    #define COL_FARBE "{CSS Farbcode}"

  • Wie bekomme ich keine Nachricht wenn ich Gebannt bin und auf den Server Connecte? da steht dann nur Server closed the Connection-


    Spoiler anzeigen
    public OnPlayerConnect(playerid)
    {
    if(!IsPlayerNPC(playerid))
    {
    if(mysql_AccountChecken(playerid) == 1)
    {
    new timestamp = gettime();
    new bisgebannt = mysql_GetInt("accounts","TimeBan","Name",SpielerName(playerid));
    if(timestamp > bisgebannt)
    {
    if(mysql_GetInt("accounts","Banned","Name",SpielerName(playerid)) == 2)
    {
    mysql_SetInt("accounts","TimeBan",0,"Name",SpielerName(playerid));
    mysql_SetInt("accounts","Banned",0,"Name",SpielerName(playerid));
    }
    else
    {
    new Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Name,sizeof(Name));
    GetPlayerName(playerid,SpielerInfo[playerid][pName],MAX_PLAYER_NAME);
    SpielerInfo[playerid][pBanned] = mysql_GetInt("accounts","Banned","Name",SpielerInfo[playerid][pName]);
    if(SpielerInfo[playerid][pBanned] != 0)
    {
    new outputstring[128], outputstring2[128], string[128], string2[128], string3[128], tsstring[128], hpstring[128], artstring[128], artname[10];
    switch(SpielerInfo[playerid][pBanned])
    {
    case 1:{artname="Permanent";}
    case 2:{artname="Temporär";}
    }
    outputstring = mysql_GetString("accounts","Banner","Name",SpielerName(playerid));
    outputstring2 = mysql_GetString("accounts","Grund","Name",SpielerName(playerid));
    format(string,sizeof(string),"Dein Account wurde auf unserem Server %s gebannt.",artname);
    SendClientMessage(playerid,Rot,string);
    format(string2,sizeof(string2), "Ausführender Admin: %s", outputstring);
    SendClientMessage(playerid,Rot,string2);
    format(artstring,sizeof(artstring),"Bannart: %s",artname);
    SendClientMessage(playerid,Rot,artstring);
    format(string2,sizeof(string2),"Grund: %s", outputstring2);
    SendClientMessage(playerid,Rot,string3);
    format(hpstring,sizeof(hpstring),"Falls du Einwände oder Fragen hast, melde dich im Forum: %s",SERVER_HOMEPAGE);
    SendClientMessage(playerid,Rot,hpstring);
    format(tsstring,sizeof(tsstring),"oder im Teamspeak: %s",SERVER_TEAMSPEAK);
    SendClientMessage(playerid,Rot,tsstring);
    Kick(playerid);
    return 1;
    }
    }
    }
    if(timestamp < bisgebannt)
    {
    new Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Name,sizeof(Name));
    GetPlayerName(playerid, SpielerInfo[playerid][pName],MAX_PLAYER_NAME);
    SpielerInfo[playerid][pBanned] = mysql_GetInt("accounts","Banned","Name",SpielerInfo[playerid][pName]);
    if(SpielerInfo[playerid][pBanned] != 0)
    {
    new outputstring[128], outputstring2[128], string[128], string2[128], string3[128], tsstring[128], hpstring[128], artstring[128], artname[10];
    switch(SpielerInfo[playerid][pBanned])
    {
    case 1:{artname="Permanent";}
    case 2:{artname="Temporär";}
    }
    outputstring = mysql_GetString("accounts","Banner","Name",SpielerName(playerid));
    outputstring2 = mysql_GetString("accounts","Grund","Name",SpielerName(playerid));
    format(string,sizeof(string),"Dein Account wurde auf unserem Server %s gebannt.",artname);
    SendClientMessage(playerid,Rot,string);
    format(string2,sizeof(string2),"Ausführender Admin: %s", outputstring);
    SendClientMessage(playerid,Rot,string2);
    format(artstring,sizeof(artstring), "Bannart: %s", artname);
    SendClientMessage(playerid,Rot,artstring);
    format(string2,sizeof(string3),"Grund: %s", outputstring2);
    SendClientMessage(playerid,Rot,string3);
    format(hpstring,sizeof(hpstring),"Falls du Einwände oder Fragen hast, melde dich im Forum: %s",SERVER_HOMEPAGE);
    SendClientMessage(playerid,Rot,hpstring);
    format(tsstring,sizeof(tsstring),"oder im Teamspeak: %s",SERVER_TEAMSPEAK);
    SendClientMessage(playerid,Rot,tsstring);
    Kick(playerid);
    return 1;
    }
    }
    }
    }
    SetPlayerColor(playerid,Weiss);
    if(IsPlayerNPC(playerid))return 1;
    new string[128];
    if(mysql_AccountChecken(playerid) == 1)
    {
    format(string,sizeof(string),"Willkommen zurück %s, deine Account Daten wurden in unserer Datenbank gefunden.",SpielerName(playerid));
    SendClientMessage(playerid,Hellblau,string);
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login","{FFFFFF}Gib Bitte dein Passwort ein, und drücke auf {FF0011}Einloggen\n{FFFFFF}um dich mit deinem Account einzuloggen.","Einloggen","Abbrechen");
    }
    else if(mysql_AccountChecken(playerid) == 0)
    {
    new regeln[900] = "\
    {FF0000} ===============***Die Goldenen Regeln***===============\n\n\
    {FFFFFF}1.Regel{FF0011} Das Cheaten sowie Modifikationen die Ihnen vorteil gegenüber anderen geben sind Verboten!\n\n\
    {FFFFFF}2.Regel{FF0011} Flamen, Beleidigen oder Respektlosigkeit gegenüber anderen Usern ist Verboten!\n\n";
    strcat(regeln, "\
    {FFFFFF}3.Regel{FF0011} Sexuelle Sprache im Chat wie zB. Pussy, Penis o.ä sind im Chat zu unterlassen!\n\n\
    {FFFFFF}4.Regel{FF0011} Behandle andere User/Admins so, wie du von Ihnen behandelt werden möchtest!\n\n\
    {FFFFFF}5.Regel{FF0011} Spiele Fair, habe Spaß und Bitte unterlasse es, andere zu Belästigen oder sonstiges!\n\n\
    {64AFFA}Hast du dir die Regeln gründlich durchgelesen? Dann bestätige sie indem du auf {FF0011}Akzeptieren{64AFFA} klickst.");
    ShowPlayerDialog(playerid,DIALOG_REGELN,DIALOG_STYLE_MSGBOX,"{FF0000}Server Regeln",regeln,"Akzeptieren","Ablehnen");
    }
    return 1;
    }

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

    – Noël Coward

  • Ich nehme an du willst das weitere Informationen anstatt des Server closed Connection erscheinen? (habe das keine Nachricht mal als ein k zu viel gedeutet.) Wird über das normale bannen wohl nicht möglich sein du könntest höchstens einen wert speichern wenn du den Spieler "bannst" diesen abfragen wenn er connectet und wenn der wert auf gebannter User steht ihm deine Informationen ausgeben und ihn daraufhin kicken oder richtig mit Ban Funktion bannen wobei er bei letzterem nur beim ersten mal connecten noch deine Informationen zu Gesicht bekommt


    Sry falls ich dich völlig falsch verstanden habe ich bin noch lernender auf mysql Gebiet.



    Ich habe auch noch mal eine Frage und zwar wüsste ich gerne was folgende Zeile genau macht speziell der scanf Teil die "s" stehen für strings nur da hörts bei mir leider schon auf was genau bewirkt "p" z.B.?


    new string[128];
    format(string,sizeof(string),"SELECT * FROM `user` WHERE `Name` = '%s'",spieler_name[playerid]);
    mysql_query(string);
    mysql_store_result(); new resultline[256];
    if(mysql_fetch_row_format(resultline)) {
    sscanf(resultline,"p<|>ss",PlayerInfo[playerid][pName],PlayerInfo[playerid][pPassword]); //Nun haben wir Name und Pw ausgelesen
    }


    Mfg Zyan

    Einmal editiert, zuletzt von Zyankali ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Komme einfach nicht weiter - hab diesen Codeschnipsel bekommen für ein Kick Befehl, in dem ausgelesen wird ob der Spieler Admin ist (MySQL)
    Nur bekomme ich immer wieder Errors.


    Befehl:
    ocmd:kick(playerid,params[])
    {
    if(SpielerInfo[playerid][pAdmin] >= 1)
    {
    new pID, reason[128],string[128];
    if(sscanf(params,"us",pID,reason))
    return
    SendClientMessage(playerid,COLOR_RED,"/kick [id] [grund]")
    format(string,sizeof(string),"AdmCmd: %s wurde von %s gekickt. Grund: %s",SpielerName(pID),SpielerName(playerid),reason);
    SendClientMessageToAll(COLOR_RED,string);
    Kick(pID);
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Du bist kein Administrator!");
    }
    return 1;
    }


    Errors:

    [tabmenu][tab='Angebote',http://images-1.findicons.com/files/icons/1722/gnome_2_18_icon_theme/48/stock_new_meeting.png][subtab='CMS und Forumsystem',http://icons.iconarchive.com/icons/uribaani/realm/128/Control-panel-icon.png]Installationen & Forumlösung - Forumthread

  • Leider nicht, die Errors bleiben bestehen..

    [tabmenu][tab='Angebote',http://images-1.findicons.com/files/icons/1722/gnome_2_18_icon_theme/48/stock_new_meeting.png][subtab='CMS und Forumsystem',http://icons.iconarchive.com/icons/uribaani/realm/128/Control-panel-icon.png]Installationen & Forumlösung - Forumthread

  • Simple Frage, stehe wahrscheinlich gerade aufm Schlauch:



    new vTotal; // oben im Script


    public _OnMySQLVehicleDataSave(playerid)
    {
    ...
    vTotal = wert;
    ...


    Ich kann vTotal nun nicht in einem anderen Callback verwenden (spuckt immer 0 aus).. Wie löse ich das am Besten ?

  • Ich habe ein Problem
    Bei meinen kleinen System hier, wird mir bei den Einbau nichts ausgegeben
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    new johnson[128];
    if(dialogid == DialogTuning && response)
    {
    new id = GetTuningDBID(listitem), kosten = GetTuningPreisDBID(listitem);
    SetPVarInt(playerid,"Tuningiddd",id);
    SetPVarInt(playerid,"Tuningkosteen",kosten);
    format(johnson,128,"Möchtest du das Tuningteil %s für %d$ wirklich einbauen?",GetTuningName(id),kosten);
    ShowPlayerDialog(playerid,DialogTuningOk,DIALOG_STYLE_MSGBOX,"Tuning System",johnson,"Ja","Nein");
    return 1;
    }
    if(dialogid == DialogTuning)
    {
    if(!response)
    return DeletePVar(playerid,"Tuningiddd"), DeletePVar(playerid,"Tuningkosteen");
    if(GetPlayerMoney(playerid) < GetPVarInt(playerid,"Tuningkosteen"))
    return SendClientMessage(playerid,-1,"Dein Geld reicht nicht aus!"), DeletePVar(playerid,"Tuningiddd"), DeletePVar(playerid,"Tuningkosteen");
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
    return SendClientMessage(playerid,-1,"Das Ausgewählte Teil passt nicht zu den Wagen!"), DeletePVar(playerid,"Tuningiddd"), DeletePVar(playerid,"Tuningkosteen");
    if(!PasstDasTuning(GetPVarInt(playerid,"Tuningiddd"),GetPlayerVehicleID(playerid)))
    return SendClientMessage(playerid,-1,"Du musst Fahrer eines Wagens sein!"), DeletePVar(playerid,"Tuningiddd"), DeletePVar(playerid,"Tuningkosteen");
    AddVehicleComponent(GetPlayerVehicleID(playerid), GetPVarInt(playerid,"Tuningiddd"));
    GivePlayerMoney(playerid,-GetPVarInt(playerid,"Tuningkosteen"));
    format(johnson,128,"Du hast das Teil %s erfolgreich für %d$ Montiert",GetTuningName(GetPVarInt(playerid,"Tuningiddd")),GetPVarInt(playerid,"Tuningkosteen"));
    SendClientMessage(playerid,-1,johnson);
    DeletePVar(playerid,"Tuningiddd");
    DeletePVar(playerid,"Tuningkosteen");
    return 1;
    }
    return 1;
    }
    Die Id und der Preis passt ohne Probleme nur sobald er zu den Punkt kommt:
    AddVehicleComponent(GetPlayerVehicleID(playerid), GetPVarInt(playerid,"Tuningiddd"));
    macht er nichts er sendet mir danach nix und wenn ich das debugge hört er da auf
    wiso?

    All in all it's just another brick in the wall

  • Warum kommt in dieser Zeile.

    if(IsPlayerConnected(inputtext) || IsNumeric(inputtext))
    dießer Error?

    Code
    xxxxxx.pwn(416) : error 035: argument type mismatch (argument 1)


    Ich weiß zwar was dieser Error bedeuted, aber ich weiß nicht was da jzt falsch ist ;o

  • Warum sollte sie keinen Sinn machen? ;o
    Ich frage ab ob die Spielerid die man eingibt online ist, was ist daran falsch?


    und ob der Eingabetext auch eine Zahl ist.


    Sobald es eine playerid ist, die online ist, weißt du, dass in dem Text eine Zahl stand ;)

    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