[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


  • public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp(cmdtext, "/dein command", true) == 0))
    {
    ShowPlayerDialog(playerid, Commandsdialogue, DIALOG_STYLE_LIST, "Commands", "type in /kill to kill yourself", "Next", "Close");
    return 1;
    }
    return 0;
    }


    Wie wechsel ich den Noob Spawn hab den neuen Spawn schon gemappt und nun wollt ich das alle neuen spieler dort spawnen wie geht das?


    Benutze SetPlayerPos(playerid,X,Y,Z); Um den Spieler an die Position zu setzen.
    Wenn du einen GF benutzt, musst du das (glaube ich) unter OnPlayerSpawn machen, dort wo abgefragt wird in welches Land der Spieler gehört.





    Mach das Array größer.
    Beispiel:

    new Text[256];

    PAWNit gratis nutzen?
    Geschenkcode: 2017VQXPKB8V3KA

    Hier könnte Ihre Werbung stehen.

  • hi,
    wenn ich den Befehl eingebe, kommt ene Felhermeldung:


    error 029: invalid expression, assumed zero


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    //killcommand
    if (strcmp("/kill", cmdtext, true) == 0)
    {
    SetPlayerHealth(playerid,0.0);
    SendClientMessage(playerid, 0xAA3333AA, "Suicide is no solution, Pussy!");


    return 1;
    }


    ==> if (strcmp(cmdtext, "/cmd", true) == 0))
    {
    ShowPlayerDialog(playerid, Commandsdialogue, DIALOG_STYLE_LIST, "Commands", "type in /kill to kill yourself", "Next", "Close");
    return 1;
    }


    return 0;



    }


    //EDIT
    ==> auf diese Zeile bezogen.

  • hi,
    ich glaub ich werde langsam völlig Banane 8|
    Wieder 1 Error, jedoch werden im Compiler nur warnings angezeigt!?
    Was ist den an diesem Code falsch?
    Bin schon am verzweifeln ?(
    Und sorry wegen dem falschen Codepost ^^



    public OnPlayerCommandText(playerid, cmdtext[])
    {
    //killcommand
    if (strcmp("/kill", cmdtext, true) == 0)
    {
    SetPlayerHealth(playerid,0.0);
    SendClientMessage(playerid, 0xAA3333AA, "Suicide is no solution, Pussy!");


    return 1;
    }


    if (strcmp("/cmd", cmdtext, true) == 0)
    {
    ShowPlayerDialog(playerid, Commandsdialogue, DIALOG_STYLE_LIST, "Commands", "type in /kill to kill yourself", "Next", "Close");
    return 1;
    }


    return 0;



    }

  • [color=blue]


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == 0)
    {
    if(response)
    {
    if(listitem == 0)
    {
    SendClientMessage(playerid,COLOR_ORANGE, "Du rauchst Orange Bud");
    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_SMOKE_CIGGY);
    AddHealth(playerid,25.0);
    }
    if(listitem == 1)
    {
    SendClientMessage(playerid,COLOR_PURPLE, "Du rauchst Purple Haze");
    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_SMOKE_CIGGY);
    AddHealth(playerid,30.0);
    }
    if(listitem == 2)
    {
    SendClientMessage(playerid,COLOR_WHITE, "Du rauchst White Widoow");
    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_SMOKE_CIGGY);
    AddHealth(playerid,15.0);
    }
    }
    }
    return 1;
    }


    Klappts so? Bei mir schon.

  • Das mit den Commands passt jetzt alles, danke.


    Hätte noch ne Frage:
    Ich würde gerne einen Befehl erstellen /classselect
    Nach der Eingabe würde der Spieler zurück zum Menü gebracht, wo er sich einen neuen Character/Team aussuchen kann.(So als würde man gerade dem Server joinen).


    mfg.


    //edit neue frage, bräuchte hier unbeding Hilfe.

  • hi,
    vielen dank, wieder mal ;)
    hätt ich auch selber draufkommen können, man bin ich dumm :D


    Noch ne Frage:

    if (classid == 0)
    {
    gTeam[playerid] = TEAM_Police;
    }
    else
    {
    gTeam[playerid] = TEAM_Terrorists;
    }


    }

    kann ich diese Funktion so umstellen, dass ich sie nur einmal im Script hab, aber für mehrere classe.
    Ich habe 12 sknis zur Auswahl. In einem Team sind 6 Player, also müsste im Team Police die classid 0-5 enthalten sein.

  • hi,
    danke auch für den Link.
    werde es, soblad ich n paar Player aufm Server hab testen.


    Frage ... :D


    Wenn ich ein Pickup erstelle, z.B id 1240 , welchen Spwantype müsste ich nehmen, wenn ich möchte, dass das Pickup nicht nach den Tod des Players wieder automatisch
    erstellt wird oder nach einer gewissen Zeit , sondern es erst wieder dort ist, nachdem es bewusst erstellt wurde z.B. durch Befehle oder Eintritt in einen Checkpoint?
    Es soll jedoch aufbehmbar sein. Hab bis jetzt nichts passendes gefunden.

  • Die Seite kenne ich schon allzu gut ;)


    Also:
    Ich gehe in einen roten Checkpoint, dadurch wird ein Pickup erstellt.



    public OnPlayerEnterCheckpoint(playerid)
    {


    CreatePickup(1252, 5, 679.2563,-483.7646,16.1875); //Hier wird das Pickup erstellt, aber das weist du sicher besser als ich ;)
    DisablePlayerCheckpoint(playerid);
    SendClientMessage(playerid,0x7CFC00AA, "Bomb has been created! Get it fast!.");
    GivePlayerMoney(playerid,2000);
    GameTextForPlayer(playerid,"~g~+ 2000",3000,1);


    new name[ 24 ], string[ 64 ];
    GetPlayerName( playerid, name, 24 );
    format( string, sizeof(string), "~y~%s has created the Bomb!", name );
    GameTextForAll( string, 5000, 5 );



    return 1;
    }

    Jetzt verschwindet der CP und das Pickup, in diesem Fall eine Bombe wird an einem bestimmtem Ort erstellt.
    Soweit so gut. Aber jedesmal, wenn der Spieler, der diese Bombe auf diese Weise erstellt hat (in den CP gehen) stirbt, ist der CP und auch die Bombe (also das Pickup) wieder an der selben Stelle automatisch erstellt worden. Das soll so jedoch nicht sein, sondern: Das Pickup(also die Bombe) soll erst wieder erstellt werden, wenn jemand wieder in den CP geht. Das erstellte Pickup soll so erstellt werden, dass es vom Spieler aufgenommen werden kann. (z.B pickuptype 2 ist aufnehmbar)


    Hoffe das war jetzt kein Fachchinesisch :D

  • @[Bob]Systemfehler


    mhh, deine Möglichkeit funktioniert irgendwie net.


    ich habs mal so eingefügt:

    SetPlayerTeamFromClass(playerid, classid)
    {
    if (classid == 0)


    {
    gTeam[playerid] = TEAM_Police;
    }
    else
    {
    gTeam[playerid] = TEAM_Terrorists;
    }


    }


    Wenn ich das so drin hab, können sich 2 Spieler mit der classid 0 gegenseitig nicht töten, alle anderen ids jedoch schon, was ja so verständlich ist.
    Wenn ich es also so einfüge müsste es doch eigentlich klappen, tut es aber nicht:



    SetPlayerTeamFromClass(playerid, classid)
    {
    if (classid == 0)


    {
    gTeam[playerid] = TEAM_Police;
    }
    else
    {
    gTeam[playerid] = TEAM_Terrorists;
    }
    if (classid == 1)


    {
    gTeam[playerid] = TEAM_Police;
    }
    else
    {
    gTeam[playerid] = TEAM_Terrorists;
    }
    if (classid == 2)


    {
    gTeam[playerid] = TEAM_Police;
    }
    else
    {
    gTeam[playerid] = TEAM_Terrorists; //usw.
    }


    }


    Was mache ich falsch?


    //edit


    Ich habe weiter oben im Script noch sowas drin, kann es vllt. die Ursache sein, dass der Teamkill trotz definierter Teams möglich ist?

    public OnPlayerRequestClass(playerid, classid)
    {
    SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746); //wozu ist das eig. gut? den Classselectionsort ist doch in der Gamemode festgelegt?
    SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);


    if(classid == 0)
    {
    gTeam[playerid] = Police;
    GameTextForPlayer(playerid,"~b~Police",500,5);
    SetPlayerColor(playerid,0x33CCFFAA);}

    if(classid == 1)
    {
    gTeam[playerid] = Police;
    GameTextForPlayer(playerid,"~b~Police",500,5);
    SetPlayerColor(playerid,0x33CCFFAA);}
    //usw.

  • Hallo, der PayDay funktioniert nur bei mir, warum?


    forward payday();


    SetTimer("payday",300000,1);


    public payday()
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    GivePlayerMoney(i,8000);
    SendClientMessage(i,LILA,">>PAYDAY, 8000$ erhalten, für deine Mitarbeit!");
    GameTextForPlayer(i,"~g~PayDay!",5000,3);
    return 1;
    }
    return 1;
    }



    62.75.218.75:7778


    Bitte testen :)

  • mach das makierte return weg, der fehler liegt darin wenn er bei dem return 1; ist returnt er das "i" und die schleife ist beendet return kannst du mit breake vergleichen ist ungefähr der selbe zweck(er bricht die schleife ab),
    Das mit den breake net falsch verstehen break kann man nur bei schleifen verwenden(soweit ich weiß) also nichtstatt return 1; ein breake überall machen und wunder das etwas nicht geht


    und noch ein tipp mach noch ein IsPlayerConnected(i); rein


    also


    public payday()
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    GivePlayerMoney(i,8000);
    SendClientMessage(i,LILA,">>PAYDAY, 8000$ erhalten, für deine Mitarbeit!");
    GameTextForPlayer(i,"~g~PayDay!",5000,3);
    //return 1; (das return weg machen)
    }
    }
    return 1;
    }

    sry für doch schlechte einrückung


    1edit// code verbessert
    2edit// bei der beschreibung etwas hinzugefügt

    Aspire sucht freunde...

    Einmal editiert, zuletzt von Aspire ()

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