Beiträge von MacGyver_HL

    Hallo Leute,


    ich habe ein sehr komisches Problem in meinem script und weiß überhaupt nicht woran es liegen könnte.


    Und zwar kommt es manchmal (eher selten) vor, dass wenn ein Spieler getötet wird zunächst zu Boden fällt, dann aber gleich
    wieder auferstehen und im Server rumlaufen kann. Er kann dann nichts machen außer rumlaufen. Andere Spieler sehen ihn nicht.


    Kann den Spieler auch nicht per Teleport zu mir holen und wenn ich mich zum Spieler teleportieren lassen will komm ich an den Punkt
    an dem er gestorben ist.


    Einzige Abhilfe ist ein Reconnect zu machen.


    Das ganze ist heute zum ersten mal passiert. Evtl. lag es daran dass heute zum ersten mal mehr wie 2-3 Spieler auf dem Server waren, keine Ahnung ob der server da anfängt zu laggen oder sonstwas...


    Hat da einer von euch ne Idee?

    hi,


    trag deine koordinaten hier ein :


    public OnPlayerRequestClass(playerid, classid)
    {
    SetPlayerPos(playerid, x, y, z);
    SetPlayerFacingAngle(playerid, (facingangle wert)); <<<<<
    SetPlayerCameraPos(playerid, x, y, z); <<<<<<
    SetPlayerCameraLookAt(playerid, x, y, z); <<<<<<


    ................




    konnte dir hoffentlich helfen :)

    Hallo Leute,


    ist es möglich eine Funktion nur für einen bestimmten Spieler auszuführen ?


    Im Prinzip geht es darum, dass ich einen /jail (also als cop jemand wegsperren) command gescripted habe. Hierbei gibt man auch die Zeit, die man in der Zelle bleibt, in sekunden an.


    Hier meine Codes:


    Jail Command:

    if(!strcmp(cmd, "/jail", true, 5))
    {
    if(gTeam[playerid] != TEAM_COPS)
    {
    SendClientMessage(playerid, ROT, "Only Cops can use this command");
    return 1;
    }
    new tmp[256], str[256],a[256], integer: jailtime, jailedid, jailedname;
    tmp = strtok(cmdtext, idx);
    jailedid = strval(tmp);
    a = strrest(cmdtext, idx);
    jailtime = strval(a);
    if(strlen(tmp) == 0)
    {
    SendClientMessage(playerid, GELB, "USAGE: /jail ID TIME(in seconds)");
    return 1;
    }
    if(jailtime > 600)
    {
    SendClientMessage(playerid, ROT, "Max. jailtime is 600 seconds");
    return 1;
    }
    if((IsPlayerInRangeOfPoint(playerid, 8, 270.0385,77.7446,1001.0391)) && (IsPlayerInRangeOfPoint(jailedid, 8, 270.0385,77.7446,1001.0391)))
    {
    SetPlayerPos(jailedid, 264.0385, 77.7446,1001.0391);
    format(str, sizeof(str),"You have been jailed for %i Seconds", jailtime);
    SendClientMessage(jailedid, WEISS, str);
    SendClientMessage(playerid, WEISS, "Suspect jailed");
    gPlayerjailed[jailedid] = 1;
    ResetPlayerWeapons(jailedid);
    SetTimer("unjail", jailtime * 1000, false);
    return 1;
    }
    else return SendClientMessage(playerid, ROT, "You or the suspect are not in near of the cell");
    return 1;
    }


    Funktion "unjail":


    public unjail(playerid)
    {
    if(gPlayerjailed[playerid] == 1)
    {
    SetPlayerPos(playerid, 267.2925,77.7186,1001.0391);
    SendClientMessage(playerid, WEISS, "You have been released from the jail. Behave in future.");
    gPlayerjailed[playerid] == 0;
    return 1;
    }
    return 1;
    }



    Das Problem liegt wohl an der playerid. Denn bei diesem Code gilt die Funktion nur für playerid (0 in dem Fall). Wenn ich ne Schleife (i<MAX_PLAYERS) hinzufüge würden ja alle inhaftierten gleichzeitig entlassen werden.


    Daher meine Frage, was muss ich hier scripten damit eben nur der entlassen wird, bei dem die Zeit bereits rum ist ?


    Danke schonmal

    EDIT: Hat sich grad erledigt. Hab bei der Variablen gPlayercrime[MAX_PLAYERS] noch ein [256] hinzugefügt und jetzt klappts.




    Tach Jungs,


    nachdem ich das Problem beim /pay command hatte (dank eurer Hilfe gelöst :) ), habe ich nun wieder ein ähnliches Problem bei meinem
    /su command. Der Befehl macht aus einem Spieler einen Verdächtigen und legt einen Datensatz an, welcher Straftat/Berichterstatter/Zeit enthalten soll.


    Erstatter und Zeit funktionieren soweit aber bei der Straftat an sich hab ich wieder das Problem.


    Hier ist der source(Fehler liegt bei Zeile 19)



    if(!strcmp(cmd, "/su", true, 3))
    {
    if(gTeam[playerid] != TEAM_COPS)
    {
    SendClientMessage(playerid, ROT, "Only Cops can use this command");
    return 1;
    }
    new tmp[256], suspectid, crime[256], hour, min, second, reportername[128];
    tmp = strtok(cmdtext, idx);
    suspectid = strval(tmp);
    crime = strrest(cmdtext, idx);
    if(strlen(tmp) == 0)
    {
    SendClientMessage(playerid, GELB, "USAGE: /mdc ID");
    return 1;
    }
    GetPlayerName(playerid, reportername, sizeof(reportername));
    gettime(hour, min);
    gPlayercrime[suspectid] = crime;
    gReporter[suspectid] = GetPlayerName(playerid);
    gRepHours[suspectid] = hour;
    gRepMinutes[suspectid] = min;
    SendClientMessage(playerid, WEISS, "Entry in the Mobile Data Computer made");
    return 1;
    }


    C:\Program Files (x86)\GTA SA\GTA San Andreas\SAMP Server\gamemodes\homerlive.pwn(848: error 006: must be assigned to an array)


    Was mach ich da falsch ?

    das hatte ich auch schon probiert aber da bekomm ich andere Errors:

    C:\Program Files (x86)\GTA SA\GTA San Andreas\SAMP Server\gamemodes\homerlive.pwn(1326) : error 033: array must be indexed (variable "Value")
    C:\Program Files (x86)\GTA SA\GTA San Andreas\SAMP Server\gamemodes\homerlive.pwn(1334) : error 035: argument type mismatch (argument 2)
    C:\Program Files (x86)\GTA SA\GTA San Andreas\SAMP Server\gamemodes\homerlive.pwn(1335) : error 035: argument type mismatch (argument 2)


    Quelle:


    if(Value <= GetPlayerMoney(playerid))
    GivePlayerMoney(playerid, - Value);
    GivePlayerMoney(giveplayerid, Value);


    :S