/spec Problem

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
  • Hey Leute ,


    Ich hab das Problem, wen ich aufhöre zu Spectaten(/spec) stirbt man einfach.


    Leider find ich wie immer den fehler im code nicht.


    if(strcmp("/spec",cmd,true)==0)
    {
    logCommand(playerid,cmdtext);
    if(IsPlayerAnAdmin(playerid,2)||GetPVarInt(playerid,"FM")==1)
    {
    tmp = strtok(cmdtext, idx);
    if(!tmp[0])return SendClientMessage(playerid, COLOR_GRAD2, "INFO: /spec [playerid]");
    new specedplayer = ReturnUser(tmp);
    if(specedplayer==INVALID_PLAYER_ID)return ErrorMsg(playerid,"Ungültiger Spieler.");
    if(uadmin[specedplayer]==0)
    {
    if(SpielerInfo[playerid][Admin]<SpielerInfo[specedplayer][Admin])return ErrorMsg(playerid,"Du darfst nur Leute specen, deren Rang kleiner als deiner ist.");
    }
    WaffenSpeichern(playerid);
    new Float:px,Float:py,Float:pz;
    GetPlayerPos(playerid,px,py,pz);
    LastSpecPos[playerid][0]=px;
    LastSpecPos[playerid][1]=py;
    LastSpecPos[playerid][2]=pz;
    GetPlayerHealth(playerid,LastSpecHeal[playerid]);
    LastSpecInt[playerid]=GetPlayerInterior(playerid);
    LastSpecVir[playerid]=GetPlayerVirtualWorld(playerid);
    SetPVarInt(specedplayer,"specadmin",playerid);
    if(!IsPlayerInAnyVehicle(specedplayer))
    {
    TogglePlayerSpectating(playerid, 1);
    PlayerSpectatePlayer(playerid,specedplayer);
    SetPlayerInterior(playerid,GetPlayerInterior(specedplayer));
    SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(specedplayer));
    spect[playerid]=1;
    }
    else
    {
    new vehicleid;
    vehicleid=GetPlayerVehicleID(specedplayer);
    TogglePlayerSpectating(playerid,1);
    PlayerSpectateVehicle(playerid,vehicleid);
    SetPlayerInterior(playerid,GetPlayerInterior(specedplayer));
    SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(specedplayer));
    spect[playerid]=1;
    }
    return 1;
    }
    return 1;
    }


    Wäre echt cool wen mir einer helfen könnte :)


    Lg


    Mr.ElectRoX

  • Also um aufzuhören zu spectaten machst du einfach nur /spec? Wenn ja dann fehlt hier einiges an code.


    Ich würde dir übrigens empfehlen ZCMD zu verwenden.

    Du brauchst Hilfe beim scripten? Siehe Hier:


    Klick mich!


    Derzeitiges Projekt: Youngs Deathmatch 1.0.0 [||||||||||]

  • Also um aufzuhören zu spectaten machst du einfach nur /spec? Wenn ja dann fehlt hier einiges an code.


    Ich würde dir übrigens empfehlen ZCMD zu verwenden.


    Oh Danke , ne mit /unspec hört man auf.
    Man hab das voll verpennt :S


    Code:

    if(strcmp("/unspec",cmd,true)==0)
    {
    logCommand(playerid,cmdtext);
    if(IsPlayerAnAdmin(playerid,2)||spect[playerid]==1||GetPVarInt(playerid,"FM")==1)
    {
    SetPVarInt(playerid,"waffengeladen",0);
    SetPVarInt(playerid,"loginspawn",1);
    TogglePlayerSpectating(playerid, 0);
    spect[playerid]=0;
    SetTimerEx("UnSpecLoad",500,0,"u",playerid);
    return 1;
    }
    return 1;
    }


    PS: warum zcmd? was ist daran besser?


  • Jetzt bräuchte ich nur noch den "public UnSpecLoad" welcher nicht zufälligerweise sinnlos ist?


    Warum ZCMD: Schneller und meiner Meinung nach einfacher soweit ich weiß. :)

    Du brauchst Hilfe beim scripten? Siehe Hier:


    Klick mich!


    Derzeitiges Projekt: Youngs Deathmatch 1.0.0 [||||||||||]


  • public UnSpecLoad(playerid)
    {
    WaffenLaden(playerid);
    SetPlayerInterior(playerid,LastSpecInt[playerid]);
    SetPlayerVirtualWorld(playerid,LastSpecVir[playerid]);
    SetPlayerPos(playerid,LastSpecPos[playerid][0],LastSpecPos[playerid][1],LastSpecPos[playerid][2]);
    SetPlayerHealth(playerid,LastSpecHeal[playerid]);
    return 1;
    }


    mhh werd mir ma zcmd anschauen ;)


    Edit:

    new Float:LastSpecPos[MAX_PLAYERS][3];
    new Float:LastSpecHeal[MAX_PLAYERS];
    new LastSpecInt[MAX_PLAYERS];
    new LastSpecVir[MAX_PLAYERS];


    falls es doch wichtig ist.