Beiträge von DasNeo

    Kann ich dir so leider nicht sagen, da es schon etwas her ist. Aber generell haben doch viele Server eigene Sachen draußen auf dem Meer?


    Ich versuche einfach mal alle Objekte raus zu nehmen. - Editiere den Beitrag gleich, falls kein neuer kommt.

    Ich starte es auf der neusten Version. - Und es funktioniert auch wunderbar bis man auf den "Spawn" Button der ClassSelection drückt.


    Selbstverständlich die neusten Includes.


    €dit:


    Selbst wenn ich alles in OnPlayerSpawn und OnPlayerRequestClass ausklammere (außer ein return 1;) passiert es.
    Auf den alten Versionen funktioniert es auch nicht mehr. 8|

    Hallöchen,


    habe ein "kleines" Problem mit meinem Script. Jedes mal, wenn ich spawne, erscheint das "Stay within the world boundaries". Leider auf die unschöne Art. (http://imageshack.us/a/img231/9255/samp376hh.png (Nicht mein Screen, aber so änhlich sieht es aus.)) Ich habe alle Worldboundries raus gemacht. AddPlayerClass ist auch drin.


    Spawn:


    Spoiler anzeigen
    public OnPlayerSpawn(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    if(!strcmp(SpielerName(playerid),"botboy",true))
    {
    PutPlayerInVehicle(playerid,botzug,0);
    //Frakbankladen();
    }
    if(IsPlayerNPC(playerid))
    {
    new npcname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, npcname, sizeof(npcname));
    if(!strcmp(npcname, "stripper", true))
    {
    SetPlayerSkin(playerid,178);
    }
    if(!strcmp(npcname, "stripper2", true))
    {
    SetPlayerSkin(playerid,246);
    }
    if(!strcmp(npcname, "stripper3", true))
    {
    SetPlayerSkin(playerid,245);
    }
    if(!strcmp(npcname, "Jeff", true))
    {
    SetPlayerSkin(playerid,44);
    }
    return 1;
    }
    maske[playerid]=0;
    RemovePlayerAttachedObject(playerid,9);
    aufbrechen[playerid]=0;
    RemovePlayerAttachedObject(playerid,1);
    schildarmour[playerid]=0;
    schildnutzung[playerid]=0;
    lspdschild[playerid]=0;
    bankraubzahl[playerid]=0;
    playerinbank[playerid]=0;
    SetPlayerColor(playerid,WEISS);
    SetPlayerInterior(playerid,0);
    SetCameraBehindPlayer(playerid);
    if(GetPVarInt(playerid,"Aduty")==1)
    {
    SetPlayerColor(playerid,HELLROT);
    }
    SetPVarInt(playerid,"Skinauswahl",0);
    SpielerSpeichern(playerid);

    Spoiler anzeigen
    //--skin beim spawn--//

    Spoiler anzeigen
    new spawnskin;
    spawnskin=GetPVarInt(playerid,"Skin");
    SetPlayerSkin(playerid,spawnskin);

    //--tazer reset--//

    Spoiler anzeigen
    SetPVarInt(playerid,"Tazerd",0);
    SetPVarInt(playerid,"Tazerdtime",0);

    Spoiler anzeigen
    //--duty reset--//

    Spoiler anzeigen
    if(GetPVarInt(playerid,"Fraktion")>=0)
    {
    SetPVarInt(playerid,"LspdDuty",0);
    SetPVarInt(playerid,"FsDuty",0);
    SetPVarInt(playerid,"AdacDuty",0);
    SetPVarInt(playerid,"TaxiDuty",0);
    SetPVarInt(playerid,"SantDuty",0);
    SetPVarInt(playerid,"MedicDuty",0);
    SetPVarInt(playerid,"FeuerDuty",0);
    SetPVarInt(playerid,"TruckDuty",0);
    SpielerSpeichern(playerid);

    lspddutys[playerid][0]=0;
    lspddutys[playerid][1]=0;
    lspddutys[playerid][2]=0;
    lspddutys[playerid][3]=0;
    lspddutys[playerid][4]=0;
    }

    Spoiler anzeigen
    //--fraktions spawn--//

    Spoiler anzeigen
    spawnbob(playerid);

    if(friedhofzeit[playerid]!=0)
    {
    GameTextForPlayer(playerid, "~w~Willkommen auf dem ~r~Friedhof", 5000, 3);
    SetPlayerPos(playerid,826.0681,-1102.9940,25.5938);
    //SetPlayerWorldBounds(playerid, 951.9454, 807.0247, -1072.5609, -1130.1929);
    SetPlayerSkin(playerid,212);
    SetPlayerInterior(playerid,0);
    SetPlayerFacingAngle(playerid,270);
    SetPlayerVirtualWorld(playerid,2);
    ResetPlayerWeapons(playerid);
    }

    //--hitman--//

    Spoiler anzeigen
    if(GetPVarInt(playerid,"Hitfried")>0)
    {
    GameTextForPlayer(playerid, "~w~Willkommen auf dem ~r~Friedhof", 5000, 3);
    SetPlayerPos(playerid,826.0681,-1102.9940,25.5938);
    //SetPlayerWorldBounds(playerid, 951.9454, 807.0247, -1072.5609, -1130.1929);
    SetPlayerSkin(playerid,212);
    SetPlayerInterior(playerid,0);
    SetPlayerFacingAngle(playerid,270);
    SetPlayerVirtualWorld(playerid,2);
    ResetPlayerWeapons(playerid);
    }

    Spoiler anzeigen
    //--fort--//

    Spoiler anzeigen
    if(GetPVarInt(playerid,"Fort")==1)
    {
    SendClientMessage(playerid, HELLROT,"Du hast deine Zeit im Fort De Morgan noch nicht abgesessen!");
    SetPlayerSkin(playerid,167);
    GameTextForPlayer(playerid, "~w~Willkommen im ~r~Fort De Morgan", 5000, 3);
    SetPlayerPos(playerid, 107.2300,1920.6311,18.5208);
    SetPlayerFacingAngle(playerid,270);
    SetCameraBehindPlayer(playerid);
    //SetPlayerWorldBounds(playerid, 337.5694,101.5826,1940.9759,1798.7453);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,0);
    ResetPlayerWeapons(playerid);
    }

    Spoiler anzeigen
    //--knast--//

    Spoiler anzeigen
    if(GetPVarInt(playerid,"Knast")>0)
    {
    SendClientMessage(playerid, HELLROT,"Du hast deine Zeit im Knast noch nicht abgesessen!");
    ResetPlayerWeapons(playerid);
    GameTextForPlayer(playerid, "~w~Willkommen im ~r~Knast", 5000, 3);
    SetPlayerPos(playerid,201.2311,168.2824,1003.0234);
    SetPlayerFacingAngle(playerid,90);
    SetCameraBehindPlayer(playerid);
    SetPlayerInterior(playerid,3);
    SetPlayerVirtualWorld(playerid,0);
    }

    Spoiler anzeigen
    //--wanted--//

    Spoiler anzeigen
    SetPlayerWantedLevel(playerid,GetPVarInt(playerid,"Wanteds"));
    }
    return 1;
    }


    Hoffe jemand hat die Lösung.


    Gruß,
    Neo. :)

    Das ist ja das selbe wie hier.
    Einfach ein random von 1000-9999 (Wenn es 4 Stellig sein soll), dann abfragen, ob kein anderer die Nummer hat. Falls sie keiner hat, ihm die nummer geben, falls sie einer hat, nochmal das Random ausführen.

    Könnte man den wert nicht in ein array setzen bzw in eine spieler bezogene vari und dann den output wert von random nicht mit einer schleife + if(vari[i][code] == output von random abfragen?


    Geht ja dann aber nur von den Spielern, die online sind. - Er will's ja für alle machen.

    Mit Dini ist das so eine Sache.


    Du müsstest vielleicht alle Zahlen in eine Datei speichern. (Bsp. zahlen.txt, mit erstmal einem key (max))


    Wenn jemand connectet dann und noch nicht registriert ist:


    new max = dini_GetInt("zahlen.txt", "max");
    dini_SetInt("zahlen.txt", "max", max+1);
    for(new i; i < max; i++)
    {
    format(sTest, sizeof(sTest), "%i", max);
    if(dini_GetInt("zahlen.txt", sTest) != 0)
    {
    dini_IntSet("zahlen.txt", max, 1); // 1 = Benutzer existiert, hat aber kein Bank Account.
    dini_IntSet(DeineSpielerDatei, "zahl", max); // Das ist dann die Zahl in der Zahlen Datei. Sprich: 1 entspricht der Zahl 1 in der Zahlen datei.
    }
    }


    Wenn er dann eine Zahl bekommt:


    new zahl[10], max, found, key;
    max = dini_GetInt("zahlen.txt", "max");
    format(zahl, sizeof(zahl), "%i", dini_GetInt(SpielerDatei, "zahl"));
    new wert = random(89999999) + 1000000;
    loop_start:
    for(new i; i < max; i++)
    {
    if(dini_GetInt("zahlen.txt", i) == wert) // Wenn die Zahl existiert.
    {
    key = i; // der Key für unten
    found++;
    }
    }
    if(found == 0) {
    dini_IntSet("zahlen.txt", key, wert);
    }
    else
    {
    goto loop_start;
    }


    # Ungetestet, aus dem Gedächnis und auf die schnelle geschrieben. Aber so würde ich das ganze lösen. Ist zwar extrem umständlich, aber anders bekommst du es mit dini nicht hin. Da empfiehlt sich MySQL.


    Die Lösung von @NicoWiss ist natürlich vieeeel einfacher. :D

    Naja, so funktioniert das auch nicht. :P


    Habe das zwar selbst nicht ganz verstanden, aber es sollte so gehen (laut Thema):


    strmid(hier dein enum, hier die Datei, false, strlen(nochmal die Datei), länge);


    Habe's mal kurz in Pawn getestet, und das haut keine Errors raus. Obs im Endeffekt geht, kann ich dir nicht sagen. :P

    Zitat

    zahl = d (handynummer) text = s (nachricht)


    Das ist richtig. - Aber um die Fehlermeldung bei der falschen Parameterangabe auszugeben benutzt man einfach nur if(sscanf....), oder irre ich mich?


    Was gibt er dir denn aus?

    Das kommt darauf an, wie viel Erfahrung du hast.


    Solltest du ein Anfänger sein, dann würde ich dir ein Selfmade an's Herz legen, um es richtig zu lernen.
    Da die deutsche SA-MP Community nur den GF-Müll gerne spielt (Ausnahmen vorhanden), solltest du dann später dich dem GodFather widmen.


    Gruß,
    Neo. :)

    Da du bei dem Timer Variablen verwendest, musst du diese auch weiter geben. Dies machst du mit SetTimerEx:


    SetTimerEx("tot",60000,false, "i", playerid);


    Dann musst du in tot() noch die Parameter einhängen. tot(playerid)


    Gruß,
    Neo. :)