Jailtime und Totime

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
  • Hallo ich wollte mal fragen ob ich das so richtig gemacht habe mit der Jailtime und Todestime ?
    Jeffry:
    Der Timer der die Sekunden Runter zählt
    public sekunde()
    {
    for(new v = 0; v<MAX_PLAYERS; v++)
    {
    if(sInfo[v][tott] > 0)
    {
    sInfo[v][tott] -= 1000;
    if(sInfo[v][tott] == 0)
    {
    SendClientMessage(v,weiß,"");
    SendClientMessage(v,weiß,"");
    SendClientMessage(v,weiß,"");
    SendClientMessage(v,weiß,"");
    SendClientMessage(v,weiß,"");
    SendClientMessage(v,weiß,"");
    SendClientMessage(v,weiß,"");
    SendClientMessage(v,weiß,"Ein wunder ist Passier");
    SendClientMessage(v,weiß,"Du bist nun Wieder am Leben");
    if(sInfo[v][jailtime] > 0)
    {
    new rand = random(sizeof(knastsfpd));
    SetTimer("sekunde",sInfo[v][jailtime],0);
    SetPlayerInterior(v,10);
    SetPlayerVirtualWorld(v,24);
    SetPlayerPos(v,knastsfpd[rand][0],knastsfpd[rand][1],knastsfpd[rand][3]);
    SetPlayerFacingAngle(v,knastsfpd[rand][4]);
    sInfo[v][kx] = knastsfpd[rand][0];
    sInfo[v][ky] = knastsfpd[rand][1];
    sInfo[v][kz] = knastsfpd[rand][2];
    }
    else
    {
    SpawnPlayer(v);
    return 1;
    }
    }
    return 1;
    }
    if(sInfo[v][jailtime] > 0)
    {
    sInfo[v][jailtime] -= 1000;
    if(sInfo[v][jailtime] == 0)
    {
    GameTextForPlayer(v,"~r~Du bist Frei",2000,0);
    sInfo[v][kx] = 0;
    sInfo[v][ky] = 0;
    sInfo[v][kz] = 0;
    SpawnPlayer(v);
    }
    return 1;
    }
    if(sInfo[v][bankkt] > 0)
    {
    sInfo[v][bankkt] -= 1000;
    if(sInfo[v][bankkt] == 0)
    {
    SendClientMessage(v,GRÜN,"=============== | Bank Los Santos | ===============!");
    SendClientMessage(v,GRÜN,"Dein Bankkonto wurde erfolgreich erstellt!");
    SendClientMessage(v,GRÜN,"Du kannst am ATM oder in der Bank Geld Abheben/Einzahlen und dein Kontostand prüfen.");
    SendClientMessage(v,GRÜN,"=============== | Bank Los Santos | ===============!");
    sInfo[v][bankk] = 1;
    }
    }
    if(sInfo[v][persot] > 0)
    {
    sInfo[v][persot] -= 1000;
    if(sInfo[v][persot] == 0)
    {
    sInfo[v][pantrag] = 1;
    SendClientMessage(v,weiß,"=============== | Personalausweis Information | ===============");
    SendClientMessage(v,weiß,"Dein Personalausweis wurde fertig erstellt und kann abgeholt werden.");
    SendClientMessage(v,weiß,"Die Bearbeitungskosten deines Personalausweises liegen bei 500$.");
    }

    }
    if(sInfo[v][eckt] > 0)
    {
    sInfo[v][eckt] -= 1000;
    if(sInfo[v][eckt] == 0)
    {
    sInfo[v][pantrag] = 1;
    SendClientMessage(v,weiß,"=============== | Bank Los Santos | ===============");
    SendClientMessage(v,weiß,"Dein Personalausweis wurde fertig erstellt und kann abgeholt werden.");
    SendClientMessage(v,weiß,"Die Bearbeitungskosten deines Personalausweises liegen bei 500$.");
    SendClientMessage(v,weiß,"=============== | Bank Los Santos | ===============");
    }


    }
    if(Fahrsstunde[v][fahr_bAktiv])
    {
    new veh = GetPlayerVehicleID(v),string[64],speed = GetVehicleSpeed(veh);
    if(speed>100)
    {
    sInfo[v][fahrpunkte] ++;
    if(sInfo[v][fahrpunkte] == 5)
    {
    SetVehicleToRespawn(veh);
    tank[veh] = 100;
    SendClientMessage(v,EROT,"Du bist durchgefallen da du zuviele Fehler Punkte hattest!");
    return 1;
    }
    else
    {
    format(string,sizeof(string),"Du bist zu Schnell! Fehler ( %d | 5)",sInfo[v][fahrpunkte]);
    SendClientMessage(v,EROT,string);
    return 1;
    }
    }
    }
    }


    public OnPlayerRequestClass(playerid, classid)
    {
    if(sInfo[playerid][PTot] == 1)
    {
    SendClientMessage(playerid,weiß,"");
    SendClientMessage(playerid,weiß,"");
    SendClientMessage(playerid,weiß,"");
    SendClientMessage(playerid,weiß,"");
    SendClientMessage(playerid,weiß,"");
    SendClientMessage(playerid,weiß,"");
    SendClientMessage(playerid,weiß,"");
    SendClientMessage(playerid,weiß,"");
    SendClientMessage(playerid,weiß,"");
    SendClientMessage(playerid,weiß,"Du bist soeben gestorben!");
    SendClientMessage(playerid,weiß,"Gleich wird ein Wunder passieren!");
    SetTimer("sekunde",sInfo[playerid][tott],0);
    SetPlayerVirtualWorld(playerid,89);
    SetPlayerPos(playerid,816.6987,-1103.0229,25.7914);
    }
    if(sInfo[playerid][jailtime] > 0)
    {
    SendClientMessage(playerid,IGELB,"Du musst deine Restzeit im Knast noch absitzen!");
    SetTimer("sekunde",sInfo[playerid][jailtime],0);
    SetPlayerInterior(playerid,10);
    SetPlayerVirtualWorld(playerid,24);
    SetPlayerPos(playerid,sInfo[playerid][kx],sInfo[playerid][ky],sInfo[playerid][kz]);
    }
    else
    {
    SetSpawnInfo(playerid,0,26,370.3382,-2059.1753,8.6107,359.5793,0,0,0,0,0,0);
    SetPlayerInterior(playerid, 0);
    SetPlayerVirtualWorld(playerid, 0);
    SpawnPlayer(playerid);
    }
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    if(sInfo[playerid][PTot] == 1)
    {
    SetPlayerVirtualWorld(playerid,89);
    SetPlayerPos(playerid,816.6987,-1103.0229,25.7914);
    }
    else if(sInfo[playerid][jailtime] > 0)
    {
    SetPlayerInterior(playerid,10);
    SetPlayerVirtualWorld(playerid,24);
    SetPlayerPos(playerid,sInfo[playerid][kx],sInfo[playerid][ky],sInfo[playerid][kz]);
    }
    else if(!isPlayerInFrakt(playerid, 0))
    {
    if(sInfo[playerid][spawnchange]==1)
    {
    new fID;
    fID = sInfo[playerid][fraktion];
    SetPlayerPos(playerid, fInfo[fID][f_x],fInfo[fID][f_y],fInfo[fID][f_z]);
    SetPlayerFacingAngle(playerid, fInfo[fID][f_r]);
    SetPlayerInterior(playerid, fInfo[fID][f_inter]);
    SetPlayerVirtualWorld(playerid, fInfo[fID][f_world]);
    GivePlayerWeapon(playerid, fInfo[fID][f_waffe1], fInfo[fID][f_ammo1]);
    GivePlayerWeapon(playerid, fInfo[fID][f_waffe2], fInfo[fID][f_ammo2]);
    GivePlayerWeapon(playerid, fInfo[fID][f_waffe3], fInfo[fID][f_ammo3]);
    GivePlayerWeapon(playerid, fInfo[fID][f_waffe4], fInfo[fID][f_ammo4]);
    }
    }
    SetPlayerSkin(playerid,sInfo[playerid][Skin]);
    return 1;
    }


    public OnPlayerDeath(playerid, killerid, reason)
    {
    sInfo[playerid][PTot] = 1;
    GivePlayerMoney(playerid,100);
    new Float:ptx,Float:pty,Float:ptz,string[80];
    GetPlayerPos(playerid, ptx,pty,ptz);
    sInfo[playerid][dx] = ptx;
    sInfo[playerid][dy] = pty;
    sInfo[playerid][dz] = ptz;
    TotenKopf[playerid] = CreatePickup(1254,1,ptx,pty,ptz);
    format(string,sizeof(string),"Leichen Name\nvon %s",getPlayerName(playerid));
    TotenName[playerid] = Create3DTextLabel(string,GRAU,ptx,pty,ptz,10,GetPlayerVirtualWorld(playerid),0);
    format(string, sizeof(string),"Der Spieler %s ID %i ist soeben gestorben!",getPlayerName(playerid),playerid);
    SendClientMessage(playerid,weiß,"");
    SendClientMessage(playerid,weiß,"");
    SendClientMessage(playerid,weiß,"");
    SendClientMessage(playerid,weiß,"");
    SendClientMessage(playerid,weiß,"");
    SendClientMessage(playerid,weiß,"");
    SendClientMessage(playerid,weiß,"");
    SendClientMessage(playerid,weiß,"");
    SendClientMessage(playerid,weiß,"");
    SendClientMessage(playerid,weiß,"Du bist soeben gestorben!");
    SendClientMessage(playerid,weiß,"Gleich wird ein Wunder passieren!");
    SetTimer("sekunde",180000,false);
    SendOndutyMedicMessage(GELB,string);
    if(!isPlayerInFrakt(killerid,1) || !isPlayerInFrakt(killerid,1))
    {
    for(new i = sInfo[killerid][wantedl]; i < (sInfo[killerid][wantedl]+2); i++)
    {
    TextDrawShowForPlayer(killerid, Wanted[i]);
    }
    sInfo[killerid][wantedl] +=2;
    }
    else
    {
    }
    if(sInfo[playerid][kGeld] > 0)
    {
    if(isPlayerInFrakt(killerid,15))
    {
    GivePlayerMoney(killerid, sInfo[playerid][kGeld]);
    GameTextForPlayer(playerid,"~r~Du warst ein auftrag der Hitmans",2000,0);
    GameTextForPlayer(killerid,"~r~Auftrag Erledigt",2000,0);
    format(string,sizeof(string),"Der Spieler %s hat den auftrag erledigt und %s gekillt.",getPlayerName(killerid),getPlayerName(playerid));
    SendHitmanMessage(BRAUN,string);
    format(string,sizeof(string),"Er erhät nun das ausgesetzte Kopfgeld in Höhe von %i$.",sInfo[playerid][kGeld]);
    SendHitmanMessage(BRAUN,string);
    sInfo[playerid][kGeld] = 0;
    }
    }
    if(sInfo[playerid][wantedl] > 0)
    {
    if(isPlayerInFrakt(killerid,1))
    {
    if(sInfo[killerid][cduty] == 1)
    {
    GivePlayerMoney(playerid,1500);
    GameTextForPlayer(killerid,"~r~Auftrag Erledigt",2000,0);
    format(string,sizeof(string),"Beamter %s hat den Verbrecher schwer Verletzt.",getPlayerName(killerid),getPlayerName(playerid));
    SendCopDutyMessage(BLAU,string);
    format(string,sizeof(string),"Du bist nun für %i Min im Knast!",sInfo[playerid][wantedl]*5);
    SendClientMessage(playerid,DUNKEL_ROT,string);
    sInfo[playerid][jailtime] = sInfo[playerid][wantedl]*300000;
    for(new w = sInfo[playerid][wantedl]-1; w >= (sInfo[playerid][wantedl]-sInfo[playerid][wantedl]); w--)
    {
    TextDrawHideForPlayer(playerid, Wanted[w]);
    }
    sInfo[playerid][wantedl] = 0;
    }
    else
    {
    }
    }
    if(isPlayerInFrakt(killerid,2))
    {
    if(sInfo[killerid][fduty] == 1)
    {
    GivePlayerMoney(playerid,1500);
    GameTextForPlayer(killerid,"~r~Auftrag Erledigt",2000,0);
    format(string,sizeof(string),"Beamter %s hat den Verbrecher schwer Verletzt.",getPlayerName(killerid),getPlayerName(playerid));
    SendCopDutyMessage(BLAU,string);
    format(string,sizeof(string),"Du bist nun für %i Min im Knast!",sInfo[playerid][wantedl]*5);
    SendClientMessage(playerid,DUNKEL_ROT,string);
    sInfo[playerid][jailtime] = sInfo[playerid][wantedl]*300000;
    for(new w = sInfo[playerid][wantedl]-1; w >= (sInfo[playerid][wantedl]-sInfo[playerid][wantedl]); w--)
    {
    TextDrawHideForPlayer(playerid, Wanted[w]);
    }
    sInfo[playerid][wantedl] = 0;
    }
    else
    {
    }
    }
    }
    return 1;
    }




    und wieso ist nach dem Server Restart an der stelle wo ich vorher /restart eingegeben habe nur die Schrift noch da aber kein Icon

    //OnPlayerDisconnect
    if(DiscPickup[playerid]) DestroyPickup(DiscPickup[playerid]), DiscPickup[playerid] = 0;
    if(DiscText[playerid]) Delete3DTextLabel(DiscText[playerid]), DiscText[playerid] = Text3D:0;
    GetPlayerPos(playerid,pos[0],pos[1],pos[2]),GetPlayerVirtualWorld(playerid);
    DiscPickup[playerid] = CreatePickup(1314,1,pos[0],pos[1],pos[2],vw);
    format(string,sizeof(string),"Spieler %s hat den Server verlassen\n(%s)",getPlayerName(playerid),grund);
    DiscText[playerid] = Create3DTextLabel(string,ROT,pos[0],pos[1],pos[2],15,vw,1);
    SetTimerEx("DestroyPickups",30000,false,"i",playerid);
    return 1;
    }


    public DestroyPickups(playerid)
    {
    DestroyPickup(DiscPickup[playerid]), DiscPickup[playerid] = 0;
    Delete3DTextLabel(DiscText[playerid]), DiscText[playerid] = Text3D:0;
    return 1;
    }

  • Frage 1:
    Probiere es einfach mal aus. Das ist zu viel um das so zu überblicken.


    Frage 2:
    Arbeite da mit den Werten -1.
    Bei OnPlayerConnect, ganz als erstes:
    DiscPickup[playerid] = -1;
    DiscText[playerid] = Text3D:-1;


    //OnPlayerDisconnect
    if(DiscPickup[playerid] != -1) DestroyPickup(DiscPickup[playerid]), DiscPickup[playerid] = -1;
    if(DiscText[playerid] != Text3D:-1) Delete3DTextLabel(DiscText[playerid]), DiscText[playerid] = Text3D:-1;
    GetPlayerPos(playerid,pos[0],pos[1],pos[2]),GetPlayerVirtualWorld(playerid);
    DiscPickup[playerid] = CreatePickup(1314,1,pos[0],pos[1],pos[2],vw);
    format(string,sizeof(string),"Spieler %s hat den Server verlassen\n(%s)",getPlayerName(playerid),grund);
    DiscText[playerid] = Create3DTextLabel(string,ROT,pos[0],pos[1],pos[2],15,vw,1);
    SetTimerEx("DestroyPickups",30000,false,"i",playerid);
    return 1;
    }


    public DestroyPickups(playerid)
    {
    DestroyPickup(DiscPickup[playerid]), DiscPickup[playerid] = -1;
    Delete3DTextLabel(DiscText[playerid]), DiscText[playerid] = Text3D:-1;
    return 1;
    }