Beiträge von iMontreal

    Halllo Lifestyler,
    Danke für deine Antwort, ja ich habe den Wert erhöht. Ich hab ein bisschen rumprobiert, ich habe jetzt 0,005 genommen.
    Jetzt gehts, habe bissl rumprobiert.


    Hallo Almero,
    Danke für deine Antwort. Hast du das obere richtig gelesen ? - Dann wüsstest du das ich dieses Include habe und da Fehler bei hatte,
    das funktioniert bei mir kein Stück. Also, geh mir mit den Ding weg :) Ach neee :(


    Halllo Jeffry,
    Danke Danke für deine Antwort, ja, das habe ich in 0,005 geändert, das funktioniert nun richtig gut. Nur bin ich der Meinung, das sie etwas langsamer zu gehen, als sie sollten. Ich habe sie trotzdem auf beiden Seiten angepasst.


    Liebe Grüße iMontreal

    Hallo Smiley,
    Vielleicht solltest du selber entscheiden welche Befehle für den Server wichtig sind.
    Jedes Script ist da anders, jedes Script hat andere Adminbefehle, das was es halt für Features usw. benötigt.
    Solltest du aber eigentlich selber wissen. Die Befehle die du aufgeschrieben hast, sind schon mit die wichtigsten,
    vielleicht wäre noch /spec /unspec hilfreicht, oder /setplayerjob, /setcarhp usw. Admin sollte alles einstellen können und auch alle wichtigen Befehle :)
    Das wars von meiner Seite, es ist also Features abhängig usw. zb. ein Haussystem, die ganzen Adminbefehle fürs Haus.
    Da sammelt sich nachher schon etwas an, das kommt dann meist von selber.
    Ich hoffe ich konnte dir da ein bisschen zu sagen.
    Liebe Grüße iMontreal

    Hallo Jeffry,
    Danke das du dich diesen Fall annimmst, und mir geantwortet hast. Bisher, haben deine Idee'n immer sehr gut funktioniert, deshalb habe ich große
    zuversicht darin, dass es auch diesmals klappt. Nun aber mal Back to Topic.


    1. Versuch: PlayerHearMusicInRange auskommentieren
    Ergebnis = Erfolglos


    Codex von PlayerHearMusicInRange:


    stock PlayerHearMusicInRange(Float:x,Float:y,Float:z,musicid,Float:radius,Takecount,Stopmusictime)
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i)&&!IsPlayerNPC(i))
    {
    if(SpielerInfo[i][Eingeloggt]==1)
    {
    if(IsPlayerInRangeOfPoint(i,radius,x,y,z))
    {
    PlayerPlaySound(i,musicid,0.0,0.0,0.0);
    if(Takecount == 1)
    {
    SetTimerEx("StopPlayerPlaySound",Stopmusictime,0,"i",i);
    }
    }
    }
    }
    }
    return 1;
    }


    Die Funktion hat immer prima funktioniert.


    -----------------------------------------------------------------------------------------------------------------------------------------------


    2. Versuch: SetSchranke auskommentieren
    Ergebnis: Erfolgreich


    Sobald SetSchranke oder MoveSchranke draußen ist, funktioniert alles Prima, ich habe es sicherheitshalber mit eine SendClientMessage gedebuggt.
    Um näheres zu erfahren.


    -------------------------------------------------------------------------------------------------------------------------------------------------


    3. Versuch: MoveObject versuchen
    Ergebnis: Schranke geht zu schnell auf


    Sobald ich /mv eingebe, geht die Schranke zu schnell auf. Es ist wie ich es befürchtet habe, trotz richtiger Einstellung, meiner Meinung nach.
    Aber dem Script hat meine Meinung ja noch nie intressiert.


    Der Code sieht wie folgt aus.


    Definierung =
    new pdschranke[2];


    OnGameModeInit
    pdschranke[0]=CreateObject(968,699.0999800,-1384.8000000,14.4000000,0.0000000,90.0000000,0.0000000); //object(barrierturn) (1)
    pdschranke[1]=CreateObject(968,715.7999900,-1384.8000000,14.4000000,0.0000000,90.0000000,180.0000000); //object(barrierturn) (2)



    Wenn auf geht =
    if(IsPlayerInRangeOfPoint(playerid,10,699.0999800,-1384.8000000,14.4000000))
    {
    if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,6)||IsPlayerInFrakt(playerid,16)||IsPlayerAnAdmin(playerid,4))
    {
    MoveObject(pdschranke[0],699.0999800,-1384.8000000,14.4000000,0.01,0.0000000,0.0000000,0.0000000);
    tor[playerid]=1;
    }
    }
    if(IsPlayerInRangeOfPoint(playerid,10,715.7999900,-1384.8000000,14.4000000))
    {
    if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,6)||IsPlayerInFrakt(playerid,16)||IsPlayerAnAdmin(playerid,4))
    {
    MoveObject(pdschranke[1],715.7999900,-1384.8000000,14.4000000,0.01,0.0000000,0.0000000,180.0000000);
    tor[playerid]=1;
    }
    }



    Wenn zu geht =
    if(IsPlayerInRangeOfPoint(playerid,10,699.0999800,-1384.8000000,14.4000000))
    {
    if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,6)||IsPlayerInFrakt(playerid,16)||IsPlayerAnAdmin(playerid,4))
    {
    MoveObject(pdschranke[0],699.0999800,-1384.8000000,14.4000000,0.01,0.0000000,90.0000000,0.0000000);
    tor[playerid]=0;
    }
    }
    if(IsPlayerInRangeOfPoint(playerid,10,715.7999900,-1384.8000000,14.4000000))
    {
    if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,6)||IsPlayerInFrakt(playerid,16)||IsPlayerAnAdmin(playerid,4))
    {
    MoveObject(pdschranke[1],715.7999900,-1384.8000000,14.4000000,0.01,0.0000000,90.0000000,180.0000000);
    tor[playerid]=0;
    }
    }


    Liebe Grüße iMontreal

    Hallo Breadfisch,
    Ich betreibe derzeit einen Reallife-Server und ich wollte für unser Polizei-Kommissariat bewegliche Schranken machen.
    Ich habe sie dazu einfach in unseren /mv Befehl der mit strcmp erstellt wurde reingepackt, jedoch funktioniert das nicht so wie wir es uns gedacht haben.
    Ich habe schon einmal eine Schranke annimiert, die ging zu schnell auf, trotz 0.01 Geschwindigkeit. Heute aber habe ich mich für das Include von Beavis
    entschieden, der die Schranken leicht und Sanft rotieren lassen soll. Dies funktioniert nicht. Immer wenn ich /mv eingebe kommt SERVER: Unknown Command.


    Ich habe die Schranke versucht so zu erstellen.
    if(IsPlayerInRangeOfPoint(playerid,10,699.0999800,-1384.8000000,14.4000000))
    {
    if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,6)||IsPlayerInFrakt(playerid,16)||IsPlayerAnAdmin(playerid,4))
    {
    SetSchranke(pdschranke[0],true);
    PlayerHearMusicInRange(x,y,z,1035,5,1,500);
    tor[playerid]=1;
    }
    }
    if(IsPlayerInRangeOfPoint(playerid,10,715.7999900,-1384.8000000,14.4000000))
    {
    if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,6)||IsPlayerInFrakt(playerid,16)||IsPlayerAnAdmin(playerid,4))
    {
    SetSchranke(pdschranke[1],true);
    PlayerHearMusicInRange(x,y,z,1035,5,1,500);
    tor[playerid]=1;
    }
    }


    Und ich habe auch versucht sie so zu rotieren.


    if(IsPlayerInRangeOfPoint(playerid,10,699.0999800,-1384.8000000,14.4000000))
    {
    if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,6)||IsPlayerInFrakt(playerid,16)||IsPlayerAnAdmin(playerid,4))
    {
    MoveSchranke(pdschranke[0]);
    PlayerHearMusicInRange(x,y,z,1035,5,1,500);
    tor[playerid]=1;
    }
    }
    if(IsPlayerInRangeOfPoint(playerid,10,715.7999900,-1384.8000000,14.4000000))
    {
    if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,6)||IsPlayerInFrakt(playerid,16)||IsPlayerAnAdmin(playerid,4))
    {
    MoveSchranke(pdschranke[1]);
    PlayerHearMusicInRange(x,y,z,1035,5,1,500);
    tor[playerid]=1;
    }
    }


    Nichts von den beiden Funktioniert, aber auch gar nichts, Errors im Script oder im include gibt es nicht ;)
    Ich hoffe ihr könnt mir helfen
    Liebe Grüße iMontreal


    Hallo Jeffry,
    Ich habe nicht gesehen, das die Abfrage in einer Schleife ist. Dann hast du natürlich recht, das habe ich ja von dir gelernt, ich sollte da schon
    etwas achtsamer zugucken. Return in der forschleife nur wenn die Funktion beim richtigen male beendet werden soll, sonst arbeite ich fleißig mit continue; was das ganze dann überspringt. Liebe Grüße iMontreal und danke Jeffry ;)

    Hallo Direct_Player,
    Dann ist die richtige Antwort:


    if(isAdmin(playerid,1)&&ADuty[playerid]!=1)return ...


    Hinzu kommt noch, bitte nächstes mal besser Beschreiben, zwei Leute haben es falsch geschrieben,
    Wenn das Problem mit den Blitzer behoben ist, kannst du das Thema ja als erledigt markieren.
    Oder muss ich da nochmal drüberschaun ?
    Liebe Grüße iMontreal

    Hallo Direct_Player,
    Ich bin's Fagott :), wir haben uns ja heute schon geschrieben.
    Also, damit ich das jetzt richtig verstehe, du möchtest, alle Spielerabfragen, und dann eine bestimmte Aktion ausführen, das
    nur bei denen geht, die Aduty sind ? Sonst bitte nächstes mal besser beschreiben. Du könntest es natürlich so machen, wie TheTutoFreak,
    das schon gesagt hat, jedoch wird das so nicht funktionieren, denn TheTutoFreak hat playerid, statt i genommen.
    Hier, du kannst es so machen:



    new i;
    for(i=0;i<MAX_PLAYERS;i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(IsPlayerNPC(i))continue;
    if(sInfo[i][eingeloggt]!=1)continue;
    if(sInfo[i][admin]<1)continue;
    if(ADuty[i]!=1)continue;
    Aktion ( i nicht vergessen )
    }


    Liebe Grüße iMontreal

    Hallo J0a9, wir kennen uns ja schon, ich bins Fagott oder wie ich hier heiße iMontreal.
    Also, das Lied wird abgespielt ? Aber manchmal doppelt und dreifach ? Vielleicht, ist es deswegen, weil OnPlayerConnect, manchmal auch zweimal ausgeführt wird, oder liegt es dadran, dass du den Code zweimal starten lässt. Versuche einfach mal kurz meinen Tipp.


    public OnPlayerConnect(playerid)
    {
    StopAudioStreamForPlayer(playerid);
    PlayAudioStreamForPlayer(playerid,"http://meindomainname/music/login.mps");
    return 1;
    }


    So, wenn er sich dann eingeloggt hat, und alles geladen wurde, machst du nurnoch.



    StopAudioStreamForPlayer(playerid);


    Am Ende der Laden funktion und schon hast du das ganze, das mit den OnPlayerConnect, weiß ich nicht genau, warum er es doppelt abspielt.
    Liebe Grüße iMontreal

    Hallo Jeffry,
    Danke das du es Editiert hast, da hatte ich einen kleinen Fehler drinne, jetzt sollte es aber funktionieren.
    Das war nur ein kleiner flüchtigkeitsfehler, das kommt vor.
    Liebe Grüße iMontreal.


    ps. toniyo: Würde mich über Rückmeldung freuen.

    Hallo toniyo,
    Ich glaube ich habe das Problem gefunden, wir ist da wie ich sehe ein kleiner Strich unterlaufen.
    Hier nochmal den richtigen Codex.
    Einfach ausprobieren :)


    if(strcmp(cmd,"/equip",true)==0)
    {
    if(PlayerInfo[playerid][pMember]!=20&&PlayerInfo[playerid][pLeader]!=20)return SendClientMessage(playerid,COLOR_GREY,"Du bist nicht in der jewaligen Fraktion.");
    if(PlayerInfo[playerid][pFriedhof]==1)return SendClientMessage(playerid,COLOR_GREY,"Du kannst dich nicht ausrüsten, solange du auf den Friedhof bist.");
    if(!PlayerToPoint(5,playerid,-1869.5820,-1624.6660,21.8426))return SendClientMessage(playerid,COLOR_GREY,"Du kannst dich hier nicht ausrüsten.");
    if(gettime()<equipusen[playerid])
    {
    new equipzeit=equipusen[playerid]-gettime();
    format(string,sizeof(string),"Du kannst dich erst wieder in % i : % 0 2 d Minuten wieder ausrüsten.",equipzeit/60,equipzeit);
    return SendClientMessage(playerid,COLOR_GREY,string);
    }
    GivePlayerWeapon(playerid,24,200);
    equipusen[playerid]=gettime()+(60*2);
    SendClientMessage(playerid,COLOR_GREY,"Du hast dich erfolgreich ausgerüstet.");
    return 1;
    }

    Hallo Silvio.Castro,
    Ich habe dir mal etwas kleineres zusammengestellt, ich hoffe es gefällt dir, du musst leider noch ein paar Sachen hinzufügen, die X,Y,Z Coordinaten.
    Das wirst du ja wohl hinbekommen :) das traue ich dir zu. Wenn du fragen, oder es anders haben möchtest, Frage mich einfach, ich mache dir das.
    Bei Fragen wegen Fehlern, unbedingt melden, denn dann muss man sie beheben.



    ocmd:buyhotdog(playerid) //So wie du den Befehl nennen möchtest
    {
    if(!IsPlayerInRangeOfPoint(playerid,2.5,X,Y,Z))return SendClientMessage(playerid,0xFFFFFFFF,"Du kannst hier kein Hotdog kaufen."); //Statt X,Y,Z musst du deine Coords eintragen, wo es überall gehen soll
    if(GetPlayerMoney(playerid)<50)return SendClientMessage(playerid,0xFFFFFFFF,"Du hast nicht genügend Geld."); //Fragt ab, ob der Spieler genügend Geld hat, damit er keine Schulden bekommt.
    GivePlayerMoney(playerid,-50); //Zieht den Spieler 50$ ab, kannst du auch entscheiden, indem du die 50 änderst
    SetPlayerHealth(playerid,100); //Setzt das Leben die (HP) des Spielers auf 100
    SendClientMessage(playerid,0xFFFFFFFF,"Du hast dir einen Hotdog für 50$ gekauft. Guten Appetit."); //Sendet Meldung an den Spieler, dass er sich einen Hotdog gekauft hat
    return 1; //Setzt die Funktion zurück
    }


    Liebe Grüße iMontreal

    Hallo, versuche es einfach mal so, dann sparst du dir den ollen Public
    und er zeigt dir sogar an, wann du dich wieder Ausrüsten kannst, jedoch musst du, was Jeffry schon sagte es Oben definieren.
    Als Array, ich würde mich über eine Rückmeldung freuen.


    if(strcmp(cmd,"/equip",true)==0)
    {
    if(PlayerInfo[playerid][pMember]!=20&&PlayerInfo[playerid][pLeader]!=20)return SendClientMessage(playerid,COLOR_GREY,"Du bist nicht in der jewaligen Fraktion.");
    if(PlayerInfo[playerid][pFriedhof]==1)return SendClientMessage(playerid,COLOR_GREY,"Du kannst dich nicht ausrüsten, solange du auf den Friedhof bist.");
    if(!PlayerToPoint(5,playerid,-1869.5820,-1624.6660,21.8426))return SendClientMessage(playerid,COLOR_GREY,"Du kannst dich hier nicht ausrüsten.");
    if(gettime()<equipusen[playerid])
    {
    new equipzeit=equipusen[playerid]-gettime();
    format(string,sizeof(string),"Du kannst dich erst wieder in %i:d Minuten wieder ausrüsten.",equipzeit/60,equipzeit`);
    SendClientMessage(playerid,COLOR_GREY,string);
    }
    GivePlayerWeapon(playerid,24,200);
    equipusen[playerid]=gettime()+(60*2);
    SendClientMessage(playerid,COLOR_GREY,"Du hast dich erfolgreich ausgerüstet.");
    return 1;
    }


    So ist es doch viel schöne, Oben halt einfach:
    new equipusen[MAX_PLAYERS]=0;


    Edit: Bei den string mit der Minuten übernimmt der Code es nicht Ordnungsgemäß, bitte ersetze noch


    %i:d


    mit


    % i : % 0 2 d


    Musst du aber zusammenrücken, er nimmt das sonst nciht an


    Liebe Grüße iMontreal





    Jeffry, danke für deine Hilfe ich weiß das zu schätzen, hiermit hat sich nun alles geklärt.
    An alle anderen Mitglieder oder Besucher: "Solltet ihr einen SAMP-Server haben, vergesst bitte nicht eure Includes/Plugins zu Updaten"
    Man hat gesehen, was da alles bei rauskommen kann. Danke Danke Danke
    Liebe Grüße iMontreal

    Hallo Jeffry,
    Ich meine damit ob es bei RemoveBuildingForPlayer auch so ein Limit gibt, oder darf man davon auch 10000 mal im Script haben, ich wollte
    nur wissen, ob es das gleiche Prinzip ist, wie bei CreateDynamicObject, und ob es dann auch bei CreateObject so ist,
    dann wars das auch und ich kann dieses Thema hier abhaken.
    Liebe Grüße iMontreal

    Hallo tayson87,
    Ja, es gibt solch Seiten. Du könntest das Lied, oder die MP3 Datei auf deinen Webspace laden und dann die Verlinkung ins Script einbauen,
    mit der Audiostream funktion. Frage mich aber bitte nicht wie das geht, ich suche selber noch eine Lösung zu finden, damit es funktioniert,
    aber ich weiß erstens nicht, wo du einen Webspace herbekommen könntest, ich habe einen und zweitens weiß ich auch nicht, wie man da was hochlädt.
    Das haben meine Techiker immer gemacht, wenn ich was brauchte.


    Zu der Umgebung:
    new i;
    for(i=0;i<MAX_PLAYERS;i++)
    {
    if(!IsPlayerConnected(i))continue; //Wenn nicht Connected überspringen
    if(IsPlayerNPC(i))continue; //Wenn NPC überspringen
    if(!Eingeloggt(i))continue; //Oder wie deine Abfrage halt heißt
    if(!IsPlayerInRangeOfPoint(i,50,XCoord,YCoord,ZCoord))continue; //Wenn nicht auf richtige Pos überspringen
    PlayAudioStreamForPlayer(i,"Link"); //Audiostream starten :) Aber bitte gute Musik falls Musik :) Scherz
    }


    Ich hoffe ich konnte da ein wenig helfen :)
    Liebe Grüße iMontreal

    Jeffry dankeschön, nun hat wirklich alles funktioniert.
    Es gibt keine Errors mehr, dank dir, ohne dich wäre ich nicht so weit gekommen, immer wieder.
    Das Thema hat sich nun endgültig erledigt, wir sehen uns dann bei den nächsten schwerwiegenden Problem wieder :),
    aber vielleicht kommt noch eine Frage hinzu.
    Soll ich jetzt bei OnGameModeInit Streamer_SetVisibleItems
    machen ? Ich meine die Sirene funktioniert jetzt, ich habe die anderen beiden Sachen drinne gelassen.
    Villeicht noch eine Frage, ich höre da immer so ein Limit mit 1000 Objekten, also werden tatsächlich nur 1000 Objekte geladen, wenn du im Umkreis bist,
    oder dürfen nur maximal 1000 X CreateDynamicObject sein ? Das habe ich schon überschritten, aber funktioniert immernoch alles gut.
    Liebe Grüße iMontreal

    Hallo Jeffry,
    Folgendes, ich habe alles was in Pastebin stand, kopiert und nun in sscanf2 gelöscht und das neue eingebaut und gespeichert.
    Der Hookederror ist nun weg, jedeoch alles was geblieben ist sind warnings, die an den Include liegen, ich möchte die auch behoben haben, da
    ich mir sicher bin das diese auch irgendwelche auswirkungen haben. Ich habe in meinen Script, string, als global definiert und in sscanf2, zeigt er mir an, dass string bereits definiert ist. Ich möchte string weder in meinen Script noch in sscanf2 umändern, da ich mir nicht über jegliche Fehler bewusst bin, deshalb möchte ich ganz konkret wissen, wass ich jetzt machen soll, string in meinen Script als nicht global zu definieren, ist keine Lösung, da ich sonst überall new string machen muss, da lass ich es lieber, aber hat geklappt :), mal sehen wie wir die warnings zu bewältigen wissen.
    Liebe Grüße iMontreal