[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
  • Aber wenn es auch noch Autos braucht fallen die runter


    Sonst ganz einfach:


    public OnPlayerCommandText(playerid, cmdtext[])
    {


    if(strcmp(cmdtext, "/Name", true)==0)
    {
    TogglePlayerControllable(playerid,0);
    SetTimer("Unfreeze", 4000, 0);
    return 1;
    }


    return 0;


    public Unfreeze()
    {
    TogglePlayerControllable(playerid,1);
    return 1;}


    Meine Werke


    Minecraft Signatur Buggt



    Sowas wie 10/10 gibt es nicht. Ausser bei Satan

    3 Mal editiert, zuletzt von Fabian95qw ()

  • Phail. :o


    1. "SetTimer" ist hierfür die falsche Funktion. Du brauchst SetTimerEx.
    2. Das Callback "Unfreeze" übergibt keine Parameter, aber du benutzt "playerid" => Fehler.


    So müsste es wenn dann aussehen:
    /* OnPlayerCommandText */
    if(!strcmp(cmdtext,"/bla"))
    {
    TogglePlayerControllable(playerid, false);
    SetTimerEx("Unfreeze", 4000, false, "i", playerid);
    return 1;
    }


    /* Header Bereich */
    forward Unfreeze(playerid); // bzw: @Unfreeze(playerid);


    /* Somewhere else */
    public Unfreeze(playerid) // bzw: @Unfreeze(playerid)
    {
    TogglePlayerControllable(playerid, true);
    }

  • hi


    ich brauche mal hilfe beim Payday.Also ich habe es so gemacht das der Spieler nach 60 min sein payday bekommt.Aber wenn ein Spieler seine 60 min gespielt hat dan bekommt jeder der on ist auch payday.Wie mach ich das es nur der Spieler bekommt der seine 60 min gespielt hat also das der payday nur bei den spieler ausgeführt wird der auch seine 60 minuten gespielt hat ?


    new ZahltagT[MAX_PLAYERS];


    bei public OnPlayerConnect(playerid)
    ZahltagT[playerid] = 0;


    bei public OnPlayerRegister(playerid, password[])


    format(var, 64, "ZahltagT=%d\n",ZahltagT[playerid]);fwrite(hFile, var);


    bei public OnPlayerUpdate(playerid)


    format(var, 32, "ZahltagT=%d\n",ZahltagT[playerid]);fwrite(hFile, var);


    bei public OnPlayerLogin(playerid,password[])


    if( strcmp( key , "ZahltagT" , true ) == 0 ) { val = ini_GetValue( Data ); ZahltagT[playerid] = strval( val ); }


    dan noch das hier


    forward paydaytime();
    public paydaytime()
    {
    for(new i; i< MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    ZahltagT[i]++;
    if(ZahltagT[i] >=60)
    {
    Zahltag(i);
    }
    OnPlayerUpdate(i);
    }
    }
    }


    und den Timer bei public OnGameModeInit()


    SetTimer("paydaytime",60000,1);

  • Wie kann ich in ein Auto Nos einbauen
    bzw. wenn ich ein cmd eingebe das da Nos in das auto kommt ?

  • damit : AddVehicleComponent(GetPlayerVehicleID(playerid),1010)
    __________________________________________________________________________


    Problem mit Dynamischen Payday
    Mein PAyday sollte eigentlich für jeden einzeln geben und zwar immer nach einer Stunde spielzeit das hab ich soweit auch hingekriegt allerdings habe ich ein Problem mit dem Timer
    das ist der Timer:


    public pimer(playerid)
    {
    SendClientMessage(playerid,COLOR_WHITE,"tick tack");//<<<<<<<<< Zur veranschaulichung
    PlayerInfo[playerid][pPlaytime] = PlayerInfo[playerid][pPlaytime]+1 ;


    if(PlayerInfo[playerid][pSincePayday] >= 60)
    {
    PlayerInfo[playerid][pSincePayday] = 0;
    PayDay(playerid);

    }
    else
    {
    PlayerInfo[playerid][pSincePayday] = PlayerInfo[playerid][pSincePayday]+1;
    }
    return 1;
    }


    und ingame habe ich jetzt das Problem hier: mit Tick TAck wird der ganze Chat (bis obenhin vllt. mehr) zugespammt


    gestartet wird der Timer unter Onplayerlogin


    pimerday[playerid] = SetTimerEx("pimer",6000,1,"i",playerid);


    gekillt unter onplayerdisconnect
    public OnPlayerDisconnect(playerid)
    {
    KillTimer(pimerday[playerid]);
    ........


    forward pimer(playerid);
    new pimerday[MAX_PLAYERS];

    5 Mal editiert, zuletzt von Tirus ()

  • Wie sieht das unter Linux aus?, wie funktioniert es da genau?, ich habe zwar war gefunden, das stimmt aber um 1 Woche und 2 Stunden nicht. Kann mir da jemand helfen?, das Forum von sa-mp.com is auch derzeit ein bisschen überlastet.

  • hi ICh bräuchte ein /pay [ID] [ Geldbetrag] also das man wem geld geben kann und das geld was ich ihn gebe bei ihm dan erscheint und er hat währe es möglich es in strcmp(strget zu machn und es hier zu posten was ich hier alles dazu brauche


    Ich finde nichts in der SuFu mit strcmp(strget


    danke schon mal .



    MfG AS_MR_00

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • kannste es hier posten bitte :)



    // Edit ich hab mal bei anderen gm geschaut da is nur mit cmd.. hab keinem mit strget

    Einmal editiert, zuletzt von AS_MR_00 ()


  • new Float:VID;
    if(strcmp(cmdtext, "/Boxen", true)==0)
    {
    {
    if(PlayerToPoint(5, i,1416.3047,-3010.1921,1.9465)//2719
    GetPlayerVehicleID(playerid, VID);//2720
    SetVehicleHealth(VID, 1000);//2721
    return 1;
    }
    return 1;//2724
    }


    Code
    D:\Programme\Rockstar Games\SA\Server\Anderes\Rennen.pwn(2719) : error 017: undefined symbol "PlayerToPoint"
    D:\Programme\Rockstar Games\SA\Server\Anderes\Rennen.pwn(2720) : warning 202: number of arguments does not match definition
    D:\Programme\Rockstar Games\SA\Server\Anderes\Rennen.pwn(2721) : warning 213: tag mismatch
    D:\Programme\Rockstar Games\SA\Server\Anderes\Rennen.pwn(2724) : warning 225: unreachable code
    D:\Programme\Rockstar Games\SA\Server\Anderes\Rennen.pwn(2724) : warning 217: loose indentation

    Meine Werke


    Minecraft Signatur Buggt



    Sowas wie 10/10 gibt es nicht. Ausser bei Satan

    Einmal editiert, zuletzt von Fabian95qw ()

  • dir fehlt PlayerToPoint ich würde aber von sa-mp das native IsPlayerInRangeOfPoint verwenden.


    if(strcmp(cmdtext, "/Boxen", true)==0)
    {
    if(IsPlayerInRangeOfPoint( i,5,1416.3047,-3010.1921,1.9465)//2719
    {
    new ViD = GetPlayerVehicleID(playerid);
    SetVehicleHealth(VID, 1000);//2721
    }
    return 1;
    }


  • if(strcmp(cmdtext, "/Boxen", true)==0)
    {
    if(PlayerToPoint(5, i,1416.3047,-3010.1921,1.9465)//2719
    {
    GetPlayerVehicleID(playerid, VID);//2720
    SetVehicleHealth(VID, 1000);//2721
    }
    else
    {
    SendClientMessage(playerid, FARBE,"Du bist nicht am richtigen Ort");
    }
    return 1;
    }



  • Danke. Aber es kommt noch ein Error


    if(strcmp(cmdtext, "/Boxen", true)==0)
    {
    if(IsPlayerInRangeOfPoint(5, i,1416.3047,-3010.1921,1.9465)//2718
    {
    new VID = GetPlayerVehicleID(playerid);
    SetVehicleHealth(VID, 1000);
    }
    return 1;
    }

    Code
    D:\Programme\Rockstar Games\SA\Server\Anderes\Rennen.pwn(2718) : error 017: undefined symbol "i"


    //edit:


    @ HappyMeal | gta-replay.de deine Art bringt wieder den Error Undefinied Symbol PlayerToPoint


    Das is übrigens n FS

    Meine Werke


    Minecraft Signatur Buggt



    Sowas wie 10/10 gibt es nicht. Ausser bei Satan

    Einmal editiert, zuletzt von Fabian95qw ()

  • Code
    D:\Programme\Rockstar Games\SA\Server\Anderes\Rennen.pwn(2718) : warning 213: tag mismatch
    D:\Programme\Rockstar Games\SA\Server\Anderes\Rennen.pwn(2719) : error 001: expected token: ")", but found "{"


    if(strcmp(cmdtext, "/Boxen", true)==0)
    {
    if(IsPlayerInRangeOfPoint(5.0, playerid,1416.3047,-3010.1921,1.9465)//2718
    {//2719
    new VID = GetPlayerVehicleID(playerid);
    SetVehicleHealth(VID, 1000);
    }
    return 1;
    }

    Meine Werke


    Minecraft Signatur Buggt



    Sowas wie 10/10 gibt es nicht. Ausser bei Satan