Beiträge von jdm_guy

    @ reaL das wird an anderer stelle benutzt um die Häuser icons zu platzieren, da funktioniert es. also ist es vorhanden, evtl sucht er aber beim spawnen nicht an der richtigen stelle i nder datenbank..


    @TheBlueFireKing


    Ja ich hab das doppelt. Das hatte ich ja gemacht weil man immer am falschen haus gespawnt ist. wenn ich das jetzt rauswerfe ist das speichern der House id bei Player info doch unnötig oder?


    Denn so wie es war hat ja enter und exit imer funktioniert, nur beim aus und wieder einloggen buggte es. aber beim aus oder einloggen wirds nichts gespeichert. die häuser speichern nur beim server beenden.
    Da ich nicht verstehe wie das mit dem ganzen [ i ] gedönz funktionert dachte ich mir, ich bau das so dass beim login (also nur be mersten spawn) die hausliste abgefragt wird. Also ich habe extra die hausid zusätzlich im player gespeichert (nur wenn haus kauft oder verkauft). Da ic hweiss dass der player beim login geladen ist ich dort die hausid abfragen kann. nun wollte ich das "verknüpfen" mit meinen häusern. also in meinem mysql gibt es "players" und "houses" ich wollte jetzt dass bei houses nach der ID gesucht wird, die ich extra beim player gespeichert habe.
    Da hab ich aber einfach im script was kopiert und zusammen geschustert. ich hab halt keine ahnung :/


    Ist es performane mässig sehr nachteilig beim login die häuser abzufragen? Ich will ungern das häuser laden im gamemodeinit verpfuschen. deswegen woltle ich einfach nur den mysql lese fehler ausmerzen:


    [16:39:29] [WARNING] CMySQLResult::GetRowDataByName - field not found ("hi_x")
    [16:39:29] [WARNING] CMySQLResult::GetRowDataByName - field not found ("hi_y")
    [16:39:29] [WARNING] CMySQLResult::GetRowDataByName - field not found ("hi_z")

    Also ich hab in der zwischenzeit das mal geändert. Da ich das gefühl hatte Inofrmatonen gehen verloren, hab eich einfach beim player noch die hausid gespeichert (die ist auch gleichzeit virtuelle welt)


    Dann muss ich jetzt nochmal ein altes Backup anschauen um das zu überprüfen. Soweit ich noch rausgefunden hatte spawnt man aber nicht willkürlich, sondern am ersten haus der liste(aller häuser)


    Naja, jetzt sieht es eh anders aus.
    Nach dem Umschreiben habe ich das Prob, dass er nicht auslesen will. mysql macht n fehlercode : field not found ("hi_y")


    was hab ich da verdödelt?! Ich habs aus dem part an dem alle häuser geladen werden kopiert. aber irgendwie kann ers nicht auslesen.



    if(pInfo[playerid][pSpawn] == 1) //
    {
    new pHouseIDquery[128];
    format(pHouseIDquery, sizeof(pHouseIDquery), "SELECT * FROM houses");
    mysql_function_query(dbhandle, pHouseIDquery, true, "",""); /// ????



    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    //if(!num_rows)return 1;
    for(new i=0; i<num_rows; i++)
    {
    new phid=pInfo[playerid][pHouseID];
    hInfo[phid][h_x]=cache_get_field_content_float(i, "h_x", dbhandle);
    hInfo[phid][h_y]=cache_get_field_content_float(i, "h_y", dbhandle);
    hInfo[phid][h_z]=cache_get_field_content_float(i, "h_z", dbhandle);
    hInfo[phid][hi_x]=cache_get_field_content_float(i, "hi_x", dbhandle);
    hInfo[phid][hi_y]=cache_get_field_content_float(i, "hi_y", dbhandle);
    hInfo[phid][hi_z]=cache_get_field_content_float(i, "hi_z", dbhandle);


    if(hInfo[i][hi_x] != 0.0)
    {
    //spawn in house
    //SetSpawnInfo( playerid, 0, pInfo[playerid][pSkin], hInfo[i][hi_x], hInfo[i][hi_y], hInfo[i][hi_z], 0.0,0,0,0,0,0,0 );
    SetPlayerPos(playerid, hInfo[phid][hi_x],hInfo[phid][hi_y],hInfo[phid][hi_z]);
    SetPlayerInterior(playerid, hInfo[phid][h_interior]);
    SetPlayerVirtualWorld(playerid, pInfo[playerid][pHouseID]);
    SpawnPlayer(playerid);
    }
    else
    {
    // spawn infront of house
    SetSpawnInfo( playerid, 0, pInfo[playerid][pSkin], hInfo[phid][h_x], hInfo[phid][h_y], hInfo[phid][h_z], 0.0,0,0,0,0,0,0 );
    //SetPlayerPos(playerid, hInfo[i][h_x],hInfo[i][h_y],hInfo[i][h_z]);
    SetPlayerInterior(playerid, 0);
    SetPlayerVirtualWorld(playerid, 0);
    SpawnPlayer(playerid);
    }
    return 1;
    }




    Man spawnt, allerdings beim nullpunkt der karte..

    Ups, garnicht gemerkt..


    Also nochmal: Wenn man ein Haus hat und sich einloggt spawnt man in diesem. Wenn man dann /exit macht, ladet man am falschen haus. Also scheint beim einloggen das script nicht zu wissen wo man reingegangen ist. Wo ist der Fehler ??!



    ocmd:exit(playerid,params[])
    {
    for(new i=0; i<sizeof(hInfo); i++)
    {
    if(GetPlayerVirtualWorld(playerid)!=i)continue;
    if(!IsPlayerInRangeOfPoint(playerid,2,hInfo[i][hi_x],hInfo[i][hi_y],hInfo[i][hi_z]))continue;
    SetPlayerPos(playerid, hInfo[i][h_x], hInfo[i][h_y], hInfo[i][h_z]);
    SetPlayerInterior(playerid, 0);
    SetPlayerVirtualWorld(playerid, 0);
    return 1;
    }
    return 1;
    }



    und bei OnPlayerlogin



    if(pInfo[playerid][pSpawn] == 1) // BUG
    {
    for(new i=0; i<sizeof(hInfo); i++)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name,sizeof(name));
    if(!hInfo[i][h_id])continue;
    if(!strlen(hInfo[i][h_owner]))continue;
    if(!strcmp(hInfo[i][h_owner],name, true))continue;
    if(hInfo[i][hi_x] != 0.0)
    {
    //spawn in house
    //SetSpawnInfo( playerid, 0, pInfo[playerid][pSkin], hInfo[i][hi_x], hInfo[i][hi_y], hInfo[i][hi_z], 0.0,0,0,0,0,0,0 );
    SetPlayerPos(playerid, hInfo[i][hi_x],hInfo[i][hi_y],hInfo[i][hi_z]);
    SetPlayerInterior(playerid, hInfo[i][h_interior]);
    SetPlayerVirtualWorld(playerid, i);
    SpawnPlayer(playerid);
    }
    else
    {
    // spawn infront of house
    SetSpawnInfo( playerid, 0, pInfo[playerid][pSkin], hInfo[i][h_x], hInfo[i][h_y], hInfo[i][h_z], 0.0,0,0,0,0,0,0 );
    //SetPlayerPos(playerid, hInfo[i][h_x],hInfo[i][h_y],hInfo[i][h_z]);
    SetPlayerInterior(playerid, 0);
    SetPlayerVirtualWorld(playerid, 0);
    SpawnPlayer(playerid);
    }
    }
    //return 1;
    }
    }

    Kann mir jemand bei meinem Haus system helfen? bzw Spawn..
    Ich habe ein Haussys nach mrmonats tutorial. nun soll man ja auch am haus spawnen. so weit so gut, spawnt man in "seinem" interior, kommt man mit /exit an einem falschen haus raus. (nur wenn man dort spawnt, normal klappt es)


    hier mal der exit cmd:


    ocmd:exit(playerid,params[]){ for(new i=0; i<sizeof(hInfo); i++) { if(GetPlayerVirtualWorld(playerid)!=i)continue; if(!IsPlayerInRangeOfPoint(playerid,2,hInfo[i][hi_x],hInfo[i][hi_y],hInfo[i][hi_z]))continue; SetPlayerPos(playerid, hInfo[i][h_x], hInfo[i][h_y], hInfo[i][h_z]); SetPlayerInterior(playerid, 0); SetPlayerVirtualWorld(playerid, 0); return 1; } return 1;}



    Und hier wenn man sich eingeloggt hat


    if(pInfo[playerid][pSpawn] == 1){ for(new i=0; i<sizeof(hInfo); i++) { new name[MAX_PLAYER_NAME]; GetPlayerName(playerid, name,sizeof(name)); if(!hInfo[i][h_id])continue; if(!strlen(hInfo[i][h_owner]))continue; if(!strcmp(hInfo[i][h_owner],name, true))continue; if(hInfo[i][hi_x] != 0.0) { //spawn in house //SetSpawnInfo( playerid, 0, pInfo[playerid][pSkin], hInfo[i][hi_x], hInfo[i][hi_y], hInfo[i][hi_z], 0.0,0,0,0,0,0,0 ); SetPlayerPos(playerid, hInfo[i][hi_x],hInfo[i][hi_y],hInfo[i][hi_z]); SetPlayerInterior(playerid, hInfo[i][h_interior]); SetPlayerVirtualWorld(playerid, i); SpawnPlayer(playerid); } else { // spawn infront of house SetSpawnInfo( playerid, 0, pInfo[playerid][pSkin], hInfo[i][h_x], hInfo[i][h_y], hInfo[i][h_z], 0.0,0,0,0,0,0,0 ); //SetPlayerPos(playerid, hInfo[i][h_x],hInfo[i][h_y],hInfo[i][h_z]); SetPlayerInterior(playerid, 0); SetPlayerVirtualWorld(playerid, 0); SpawnPlayer(playerid); } } //return 1; } } else { TogglePlayerControllable(playerid,0); OnTutorialEnter(playerid); return 1; } }


    Habe leider weig bis kein verständnis für alle passagen die irgend was mit "i" oder "++" zu tun haben XD das tutvideo war nur zum abschreiben gut^^


    Hat jemand eine Idee warum das hier schief läuft`?

    Kann ich in einer SendClientMessage mit string die Farbe Wechseln? (mitten im text!)


    Denn bei " format(string, sizeof(string), "[PLAYER INFO]:{0xFF4500AA} Gender - %d | Native Orig..... " wird die Farbe durch { und } nicht gewechselt, er zeigt die klammern als text :(


    Wie kann man das lösen?

    Was muss ich abfragen, wenn ich bei einer listen infobox den rechten Button zuweisen will? also ich hab on response und on die listimen. wenn ich else ans ende mache, kann ich nichts mehr anklicken.
    Ich will dass es eins zurück geht, also einen alten dialog "verlinken" nur was frag ich dazu ab?

    Ich schau gleich mal wieiele es sind.


    Wie kann ich das Alter dem inputtext zuordnen?



    if(dialogid == SET_CHAR_AGE)
    {
    if(!strlen(inputtext))
    {
    SendClientMessage(playerid, 0xFFFFFFFF, "Your Age Cannot be Blank");
    ShowPlayerDialog(playerid,SET_CHAR_AGE,DIALOG_STYLE_INPUT,"Age","How old are you?\nType in your charachters age.","Continue","Cancel");
    return 1;
    }
    if(!response)
    {
    Kick(playerid);
    return 1;
    }
    if (strval(inputtext) <= 15)
    {
    SendClientMessage(playerid, 0xFFFFFFFF, "Invalid Age.");
    SendClientMessage(playerid, 0xFFFFFFFF, "Your Charachter must be at least 16 years old.");
    ShowPlayerDialog(playerid,SET_CHAR_AGE,DIALOG_STYLE_INPUT,"Age","How old are you?\nType in your charachters age.","Continue","Cancel");
    return 1;
    }
    //pInfo[playerid][pAge] = inputtext; // ??????


    Wie muss das pInfo aussehen?

    Jap, so hab ich es jetzt auch gemacht, wundert mich nur dass es so eine funktion nicht gibt, würde ne menge zeilen sparen^^


    wo genau ist eig der vorteil bei ocmd commands? bei tutorial video wird das oft benutzt, welche vorteil hat es zu den "alten" if(strcmp("/..." ? und wie muss das aussehen wenn ich bei ocmd mehrere cmds einer funktion zuweise möchte?


    Gibt es bessere alternativen? Oder ist es performance mässig wayne wie ich die commands erstelle?

    Nochmal Danke, sie sind jetzt totgelegt, ganz wegmachen geht wohl nicht? konnte mit googlen nichtmal den return 0 trick rausfinden :(
    Du hast mir jetzt schon ne Meeeenge Zeit gespaart ^^
    Noch ne kleinigkeit, in meinem tutorial wird die kamera irgendwohin gesetzt, damit die textur auch gescheit läd muss der spieler ja i nder nähe sein.
    Den part hab ich einfach aus meinem alten script gezogen, damals blieb cj einfach i nder luft bzw unter der map hängen wegen togglecontrolable, jetzt fällt er immer auf die strasse(udn stirbt teilweise sogar^^)
    Wie kann ich am elegantesten verhindern dass verwahrloste cj's sonstwo auf der strasse stehen wenn jemand im tut ist?

    Danke für die schnelle Antwort !!


    Ich musste also nur hinten statt dem ganzen "GetPlayerName.." nur den zugewiesenen namen schreiben..


    es geht jetzt :)



    Noch eine andere Frage.. bei meinem login Dialogen erscheint unten die links und rechts auswahl box für die skinauswahl, dabei geht mein script garnicht zu "onplayerrequstclass"
    Man kann sich zwar einloggen aber auch da einfach auf spawn drücken und dann schmier tes halt ab "stay within the world .." :/
    Wie kann ich das Auswahlfenster unterbinden?!

    Kann mir jemand helfen? Warscheinlich sehe ich mal wieder den Wald vor lauter Bäumen nicht.. :D


    "Number of arguments not match definition" oder so.. zeile 4



    new pREGdone[128];
    new pNameReg[128];
    GetPlayerName(playerid,pNameReg,sizeof(pNameReg));
    format(pREGdone,sizeof(pREGdone),"Name: %s | Age: %d | Gender: %s | Religon: notavailible | Origin Race: %s",GetPlayerName(playerid),pInfo[playerid][pAge],gender,pInfo[playerid][pOrigin]);
    SendClientMessage(playerid,COLOR_WHITE,pREGdone); //dafuq