Beiträge von don456

    Naja egal muss ich mir ne andere Lösung suchen


    Edit: habe gerade damit angefangen Ladmin zu testen es funktionier mit dem login systeme besser werde das woll nehmen und übersetzen poste es dann hier im forum wenn ich es fertig habe

    Du brauchst nen FTp programm um es erstmal hochzuladen zB. Filezilla
    Damit lädst du deine Datein vom board auf deine Seite hoch.
    Wenn du das gemacht hast gehst du auf deine Hp und schreibst hinter den link install.php Beispiel: xyz.funpic.de/install.php(ich weiß nicht genau o es beim WBB install.php heißt)

    Wie gesagt ist das das sAdmin systeme von monti nur übersetzt aber da es monti gelöscht hat muss ich mal kurz schauen ob ichs vielleicht aus meinem gamemode rausbekomme


    Edit: habs nochmal rausgesucht:
    hier


    Edit2: Und dieses adminscript hab ich nun mit allem erweitert was ich brauche freeze, unfreeze, mute, unmute mehr brauche ich nicht ich brauche nicht sowas wie wetter ändern und deswegen halte ich an deisem script so fwest mein problem ist nur das der login halt mit dem geld spinnt und sich der geldbetrag sich immmer ins plus verdreifacht oder sich auch ins minus verdreifacht


    Bitte kann mir nicht irgendeiner helfen?

    unter connect steht nichts vom GivePlayerMoney usw. war auch schon son einfall von mir das es dadran liegen könnte ist aber nichts.


    Und so sieht der login aus:
    public OnPlayerLogin(playerid,const string[])
    {
    new pname2[MAX_PLAYER_NAME];
    new pname3[MAX_PLAYER_NAME];
    new string2[64];
    new string3[128];
    GetPlayerName(playerid, pname2, sizeof(pname2));
    format(string2, sizeof(string2), "%s.cer", pname2);
    new File: UserFile = fopen(string2, io_read);


    if (UserFile)
    {
    new valtmp[128];
    fread(UserFile, valtmp);strmid(PlayerInfo[playerid][pPassword], valtmp, 0, strlen(valtmp)-1, 255);


    if ((strcmp(PlayerInfo[playerid][pPassword], string, true, strlen(valtmp)-1) == 0))
    {
    new key[128],val[128];
    new Data[128];
    while(fread(UserFile,Data,sizeof(Data)))
    {
    key = ini_GetKey(Data);
    if( strcmp( key , "Kills" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pKills] = strval( val ); }
    if( strcmp( key , "Deaths" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pDeaths] = strval( val ); }
    if( strcmp( key , "Money" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pCash] = strval( val ); }
    if( strcmp( key , "Score" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pScore] = strval( val ); }
    if( strcmp( key , "Adminlevel" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pAdmin] = strval( val ); }
    GivePlayerMoney(playerid,PlayerInfo[playerid][pCash]);
    }
    fclose(UserFile);
    gPlayerLogged[playerid] = 1;
    gPlayerAccount[playerid] = 1;
    new score = PlayerInfo[playerid][pScore];
    SetPlayerScore(playerid, score);
    GetPlayerName(playerid, pname3, sizeof(pname3));
    format(string3, sizeof(string3), "Willkommen %s, du bist nun eingeloggt!", pname3);
    SendClientMessage(playerid, COLOR_WHITE,string3);
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Falsches Passwort!!!");
    fclose(UserFile);
    }
    }
    return 1;
    }

    Das:
    public OnPlayerDisconnect(playerid, reason)
    {
    OnPlayerUpdate(playerid);
    gPlayerLogged[playerid] = 0;
    return 1;
    }
    und bei login das:
    if (strcmp(cmd, "/login", true) ==0 )
    {
    if(IsPlayerConnected(playerid))
    {
    new tmppass[64];
    if(gPlayerLogged[playerid] == 1)
    {
    SendClientMessage(playerid, COLOR_GREY, "Du bist bereits eingeloggt.");
    return 1;
    }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GREY, "Benutze: /register [passwort");
    return 1;
    }
    strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
    Encrypt(tmppass);
    OnPlayerLogin(playerid,tmppass);
    }
    return 1;
    }

    Wenn das Gebäude kein Interior hat setz es auf 0

    if(pickupid == lvpdeingang)
    {
    if(gLeader[playerid] == LsCop || gTeam[playerid] == LsCop || gLeader[playerid] == LsFbi || gTeam[playerid] == LsFbi || gLeader[playerid] == LsArmy || gTeam[playerid] == LsArmy)
    {
    SetPlayerPos(playerid,239.6620,142.0520,1004.0234);
    SetPlayerInterior(playerid, 0);
    }
    SendClientMessage(playerid, 0x33AA33AA, "Du bist kein Polizist,Fbi oder Soldat!");
    }


    Hab denn Punkt auch etwas abgeändert vielleicht gehts

    Vielleicht ist es ein wenig weit herfholt ich hab zb. in einen CW script denn zuschauern mal die /spec funktion gegeben das sah ungefähr so aus:



    und das dürfte auch ungefähr so mit jail und unjail funzen wenn du nen bisschen dranrum baust


    EDIT:
    Sry mir ist erstmal kein anderes beispiel eingefallen als /spec


    EDIT2: habs mal auf jail geändert kp obs funktioniert


    Also das oben hin:

    #define COLOR_RED 0xFF0000AA
    #define COLOR_GREEN 0x007700AA
    #define COLOR_ORANGE 0xFF9900AA
    #endif
    forward Unjail(unjailid);
    forward Jail(jailid);
    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;
    }


    Dann geht es weiter hier mit:
    public Jail(jailid)
    {
    SetPlayerInterior(jailid,10);
    SetPlayerPos(jailid,223.2217,111.1841,999.0156);
    SendClientMessageToAll(COLOR_RED,"Jemand wurde gejailt(Gefängnis)");
    return 1;
    }


    public Unjail(unjailid)
    {
    SetPlayerInterior(unjailid,0);
    SetPlayerPos(unjailid,2287.1262,2429.4392,10.8203);
    SendClientMessageToAll(COLOR_GREEN,"Der wo Gejailt war ist aus dem Knast raus(Gefängnis)");
    return 1;
    }


    Und jetzt kommt das mans auch Admin und cops bezieht
    public OnPlayerCommandText(playerid, cmdtext[])
    {


    new cmd[256];
    new idx;
    cmd = strtok(cmdtext, idx);


    if(strcmp(cmd, "/unjail", true) == 0 && IsPlayerAdmin(playerid)) {
    new giveplayerid;
    new tmp[256];
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) {
    SendClientMessage(playerid, COLOR_ORANGE, "Benutzung: /unjail [Player ID]");
    return 1;
    }
    giveplayerid = strval(tmp);
    if (IsPlayerConnected(giveplayerid))
    {
    Unjail(giveplayerid);
    }
    return 1;
    }



    if(strcmp(cmd, "/unjail", true) == 0 && gTeam[playerid] == TEAM_Cops) {
    new giveplayerid;
    new tmp[256];
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) {
    SendClientMessage(playerid, COLOR_ORANGE, "Benutzung: /unjail [Player ID]");
    return 1;
    }
    giveplayerid = strval(tmp);
    if (IsPlayerConnected(giveplayerid))
    {
    Unjail(giveplayerid);
    }
    return 1;
    }
    if(strcmp(cmd, "/jail", true) == 0 && IsPlayerAdmin(playerid)) {
    new giveplayerid;
    new tmp[256];
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) {
    SendClientMessage(playerid, COLOR_ORANGE, "Benutzung: /jail [Player ID]");
    return 1;
    }
    giveplayerid = strval(tmp);
    if (IsPlayerConnected(giveplayerid))
    {
    Jail(giveplayerid);
    }
    return 1;
    }
    if(strcmp(cmd, "/jail", true) == 0 && gTeam[playerid] == TEAM_Cops) {
    new giveplayerid;
    new tmp[256];
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) {
    SendClientMessage(playerid, COLOR_ORANGE, "Benutzung: /jail [Player ID]");
    return 1;
    }
    giveplayerid = strval(tmp);
    if (IsPlayerConnected(giveplayerid))
    {
    Jail(giveplayerid);
    }
    return 1;
    }


    EDIT3: Irgendwie ist es beim runter schreiben ein wenig verrutscht

    Vielleicht gehts:
    #include <a_samp>


    new keydown[MAX_PLAYERS] = {false, ...};
    new rampid[MAX_PLAYERS] = {-1, ...};
    forward Keys();
    forward RemoveRamp(playerid);
    forward Float:GetOptimumRampDistance(playerid);
    forward Float:GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance);


    new ramptypes[] = {
    1503, // curvy normal one
    1660, // concrete one with pipes
    1245, // plank of wood against a box
    1631, // water ramp with rocks
    1632, // normal water ramp
    1655, // wide water ramp
    };


    new playerramptypes[MAX_PLAYERS] = {0, ...};


    public OnFilterScriptInit()
    {
    SetTimer("Keys", 100, 1);
    return 1;
    }


    public Keys()
    {
    new keys, updown, leftright, playerid;
    new Float:x, Float:y, Float:z, Float:angle;
    for (playerid = 0; playerid < MAX_PLAYERS; playerid++) {
    if (IsPlayerConnected(playerid)) {
    GetPlayerKeys(playerid, keys, updown, leftright);
    if (keys & KEY_ACTION && IsPlayerInAnyVehicle(playerid)) {
    if (!keydown[playerid]) {
    keydown[playerid] = true;
    if (rampid[playerid] == -1) {
    GetPlayerPos(playerid, x, y, z);
    angle = GetXYInFrontOfPlayer(playerid, x, y, GetOptimumRampDistance(playerid));
    switch (playerramptypes[playerid]) {
    case 2:
    {
    angle -= 90.0;
    if (angle < 0.0) angle += 360.0;
    z += 0.5;
    }
    case 1:
    {
    z -= 0.5;
    }
    }
    rampid[playerid] = CreateObject(ramptypes[playerramptypes[playerid]], x, y, z - 0.5, 0.0, 0.0, angle);
    SetTimerEx("RemoveRamp", 2000, 0, "d", playerid);
    }
    }
    } else keydown[playerid] = false;
    }
    }
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/setramp ", cmdtext, true, 9) == 0)
    {
    new ramp = strval(cmdtext[9]);
    if (ramp < 0 || ramp >= sizeof(ramptypes)) {
    SendClientMessage(playerid, 0xFFFFFFAA, "Invalid ramp ID.");
    } else {
    playerramptypes[playerid] = ramp;
    }
    return 1;
    }
    return 0;
    }


    public RemoveRamp(playerid)
    {
    if (rampid[playerid] != -1) {
    DestroyObject(rampid[playerid]);
    rampid[playerid] = -1;
    }
    }


    public OnFilterScriptExit()
    {
    for (new i=0; i<MAX_PLAYERS; i++)
    {
    if (rampid[i] != -1) DestroyObject(rampid[i]);
    }
    }


    Float:GetOptimumRampDistance(playerid)
    {
    new ping = GetPlayerPing(playerid), Float:dist;
    dist = floatpower(ping, 0.25);
    dist = dist*4.0;
    dist = dist+5.0;
    return dist;
    }


    Float:GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance)
    {
    new Float:a;
    GetPlayerPos(playerid, x, y, a);
    if (IsPlayerInAnyVehicle(playerid)) GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
    else GetPlayerFacingAngle(playerid, a);
    x += (distance * floatsin(-a, degrees));
    y += (distance * floatcos(-a, degrees));
    return a;
    }


    Stammt hier her


    EDIT: habs aber selber noch nicht getestet

    Hab ein Problem mit sAdmin von monti|spearrow.
    Und zwar hat das Admin Systeme ein loginsystem, dieses speichert das Geld.
    Mein Problem dabei ist das er das Geld immer nach jedem login sich ungefähr verdreifacht


    hier gibt es das Script

    Naja funktioniert nur halb
    Wenn man nicht als zuschauer /spec macht kommt Unknow Comment, wenn man als zuschauer /spec macht kommt du bist kein zuschauer aber es geht


    EDIT: Habs hinbekommen es geht hier mit:
    if(strcmp(cmd, "/spec", true) == 0 && gTeam[playerid] == TEAM_REF){
    new tmp[256];
    tmp = spec_strtok(cmdtext, idx);



    if(!strlen(tmp)) {
    SendClientMessage(playerid, COLOR_GREEN, "Benutze: /spec [id] (nur für Zuschauer)");
    return 1;
    }
    specplayerid = strval(tmp);


    if(!IsPlayerConnected(specplayerid)) {
    SendClientMessage(playerid, COLOR_RED, "specplayer: dieser player ist nicht aktiv.");
    return 1;
    }


    TogglePlayerSpectating(playerid, 1);
    PlayerSpectatePlayer(playerid, specplayerid);
    SetPlayerInterior(playerid,GetPlayerInterior(specplayerid));
    gSpectateID[playerid] = specplayerid;
    gSpectateType[playerid] = SPEC_TYPE_PLAYER;


    return 1;
    }
    if(strcmp(cmd, "/spec", true) == 0 && gTeam[playerid] == TEAM_1)
    {
    SendClientMessage(playerid,0xFF0000FF,"Du bist kein Zuschauer!");
    return 1;
    }
    if(strcmp(cmd, "/spec", true) == 0 && gTeam[playerid] == TEAM_2)
    {
    SendClientMessage(playerid,0xFF0000FF,"Du bist kein Zuschauer!");
    return 1;
    }

    Also das mit der Kamera kann man nicht beheben das es Blitz und alles stockt ok muss ich se deaktiverien.
    Werde das mit gteam gleich mal testen für die /spec funktion.
    Und antwort 1 von IceCube das ist einfach die /spec funktion aus admin /spec nur ihne das es auf admin begrenzt ist


    EDIT:


    So mal meine /spec funktion


    if(strcmp(cmd, "/spec", true) == 0) {
    new tmp[256];
    tmp = TEAM_REFspec_strtok(cmdtext, idx);


    if(!strlen(tmp)) {
    SendClientMessage(playerid, COLOR_GREEN, "Benutze: /spec [id] (nur für Zuschauer)");
    return 1;
    }
    specplayerid = strval(tmp);


    if(!IsPlayerConnected(specplayerid)) {
    SendClientMessage(playerid, COLOR_RED, "specplayer: dieser player ist nicht aktiv.");
    return 1;
    }


    TogglePlayerSpectating(playerid, 1);
    PlayerSpectatePlayer(playerid, specplayerid);
    SetPlayerInterior(playerid,GetPlayerInterior(specplayerid));
    gSpectateID[playerid] = specplayerid;
    gSpectateType[playerid] = SPEC_TYPE_PLAYER;


    return 1;
    }
    So wenn ich dann das mit gteam mache sieht das so aus:


    if(strcmp(cmd, "/spec", true) == 0) {
    new tmp[256];
    tmp = TEAM_REFspec_strtok(cmdtext, idx);


    if(gTeam[playerid] == TEAM_REF)


    if(!strlen(tmp)) {
    SendClientMessage(playerid, COLOR_GREEN, "Benutze: /spec [id] (nur für Zuschauer)");
    return 1;
    }
    specplayerid = strval(tmp);


    if(!IsPlayerConnected(specplayerid)) {
    SendClientMessage(playerid, COLOR_RED, "specplayer: dieser player ist nicht aktiv.");
    return 1;
    }
    else
    {
    SendClientMessage(playerid,0xFF0000FF,"Du bist kein Zuschauer!");
    }


    TogglePlayerSpectating(playerid, 1);
    PlayerSpectatePlayer(playerid, specplayerid);
    SetPlayerInterior(playerid,GetPlayerInterior(specplayerid));
    gSpectateID[playerid] = specplayerid;
    gSpectateType[playerid] = SPEC_TYPE_PLAYER;


    return 1;
    }
    So jetzt das Problem spec geht trotzdem noch für alle das einzigste was sich geändert hat ist das eine anzeige kommt "Du bist kein Zuschauer"

    Ich bin im Moment daran ein CW script zu schreiben. Soweit ist noch alles gut, aber ich würde gerne die /spec funktion nun für die zuschauer haben, wie soll ich das angehen?


    EDIT: Das mit /spec hab ich hin bekommen, aber bei mir können jetzt alle /spec machen wie bekomme ich das hin das nur die Zuschauer (TEAM_REF) /spec benutzen kann.


    Und noch ne frage wenn man mit ner kamera fotografiert bleibt alles für ne kurze zeit bei allem auf dem server stehen wie deaktiviere ich dieses?


    Und noch eine ich hab bei mir ein höhen limet drin, da die zuschauer auf einer plattform stehen, die die zuschauer zurücksetzt falls sie mal runter fallen. Aber diese begrenzung fast auch wenn der zuschauer /spec macht. Wie kann man diesen begrenzer nur auflösen wenn der zuschauer /spec macht, also wenn ers nicht /spec macht wirkt der begrenzer?