[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
  • und ja alles soll die Chance 50% sein

    Naja, dann für die Drehbewegung einfach MoveObject nutzen und für die chance:



    C
    switch(random(2))
    {
        case 0: SetPlayerHealth(playerid, 0);
        case 1: GivePlayerMoney(playerid, 100000);
    }

    Natürlich nicht einfach so GivePlayerMoney verwenden, sondern deine eigene Funktion :D

    ast2ufdyxkb1.png


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

  • Naja, dann für die Drehbewegung einfach MoveObject nutzen und für die chance:


    C
    switch(random(2))
    {
        case 0: SetPlayerHealth(playerid, 0);
        case 1: GivePlayerMoney(playerid, 100000);
    }

    Natürlich nicht einfach so GivePlayerMoney verwenden, sondern deine eigene Funktion :D

    und was wenn ich jetzt ein drittes reinballern will? dann einfach switch(random(3)) und bei case 2 : bsp. givemoney wieder?

  • irgendwie plaziert er keine Pflanze warum?


    if(strcmp(cmdtext,"/pflanzen", true) == 0){PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);new Float:plocx,Float:plocy,Float:plocz,Float:ploca;GetPlayerPos(playerid, plocx, plocy, plocz);GetPlayerFacingAngle(playerid,ploca);CreateSpice(792,plocx,plocy,plocz+0.6,ploca);GameTextForPlayer(playerid,"~w~Spice ~g~plaziert",3000,1);return 1;}if(strcmp(cmdtext,"/pflanzeweg", true) == 0){DeleteClosestSpice(playerid);GameTextForPlayer(playerid,"~w~Spice ~r~verbrannt!",3000,1);}



    und definiert sind die hier :



    stock CreateSpice(Object,Float:x,Float:y,Float:z,Float:Angle){for(new i = 0; i < sizeof(Spices); i++){if(Spices[i][sCreated] == 0){Spices[i][sCreated] = 1;Spices[i][sX] = x;Spices[i][sY] = y;Spices[i][sZ] = z-0.7;Spices[i][sObject] = CreateObject(Object, x, y, z-0.9, 0, 0, Angle);return 1;}}return 0;}stock DeleteClosestSpice(playerid){for(new i = 0; i < sizeof(Spices); i++){if(IsPlayerInRangeOfPoint(playerid, 5.0, Spices[i][sX], Spices[i][sY], Spices[i][sZ])){if(Spices[i][sCreated] == 1){Spices[i][sCreated] = 0;Spices[i][sX] = 0.0;Spices[i][sY] = 0.0;Spices[i][sZ] = 0.0;DestroyObject(Spices[i][sObject]);return 1;}}}return 0;}






    //EDIT : Doch hat sich geklärt die werden plaziert :D

  • Gibt es ein Editor der Speziell für Fahrzeuge gedacht ist um Sachen darauf zu machen und das man die Koordinaten raus findet?

    http://forum.sa-mp.com/showthread.php?t=282883


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

  • Dnakeschön,



    Möchte gerne Verschiedene Tankarten erstellen "Die man Tanken Kann nur weiß ich nicht wie ich das am besten mache im Befehl (Sollte man per Dialog Auswählen Könn.



    Befehl;



    <- Momentan ganz normales Tanken ohne Tankart.



    //Derzeitiger Timer Dafür.


    Gibt derzeit: Benzin, Diesel, Super, Kerosin(natürlich nur für Flugzeuge?) :D

  • Du nimmst diesen Teil aus dem Befehl:
    FreezePlayer(playerid);
    SendClientMessage(playerid, COLOR_WHITE, "Dein Fahrzeug wird getankt ...");
    SetTimerEx("FillVehicle", 5000, 0, "iii", playerid, vehicleid, i);
    pRefillVehicle[playerid] = 1;

    und öffnest dort stattdessen den ShowPlayerDialog mit den verschiedenen Tankarten.


    Im dazugehörigen OnDialogResponse kommt dann obiger Code rein (mitsamt der Schleife aus dem Befehl), sowie nochmal die Plausi-Prüfungen aus dem Befehl (Spieler könnte sich ja bewegt haben).


    Über das listitem gibts du dann die Tankart mit, und zwar in dem Timer:
    SetTimerEx("FillVehicle", 5000, 0, "iii", playerid, vehicleid, i);
    zu:
    SetTimerEx("FillVehicle", 5000, 0, "iiii", playerid, vehicleid, i, listitem);


    Der Kopf des Timers sieht dann so aus:
    forward FillVehicle(playerid, vehicleid, bizid, tankart);
    public FillVehicle(playerid, vehicleid, bizid, tankart)


    Und dann kannst du darin einen switch über die tankart machen.

  • Also den exakten Winkel bekommst du so raus, dann schaut der Spieler direkt dahin.


    Mit [wiki]GetPlayerFacingAngle[/wiki] könntest du ja einfach die Differenz zum eigentlichen Winkel bilden und dann weißt du es ^^


    C
    new Float:x,Float:y, Float:o_x,Float:o_y, Float:angle;
    
    
    GetPlayerPos(playerid, x,y,angle);
    GetObjectPos(objectid, o_x,o_y,angle);
    angle = atan2(o_y - y,o_x - x)-90;
    
    
    SetPlayerFacingAngle(playerid, angle);

    ast2ufdyxkb1.png


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

  • Ich habe eine Kurze Frage:



    ormat(Gutschein[i][gCode], 64, "%c%d%c%d-%c%d%c%d-%c%d%c%d",getRandomLetter(),getRandomNumber(10), getRandomLetter(),getRandomNumber(10),getRandomLetter(),getRandomNumber(10), getRandomLetter(),getRandomNumber(10),getRandomLetter(),getRandomNumber(10), getRandomLetter(),getRandomNumber(10));



    So wird der Gutschein in die Datenbank eingetragen.


    Aber ich wollte mit den Code noch zusätzlich auslesen lassen das ich den Ingame sehen kann:



    //Gutschein Code Anzeigen lassen

    format(string, sizeof(string), "%c%d%c%d-%c%d%c%d-%c%d%c%d", Gutschein[playerid][gCode]);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);


    ABer irgendwie zeigt er mir kein Code an...

  • Es reicht hier:


    C
    format(string, sizeof(string), "%s", Gutschein[playerid][gCode]);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);

    ast2ufdyxkb1.png


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

  • Es reicht hier:


    C
    format(string, sizeof(string), "%s", Gutschein[playerid][gCode]);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);

    Das problem ist er gibt mir trd kein Code aus:





  • Offensichtlich, weil der Index nicht der playerid entspricht :)


    Musst du also mappen:


    C
    format(string, sizeof(string), "%s", Gutschein[pCreateGutschein[playerid]][gCode]);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);

    ast2ufdyxkb1.png


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

  • Offensichtlich, weil der Index nicht der playerid entspricht :)


    Musst du also mappen:


    C
    format(string, sizeof(string), "%s", Gutschein[pCreateGutschein[playerid]][gCode]);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);


    Gibt mir der Log aus:


    Code
    [debug] Run time error 4: "Array index out of bounds"
    [debug]  Accessing element at negative index -255
    [debug] AMX backtrace:
    [debug] #0 002bba04 in public OnDialogResponse (playerid=0, dialogid=347, response=1, listitem=8, inputtext[]=@0x0444b5a0 "UBB Fahrzeug") at C:\Users\ASUS\Desktop\GTA - San Andreas Daten\Scripts (SAMP)\Gaming-Board\gamemodes\Bearbeitetes.pwn:40334



    Code
    //Gutschein Code Anzeigen lassen
    					format(string, sizeof(string), "Gutschein: %s", Gutschein[pCreateGutschein[playerid]][gCode]); //HIer
    					SendClientMessage(playerid, COLOR_LIGHTBLUE, string);