[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Jameso:


    So wie du es umgesetzt hast wird der Code exakt Array-Größe von AHCarSpawn1 * Array-Größe von AutohausCar1 ausgeführt. Du kannst auch dir die äußere Schleife sparen und einfach eine Variable pro Schleifendurchgang +1 rechnen und, sofern die Variable >= sizeof(AHCarSpawn1) ist, sie wieder auf 0 setzen. Ist halt die Frage, wie die beiden Arrays in Beziehung stehen?

  • Danke, habs!
    Ich mache nichts anders als bei dem anderen Array, trotzdem gibt er mir Array index out of bounds waurm?
    http://prntscr.com/nzih3w
    Der Fehler tritt auf seitdem ich das mit BizTextFarben drin habe.
    Vorher ging es ohne, aber ich habe ja nichts anders gemacht.

    C
    stock const BizType[][25]=
    {
    	"-",
    	"24/7", //1
    	"Ammunation" //2
    //...
    },


    C
    BizTextFarbe[][25]=
    {
    	"{FFFFFF}",
    	"{FAFAFA}"
    },
    C
    stock UpdateBizInfos()
    {
        new string[228];
    	for(new b;b<sizeof(bInfo);b++)
    	{
    	    format(string, sizeof(string), "%s, %s",BizTextFarbe[bInfo[b][biztextfarbe]],BizType[bInfo[b][biztype]] );
    		CreateDynamic3DTextLabel(string,GREEN,bInfo[b][bX],bInfo[b][bY],bInfo[b][bZ],20.0);
    	}
    	return 1;
    }
    C
    forward BizLaden();
    public BizLaden()
    {
    	new rows;
    	cache_get_row_count(rows);
    	if(rows==0) return print("(*)Geschäfte konnten nicht geladen werden.");
    	for(new bizid = 0; bizid < sizeof(bInfo); bizid++)
    	{
    		cache_get_value_name_int(bizid,"biztype",bInfo[bizid][biztype]);
    		cache_get_value_name_int(bizid,"bizcolor",bInfo[bizid][biztextfarbe]);
    Code
    enum bizinfo{
        db_bid,
    	biztype,
    	biztextfarbe,

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • C
    %sHallo

    http://prntscr.com/nzj9xc
    Also das markierte sollte auch eine andere Farbe haben, deswegen ist da auch dieses komische Symbol, weil er die Farbe nicht in der Konsole anzeigt.
    Der Rest ist FFFFFF.
    Das ist richtig komisch irgendwie, ich hab ja alles gleich gemacht, eigentlich sollte ja nichts falsch sein.

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Sicher, dass du meinen Post richtig gelesen hast und bInfo[b][biztextfarbe] geprintet hast?


    Denn hier verwendest du ja: BizTextFarbe[bInfo[b][biztextfarbe]]


    Wie willst du denn einen String als Index verwenden?


    Bekommst du da keine Fehler? wtf

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Wenn ich den Code richtig verstehe beinhaltet biztextfarbe den jeweiligen Index für das Array BizTextFarbe. Der Fehler entscheidet, weil entweder das Array BizTextFarbe oder das Array BizType eine Größe von 4 hat (Elemente 0-3) und du versuchst, auf das Element 4 bzw. den Index 4 zuzugreifen. Da 4 außerhalb des Spektrums 0-3 ist, kommt es zu dem Fehler. Ergo: (Vermutlich) falschen Index in der DB eingetragen.

  • Ja ich habe mir nur bInfo[b][biztextfarbe] printen lassen.


    Lasse ich mir jetzt BizTextFarbe[bInfo[b][biztextfarbe]] printen, erscheint das richtige http://prntscr.com/nzk7tn.
    Also alles richtig jetzt, nur der Fehler ist immer noch da, es werden keine 3DTextLabels erstellt und der Fehler in der Konsole.


    Ist doch richtig, dass ich dann %s benutzte um die Farbe zu nehmen.




    Kleine Frage dazu, ich habe eine Float:TurnOnTime, jetzt will ich den Wert in einem Timer setzen, kann aber nur Integer nehmen und keine Floats, was soll ich tun?

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Bzgl. Timer: [wiki]floatround[/wiki]


    Dann scheint das ein Indiz dafür zu sein, dass bei BizType[bInfo[b][biztype]] der Fehler liegt. Sicher, dass du dort nicht auf einen Index zu greifen willst, der fernab der möglichen Indizies ist?

  • Beitrag von hav0K~ ()

    Dieser Beitrag wurde von Eddy aus folgendem Grund gelöscht: Spam/ ziemlich unnötig findest nicht? ().
  • Hallo, wie kann ich es einfacher schreiben und wie sortiere ich die Adminnamen nach Ränge ?
    Das z.B.


    Projektleiter
    Admin
    u.s.w steht und nicht wie


    Admin
    Projektleiter
    Admin


    steht.
    Und wenn keiner online ist soll stehen das derzeit keine Teammitglieder online sind.



    CMD:admins(playerid){if(!Spieler[playerid][pLoggedIn]) return 1;new string[256];SendClientMessage(playerid,Gruen, "Admins Online:");for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++) {if(Spieler[i][pLoggedIn]) {if(Spieler[i][pAdmin] > 0) {format(string,256,"%s: %s",GetPlayerAdminName(i),Spieler[i][pName]);SendClientMessage(playerid,Grau,string);}}}return 1;}

  • Habe einen massiven Überblicksfehler.


    So kauft man ein Fahrzeug:
    http://prntscr.com/nzn3ks


    Kämpfe seit einer Stunde mit dem Fehler. Alles funktioniert, nur irgendwas scheint nicht richtig zu sein.



    Es gibt 6 Fahrzeuge

    C
    new AutohausCar1[6];

    Hier sind Insgesamt 9 Einträge


    Alternativ zu der Schleife AutohausCar1 kann ich das benutzten, da es = viele Spawns sind, wo Autos hin müssen.
    Allerdings crasht der Server hierbei und hinterlässt nix.


    Und so klappt es aber er spuckt mir in der Konsole so etwas aus



    6 Einträge


    Code
    stock const Float:AHParkSpawn1[][] = //Spawn nach Kauf
    {
    	{782.6870,-1340.3259,13.6310, 90.0},
    //....
    
    
    };


    Code
    stock const AHVehTypes1[][AHType1] = //Spawn der Fahrzeuge
    {
        {"X","X",411,1,0,0,0,0.0,0.0},
    //...
    };

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Hi. hab grade mit einen Kollegen gemappt und wollen die Map in sein FS packen mit dem beweglichen Tor, nun bekomm ich diese Meldung beim Compilen:


    C:\Users\Flo\Desktop\Mapping+\filterscripts\Tor.pwn(251) : error 010: invalid function or declaration
    C:\Users\Flo\Desktop\Mapping\filterscripts\Tor.pwn(675) : warning 203: symbol is never used: "g_Object"
    C:\Users\Flo\Desktop\Mapping\filterscripts\Tor.pwn(675) : warning 203: symbol is never used: "g_Vehicle"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


    Wird hier ein spezielles Include benötigt?


    Bitte um Hilfe

  • Nein, du nutzt einfach die Variable g_Object nicht in deinem Code.
    Vermutlich ist es als new g_Object; definiert, es wird aber nirgendwo im Quellcode genutzt.


    Was meinst du mit Quellcode?


    Ein Objekt sieht so aus:


    g_Object[0] = CreateObject(19445, -2262.6679, 553.4104, 35.8698, 0.0000, 0.0000, 90.0000); //wall085
    SetObjectMaterial(g_Object[0], 0, 10442, "graveyard_sfs", "ws_graveydfence", 0xFFFFFFFF);

  • Schreib es einfach:



    new stock g_Object[245];
    //und
    new stock g_Vehicle[1];


    Aber ich glaube der Fehler entsteht durch eine Falsche Nutzung von Makros im Filterskript.


    Da du vermutlich das Standard-Skript nutzt.


    Kannst es mir ja mal per PN schicken, dann korrigiere ich dir das (damit du die Map nicht preisgeben musst. Der Fehler liegt aber für alle, vermutlich an den #defines)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Hey, ich habe den "stay with the world boundaries" Fehler.
    Ich habe keine Errors/Warnings und mein OnPlayerSpawn sieht wie folgt aus:
    [pwn=OnPlayerSpawn]public OnPlayerSpawn(playerid)
    {
    if(PlayerInfo[playerid][pSpawntyp] == 1){
    SetPlayerPos(playerid, fInfo[PlayerInfo[playerid][pFraction]][fSpawn_X], fInfo[PlayerInfo[playerid][pFraction]][fSpawn_Y], fInfo[PlayerInfo[playerid][pFraction]][fSpawn_Z]);
    SetPlayerFacingAngle(playerid, fInfo[PlayerInfo[playerid][pFraction]][fSpawn_R]);
    }else{
    //SetPlayerPos(playerid, -2446.1797,2512.5159,15.7003);
    //SetPlayerFacingAngle(playerid, 279.0161);
    SetPlayerPos(playerid, 0.0,0.0,0.0);
    SetPlayerFacingAngle(playerid, 0.0);
    }
    if(PlayerInfo[playerid][pPremium] == 1){
    GivePlayerWeapon(playerid, 24, 50);
    }
    SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
    return 1;
    }[/pwn]


    Wobei man sagen muss das mein Spawntyp = 0 ist.
    Ich hoffe ihr habt Ideen.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen