Beiträge von SkaterDenis

    Kopiere das noch irgendwo ganz unten mit rein... Dan musste es gehen

    strtok(const string[], &index)
    {
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
    index++;
    }
    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
    result[index - offset] = string[index];
    index++;
    }
    result[index - offset] = EOS;
    return result;
    }

    Goto ohne errors



    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new index, cmd[128];
    cmd = strtok(cmdtext, index);


    if (!strcmp(cmd, "/goto", true))
    {
    new Float:pX,Float:pY,Float:pZ,tmp[128];
    if (IsPlayerAdmin(playerid))
    {
    tmp = strtok(cmdtext, index);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GREEN, "Hilfe: /goto [ID]");
    SendClientMessage(playerid, COLOR_RED, "FUNKTION: Kann dich zu einem Spieler Porten.");
    return 1;
    }
    new giveplayerid = strval(tmp);
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    if (GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    SetPlayerInterior(playerid,GetPlayerInterior(giveplayerid));
    LinkVehicleToInterior(GetPlayerVehicleID(playerid),GetPlayerInterior(giveplayerid));
    GetPlayerPos(giveplayerid,pX,pY,pZ);
    SetVehiclePos(GetPlayerVehicleID(playerid),pX,pY,pZ+2);
    }
    else
    {
    SetPlayerInterior(playerid,GetPlayerInterior(giveplayerid));
    GetPlayerPos(giveplayerid,pX,pY,pZ);
    SetPlayerPos(playerid,pX,pY,pZ+2);
    }
    }
    else if(giveplayerid == INVALID_PLAYER_ID)
    {
    format(tmp, sizeof(tmp), "%d ist nicht im Server.", giveplayerid);
    SendClientMessage(playerid, COLOR_RED, tmp);
    }
    }
    else SendClientMessage(playerid, COLOR_RED, "Du bist kein Admin.");
    return 1;
    }


    if (!strcmp(cmd, "/gethere", true))
    {
    new Float:pX,Float:pY,Float:pZ,tmp[128];
    if (IsPlayerAdmin(playerid))
    {
    tmp = strtok(cmdtext, index);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GREEN, "Hilfe: /gethere [ID]");
    SendClientMessage(playerid, COLOR_RED, "FUNKTION: Kann einen Spieler zu dir Porten.");
    return 1;
    }
    new giveplayerid = strval(tmp);
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    if (GetPlayerState(giveplayerid) == PLAYER_STATE_DRIVER)
    {
    SetPlayerInterior(giveplayerid,GetPlayerInterior(playerid));
    LinkVehicleToInterior(GetPlayerVehicleID(giveplayerid),GetPlayerInterior(playerid));
    GetPlayerPos(playerid,pX,pY,pZ);
    SetVehiclePos(GetPlayerVehicleID(giveplayerid),pX+2,pY,pZ+2);
    }
    else
    {
    SetPlayerInterior(giveplayerid,GetPlayerInterior(playerid));
    GetPlayerPos(playerid,pX,pY,pZ);
    SetPlayerPos(giveplayerid,pX+2,pY,pZ+2);
    }
    }
    else if(giveplayerid == INVALID_PLAYER_ID)
    {
    format(tmp, sizeof(tmp), "%d ist nicht im Server.", giveplayerid);
    SendClientMessage(playerid, COLOR_RED, tmp);
    }
    }
    else SendClientMessage(playerid, COLOR_RED, "Du bist kein Admin.");
    return 1;
    }

    //Edit
    So das mit den floatstr habe ich hingekriegt ich glaube das ist jetzt so richtig wenn nicht sagt bescheid!


    2. So jetzt fehlt mir nur noch das bei /remap und /copymap die Zeile auf der zuletzt was stand ersetzt wird also in Objects.txt... Und bei /delmap die letzte gelösht wird!
    Meinetwegen auch mit dini hauptsache das das klappt!

    muss man da extra ein timer erstellen oder geht das auch einfacher?
    Weil normalerweise wird man nachdem man jemand gespeckt hat und specoff macht neugespawnt...


    ich weis auch wie man pos saved und wieder läd aber wen ich bei spec pos speichere und bei specoff pos lade dan werde ich trodem ganz normal neue gespawnt also wie macht man das am besten? Mit SetTimerEx?

    Wird dan aber nicht bei in dm bei allen immer nur 1 gezeigt und zwar du selber?


    und noch ein error bei...

    //OnGameModeInit:
    stats[playerid]=TextDrawCreate(392,100,"Tode: 0, Kills: 0, im DM: 0"); //DM stats


    error 017: undefined symbol "playerid"


    die anderen gehen alle...

    Also sowas in der Art:


    Player DM Score:
    SkaterDenis Kills: 5 Deaths: 3
    BLabla Kills 3 Deaths: 5


    also
    Einfach ne aulistung von allen spielern und ihren kills und deaths...
    Es muss nicht unbedinngt der Spieler mit dem meisten Kills oben stehen. Wär besser muss aber nicht^^


    UND NOCHWAS!
    Das soll doch für jeden player einzeln angezeigt werden aber:


    Bei allen playern in dm wird selber kills deaths scorce angezeigt... z.b. einer stirbt dann haben alle ein extra death nicht nur der der gestorben ist...


    Wie macht man das das für jeden spieler einzeln angezeigt wird?

    ??? Natürlich kann man in samp die Fahrzeuge bewegen! Und der befehl Funktioniert auch... Das einzige ist das der grade zu genau funktioniert... Wieso sollte er auch nicht funktionieren? Aber ES FUNKTIONIERT!

    difx = newx - sx[playerid];
    dify = newy - sy[playerid];
    difz = newz - sz[playerid];
    difa = newa - sa[playerid];


    Kommt bei allen 4ren "warning 213: tag mismatch"


    EDIT
    Achso du hast das Float bei new vergessen... new Float:difx,Float:dify,Float:difz,Float:difa; jetzt kommt schonmal kein error gleich mal testen..


    EDIT
    Ne klappt nicht... genau wie forher bei dem kleinsten milimeter spawnt es zurück... habe sogar aus der 1 mal ne 10 gemacht hat trotzdem bei jeder scheise respawnt!

    Achso das meint ihr for (new i = 0; i < MAX_PLAYERS; i++) {
    Na das kommt noch ich teste natürlich meine scripts erst offline alleine befor ich die dan reinstelle...


    achja nochwas!
    Kann man das " if(newx != sx[playerid] || newy != sy[playerid] || newz != sz[playerid] || newa !=sa[playerid])
    so erweitern das bei einem unterschied von 1 das auto nicht zurückgespawnt wird?


    Also als beispiel wen die z achse beim speichern 5 ist und auf 5.5 verschoben wird wegen z.b. einer bordsteinkante! Das das auto noch nicht zürückkommt sondern erst ab einem unterschied von mindestens 1 zurückgespawnt wird!

    wieso newx y z? ich habe doch schon sx sy sz kann ich nicht gleich das verwenden?


    Klappt das nicht einfach so=?



    if(sx [playerid]!= sx[playerid] || sy[playerid] != sy[playerid] || sz[playerid] != sz[playerid] || sa[playerid] !=sa[playerid])
    {
    SetVehiclePos(SCAR[playerid], sx[playerid], sy[playerid], sz[playerid]);
    SetVehicleZAngle(SCAR[playerid], sa[playerid]);
    }

    das fahrzeug wird nicht zurückgestellt auf seine pos wan ich /scar eingegeben habe das wird garnicht verschoben als ob der timer garnicht da wäre!


    Also der Timer Funktioniert einfach nicht sonst schätzte ich alles richtig!

    ne das soll nur machen das einfahrzeug dauerhaft auf eine position gespawnt wird... als beispiel:


    Wen man mit z.b. mit nen Packer stuntet plaziert man ihn ja irgendwo hin und nutzt ihn als rampe... Dabei verschiebt er sich immer weiter bis man den nochmal zurückschieben muss..


    Der befehl soll dafür sorgen das der packer immer auf seine alte position zurückgespawnt werden soll! Das soll kein Savepos / loadpos kommand werden und auch nicht das fahrzeug irgendwo dauerhaft speichern!

    Wieso funktioniert das nicht?



    forward scar(playerid);
    new SCAR[MAX_PLAYERS],Float:sx[MAX_PLAYERS], Float:sy[MAX_PLAYERS], Float:sz[MAX_PLAYERS], Float:sa[MAX_PLAYERS];


    if (strcmp(cmdtext, "/scar", true)==0)
    {
    if (GetPlayerVirtualWorld(playerid) == 2)
    {
    SendClientMessage(playerid,COLOR_RED,"You cant use this command here!");
    }
    else
    {
    if (GetPlayerVirtualWorld(playerid) == 4)
    {
    SendClientMessage(playerid,COLOR_RED,"You cant use this command if you are jailed!");
    }
    else
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    SCAR[playerid] = GetPlayerVehicleID(playerid);
    GetVehiclePos(SCAR[playerid], sx[playerid], sy[playerid], sz[playerid]);
    GetVehicleZAngle(GetPlayerVehicleID(playerid), sa[playerid]);
    SetTimer("scar",100,1);
    SendClientMessage(playerid, COLOR_BASIC, "VehiclePOS saved!");
    }
    else
    {
    SendClientMessage(playerid, COLOR_BASIC, "You musst be in a vehicle!");
    }
    }
    }
    return 1;
    }


    public scar(playerid) {
    if(!GetVehiclePos(SCAR[playerid], sx[playerid], sy[playerid], sz[playerid]))
    {
    if(!GetVehicleZAngle(SCAR[playerid], sa[playerid]))
    {
    SetVehiclePos(SCAR[playerid], sx[playerid], sy[playerid], sz[playerid]);
    SetVehicleZAngle(SCAR[playerid], sa[playerid]);
    }
    }
    return 1;
    }

    Habe alle durchgetestet...

    483, //Camper
    534, //Remington
    535, //Slamvan
    536, //Blade
    558, //Uranus
    559, //Jester
    560, //Sultan
    561, //Stratum
    562, //Elegy
    565, //Flash
    567, //Savanna
    575, //Broadway
    576 //Tornado


    Bei denen geht jeweils die Paintjob ID " 0,1,2" Und "3" kann man verwenden um den Paintjob wieder zu löschen.