[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
  • Beitrag von Dr. Frauenarzt ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Erledigt ().
  • Kaliber: Das werde ich mal probieren und mich nachher zurueckmelden.


    Ich will ja meinen Gamemode dahingehend dynamisch gestalten, so dass man alles von einer extra Datei aus steuern kann die einfach eingebunden wird, so dass man viele Sachen machen kann und das nicht so starr ist.


    Nun habe ich eine Teamanzahl definiert, faelschlicherweise habe ich das jetzt hier TEAMSIZE genannt, mache ich nachher zu AMOUNT_OF_TEAMS der sowas.
    Naja aufjedenfall will ich dass alles in Abhaengigkeit von TEAMSIZE angepasst wird.
    TEAMSIZE soll einen gueltigen Wert haben von 2-6 mit #assert TEAMSIZE >= 2 && <= 6



    Habe daher nun vor das ganze umzuschreiben.
    Als Beispiel nehme ich folgende Funktion welche ich bisher 1:1 aus Grand Larceny uebernommen habe, welche von 3 Teams ausgeht





    Habe ich, damit ich diese Wiederholungen von gleichem Code vermeide so geschrieben



    Ist das sinvoll bzw. funktionsfaehig? Oder gibt es eine einfachere Variante? Sind switch case strukturen guter Programmierstil?


    Und warum ist das hier falsch? :D


    Einmal editiert, zuletzt von Sub Royal ()

  • Guten Mittag,
    ich habe eine Include Frage, ich habe mit Hilfe eines Tutorial eine Include erstellt und zum Testen lasse ich es Printen.
    Problem ist nur, das der Print in der Include mir Angezeigt wird, der Print aus dem Script leider nicht.



    // So sieht meine Include aus:
    public OnPlayerConnect(playerid)
    {
    print("Include geht");
    return 1;
    }


    #if defined _OnPlayerConnect
    forward _OnPlayerConnect(playerid);
    #endif
    #if defined _ALS_OnPlayerConnect
    #undef OnPlayerConnect
    #else
    #define _ALS_OnPlayerConnect
    #endif
    #define OnPlayerConnect _OnPlayerConnect


    // So sieht es im Script aus:
    public OnPlayerConnect(playerid)
    {
    print("Script geht auch");
    return 1;
    }


    Mit freundlichen Grüßen,
    Aaron!

    Die Missglückte Persönlichkeit, Ciao!

  • Ich möchte in einem Textdraw den Stand des Bankkontos anzeigen lassen. Wie kann ich wenn jemand beispielsweise 1.000.000 $ hat punkte nach jeder dritten Zahl machen?


    also zurzeit steht es so


    1000000
    ich möchte es so:
    1.000.000

    Mit freundlichen Grüßen,
    Dachdecker

  • Wie kann ich wenn jemand beispielsweise 1.000.000 $ hat punkte nach jeder dritten Zahl machen?

    new str[16], money = GetPlayerMoney(playerid);
    format(str, sizeof(str), "$%d", money);
    if(money >= 0)
    {
    for(new i = strlen(str)-3; i > 1; i-=3) strins(str, ".", i);
    }
    else
    {
    for(new i = strlen(str)-3; i > 2; i-=3) strins(str, ".", i);
    }
    PlayerTextDrawSetString(playerid, pMoneyText[playerid], str);

  • Hallo,


    Ich habe das Problem beim Pilot job wen ich jetzt in Nevada einsteige werde ich rausgeworfen weil ich kein skill 90 habe.
    Aber bei der AT nicht damit kann ich fliegen

  • Hallo,


    Ich habe das Problem beim Pilot job wen ich jetzt in Nevada einsteige werde ich rausgeworfen weil ich kein skill 90 habe.
    Aber bei der AT nicht damit kann ich fliegen

    Das "else if(model == 577)" wird erst abgefragt wenn man in der "if(model == 553" Schleife ist. Du musst das dort rausnehmen

    if(IsVehicleAFlugzeug(vehicleid))
    {
    if(Spieler[playerid][pJob] != 4)
    {
    SendClientMessage(playerid, COLOR_GREY, "Du bist kein Pilot!");
    FreezePlayer(playerid);
    RemovePlayerFromVehicle(playerid);
    UnfreezePlayer(playerid);
    return 1;
    }
    if(model == 553) // Nevada
    {
    if(Spieler[playerid][pPilotSkillEXP] < 90)
    {
    GameTextForPlayer(playerid, "~r~AB SKILL LEVEL 90.", 5000, 0);
    FreezePlayer(playerid);
    RemovePlayerFromVehicle(playerid);
    UnfreezePlayer(playerid);
    return 1;
    }
    else if(model == 577) // AT-400
    {
    if(Spieler[playerid][pPilotSkillEXP] < 180)
    {
    GameTextForPlayer(playerid, "~r~AB SKILL LEVEL 180.", 5000, 0);
    FreezePlayer(playerid);
    RemovePlayerFromVehicle(playerid);
    UnfreezePlayer(playerid);
    return 1;
    }
    }
    }
    }

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



    wieso spamt der server denn Command bis er sich aufhängt



    //Respawnallcars
    command(respawnallcars, playerid, params[])
    {
    #pragma unused params
    new string[128];
    if(SpielerInfo[playerid][pAdminlevel] < 3)
    return SendClientMessage(playerid,COLOR_RED,"Du bist kein Administrator oder dein Administratorenlevel ist zu niedrig!");
    if(GetPVarInt(playerid, "Adminduty") < 1)
    return SendClientMessage(playerid, COLOR_RED, "Du musst erst als Admin im Einsatz sein, um diesen Befehl nutzen zu können.");
    for(new car=0;car<MAX_VEHICLES;car++)
    {
    if(IsValidVehicle(car))
    printf("test1");
    {
    if(Abgeschlepptt[car] == 0 && spawncar_job[car] != 555)
    printf("test2");
    {
    if((spawncar_job[car] >= 1 && spawncar_job[car] <= 11) || (spawncar_job[car] >= 201 && spawncar_job[car] >= 215))
    printf("test3");
    {
    if(GetVehicleDriver(car) < 0 || GetVehicleDriver(car) > MAX_PLAYERS)
    printf("test4");
    {
    SetVehicleToRespawn(car);
    printf("test5");
    SetVehicleHealth(car, 1000.0);
    printf("test6");
    }
    }
    }
    }
    return 1;
    }
    format(string, sizeof(string), "* %s %s[%d] hat alle unbenutzen Fahrzeuge respawned.", GetPlayerAdminRank(playerid),GetName(playerid),playerid);
    SendClientMessageToAllEx(COLOR_LIGHTRED, string);
    return 1;
    }


    er printet ganz oft diese Prints bis er sich einfach aufhängt

  • Beitrag von IPrototypeI ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: War bei einer älteren Frage :/ ().
  • Moin


    Habe eine Funktion CreateGlobalActor welche einen Actor und ein Pickup vor ihm erstellt.



    Ich generiere in OnGameModeInit Actors, abhaengig davon wie gross das Eingangsarray ist.
    CreateGlobalActor(actorid,modelid,Float:ax,Float:ay,Float:az,Float:angle,Float:distance,pickupid)


    C
    for(new g=0;g<sizeof(GlobalActors);g++)
    	{
    	CreateGlobalActor(g+1,274,GlobalActors[g][0],GlobalActors[g][1],GlobalActors[g][2],GlobalActors[g][3],3.0,g+4000);		
    	SetActorInvulnerable(g+1, true);
    	}

    Ich habe jedoch das Problem damit.
    Ich erwarte wenn ich hinten mit g+4000 eine Pickupid fuer das zu erstellende Pickup waehle, diese Beispielsweise bei 4000, 4001 usw. liegt.
    Jedoch ist das leider nicht der Fall, nach dem Erstellen hat das Ding eine Pickupid von 1..2..3


    Wie kann ich innerhalb einer for Schleife einzigartige Pickupids erstellen mit denen ich auch nachher was in OnPlayerPickUpPickup anstellen kann?


    Sowas habe ich versucht, hat jedoch nicht geklappt.
    Das Problem ist, wenn ich eine Pickupid zwischen 1-5 z.B. habe, nehmen scheinbar neu generierte Pickups auch einer dieser IDs an, so dass irgendwann nurnoch der else Teil zutrifft



    Habe mir eventuell ueberlegt ob enum helfen kann, aber ich finde keinen Ansatz


    Bitte um Rat


    Ist es ausserdem Moeglich, irgendwie aus einem Array immer die letzte Zeile im Array auszulesen?

  • Das mit den Pickups musst du leider z.B. so machen:


    Ist es ausserdem Moeglich, irgendwie aus einem Array immer die letzte Zeile im Array auszulesen?

    Das ist gar nicht so leicht.
    Es geht mit invaliden Werten und wenn du immer das Array sortierst bzw keine leeren Felder drinnen hast.


    ast2ufdyxkb1.png


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

  • Aber kann man beim Array nicht eigentlich immer als Index fuer die letzte Zeile sizeof(array)-1 als Index nehmen?

    Das kannst du machen.
    Ich weiß um ehrlich zu sein nicht was die Schleife da oben genau soll :D

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Ich weiß um ehrlich zu sein nicht was die Schleife da oben genau soll

    Na..stellen wir uns mal folgendes vor, wir haben folgendes Array:


    [1,2,3,-1,-1,-1,-1]


    Dann ist der letzte Eintrag ja nicht -1, sondern 3...


    Ich dachte, wir reden hier von einem Array welches nicht voll gefüllt ist, wenn natürlich das Element immer auf einem statischen Feld ist..ist das ja trivial und du kannst es natürlich mit array[sizeof(array)-1] lösen..

    ast2ufdyxkb1.png


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

  • Mit der Pickup Array Sache habe ich irgendwie immernoch ein Problem: /


    Hier weise ich dem Pickup die ID zu


    C
    for(new g=0;g<sizeof(GlobalActors);g++)
    	{
    		CreateGlobalActor(g+1,274,GlobalActors[g][0],GlobalActors[g][1],GlobalActors[g][2],GlobalActors[g][3],3.0,ActorPickups[g]);		
    		SetActorInvulnerable(g+1, true);
    	}


    Dazugehoerige Funktion



    printf gibt immer aus dass die Pickupids 1, 2,3,4,5 sind, bei einer sizeof(GlobalActors) von 5, egal was ich als pickupid in die Funktion gebe


    Daher war auch der Teil mit OnPlayerPickUpPickup irgendwie nicht funktionsfaehig


    C
    for(new i;i<sizeof(ActorPickups);i++)
    {
    if(pickupid == ActorPickups[i])
    		{
    			ShowMenuForPlayer(shopmenu,playerid);
    			TogglePlayerControllable(playerid,false);
    		}
    }

    Habe ich wieder einen Fehler drin? :D

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