Spawn erstellen dynamisches hausystem

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
  • ocmd:buyhaus(playerid)
    {
    new ID=GetNearestHaus(playerid,4);
    if(ID==-1) return SendClientMessage(playerid,-1,"Du bist nicht in der Nahe eines Hauses");
    if(GetPlayerMoney(playerid)<Haus[ID][Preis]) return SendClientMessage(playerid,-1,"Soviel Geld hast du nicht bei dir");
    if(!strcmp(Haus[ID][Besitzer],"Niemand"))
    {
    GetPlayerName(playerid,Haus[ID][Besitzer],MAX_PLAYER_NAME);
    DestroyPickup(Haus[ID][PickupID]);
    RemovePlayerMapIcon(playerid,STARTMAPICON+ID);
    SetPlayerMapIcon(playerid,STARTMAPICON+ID,Haus[ID][Pos][0],Haus[ID][Pos][1],Haus[ID][Pos][2],32,0xFFFFFFFF);
    Haus[ID][PickupID] = CreatePickup(1239,1,Haus[ID][Pos][0],Haus[ID][Pos][1],Haus[ID][Pos][2]);
    new string[65];
    format(string,65,"Dieses Haus gehoert:\n%s%s",Haus[ID][Besitzer],(Haus[ID][Abgeschlossen])?("\n\nAbgeschlossen"):(""));
    Update3DTextLabelText(Haus[ID][Label],0x33AA33FF,string);
    return true;
    }
    return SendClientMessage(playerid,-1,"Dieses Haus kann man nicht kaufen");
    }



    die Häuser werden automatisch geladen

    Neuer Reallife server : simple-craft.de:7777

  • Ok, passt auch so, da steht alles drin was ich benötigt habe.


    Bei OnPlayerSpawn:
    new p_name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, p_name, MAX_PLAYER_NAME);
    for(new i=0; i<sizeof(Haus); i++)
    {
    if(!strcmp(Haus[i][Besitzer],p_name) && strlen(Haus[i][Besitzer]))
    {
    SetPlayerPos(playerid, Haus[i][Pos][0],Haus[i][Pos][1],Haus[i][Pos][2]);
    break;
    }
    }

  • Das kannst du dann einfach hinzufügen:
    public OnPlayerSpawn(playerid)
    {
    new p_name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, p_name, MAX_PLAYER_NAME);
    for(new i=0; i<sizeof(Haus); i++)
    {
    if(!strcmp(Haus[i][Besitzer],p_name) && strlen(Haus[i][Besitzer]))
    {
    SetPlayerPos(playerid, Haus[i][Pos][0],Haus[i][Pos][1],Haus[i][Pos][2]);
    break;
    }
    }
    return 1;
    }


    Falls es nicht geht, wegen der Reihenfolge wie deine Codes aufgerufen werden, sag Bescheid.

  • C:\Users\Julia\Desktop\Haussystem.pwn(96) : error 029: invalid expression, assumed zero
    C:\Users\Julia\Desktop\Haussystem.pwn(96) : error 004: function "OnPlayerSpawn" is not implemented

    Neuer Reallife server : simple-craft.de:7777

  • oki geht nicht entweder spam in der fraktion oder am zivi spawm kann man nen befehl erstellen fü spawnchange?


    Dann mache es folgendermaßen:
    Das OnPlayerSpawn im Filterscript entfernst du wieder.
    Dann fügst du dafür das hier ein:
    forward OnPlayerSpawn_Call(playerid);
    public OnPlayerSpawn_Call(playerid)
    {
    new p_name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, p_name, MAX_PLAYER_NAME);
    for(new i=0; i<sizeof(Haus); i++)
    {
    if(!strcmp(Haus[i][Besitzer],p_name) && strlen(Haus[i][Besitzer]))
    {
    SetPlayerPos(playerid, Haus[i][Pos][0],Haus[i][Pos][1],Haus[i][Pos][2]);
    break;
    }
    }
    return 1;
    }


    Und das hier fügst du in das OnPlayerSpawn im Gamemode (also dort wo du das mit dem Zivi-Spawn etc hast) ein:
    CallRemoteFunction("OnPlayerSpawn_Call", "d", playerid);

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


    C:\Users\Julia\Desktop\test 2\test\pawno\German-Elite-Reallife.pwn(61236) : error 021: symbol already defined: "CallRemoteFunction"



    also glaube is schon drin

    Neuer Reallife server : simple-craft.de:7777

  • Dann schreibe es bitte mal so:
    forward OnPlayerSpawn_Call(playerid);
    public OnPlayerSpawn_Call(playerid)
    {
    printf("OnPlayerSpawn_Call aufgerufen");
    new p_name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, p_name, MAX_PLAYER_NAME);
    for(new i=0; i<sizeof(Haus); i++)
    {
    printf("i: %d / Besitzer: %s / p_name: %s", i, Haus[i][Besitzer], p_name);
    if(!strcmp(Haus[i][Besitzer],p_name) && strlen(Haus[i][Besitzer]))
    {
    printf("SetPlayerPos");
    SetPlayerPos(playerid, Haus[i][Pos][0],Haus[i][Pos][1],Haus[i][Pos][2]);
    break;
    }
    }
    return 1;
    }


    Und poste dann was im Server Log steht, wenn du spawnst.
    Falls gar nichts drin steht, poste bitte dein OnPlayerSpawn aus dem Gamemode.

  • das steht in log




    und das steht im gm



    Function OnPlayerSpawn(playerid)
    {
    CallRemoteFunction("OnPlayerSpawn_Call", "d", playerid);
    if(IsPlayerNPC(playerid))
    {

    Neuer Reallife server : simple-craft.de:7777

  • Also, du besitzt kein Haus. Es steht nirgends dein Name bei dem Besitzer drin.


    Außerdem:
    CallRemoteFunction("OnPlayerSpawn_Call", "d", playerid);
    Das hier muss nach dem Teil im Code stehen, an dem du den Spieler an die Position vom Zivi Spawn setzt.

  • spawn fehler hab es so eingefügt


    public OnPlayerSpawn(playerid)
    {
    if(dini_Int(hauscfg,"Nutze_Spawnsystem") == 1)
    {
    if(playerD[playerid][spawn] == 0)
    {
    SetPlayerPos(playerid,dini_Float(hauscfg,"S_Spawnx"),dini_Float(hauscfg,"S_Spawny"),dini_Float(hauscfg,"S_Spawnz"));
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,0);
    return 1;
    }
    else
    {
    for(new i = 0; MAX_HAUS >= i; i++)
    {
    if(strcmp(haus[i][besitzer],getPlayerName(playerid),false) == 0)
    {
    new inter[128];
    format(inter,sizeof(inter),"/Interiors/Interior%i.txt",haus[i][interior]);
    SetPlayerPos(playerid,dini_Float(inter,"SpawnX"),dini_Float(inter,"SpawnY"),dini_Float(inter,"SpawnZ"));
    SetPlayerInterior(playerid,haus[i][interior]);
    SetPlayerVirtualWorld(playerid,haus[i][vworld]);
    enterid[playerid] = haus[i][id];
    return 1;
    }
    new HDatei[128];
    format(HDatei,sizeof(HDatei),"/Haus/Haus%i.cfg",haus[i][id]);
    new maxmieter = dini_Int(hauscfg,"Max_Mieter");
    for(new x = 0; maxmieter > x; x++)
    {
    new mietername[128];
    format(mietername,sizeof(mietername),"Mieter%i",x);
    if(strcmp(dini_Get(HDatei,mietername),"",false) == 0)
    {
    new inter[128];
    format(inter,sizeof(inter),"/Interiors/Interior%i.txt",haus[i][interior]);
    SetPlayerPos(playerid,dini_Float(inter,"SpawnX"),dini_Float(inter,"SpawnY"),dini_Float(inter,"SpawnZ"));
    SetPlayerInterior(playerid,haus[i][interior]);
    SetPlayerVirtualWorld(playerid,haus[i][vworld]);
    enterid[playerid] = haus[i][id];
    return 1;
    }
    }
    }
    SetPlayerPos(playerid,dini_Float(hauscfg,"S_Spawnx"),dini_Float(hauscfg,"S_Spawny"),dini_Float(hauscfg,"S_Spawnz"));
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,0);
    return 1;
    }
    }
    return 1;
    }




    und nun kommen diese erros



    C:\Users\Julia\Desktop\test 2\test\pawno\rl.pwn(8603) : error 021: symbol already defined: "OnPlayerSpawn"
    C:\Users\Julia\Desktop\test 2\test\pawno\rl.pwn(8604) : error 017: undefined symbol "hauscfg"
    C:\Users\Julia\Desktop\test 2\test\pawno\rl.pwn(8606) : error 017: undefined symbol "playerD"
    C:\Users\Julia\Desktop\test 2\test\pawno\rl.pwn(8606) : warning 215: expression has no effect
    C:\Users\Julia\Desktop\test 2\test\pawno\rl.pwn(8606) : error 001: expected token: ";", but found "]"
    C:\Users\Julia\Desktop\test 2\test\pawno\rl.pwn(8606) : error 029: invalid expression, assumed zero
    C:\Users\Julia\Desktop\test 2\test\pawno\rl.pwn(8606) : fatal error 107: too many error messages on one line

    Neuer Reallife server : simple-craft.de:7777

  • Du kannst nicht einfach Codes irgendwo raus kopieren und einfügen, das klappt nicht.


    Fehler 1:
    OnPlayerSpawn existiert in dem Code bereits.


    Fehler 2:
    hauscfg wurde nie deklariert und bekommt auch keinen Wert zugewiesen.


    Fehler 3:
    playerD existiert ebenfalls nicht.

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