Beiträge von Dom_i

    Hey Leute,


    ich habe bei diesem Funksystem ein Problem.
    Undzwar wird der Rangname (welcher in der MySQL-DB "raenge" gespeichert wird) nicht ausgegeben.
    Die DB existiert, ist richtig geschrieben und entält auch Werte (varchars).


    Folgenden Code habe ich bis jetzt:



    ocmd:f(playerid,params[])
    {
    if(Tot[playerid] == 1) return SCM(playerid, COLOR_RED,"Du bist zu Verletzt um dein Funkgerät zu benutzen!");
    if(AFK[playerid] == 1) return SCM(playerid,COLOR_RED,"Du kannst dies nicht tun, da du im AFK-Modus bist!");
    if(pInfo[playerid][pSektion] == 0)return SCM(playerid, COLOR_RED,"Du bist in keiner Sektion!");
    if(pInfo[playerid][pTeam] == 1)
    {
    if(SabotageS1 == 1)
    {
    SCM(playerid,COLOR_RED,"Dein Funkgerät rauscht nur...");
    return 1;
    }
    }
    if(pInfo[playerid][pTeam] == 2)
    {
    if(SabotageS2 == 1)
    {
    SCM(playerid,COLOR_RED,"Dein Funkgerät rauscht nur...");
    return 1;
    }
    }
    new inputtext[128],string[256],fname[20],ausgabe[128];
    if(sscanf(params,"s",inputtext))return SCM(playerid, COLOR_RED,"/f [TEXT]");



    switch(pInfo[playerid][pSektion])
    {
    case 1:{fname = "Heer";}
    case 2:{fname = "Marine";}
    case 3:{fname = "Luftwaffe";}
    case 4:{fname = "Artillerie";}
    case 5:{fname = "SEAL";}
    case 6:{fname="Heer";}
    case 7:{fname="Marine";}
    case 8:{fname="Luftwaffe";}
    case 9:{fname="Artillerie";}
    case 10:{fname="S.E.A.L";}
    }



    new query[256];
    mysql_query(query);
    switch(pInfo[playerid][pSRang])
    {
    case 0:{return SCM(playerid,COLOR_RED,"Du hast keinen Sektionssrang!");}
    case 1:{format(query, sizeof(query), "SELECT `Rang1` FROM `raenge` WHERE `Sektion` = '%s'",fname);}
    case 2:{format(query, sizeof(query), "SELECT `Rang2` FROM `raenge` WHERE `Sektion` = '%s'",fname);}
    case 3:{format(query, sizeof(query), "SELECT `Rang3` FROM `raenge` WHERE `Sektion` = '%s'",fname);}
    case 4:{format(query, sizeof(query), "SELECT `Rang4` FROM `raenge` WHERE `Sektion` = '%s'",fname);}
    case 5:{format(query, sizeof(query), "SELECT `Rang5` FROM `raenge` WHERE `Sektion` = '%s'",fname);}
    case 6:{format(query, sizeof(query), "SELECT `Rang6` FROM `raenge` WHERE `Sektion` = '%s'",fname);}
    case 7:{format(query, sizeof(query), "SELECT `Rang7` FROM `raenge` WHERE `Sektion` = '%s'",fname);}
    case 8:{format(query, sizeof(query), "SELECT `Rang8` FROM `raenge` WHERE `Sektion` = '%s'",fname);}
    case 9:{format(query, sizeof(query), "SELECT `Rang9` FROM `raenge` WHERE `Sektion` = '%s'",fname);}
    case 10:{format(query, sizeof(query), "SELECT `Rang10` FROM `raenge` WHERE `Sektion` = '%s'",fname);}
    }
    mysql_query(query);
    mysql_store_result();
    new rows = mysql_num_rows();
    if(rows > 0)
    {
    mysql_fetch_row(ausgabe);
    }
    format(string,sizeof(string),"[%s]{C30000}%s %s: {FFFFFF}%s,over.",fname,ausgabe,SpielerName(playerid),inputtext);
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    if(pInfo[i][pSektion] == pInfo[playerid][pSektion])
    {
    SCM(i,0x0091FFFF,string);
    }
    }
    }
    switch(pInfo[playerid][pSektion])
    {
    case 1: SekLog1(string);
    case 2: SekLog2(string);
    case 3: SekLog3(string);
    case 4: SekLog4(string);
    case 5: SekLog5(string);
    }
    return 1;
    }




    Habt ihr eventuell eine Lösung?
    Ich sehe keinerlei Fehler...

    <p>Hey Leute,</p><p>@@@wcf_empty_line@@@</p><p>ich habe dieses Problem schon länger und habe einfach darüber hinweg gesehen, aber da ich<br>nun "The Elder Scrolls Online" downloaden will, welches 100+ Gigabyte groß ist und ich sonst<br>gefühlt ein paar Wochen downloaden müsste, möchte ich das Problem mal hier erfragen.<br><br>Bei diversen Speedtests wird mir eine angebliche Downloadgeschwindigkeit von mind. 10Mbit/s angezeigt.<br>Komischweise downloade ich (egal was ich downloade) nur allerhöchstens mit 3,5 Mbit/s?!<br><br>Ich nutze das WLAN (mit einem Netgear USB Adapter).<br>Dieser Adapter kann mit bis zu 300Mbit/s downloaden, also sollte es nicht<br>an dem PC bzw. PC-Komponenten liegen.<br><br>Ich besitze eine Fritzbox die dieses Jahr erst komplett neu angeschlossen wurde.<br><br>Das komische ist, dass ich vor ca. 7 Monaten mal ein Spiel gedownloaded habe und ich für 10 Minuten<br>einmalig eine Downloadrate von 34Mbit/s hatte!<br><br>Seit dem ist sowas in der Art nicht mehr aufgetreten...<br><br><br>Habt ihr eine Idee was ich machen kann?<br>Irgendwas an der Fritzbox einstellen um dem PC mehr Downloadgeschwindigkeit<br>"zuzuweisen" oder etwas dergleichen?<br><br>Hilfe wäre top!</p><p>@@@wcf_empty_line@@@</p><p>@@@wcf_empty_line@@@</p><p>P.S: Ich will Lan Kabel im Haus verlegen, bzw. meinen PC umstellen!<br> Die Wände sollten den Downloadvorgang nicht so massiv <br></p>

    Hey Leute,


    ich habe ein Problem bei einer Führerscheinabfrage.
    Undzwar wird die Fehlermeldung ("Du fährst ohne Führerschein LKW") permanent gespamt,
    bis der Client sich aufhängt und man quasi "gebannt" ("You are banned from the Server" oder so).


    Der Code bei OnPlayerStateChange:




    Die Frage ist nun, warum die Nachricht gespammt wird!
    Und ich meine ein "return" hinzusetzen ist dort eher unangebracht...

    Erstellen:


    Code
    if(Mine1[playerid] == 1) return SCM(playerid,COLOR_RED,"Diese Mine ist schon aktiv!");
    	        Mine1[playerid] = 1;
    			MineTimer1[playerid] = SetTimerEx("MineAktiv1",10000,0,"i",playerid);
    			SCM(playerid,COLOR_YELLOW,"[INFO] Die Mine ist in 10 Sekunden scharf!");
    			GetPlayerPos(playerid,SpielerX,SpielerY,SpielerZ);
    	        Mine1X[playerid] = SpielerX;
    	        Mine1Y[playerid] = SpielerY;
    	        Mine1Z[playerid] = SpielerZ;


    Aktivieren (nach Ablauf des Timers):


    Code
    Mine1S[playerid] = 1;

    Hey Leute,


    ich habe einen Timer der jede Sekunde läuft und Abfragt, ob sich ein Spieler
    in der Nähe einer Mine befindet.


    Wenn diese Mine (von irgendeinen Spieler) auch aktiviert ist, soll diese Explodieren!
    Jeder Spieler könnte eine Mine aktivieren (Variable --> Mine1S[playerid])


    Das Problem ist nun ,dass wenn ich eine Mine aktiviere, sie auch nur hochgeht wenn ICH mich
    in der Nähe befinde.


    Geht einer anderer Spieler zur Mine, passiert nichts :/



    Der Code:



    Hey Leute,


    ich bekomme ab und zu eine Fehlermeldung wenn ich im "Login-Fenster" bin:



    Das komische ist, dass ich diese Meldung nicht immer, sondern gelegentlich bekomme.


    Folgenden Code habe ich bei "OnPlayerRequestClass":


    Code
    InterpolateCameraPos(playerid, 183.143035, -1859.494384, 3.444673, 350.363525, -1860.702514, 4.020480, 20000);
    InterpolateCameraLookAt(playerid, 182.909912, -1864.484008, 3.222091, 350.020996, -1865.690673, 3.989231, 20000);
    IntroNr[playerid] = 1;

    Dann versuche es so:

    C
    public OnPlayerSpawn(playerid)
    {
    	printf("OnPlayerSpawn");
    	if(IsPlayerNPC(playerid))
    	{
    		printf("Setze Skin für NPC %d", playerid);
    		SetPlayerSkin(playerid,287);
    		SetTimerEx("SetNPCSkin", 2000, 0, "dd", playerid, 287);
    	}
    	//...

    Und das hier ganz unten im Gamemode:

    C
    forward SetNPCSkin(playerid, skin);
    public SetNPCSkin(playerid, skin)
    {
    	printf("Setze Skin für NPC %d (%d)", playerid, skin);
    	return SetPlayerSkin(playerid,skin);
    }

    Jetzt werden die Skins gesetzt! :)


    Lag dies vielleicht, dass der Skin quasi gesetzt wurde, bevor der NPC tatsächlich gespawnt wurde? ?(


    Und funktioniert dies auch, wenn ich trotzdem die Namens-Abfrage mache?

    Dann mache es bitte mal so und poste dann, was im Server Log steht, wenn der NPC spawnt:

    C
    public OnPlayerSpawn(playerid)
    {
    	printf("OnPlayerSpawn");
    	if(IsPlayerNPC(playerid))
    	{
    		printf("Setze Skin für NPC %d", playerid);
    		SetPlayerSkin(playerid,287);
    	}
    	//...

    Soweit wird das auch in der Log ausgegeben:


    Code
    [16:12:37] OnPlayerSpawn
    [16:12:37] Setze Skin für NPC 36

    Also irgendwie scheint die Function (SetPlayerSkin) für die Bots nicht zu funktionoerne?! X(

    Nein, das ist ja mindestens noch die GetFreeNPCID Funktion und die Namens-Abfrage davor.
    Setze es einfach direkt unter OnPlayerSpawn:


    C
    public OnPlayerSpawn(playerid)
    {
        SetPlayerSkin(playerid,287);
        //...

    Ob das dann geht.

    Nope, so funktioniert es leider auch nicht :/

    Hey Leute,


    bevor jetzt gleich wieder auf die SuFu gewiesen wird:

    ,,Ja ich habe schon mal nach anderen ähnlichen Beiträgen gesucht.
    Diese haben mir jedoch nicht weitergeholfen."


    Mein Problem ist (wie im Titel bereits genannte), dass alle NPC's spawnen (deren
    Scripte auch ausgeführt werden) jedoch der Skin nicht gesetzt wird und diese dann
    dementsprechend den CJ Skin haben.


    Einige sagen, es liege daran, dass man crashdetect benutzen muss, andere sagen dass
    dieser "Bug" mehrere andere Ursachen hat.


    Meine Frage ist nun:


    Was genau kann ich da tun bzw. habt ihr Erfahrung damit?


    Hier einmal die Codes:


    Connecten der Bots (OnGameModeInit)

    Code
    ConnectNPC("Flakschutze","Flakschutze")




    Skin Setzung (OnPlayerSpawn)

    Code
    new npc = GetFreeNPCID();
    		if(!strcmp(PName[playerid],"Flakschutze",true))
    		{
    	        NPCID[npc] = playerid;
    	        SetPlayerSkin(playerid,287);
    		}


    Stock (GetFreeNPCID)

    Code
    stock GetFreeNPCID()
    {
    	for(new i=0; i<MAX_NPC; i++)
    	{
    	    if(NPCID[i] != 0) continue;
    	    return i;
    	}
    	return -1;
    }


    Wenn ihr eine Antwort habt, wäre das super wenn ihr diese mit mir teilen könntet! :)


    Gruß

    Prinzipiell kannst du die Schleife hier schon weg lassen, aber da ich nicht weiß, ob und wie du es noch anders im Code verwendest, habe ich es so gelassen.


    Zwecks dem anderen Problem:
    So wie es momentan aussieht zeigt es in dem Post nicht an, kannst du das bitte nochmal posten, dass man es sieht?

    Ups :S


    Hier nochmal der momentane Stand:

    WTF wieso immer for? Unnötig...


    Code
    stock SetVehicleEngineOff(vehicleid)
    {
    	new engine, lights, alarm, doors, bonnet, boot, objective;
    	GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
    	SetVehicleParamsEx(vehicleid, 0, lights, alarm, doors, bonnet, boot, objective);
    	FahrzeugInfo[vehicleid][fz_Motor] = 0;
    	return 1;
    }

    Ganz einfach, da die Fahrzeuge in einem ENUM (Fahrzeuginfo) eine EINDEUTIGE ID habe (fz_ID) !
    Daher diese Schleife...


    Aber danke ;)

    C
    SetVehicleEngineOff(i);

    zu:

    C
    SetVehicleEngineOff(vID);

    Danke schonmal, aber das Ganze ist nur halbfertig.
    Ich habe jetzt die Abfrage:

    Code
    if(FahrzeugInfo[i][fz_Motorschaden] == 1) return 1;


    Rausgenommen und jetzt geht das Fahrzeug zumindest schonmal JEDES MAL aus, wenn ich unter diesem abgefragtem Wert liege.
    Mein Problem ist jedoch nun, dass die Variable (fz_Motorschaden) für das Fahrzeug (warum auch immer) nicht auf 1 gesetzt wird und ich
    daher das Fahrzeug mit dem /motor Befehl wieder ganz normal starten kann...


    Das ganze sieht bis jetzt so aus:







    Zitat

    Wie sieht deine SetVehicleEngineOff Funktion aus, kannst du die bitte posten?


    Der Stock:



    Grundstätzlich kommt das return hinter den Code, da ich aber keine weiteren Codes in diesem Callback habe, wäre das überflüssig. :)
    Und das mit der Schleife (alle Fahrzeuge durchgehen) war ein Test, ob es vielleicht damit läuft X(

    Guten Abend,


    ich möchte, dass wenn ein Fahrzeug nur noch eine gewisse Anzahl an "Leben" hat, der Motor
    vom Fahrzeug ausgeht und die Variable "Motorschaden" den Wert "1" bekommt, so dass
    der Spieler beim Starten des Motors (mit /motor) sofort mit einer Fehlernachricht returned wird.


    Das sieht auch soweit ganz gut aus, jedoch habe ich das Problem, dass sobald das Fahrzeug
    unter 400 HP hat, es nicht ausgeht und nur ab und zu die ClientMessage ausgegeben wird!


    Soweit das Callback: