Beiträge von IPrototypeI

    habs nun so


    new myobject = CreateDynamicObject(19308,0,0,-1000,0,0,0,100);
    AttachDynamicObjectToVehicle(myobject, AutomatischeFSCars[3], -0.000000, -0.449999, 0.824999, 0.000000, 0.000000, 0.000000);
    SetDynamicObjectMaterialText(myobject,0, "Fahrschule",50, "Arial", 24, 0,0xFEFEFEFF,0xFF0005FF,OBJECT_MATERIAL_TEXT_ALIGN_CENTER);

    Funktioniert aber immer noch nicht.


    Dein weiteres Problem verstehe ich nun icht es sollte ohne problem funktionieren



    AutomatischeFSCars[0] = CreateVehicle(405,1197.1656,-1826.6783,13.2841,270,1,1,-1); // Automatische Fahrschule Auto
    AutomatischeFSCars[1] = CreateVehicle(405,1197.0096,-1830.8462,13.2803,270,1,1,300); // Automatische Fahrschule Auto
    AutomatischeFSCars[2] = CreateVehicle(405,1197.2211,-1835.6235,13.2771,270,1,1,300); // Automatische Fahrschule Auto
    AutomatischeFSCars[3] = CreateVehicle(405,1211.2765,-1826.3643,13.2855,270,1,1,300); // Automatische Fahrschule Auto
    new obj = CreateDynamicObject(19308,0.0,0.0,0.0,0.0,0.0,0.0);
    SetDynamicObjectMaterialText(obj,0,"Fahrschule",50, "Arial", 24, 0,0xFEFEFEFF,0xFF0005FF,OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
    AttachDynamicObjectToVehicle(obj, AutomatischeFSCars[3], -0.000000, -0.449999, 0.824999, 0.000000, 0.000000, 0.000000);


    Dies liegt dennoch nicht an der z koordinate das nach einer bestimmten tiefe schluss ist in samp und man wieder auf der ebenen fläche respawnt

    In dem du die Speichern/Laden der Häuser umschreibst auf MySQL.


    Was willst du eigentlich genau von uns ?
    Was verstehst du daran nicht werde mal präziser.


    Wir wissen nur das du das umschreiben willst und keine Ahnung hast.

    ja ich hatte float:Zins aber es musste Float:Zins :P ^^


    Danke


    MFG
    xDNGRSx


    float: ist eigentlich die normale zuweisung des datentyps Float wie int: für Integer oder bool: für bolean etc... wie man es bei anderen Programmiersprachen kennt nun gut dies ist halt bei einigen Datentypen so das diese nicht existieren oder von Samp entfernt wurde. Dennoch geht die weiter arbeit trotzdem trotz dem warning ^^

    musst du umkonvertieren per floatround du kannst keine Kommawerte an ein integer übergeben.


    //edit


    daher kannst du noch die Spielervariabel umändern in eien float einfach den Datentyp zuweißen Float:

    Kick schon getestet?


    Bei mir funktioniert es nur mit Timer!
    Bei den meisten (unter anderem auch ein Thread im eng. Forum) funktioniert es auch nur noch mit Timer.


    Die Reihenfolge spielt in dem Fall keine Rolle, bei einem Kick entscheidet sich der Client keine anderen Signale mehr entgegenzunehmen, und kappt sofort die Verbindung (so wie ich das jetzt verstanden habe)


    Das man dazu einen Timer braucht ist mir persönlich neu ich hatte niemals probleme in der art


    CMD:kick(playerid,params[])
    {
    new pID,Grund[50],string[128],pName[MAX_PLAYER_NAME],pIDName[MAX_PLAYER_NAME];
    if(sscanf(params,"us[50]",pID,Grund)) return SendClientMessage(playerid,-1,"FEHLER: /kick [playerid] [grund]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,-1,"Der Spieler ist nicht online!");
    GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
    GetPlayerName(pID,pIDName,MAX_PLAYER_NAME);
    format(string,sizeof(string),"[AdmCmd]: %s wurde von %s vom Server gekickt, [Grund: %s]",pIDName,pName,Grund);
    SendClientMessageToAll(-1,string);
    Kick(pID);
    return 1;
    }


    kurz getestet geht so wie es soll.


    kann ich mri auch nicht vorstellen warum Pawn etwas vorziehen sollte , da Pawn nicht multithreaded ist sondern alles step by step arbeitet.


    Nun gut ist jetzt ein andere cmd prozessor ycmd aber das reißt es auch nicht raus .

    Hallo,
    ich habe eine idee ich möchte mal ein auslastungstest machen weis jemand wie ich das mache zb 100 NPC auf meinen Server Connecten lasse?


    MFG
    xDNGRSx


    Witzige Idee da ich eher wenig mit NPCs arbeite habe ich mir das gerade eben mal gemacht.


    #include <a_samp>
    main(){ }
    new botvar,
    Timer,
    stringname[20],
    YourVehicle[100];

    public OnGameModeInit()
    {
    ShowPlayerMarkers(1);
    Timer = SetTimer("NewBot",3000,true);
    return 1;
    }
    forward NewBot();
    public NewBot()
    {
    if(botvar == 99)return KillTimer(Timer);
    format(stringname,20,"test%d",botvar);
    ConnectNPC(stringname,"test1");
    YourVehicle[botvar] = AddStaticVehicleEx(560,1264.4374,-814.7446,84.1406,239.3755,1,1,-1);
    return 1;
    }
    public OnPlayerSpawn(playerid)
    {
    if(!IsPlayerNPC(playerid)) return 0;
    new playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,MAX_PLAYER_NAME);
    if(!strcmp(playername, stringname, true)) {
    printf("%s",stringname);
    SetSpawnInfo( playerid, 0, 255, 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0 );
    PutPlayerInVehicle(playerid, YourVehicle[botvar], 0);
    ++botvar;
    }
    return 1;
    }
    public OnPlayerConnect(playerid)
    {
    return SpawnPlayer(playerid);
    }
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (!strcmp("/car", cmdtext))return CreateVehicle(560,0.0,0.0,0.0,0.0,1,1,-1);
    return 0;
    }


    quick and dirty :D


    die aufnahme darfst du selbst machen


    poste dazu dem Befehl falls du dies nicht hin bekommst.
    Dennoch musst du nur statt playerid , den namen der deklarierten variabel für die eingegebene id in Ban rein schreiben
    also Ban(der name der varibale);

    "Also abfragen ob ein Objekt zerschießen wird ist nicht möglich"


    Aber zurück zur ernsthaftigkeit dazu musst du dir eine Berechnung machen aus dem Vektor und der Position der Camera um den Punkt zu ermitteln
    danach musst du halt die positionen abgleichen.
    Dazu gibt hier in dem Forum genug berechnungen meist in Feuerwehrskripts

    Das könnte man weglassen, da sizeof genauso funktioniert und da man kein wert bei der anzahl brauch ;)


    Aber sonst ist es recht gut


    (ja es ist etwas älter aber mal ein Tut was nicht so grausam ist)


    ich hoffe du weisst das sizeof einen wert ermittelt , daher brauchen solche vorgänge länger als wenn du mit konstanten werten.
    Arbeitest. beispiel mit einem #define nach dem kompilen steht an der stelle die definierte Zahl.


    Was mich stört ist das unnötige formatieren. Es reicht einmal formatieren man darf jedoch den string nichtmehr verändern :D.
    dennoch ist das ganze schön gemacht die jeweilige id per lisitem aufzurufen.

    Möchte eigentlich nicht den ganzen Code hier schicken, da sonst jeder das mit der Frakkammer hat :S
    Jedenfalls wird PDMats nirgendwo mehr auf 0 gesetzt.


    Zudem durch dein Quelltext mit if(frak != 1 && (PDMats -5) <= 0)
    zeigt er ingame schon einmal den richtigen Text an mit: "Nicht mehr verfügbar".
    Dennoch wird jetzt angezeigt, dass in der Kammer -4 Materialien sind, auch wenn ich diese wieder auffülle, kommt es mit -4 Materialien


    ich meinte mit posten den command wie du ihn momentan hast durch (PDMats - 5) wird nämlich nix gesetzt und du hast vllt ihrgend was am Flaschen punkt.

    Nun gut dies bringt mir nicht viel


    dies kannst du vereinfachen


    new PlayerInvite[MAX_PLAYERS char];
    new LeaderID[MAX_PLAYERS char];
    ocmd:invite(playerid,params[])
    {
    if(!IstSpielerLeader(playerid,1) || !IstSpielerLeader(playerid,2) || !IstSpielerLeader(playerid,3) || !IstSpielerLeader(playerid,4) || !IstSpielerLeader(playerid,5))return SendClientMessage(playerid,Blau,"Du bist nicht befugt diesen Befehl zu benutzen.");
    new pID,string[128],buffer[30];
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,Blau,"Benutze /invite [playerid]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,Blau,"Dieser Spieler ist nicht Online.");
    switch(GetPVarInt(playerid,"Fraktion")){
    case 0: buffer = "Zivi";
    case 1: buffer = frakname;
    case 2: buffer = frakname1;
    case 3: buffer = frakname2;
    case 4: buffer = frakname3;
    case 5: buffer = frakname4;
    }
    format(string,sizeof(string),"%s hat dich in die Fraktion %s eingeladen willst du sie annehmen?",SpielerName(playerid),buffer);
    ShowPlayerDialog(pID,DIALOG_JaNein,DIALOG_STYLE_MSGBOX,"Fraktion Annehmen/Ablehnen",string,"Ja","Nein");
    PlayerInvite{pID} = GetPVarInt(playerid,"Fraktion");
    LeaderID{pID} = playerid;
    return 1;
    }
    else if(DIALOG_JaNein == ID eintragen){
    if(!response){
    PlayerInvite{playerid} = 0;
    if(GetPVarInt(LeaderID{pID},"Fraktion") == PlayerInvite{playerid})SendClientMessage(LeaderID{pID},-1,"Die Einladung wurde abgelehnt");
    return SendClientMessage(playerid,-1,"Du hast die Einladung abgelehnt");
    }
    if(GetPVarInt(LeaderID{pID},"Fraktion") == PlayerInvite{playerid})SendClientMessage(LeaderID{pID},-1,"Die Einladung wurde abgelehnt");
    SetPVarInt(playerid,"Fraktion",PlayerInvite{playerid});
    PlayerInvite{playerid} = 0;
    return SendClientMessage(playerid,-1,"Du hast die Einladung angenommen");
    }


    zu dem die Falsche schreibweise ocmd:invite

    Am besten lässt du dir die menge mal ausgeben was hier übergeben wird
    was du da gemacht hast sieht mir nicht wirklich nach dem wahren aus


    kannst ja mal ändern jedoch sehe ich hier generl kein wirklichen Fehler
    es kommt jedoch drauf an wie dein ganzer code aussieht ?


    if(frak != 1 && (PDMats - 5) <= 0)return SendClientMessage(playerid, COLOR_GRAD1, "So viele Materialien sind nicht mehr verfügbar!");
    PDMats -= 5;


    zu dem lass dir PDMats mal ausgegeben und schau auch das du die PDMats nicht ihrgend wo neu setzt auf einen wert.

    Hm das klinkt als würdest du keine SpawnInformationen für den Spieler setzen ?
    Umgehst du den Spawnbutton besser gesagt Classselection ?
    wenn ja das wird es daran liegen das du dem gespawnten spieler diese genannten SpawnInformationen über SetSpawnInfo nicht zuweisst

    MFG
    Pascal[/quote]


    Was vestehst du unter nicht funktionieren ?
    UNKNOWN COMMAND . Ich bitte dich daher mal einen commadn zu posten welcher nicht geht oder zu überprüfen ob
    auch ein return 1; vorhanden ist du erstellst eigentlich nur publics die über OnPlayerCommandText aufgerufen werden mit CallLocalFunction.


    Zu dem hast du ihrgend was an der include verändert kannst diese auch mal posten oder sonst ihrgend wie was rund herrum verändert
    beispiel defines undefiniert und neu definiert?


    //edit
    zu viel zitiert

    Hallo,

    mysql_function_query(connectionHandle,query[],bool:cache,callback[],format[],{Float,_}:...)


    Muss bei connectionHandle meine Datenbank rein oder was soll ich da reinschreiben?


    Nope dort trägst du den verbindungs handel den mysql_connect returnt ein kannst jedoch dort auch die jeweilige zahl eintragen.


    Hab mir euren Code gerade noch mal angeschaut und mich etwas um die heapspace Funktion schlau gemacht.
    Diese Funktion gibt lediglich den Wert zurück, der vom gesammten Script gebraucht wird.
    Daher ist es nicht möglich über heapspace den momentan genutzten Speicher heraus zu finden.


    Das würde nur über ein Plugin gehen, welches direkt an die Schnittstelle im SA:MP Server gekoppelt ist.
    Das heißt, ein bisschen memoryhacking wäre da nötig um dies herauszufinden ;)


    Hat mich ihrgend wie nicht besonders gewundert das die funktion keine momentane ergebnisse zurück liefert.
    Nun gut ich ziehe meine Erkenntnisse vor erst zurück und ich werde mich mal , wenn ich mehr frei Zeit wieder hab mal mehr damit auseinander setzen. Es gibt ja paar performance profiler oder vllt sollte ich mich auch mal selbst im bereich c++ erkundigen würde auch nicht schaden.
    Trotzdem danke für die Erkenntnis.
    Hat sich dennoch viel versprechend angehört "Return free heap space."