[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
  • Ein Fehler weniger :D

  • Kaliber:


    Nevermind hat sich erledigt, nächste Frage:


    Habe die Höhe angepasst, sitzt perfekt. Nur beim ausführen der Animation (Ich benutze die hier BOM_Plant ) ist die Mine halt unter mir und nicht da wo die Animation ausgeführt wird.


    Wie muss ich das ungefähr verändern?


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Wie muss ich das ungefähr verändern?


    Da musst du ein bisschen rumprobieren:


    ocmd:mine(playerid)
    {
    new Float:p[4];
    GetPlayerPos(playerid,p[0],p[1],p[2]),GetPlayerFacingAngle(playerid,p[3]);
    const Float:distance = 0.75; //jetzt wäre die Bombe etwas weiter vorne
    p[0] += (distance * floatsin(-p[3], degrees));
    p[1] += (distance * floatcos(-p[3], degrees));
    CreateObject(19602,p[0],p[1],p[2]-0.93,0,0,0);
    ApplyAnimation(playerid,"BOMBER","BOM_Plant",4.1,0,1,1,0,0,1);
    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

  • Beitrag von ENEF ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Kannst mir da auch noch helfen ?


    Da musst du sowas ungefähr machen:


    #define MAX_MINES 100


    enum e_Mines {
    e_model,
    Float:e__X,
    Float:e__Y,
    Float:e__Z
    };


    new mines[MAX_MINES][e_Mines],bool:mine_t[MAX_PLAYERS char];


    ocmd:mine(playerid)
    {
    if(mine_t{playerid}) return SendClientMessage(playerid,-1,"Bitte warte einen kurzen Moment, bevor du die Nächste Mine erstellst!");
    new m_idx = GetFreeMine();
    if(m_idx == MAX_MINES) return SendClientMessage(playerid,-1,"Es wurde bereits die maximale Anzahl an Minen erstellt!");
    new Float:p[4];
    GetPlayerPos(playerid,p[0],p[1],p[2]),GetPlayerFacingAngle(playerid,p[3]);
    const Float:distance = 0.75; //jetzt wäre die Bombe etwas weiter vorne
    p[0] += (distance * floatsin(-p[3], degrees));
    p[1] += (distance * floatcos(-p[3], degrees));
    mine_t{playerid} = true;
    mines[m_idx][e_model] = CreateObject(19602,p[0],p[1],p[2]-0.93,0,0,0);
    mines[m_idx][e__X] = p[0],mines[m_idx][e__Y] = p[1],mines[m_idx][e__Z] = p[2];
    ApplyAnimation(playerid,"BOMBER","BOM_Plant",4.1,0,1,1,0,0,1);
    SetTimerEx("@ta",1000*5,0,"i",playerid);
    return 1;
    }


    @ta(i);@ta(i) return mine_t{i}=false;


    //Du brauchst einen Timer (unter OnGameModeInit)
    SetTimer("@Bomb",599,1);


    //Dann irgendwo außerhalb von Callbacks..etc
    @Bomb();@Bomb() {
    for(new i; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i) || IsPlayerNPC(i) || mine_t{i}) continue;
    for(new b; b<MAX_MINES; b++) {
    if(!mines[b][e_model]) continue;
    if(IsPlayerInRangeOfPoint(i,2.5,mines[b][e__X],mines[b][e__Y],mines[b][e__Z])) { PlayerOnMine(i,b); break; }
    }
    }
    return 1;
    }


    stock PlayerOnMine(playerid, b) {
    //Hier ist halt die Explosion:
    CreateExplosion(mines[b][e__X], mines[b][e__Y], mines[b][e__Z], 12, 10.0);
    DestroyObject(mines[b][e_model]),mines[b][e_model]=0;
    SendClientMessage(playerid,-1,"BOOOOOOOOM!");
    return 1;
    }


    stock GetFreeMine() {
    for(new i; i<MAX_MINES; i++) if(!mines[i][e_model]) return i;
    return MAX_MINES;
    }


    mfg. :thumbup:


    //Edit: Kleinigkeiten
    Edit²:

    So würde er aber schon beim erstellen der Mine, die Mine zum explodieren bringen ^^


    Ahaha danke, daran habe ich gar nicht gedacht #gefixxt ^^

    ast2ufdyxkb1.png


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

    Einmal editiert, zuletzt von Kaliber ()

  • Beitrag von AirM4X ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Kaliber:


    Ich habe mal deine Version ausprobiert:


    Keine Errors/Warnings.
    Erstellen funktioniert problemlos, doch beim betreten der Mine passiert nichts. Habe den Timer der unter OnGameModeInit sollte in mein FS reingebracht, ist das so in Ordnung oder muss das in mein Gamemode rein?


    Oder woran könnte es sonst liegen, hmm..


    Mit freundlichen Grüßen
    JustMe.77 8)

  • oder muss das in mein Gamemode rein?


    Der Timer muss dahin, wo du den anderen Code auch hingetan hast...


    Wenn du das alles in ein Filterscript schreibst, dann musst du SetTimer natürlich unter OnFilterScriptInit schreiben :)


    Falls du das gemacht hast und es immernoch nicht geht, mach mal die Range höher (also unter @Bomb schreib es so):


    if(IsPlayerInRangeOfPoint(i,4.5,


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Könntest du mir die Werte erklären?


    Dafür wurde das Wiki geschaffen: http://wiki.sa-mp.com/wiki/CreateExplosion_DE


    Hier eine Liste mit Explosions IDs: http://wiki.sa-mp.com/wiki/Explosion_List


    Wenn du so ne richtig fette Explosion willst:


    CreateExplosion(mines[b][e__X], mines[b][e__Y], mines[b][e__Z], 7, 10.0);


    @[LnD]JustMe.77: Ja dein Code wurde in BBCodes ungewandelt, schau nochmal (hab ihn grad editiert beim 1. fehlte das [b ]) :)


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Danke aber bei dem letzen Code bekomme ich ein Error:


    CreateExplosion(mines[e__X], mines[b][e__Y], mines[b][e__Z], 7, 10.0);


    C:\Users\Dave\Desktop\Hoe's Wonderland\filterscripts\Maps.pwn(323) : error 035: argument type mismatch (argument 1)
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


    Mit freundlichen Grüßen
    JustMe.77 8)

  • mines[e__X], mines[e__Y], mines[b][e__Z]
    Fällt dir was auf?
    Du hast jeweils [b] vergessen ;)

  • Ist es möglich Objekte nur für bestimmte Spieler anzeigen zu lassen, Beispiel wenn er lv 5 ist?
    Müsste man die Objekte dann unter ONomadenvölker/spawn hinschreiben? Würde das Komplikationen geben oder ist es nicht schlimm?



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • enum tInfo
    Statsbox[0] = CreatePlayerTextDraw(playerid,690.000000, 150.000000, "Box");
    PlayerTextDrawBackgroundColor(playerid,Statsbox[0], 255);



    Erorrs:
    (76) : error 001: expected token: ";", but found "enum"
    (4602) : error 017: undefined symbol "CreatePlayerTextDraw"
    (4602) : warning 213: tag mismatch
    (4603) : error 012: invalid function call, not a valid address
    (4603) : warning 215: expression has no effect
    (4603) : warning 215: expression has no effect
    (4603) : warning 215: expression has no effect
    (4603) : error 001: expected token: ";", but found ")"
    (4603) : error 029: invalid expression, assumed zero
    (4603) : fatal error 107: too many error messages on one line




    Weiß jemand was man machen muss?