Angepinnt [SAMMELTHREAD] Kleine Scripting Fragen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Du kannst ein Actor erstellen der eine Animation ausführt
    -----
    Warum kommt die Nachricht doppelt?

    PAWN-Quellcode

    1. public OnPlayerText(playerid, text[])
    2. {
    3. new Float:X, Float:Y, Float:Z, String[512];
    4. GetPlayerPos(playerid, X, Y, Z);
    5. for(new i=0;i<MAX_PLAYERS; i++)
    6. {
    7. if(IsPlayerInRangeOfPoint(i, CHAT_RADIUS, X, Y, Z))
    8. {
    9. format(String, sizeof(String), "%s "HTML_WEIS": %s", Spieler[playerid][pName], text);
    10. SendClientMessage(i, GetPlayerColor(playerid), String);
    11. return 1;
    12. }
    13. }
    14. return 0;
    15. }
    Alles anzeigen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Chiller.502 ()

  • Chiller.502 schrieb:

    Warum kommt die Nachricht doppelt?
    Wegen dem return 1; in der Schleife.

    Ich empfehle es dir einfach so zu schreiben:

    C-Quellcode

    1. public OnPlayerText(playerid, text[])
    2. {
    3. new String[144];
    4. format(String, sizeof(String), "%s "HTML_WEIS": %s", Spieler[playerid][pName], text);
    5. SendRangeMessage(playerid, GetPlayerColor(playerid), CHAT_RADIUS, String);
    6. return 0;
    7. }
    8. stock SendRangeMessage(playerid, color, Float:range, const msg[])
    9. {
    10. new Float:X, Float:Y, Float:Z;
    11. GetPlayerPos(playerid, X, Y, Z);
    12. for(new i=GetPlayerPoolSize(); i!=-1; i--)
    13. {
    14. if(IsPlayerInRangeOfPoint(i, range, X, Y, Z)) SendClientMessage(i, color, msg);
    15. }
    16. return 1;
    17. }
    Alles anzeigen


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. X/
  • Allrounder18 schrieb:

    Ist es möglich, einen Korb (gemappt oder Objekt ist egal) mit einer Person darin vor einem Haus hochzufahren als wäre es ne Drehleiter ohne das die Person durch den Korb fällt? Bzw. wie bringe ich dann den Korb (mit Leiter Objekt) zum Feuer?
    Ich verstehe die Frage nicht so ganz, also die Antwort ist natürlich ein einfaches Ja.

    Du erstellst das Objekt mit CreateObject und dann nutzt du einfach MoveObject um zu dem Feuer zu kommen (davon hast du ja die Positionen).

    PS: Ja, für alle Pedanten, natürlich sollte CreateDynamicObject und MoveDynamicObject verwendet werden.

    Normalerweise, solange der Speed bei MoveObject, jetzt nicht in enorme Höhen steigt, solltest du nicht durch das Objekt fallen :)


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. X/
  • Allrounder18 schrieb:

    Könnt ich dann eigentlich auch an den Korb ne Leiter ranattachen und mit nem befehl die leiter + Korb ausfahren lassen wie bei ner drehleiter?
    Naa klar, das geht mit wiki.sa-mp.com/wiki/AttachObjectToObject ;)

    Das mit dem ausfahren lässt sich auch realisieren, ist aber etwas komplizierter, da wenn es Attacht ist glaube nicht gemovt werden kann.
    Also entweder moven, bevor du es attachst oder schritt für schritt neu attachen mit neuen relativen Positionen.


    Allrounder18 schrieb:

    Edit: Wie würde ich eigentlich die Position des Feuers bekommen, wo der Korb hinfahren soll?
    Na, irgendwie wird ja das Feuer erstellt? ^^

    Und diese Koordinaten musste nur speichern und fertig.

    Oder du suchst nach dem nähsten Feuer in der Nähe und nimmst diese Koordinaten :)


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. X/
  • Mois,
    Ich mach so, Spiel mach nicht so. Spaß bei Seite :D

    Mein Problem Heute:
    Beide Koordinaten sind in der "Standartwelt" und haben kein Interior so wie die anderen Gebäude
    Wie muss die Variable Interior und Welt lauten um es normal zu lassen? Heißt ganz normaler Teleport ohne andere Welt, Interior?

    C-Quellcode

    1. enum buildungs{
    2. Name[35],
    3. Interior,
    4. Welt,
    5. Float:EX,Float:EY,Float:EZ,// Enter Position
    6. Float:IX,Float:IY,Float:IZ// Exit Position
    7. }

    Quellcode

    1. stock const Building[][buildungs]={
    2. {"Los Santos Bank",3,0,/*Eingang*/X,X,X,/*Ausgang*X,X,X}
    3. };

    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • BrightLeaN schrieb:

    Mois,
    Ich mach so, Spiel mach nicht so. Spaß bei Seite :D

    Mein Problem Heute:
    Beide Koordinaten sind in der "Standartwelt" und haben kein Interior so wie die anderen Gebäude
    Wie muss die Variable Interior und Welt lauten um es normal zu lassen? Heißt ganz normaler Teleport ohne andere Welt, Interior?

    C-Quellcode

    1. enum buildungs{
    2. Name[35],
    3. Interior,
    4. Welt,
    5. Float:EX,Float:EY,Float:EZ,// Enter Position
    6. Float:IX,Float:IY,Float:IZ// Exit Position
    7. }

    Quellcode

    1. stock const Building[][buildungs]={
    2. {"Los Santos Bank",3,0,/*Eingang*/X,X,X,/*Ausgang*X,X,X}
    3. };
    ich würds so machen:


    PAWN-Quellcode

    1. for(new i; i < sizeof(Building); i++) {
    2. if(IsPlayerInRangeOfPoint(playerid, 1.5, Building[i][EX], Building[i][EY], Building[i][EZ]) {
    3. SetPlayerPos(playerid, Building[i][IX], Building[i][IY], Building[i][IZ]);
    4. if(Building[i][Welt] != -1) SetPlayerVirtualWorld(playerid, Building[i][Welt]);
    5. if(Building[i][Interior] != 0) SetPlayerInterior(playerid, Building[i][Interior]);
    6. break;
    7. } else if(IsPlayerInRangeOfPoint(playerid, 1.5, Building[i][IX], Building[i][IY], Building[i][IZ]) {
    8. SetPlayerPos(playerid, Building[i][EX], Building[i][EY], Building[i][EZ]);
    9. SetPlayerVirtualWorld(playerid, 0);
    10. SetPlayerInterior(playerid, 0);
    11. break;
    12. }
    13. }
    Alles anzeigen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Apokrate ()

  • Chiller.502 schrieb:

    Wie kann ich aus einem Timer auslesen, wieviel Minuten er noch beträgt?
    Direkt...gar nicht :)

    Aber du kannst den Timestamp nehmen, wenn du ihn startest.

    Zum Beispiel so:

    C-Quellcode

    1. //Oben im Skript
    2. new timerTimestamp;
    3. //Da wo du den Timer startest:
    4. timerTimestamp = gettime()+60*10;
    5. SetTimer("bla", 1000*60*10, 0);
    6. //Wenn du wissen magst, wie lang es noch dauert:
    7. new diff_secs = (timerTimestamp - gettime());
    8. new remain_h = floatround( diff_secs / 60 * 60 );
    9. new remain_min = floatround( diff_secs / 60 );
    10. new remain_sec = diff_secs % 60;
    11. printf("Noch %02d Stunden, %02d Minuten und %02d Sekunden, bis der Timer fertig ist!",remain_h,remain_min,remain_sec);
    Alles anzeigen


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. X/
  • ohoho.
    @Apokrate das war nicht meine Frage, trotzdem danke.
    Ich formuliere diese mal um.
    Welchen Wert hat die Virtuelle Welt in der normalen Welt? z.B 1
    Und welchen Wert hat die Interior-ID

    Bei meiner Auflistung muss Interior und Virtuelle Welt angegeben werden und der Eingang und Ausgang liegt in der normalen Welt, deswegen frage ich was die Standardwerte sind

    {"Los Santos Bank",3,0,/*Eingang*/X,X,X,/*Ausgang*X,X,X}

    Ich weiß, dass ich weiß, dass ich nichts weiß.
  • Grüße, weiß jemand ob und wenn ja wie es möglich ist, SetObjectMaterial/SetDynamicObjectMaterial für custom Objekte (0.3.DL) zu nutzen? Sprich sofern ich ein Objekt einfüge mit mehreren verschiedenen Texturen in der .txd Datei, wie ich auf diese Texturen zugreifen kann. Ich habe es wiefolgt versucht:

    PAWN-Quellcode

    1. SetObjectMaterial(objID, 0, -2001, "customTXD", "texturName", 0xFFFFFFFF);


    Wie man es eben mit allen anderen Objekten macht, nur leider passiert absolut gar nichts. Soweit ich weiß ist es ja zumindest bei Textdraws möglich in einer .txd Datei auf mehrere Texturen zugreifen zu können.. Deswegen wurdert es mich, dass es hier nicht funktioniert.