Weiß nicht wie ich den Fehler beheben soll

  • Danke nochmal. Ich versuche gerade einen Befehl zu schreiben, welcher eine Sirene für diverse Autos erstellt.

    PAWN-Quellcode

    1. ocmd:sirene(playerid,params[])
    2. {
    3. if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER) return SendClientMessage(playerid,Kaminrot,"ERROR: Du musst in einem Wagen sein.");
    4. if(!IsValidObject(PoliceLightObj[playerid]))
    5. {
    6. PoliceLightObj[playerid] = CreateObject(18646,0.0,0.0,0.0,0.0000000,0.0000000,0.0000000);
    7. AttachObjectToVehicle(PoliceLightObj[playerid], GetPlayerVehicleID(playerid), 0.0, 0.0, 0.8, 0.0, 0.0, 0.0);
    8. SendClientMessage(playerid,Gelb,"Die Sirene ist an");
    9. }
    10. else
    11. {
    12. DestroyObject(PoliceLightObj[playerid]);
    13. SendClientMessage(playerid,Blau,"Die Sirene ist aus");
    14. }
    15. return 1;
    16. }
    Alles anzeigen


    Das Objekt wird erstellt, jedoch leuchtet die Sirene nicht.
  • Iceberqk schrieb:

    Das Objekt wird erstellt, jedoch leuchtet die Sirene nicht.
    Laut diesem Thread (forum.sa-mp.com/showthread.php?t=534862) könnte es ein Client-Problem sein, sprich an deinem GTA liegen.
    Versuche es mal mit Wetter ID 2, wie dort genannt.

    Alternativ kannst du es mal hiermit versuchen, ob das geht:
    forum.sa-mp.com/showthread.php?t=352070

    Wenn das nicht geht, liegt es an deinem GTA, oder einem Mod (etc).
  • Danke vielmals. Ich habe ein Problem mit meinem Mutesystem.
    Die Zeit wird in der Datenbank gespeichert, aber wenn man etwas in den Chat schreiben will wird es trotzdem abgeschickt...

    PAWN-Quellcode

    1. IsPlayerMuted(playerid)
    2. {
    3. new timestamp = gettime();
    4. if(sInfo[playerid][mute] > timestamp)return 1;
    5. return 0;
    6. }
    7. public OnPlayerText(playerid, text[])
    8. {
    9. new timestamp = gettime();
    10. if(IsPlayerMuted(playerid))
    11. {
    12. new differenz = sInfo[playerid][mute] - timestamp;
    13. new minuten = differenz / 60;
    14. new str[64];
    15. format(str,sizeof(str),"Du bist noch %i Minuten gemutet!",minuten);
    16. return SendClientMessage(playerid,Pink,str);
    17. }
    Alles anzeigen
  • Cool danke! Da wäre noch was :/

    Ich habe versucht ein Paydaysystem zu machen mit den Variablen: Payday, Xp und xpmax. xp steht für respektpunkte.
    Alle dreißig Minuten soll der Spieler ein Payday bekommen.

    PAWN-Quellcode

    1. new paydayzeit[MAX_PLAYERS];

    PAWN-Quellcode

    1. forward PayDayEx(playerid)


    PAWN-Quellcode

    1. public PayDayEx(playerid)
    2. {
    3. if(sInfo[playerid][payday]>=30)
    4. {
    5. //Payday bekommen
    6. if(sInfo[playerid][xpres]>=sInfo[playerid][xpmax])
    7. {
    8. SetPlayerScore(playerid,(sInfo[playerid][level]+1));
    9. sInfo[playerid][xpres]=0;
    10. sInfo[playerid][xpmax]+=4;
    11. SendClientMessage(playerid,Kaminrot,"Du bist ein Level up hier 5k .");
    12. GivePlayerMoney(playerid,5000);
    13. }
    14. if(sInfo[playerid][level]==10)
    15. {
    16. SendClientMessage(playerid,Kaminrot,"Du bist lvl 10 hier haste 10k");
    17. GivePlayerMoney(playerid,10000);
    18. }
    19. GivePlayerMoney(playerid,2000);
    20. SendClientMessage(playerid,Kaminrot,"PAYDAY!!");
    21. sInfo[playerid][payday]=0;
    22. savePlayer(playerid);
    23. return 1;
    24. }
    25. else
    26. {
    27. sInfo[playerid][payday]+=1;
    28. savePlayer(playerid);
    29. }
    30. return 1;
    31. }
    Alles anzeigen


    Spieler wird geladen:

    PAWN-Quellcode

    1. sInfo[playerid][payday] = cache_get_field_content_int(0,"payday",dbhandle);
    2. sInfo[playerid][xpres] = cache_get_field_content_int(0,"xpres",dbhandle);
    3. sInfo[playerid][xpmax] = cache_get_field_content_int(0,"xpmax",dbhandle);
    4. paydayzeit[playerid]=SetTimerEx("PayDayEx",1000*60,true,"i",playerid);



    PAWN-Quellcode

    1. public OnPlayerDisconnect(playerid, reason)
    2. {
    3. savePlayer(playerid);
    4. resetPlayer(playerid);
    5. KillTimer(paydayzeit[playerid]);
    6. return 1;
    7. }


    Die Variablen werden ausgelesen etc., der Timer geht aber nicht..
  • Ich bin mir nicht sicher aber ich glaub es klappt am besten wenn du einfach einen 1 Sekunden timer oder vllt sogar 60 Timer vom Server aus laufen lässt, z.B. Server startet dann Timer starten und in diesem Timer all Spieler IDs checken und denen dann die Zeit adden.

    Ich habs gerade nachgeguckt, mein Server hat einen SekundenTimer, dort habe ich z.B. PlayerInfo[playerid][pPaydaySecs] += 1 eingefügt. Und wenn es bei 60 ist, macht man daraus PlayerInfo[playerid][PaydayMins] += 1 und Sekunden wieder auf 0, wenn es 60 Minuten sind wird der Payday ausgezahlt.

    Edit: Meine Funktion

    Spoiler anzeigen



    Quellcode

    1. if(PlayerInfo[i][pPrison] <= 0)
    2. {
    3. PlayerInfo[i][pPaydaySecs] += 1;
    4. if(PlayerInfo[i][pPaydaySecs] == 60)
    5. {
    6. PlayerInfo[i][pPaydayMins] += 1;
    7. PlayerInfo[i][pPaydaySecs] = 0;
    8. if(PlayerInfo[i][pPaydayMins] == 60)
    9. {
    10. Payday(i);
    11. PlayerInfo[i][pPaydayMins] = 0;
    12. }
    13. }
    14. }
    Alles anzeigen




    Das ist im Sekundentimer drinne,
    Die Funktion "Payday(i)" ist die Funktion die den Payday durchführt. Gehaltscheck, nachricht, überweisung aufs Konto etc.
    Mit freundlichen Grüßen