[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
  • Jeffry:


    Hey, bin wieder an meinem Event System dran und muss noch eine kleine Sache erledigen.


    Zurzeit habe ich ja ein Befehl womit sich ein Countdown startet, und nachdem Countdown verriegeln sich 2 Türen.
    Nun möchte ich aber noch einen Befehl haben womit sich die Türen wieder entriegeln, sprich sich die Objekte wieder löschen.


    Dafür habe ich eigentlich einen Befehl, doch der entriegelt nur die Tür wenn ich die mit dem selben Befehl erstelle.


    Sieht zurzeit so aus:



    forward CountDownObjekte(playerid, count);
    public CountDownObjekte(playerid, count)
    {
    count--;
    if(count <= 0)
    {
    KillTimer(countTimer);
    countTimer = -1;
    for(new i=0; i<MAX_PLAYERS; i++) PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0); //GO - Sound
    gObj[0] = CreateObject(1498,1866.485,-2496.830,5047.411,0.000,0.000,36.199,300.000);
    SetObjectMaterial( gObj[0], 0, 5150, "wiresetc_las2", "ganggraf01_LA_m", 0);
    SetObjectMaterialText(gObj[0], "LOCKED", 0, 50, "Calibri", 15, 1, -65536, 0, 1);
    gObj[1] = CreateObject(1498,1841.824,-2495.508,5047.339,0.000,0.000,335.900,300.000);
    SetObjectMaterial( gObj[1], 0, 5150, "wiresetc_las2", "ganggraf01_LA_m", 0);
    SetObjectMaterialText(gObj[1], "LOCKED", 0, 50, "Calibri", 15, 1, -65536, 0, 1);
    TextDrawHideForAll(Textdraw0);
    return 1;
    }
    new str[16];
    format(str, sizeof(str), "%d", count);
    TextDrawSetString(Textdraw0, str);
    for(new i=0; i<MAX_PLAYERS; i++) PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0); //Timer - Sound
    TextDrawShowForAll(Textdraw0);
    countTimer = SetTimerEx("CountDownObjekte", 1000, false, "dd", playerid, count);
    return 1;
    }



    CMD:ecountdown(playerid,params[]) //Starts a countdown, after the countdown the Doors will be locked. (There is no command yet to unlock the doors).
    {
    if(countTimer != -1) return SendClientMessage(playerid, 0xFF0000FF, "ERROR: Countdown is already enabled.");
    if(!params[0]) return SendClientMessage(playerid, 0xFF0000FF, "Type in a time.");
    new time = strval(params);
    if(time < 10 || time > 500) return SendClientMessage(playerid, 0xFF0000FF, "Type in a time from 10 to 500..");
    countTimer = SetTimerEx("CountDownObjekte", 1000, false, "dd", playerid, time);
    return 1;
    }


    Mit freundlichen Grüßen
    JustMe.77 8)

  • kann mir hierbei wer helfen?


    Ich habe eine Funktion:
    sInfo[playerid][ges]



    und muss sie definieren:

    Code
    C:\Users\NeroxRoleplay\Nerox_Roleplay_v1.5.4\NeR.pwn(9729) : error 017: undefined symbol "sInfo"



    Allerdings habe ich das doch getan oder?
    PlayerInfo[playerid][pSex] = sInfo[playerid][ges];

  • Jeffry:


    Klappt gut, aber ist das so gut formatiert?
    Edit: Wird die Nachicht an alle Spieler gesendet?




    CMD:enextround(playerid,params[])
    {
    SendClientMessage(playerid,0xFF0055FF,"Rooms unlocked, next round will start soon!");
    static bool:status;
    if(!status)
    {
    for(new i=0; i<sizeof(gObj); i++)
    {
    if(gObj[i] != -1) DestroyObject(gObj[i]);
    gObj[i] = -1;
    }
    }
    status = !status;
    return 1;
    }


    Mit freundlichen Grüßen
    JustMe.77 8)

  • CMD:enextround(playerid,params[])
    {
    SendClientMessage(playerid,0xFF0055FF,"Rooms unlocked, next round will start soon!");
    static bool:status;
    if(!status)
    {
    for(new i=0; i<sizeof(gObj); i++)
    {
    if(gObj[i] != -1) DestroyObject(gObj[i]);
    gObj[i] = -1;
    }
    }
    status = !status;
    return 1;
    }


    So wäre die Einrückung korrekt.
    Zwecks der Nachricht, die wird nur an den Spieler gesendet, der den Befehl eingibt. Falls du es an alle senden willst, nutze SendClientMessageToAll.

  • Jeffry:


    Ich hab das jetzt in ein FS Gebaut...




    skinshop.pwn(393) : error 017: undefined symbol "skin" //SetPlayerSkin(playerid,sInfo[playerid][skin]);
    skinshop.pwn(446) : error 017: undefined symbol "skin" //SetPlayerSkin(playerid,sInfo[playerid][skin]);
    skinshop.pwn(536) : error 017: undefined symbol "bizInfo" //if(GetPlayerMoney(playerid)<=bizInfo[4][skinpreis])
    skinshop.pwn(536) : warning 215: expression has no effect //if(GetPlayerMoney(playerid)<=bizInfo[4][skinpreis])
    skinshop.pwn(536) : error 001: expected token: ";", but found "]" //if(GetPlayerMoney(playerid)<=bizInfo[4][skinpreis])
    skinshop.pwn(536) : error 029: invalid expression, assumed zero //if(GetPlayerMoney(playerid)<=bizInfo[4][skinpreis])
    skinshop.pwn(536) : fatal error 107: too many error messages on one line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    6 Errors.


    :´(

  • Hallo, will gerade machen dass man hinter dem Wagen stehen muss:
    new Float:Pos[7];
    GetVehiclePos(vID,Pos[0],Pos[1],Pos[2]);
    GetVehicleZAngle(vID,Pos[3]);
    GetPlayerPos(playerid,Pos[4],Pos[5],Pos[6]);
    Pos[6] = ((Pos[4] - Pos[0])*floatcos(Pos[3],degrees)+(Pos[5] - Pos[1])*floatsin(Pos[3],degrees));
    Pos[3] = ((-(Pos[4] - Pos[0]))*floatsin(Pos[3],degrees)+(Pos[5] - Pos[1])*floatcos(Pos[3],degrees));
    GetVehicleModelInfo(GetVehicleModel(vID), VEHICLE_MODEL_INFO_SIZE, Pos[0],Pos[1],Pos[2]);
    if(Pos[3] <= 0 && Pos[6] <= Pos[0]/2 && Pos[6] >= -Pos[0]/2)
    {
    SendClientMessage(playerid,GRUEN,"Dahinter!");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,ROT,"Nicht dahinter!");
    return 1;
    }
    Jedoch ist es jetzt so dass es zwar funktioniert wenn man dahinter steht, aber auch wenn man egal wie weit dahinter steht.
    Ich will ja, dass es nur funktioniert wenn man 1 Meter oder so dahinter steht.


    Was müsste ich dafür ändern?

  • Das kann ich dir so nicht direkt sagen, aber ich kann dir sagen wie du es besser machen kannst:


    GetPosVorVeh(vID, -5.0, x, y, z);
    if(IsPlayerInRangeOfPoint(playerid, 2.0, x, y, z);


    Mit:
    stock GetPosVorVeh(vehicleid, Float:dist, &Float:x, &Float:y, &Float:z) //©Jeffry
    {
    new Float:a;
    GetVehicleZAngle(vehicleid, a);
    GetVehiclePos(vehicleid, x, y, z);
    x += (dist * floatsin(-a, degrees));
    y += (dist * floatcos(-a, degrees));
    return true;
    }


    Das wäre nun: 5 Meter hinter der Mitte der vehicleid (also der hintere Teil, je nach dem wie groß das Fahrzeug ist), und da muss der Spieler in zwei Meter Umkreis drin sein.

  • Hi, hab ein problem bei OnPlayerKeyStateChange.


    #define PRESSED(%0) \ (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))


    if(adruecken[playerid] == true && PRESSED(KEY_FIRE))


    C:\Users\Eddy\Desktop\GTA\GTA - Selfmade\gamemodes\NLG.pwn(1200) : error 029: invalid expression, assumed zero
    C:\Users\Eddy\Desktop\GTA\GTA - Selfmade\gamemodes\NLG.pwn(1200) : warning 215: expression has no effect
    C:\Users\Eddy\Desktop\GTA\GTA - Selfmade\gamemodes\NLG.pwn(1200) : error 001: expected token: ";", but found ")"
    C:\Users\Eddy\Desktop\GTA\GTA - Selfmade\gamemodes\NLG.pwn(1200) : error 029: invalid expression, assumed zero
    C:\Users\Eddy\Desktop\GTA\GTA - Selfmade\gamemodes\NLG.pwn(1200) : fatal error 107: too many error messages on one line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    4 Errors.