Beiträge von [KoSoVa]
-
-
-
[KoSoVa]:
Setz mal nach dem SetPlayerPos ein break; hin.
Geht immer noch nicht, bleibt beim 0 Punkt -
wies werde ich immer beim 0 Punkt gespawnt? Dieser Code soll abfragen, ob ein Zimmer noch frei ist, aber wenn ich beim Dialog die Taste ganz schnell mehrmals drücke, dann werde ich kurz sehr kurz gespawnt, und wieder zum null punkt gespawnt?
for(new i = 0; i<MaxHaus; i++)
{
if(Haus[i][hZimmerA] < Haus[i][hZimmerM])continue;
{
SetPlayerPos(playerid,Haus[i][hX],Haus[i][hY],Haus[i][hZ]);
}
} -
Wies wird nicht die richtige ID ausgegeben?
Es kommt immer 1 oder sowasnew query[400], HausID;
HausID = format(query, sizeof(query), "SELECT `ID` FROM `hauser` WHERE `Fertig` = '0'");
mysql_query(query);
printf("%i",HausID); -
Wie mache ich ,dass die NPC'S nicht auf der Karte angezeigt werden? Und wie bekommeich das hin , dass über einen NPC Ein name steht, ich weiß mit einen 3D Text, aber ich weiß ja nicht die Höhe usw?
-
Moin, ich habe mir grad einen 3 Npc erstelt, jedoch will er nicht die Animation machen die ich will. Also er bleibt einfach nur grade stumpf stehen.
if(!strcmp(botname, "Dealer", true))
{
SetPlayerSkin(playerid,29);
SetPlayerInterior(playerid,-1);
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_SMOKE_CIGGY);
} -
Die Variable "Haus" wird bei dir ja auf ein enum zu greifen.
Könntest du dieses mal bitte hier schicken?
MfGenum Hauser
{
Float:hX, //Haus-X Koordinate
Float:hY, //Haus-Y Koordinate
Float:hZ, //Haus-Z Koordinate
Float:iX, //Int-X Koordinate
Float:iY, //Int-Y Koordinate
Float:iZ, //Int-Z Koordinate
hBesitzer[MAX_PLAYER_NAME], //Besitzer
hBeschreibung[MaxHausBeschreibung], //Beschreibung
hLevel, //Hauslevel
hZimmerA, //Aktuelle Zimmer
hZimmerM, //Maximale Zimmer
hInteriorID,//InteriorID
hPreis, //Hauspreis
hID, //HausID
hPickup, //HausPickup
hMapIcon,//Map Icon
hMietbar,//Mietbar
hMietpreis,//Mietpreis
Text3D:hText //Haus3D-Text*/
};
new Haus[MaxHaus][Hauser]; -
Fall ich jetzt nix übersehen habe:
Du ließt nirgends die Interior ID aus, weshalb er sie auch nicht setzten kannWie sollte ich es denn sonst machen? Ich versteh das grad irgendwie nicht... ich weiß sonst nicht, wie ich es sonst machen soll.
-
Bei mir geht etwas nicht, also ich hab ein Spawnsystem der beim ausloggen die letzte Posi speichert, dann wenn der Spieler sich wieder eingeloggt an der alten Posi einloggt.
Und jz habe ich es gemacht,wenn der Spieler sich in einem Interior(Haus) ausloggt, soll er wieder im Interior spawnen, jedoch wird er an der posi gespawnt aber es wird nicht die InteriorID gelegt? Wieso?
new Float:LastX,Float:LastY,Float:LastZ;
LastX = SpielerInfo[playerid][pLastX], LastY = SpielerInfo[playerid][pLastY],LastZ = SpielerInfo[playerid][pLastZ];
SetPlayerPos(playerid, LastX, LastY, LastZ);
TogglePlayerControllable(playerid, 0);
SetTimerEx("UnfreezeTime", 5000, false, "d", playerid);
if(SpielerInfo[playerid][pWarSpielerImInterior] == 1)
{
printf("1");
new HausID = GetNearInteriorPos(playerid);
printf("2");
SetPlayerInterior(playerid,Haus[HausID][hInteriorID]); //Geht nicht + Wird ab hier nicht mehr weitegezählt
printf("3");
printf("ID: %i",Haus[HausID][hInteriorID]);
}stock GetNearInteriorPos(playerid)
{
for(new hWhich; hWhich != MaxHaus; hWhich++)
{
if(IsPlayerInRangeOfPoint(playerid, 3.0, Haus[hWhich][iX], Haus[hWhich][iY], Haus[hWhich][iZ])) return hWhich;
}
return -1;
} -
-
alles klar danke, das wärs dann jetzt.
-
Wie lange lädt es denn eigentlich?
-> habe bei mir oben ein #define MAX_HAUS 3 (Solange dauert es dann.. so Pro haus 2,5 sek)EDIT:
Es nun, aber warum bleibt bei mir in der Tablle unter ID , immer 0? Es soll immer 1,2,3,4 usw?
-
Alles klar, hier einmal der code:
public OnGameModeInit()
{
Connect_To_Database();
mysql_debug(1);
for(new Var; Var < MaxHaus; Var++)
{
LoadHouse(Var);
}
return 1;
}
public OnGameModeExit()
{
//Haussystem
for(new Var; Var < MaxHaus; Var++)
{
DestroyHouse(Var);
}
return 1;
}ocmd:hauserstellen(playerid,params[])
{
if(SpielerInfo[playerid][pAlevel] >= 5)
{
new Preis,Level,AZimmer = 0, MZimmer,Beschreibung[MaxHausBeschreibung];
if(sscanf(params,"iiis[100]",Preis, Level, MZimmer, Beschreibung))return SendClientMessage(playerid,0xFF0000FF,"[FEHLER]{FFFFFF} Benutze: /Hauserstellen [Preis] [Level] [M.Zimmeranzahl] [Beschreibung]");
if(strlen(Beschreibung) < MinHausBeschreibung || strlen(Beschreibung) > MaxHausBeschreibung)return SendClientMessage(playerid, 0xFF0000FF, "[FEHLER]{FFFFFF}Die Beschreibung ist zu kurz oder zu lang!(Mind. 4 Zeichen || Max. 12 Zeichen)");
if(Preis < MinHausPreis || Preis > MaxHausPreis)return SendClientMessage(playerid, 0xFF0000FF, "[FEHLER]{FFFFFF}Der Preis ist zu hoch oder zu tief!(Mind. 1$ || Max. 1000000$)");
if(MZimmer < MinHausZimmer || MZimmer > MaxHausZimmer)return SendClientMessage(playerid, 0xFF0000FF, "[FEHLER]{FFFFFF}Die Zimmer sind zu wenig oder zu viel!(Mind. 1 Zimmer || Max. 100 Zimmer)");
if(Level < MinHausLevel || Level > MaxHausLevel)return SendClientMessage(playerid, 0xFF0000FF, "[FEHLER]{FFFFFF}Der Level ist zu hoch oder zu niedrig!(Mind. Level 1 || Max. Level 99)");
{
new Float:x,Float:y,Float:z,SQL[300];
GetPlayerPos(playerid, x, y, z); //Die Hauspostion/Spielerpostion wird geholt.
format(SQL, sizeof(SQL), "INSERT INTO hauser (Beschreibung, Preis, AZimmer, MZimmer , Level, HausPosX, HausPosY, HausPosZ) VALUES ('%s', '%d', '%d', '%d', '%d', '%f', '%f', '%f')",Beschreibung, Preis, AZimmer, MZimmer, Level, x, y, z);
mysql_query(SQL);
SendClientMessage(playerid, 0xFF0000FF, "[H-INFO] {FFFFFF}Das Haus wurde erfolgreich erstellt!");
printf("[H-INFO]Es wurde ein Haus erstellt!");
for(new Var; Var < MaxHaus; Var++)
{
DestroyHouse(Var);
}
LoadHouses();
}
}
return 1;
}//Haussystem
stock GetNearHausID(playerid)
{
for(new hWhich; hWhich != MaxHaus; hWhich++)
{
if(IsPlayerInRangeOfPoint(playerid, 3.0, Haus[hWhich][hX], Haus[hWhich][hY], Haus[hWhich][hZ])) return hWhich;
}
return -1;
}
stock LoadHouse(ID)
{
new String[24],Text[150];
format(String, sizeof(String), "%d", ID);
Haus[ID][hID] = mysql_GetInt("hauser", "ID", "ID", String);
format(Haus[ID][hBesitzer], MAX_PLAYER_NAME, mysql_GetString("hauser", "Besitzer", "ID", String));
format(Haus[ID][hBeschreibung], MaxHausBeschreibung, mysql_GetString("hauser", "Beschreibung", "ID", String));
Haus[ID][hPreis] = mysql_GetInt("hauser", "Preis", "ID", String);
Haus[ID][hZimmerA] = mysql_GetInt("hauser", "AZimmer", "ID", String);
Haus[ID][hZimmerM] = mysql_GetInt("hauser", "MZimmer", "ID", String);
Haus[ID][hLevel] = mysql_GetInt("hauser", "Level", "ID", String);
Haus[ID][hX] = mysql_GetFloat("hauser", "HausPosX", "ID", String);
Haus[ID][hY] = mysql_GetFloat("hauser", "HausPosY", "ID", String);
Haus[ID][hZ] = mysql_GetFloat("hauser", "HausPosZ", "ID", String);
if(strlen(Haus[ID][hBesitzer]) < 2)
{
format(Text, sizeof(Text), "Haus '%s' zu verkaufen!\nPreis: $%d\nLevel: %d\nZimmer: %d/%d", Haus[ID][hBeschreibung], Haus[ID][hPreis], Haus[ID][hLevel], Haus[ID][hZimmerA], Haus[ID][hZimmerM]);
}
else
{
format(Text, sizeof(Text), "Haus '%s'\nBesitzer: %s\nZimmer %d/%d", Haus[ID][hBeschreibung], Haus[ID][hBesitzer], Haus[ID][hZimmerA], Haus[ID][hZimmerM]);
}
Update3DTextLabelText(Haus[ID][hText], 0x00FFAAFF, Text); //ändere/update den TextLabel mit dem formatieren String
return 1;
}stock LoadHouses()
{
new Schleife = 1,String[5],Text[150];
while(Schleife < MaxHaus)
{
format(String, sizeof(String), "%d", Schleife);
Haus[Schleife][hID] = mysql_GetInt("hauser", "ID", "ID", String);
format(Haus[Schleife][hBesitzer], MAX_PLAYER_NAME, mysql_GetString("hauser", "Besitzer", "ID", String));
format(Haus[Schleife][hBeschreibung], MaxHausBeschreibung, mysql_GetString("hauser", "Beschreibung", "ID", String));
Haus[Schleife][hPreis] = mysql_GetInt("hauser", "Preis", "ID", String);
Haus[Schleife][hZimmerA] = mysql_GetInt("hauser", "AZimmer", "ID", String);
Haus[Schleife][hZimmerM] = mysql_GetInt("hauser", "MZimmer", "ID", String);
Haus[Schleife][hLevel] = mysql_GetInt("hauser", "Level", "ID", String);
Haus[Schleife][hX] = mysql_GetFloat("hauser", "HausPosX", "ID", String);
Haus[Schleife][hY] = mysql_GetFloat("hauser", "HausPosY", "ID", String);
Haus[Schleife][hZ] = mysql_GetFloat("hauser", "HausPosZ", "ID", String);
HAUSSYSTEM FERTIG MACHEN!
if(strlen(Haus[Schleife][hBesitzer]) < 2)
{
format(Text, sizeof(Text), "Haus '%s' zu verkaufen!\nPreis: $%d\nLevel: %d\nZimmer: %d/%d", Haus[Schleife][hBeschreibung], Haus[Schleife][hPreis], Haus[Schleife][hLevel], Haus[Schleife][hZimmerA], Haus[Schleife][hZimmerM]);
}
else
{
format(Text, sizeof(Text), "Haus '%s'\nBesitzer: %s\nZimmer %d/%d", Haus[Schleife][hBeschreibung], Haus[Schleife][hBesitzer], Haus[Schleife][hZimmerA], Haus[Schleife][hZimmerM]);
}
Haus[Schleife][hText] = Create3DTextLabel(Text, 0x00FFAAFF, Haus[Schleife][hX], Haus[Schleife][hY], Haus[Schleife][hZ], MaxHausTextSehbar, 0);
Haus[Schleife][hPickup] = CreatePickup(HausPickupModel, 23, Haus[Schleife][hX], Haus[Schleife][hY], Haus[Schleife][hZ], -1);
Update3DTextLabelText(Haus[Schleife][hText], 0x00FFAAFF, Text);
Schleife++;
}
return 1;
}stock DestroyHouse(ID)
{
DestroyPickup(Haus[ID][hPickup]);
Delete3DTextLabel(Haus[ID][hText]);
return 1;
}stock SaveHouse()
{
for(new Haeuser; Haeuser < MaxHaus; Haeuser++)
{
mysql_SetInt("hauser", "Zimmer", Haus[Haeuser][hZimmerA], "ID", Haus[Haeuser][hID]);
mysql_SetString("hauser", "Besitzer", Haus[Haeuser][hBesitzer], "ID", Haus[Haeuser][hID]);
}
return 1;
}Und jetzt nochmal ein Bild von der Datenbank:
-
Hay,
wenn ich immer Ingame "/Hauserstellen" eingebe und dazu die Daten, passiert nicht viel... es wird zwar was in der Tabelle erstellt, aber es wird nicht ein PickUp erstellt, geschweige noch 3D-Text
ocmd:hauserstellen(playerid,params[]) if(SpielerInfo[playerid][pAlevel] >= 5)[/size][size=10] {[/size][size=10] new Preis,Level,AZimmer = 0, MZimmer,Beschreibung[MaxHausBeschreibung];[/size][size=10] if(sscanf(params,"iiis[100]",Preis, Level, MZimmer, Beschreibung))return SendClientMessage(playerid,0xFF0000FF,"[FEHLER]{FFFFFF} Benutze: /Hauserstellen [Preis] [Level] [M.Zimmeranzahl] [Beschreibung]");[/size][size=10] if(strlen(Beschreibung) < MinHausBeschreibung || strlen(Beschreibung) > MaxHausBeschreibung)return SendClientMessage(playerid, 0xFF0000FF, "[FEHLER]{FFFFFF}Die Beschreibung ist zu kurz oder zu lang!(Mind. 4 Zeichen || Max. 12 Zeichen)");[/size][size=10] if(Preis < MinHausPreis || Preis > MaxHausPreis)return SendClientMessage(playerid, 0xFF0000FF, "[FEHLER]{FFFFFF}Der Preis ist zu hoch oder zu tief!(Mind. 1$ || Max. 1000000$)");[/size][size=10] if(MZimmer < MinHausZimmer || MZimmer > MaxHausZimmer)return SendClientMessage(playerid, 0xFF0000FF, "[FEHLER]{FFFFFF}Die Zimmer sind zu wenig oder zu viel!(Mind. 1 Zimmer || Max. 100 Zimmer)");[/size][size=10] if(Level < MinHausLevel || Level > MaxHausLevel)return SendClientMessage(playerid, 0xFF0000FF, "[FEHLER]{FFFFFF}Der Level ist zu hoch oder zu niedrig!(Mind. Level 1 || Max. Level 99)");[/size][size=10] {[/size][size=10] new Float:x,Float:y,Float:z,SQL[300];[/size][size=10] GetPlayerPos(playerid, x, y, z); //Die Hauspostion/Spielerpostion wird geholt.[/size][size=10] format(SQL, sizeof(SQL), "INSERT INTO hauser (Beschreibung, Preis, AZimmer, MZimmer , Level, HausPosX, HausPosY, HausPosZ) VALUES ('%s', '%i', '%i', '%i', '%i', '%f', '%f', '%f')",Beschreibung, Preis, AZimmer, MZimmer, Level, x, y, z);[/size][size=10] mysql_query(SQL);[/size][size=10] SendClientMessage(playerid, 0xFF0000FF, "[H-INFO] {FFFFFF}Das Haus wurde erfolgreich erstellt!");[/size][size=10] printf("Es wurde ein Haus erstellt!");[/size][size=10] for(new Var; Var < MaxHaus; Var++)[/size][size=10] { [/size][size=10] DestroyHouse(Var); [/size][size=10] }[/size][size=10] LoadHouses();[/size][size=10] }[/size][size=10] [/size][size=10] }[/size][size=10] return 1;[/size][size=10]}[/size]
[size=10]
stock LoadHouses()
{
new Schleife = 1,String[5],Text[150];
while(Schleife < MaxHaus)
{
format(String, sizeof(String), "%d", Schleife);
Haus[Schleife][hID] = mysql_GetInt("hauser", "hID", "ID", String);
format(Haus[Schleife][hBesitzer], MAX_PLAYER_NAME, mysql_GetString("hauser", "Besitzer", "ID", String));
format(Haus[Schleife][hBeschreibung], MaxHausBeschreibung, mysql_GetString("hauser", "Beschreibung", "ID", String));
Haus[Schleife][hPreis] = mysql_GetInt("hauser", "Preis", "ID", String);
Haus[Schleife][hZimmerA] = mysql_GetInt("hauser", "AZimmer", "ID", String);
Haus[Schleife][hZimmerM] = mysql_GetInt("hauser", "MZimmer", "ID", String);
Haus[Schleife][hLevel] = mysql_GetInt("hauser", "Level", "ID", String);
Haus[Schleife][hX] = mysql_GetFloat("hauser", "HausPosX", "ID", String);
Haus[Schleife][hY] = mysql_GetFloat("hauser", "HausPosY", "ID", String);
Haus[Schleife][hZ] = mysql_GetFloat("hauser", "HausPosZ", "ID", String);
if(strlen(Haus[Schleife][hBesitzer]) < 2 )
{
format(Text, sizeof(Text), "%s zu verkaufen!\nPreis: $%i\nLevel: %i\nZimmer: %i/%i", Haus[Schleife][hBeschreibung], Haus[Schleife][hPreis], Haus[Schleife][hLevel], Haus[Schleife][hZimmerA], Haus[Schleife][hZimmerM]);
}
else
{
format(Text, sizeof(Text), "%s\nBesitzer: %s\nZimmer %i/%i", Haus[Schleife][hBeschreibung], Haus[Schleife][hBesitzer], Haus[Schleife][hZimmerA], Haus[Schleife][hZimmerM]);
}
Haus[Schleife][hText] = Create3DTextLabel(Text, -1, Haus[Schleife][hX], Haus[Schleife][hY], Haus[Schleife][hZ], MaxHausTextSehbar, 0);
Haus[Schleife][hPickup] = CreatePickup(HausPickupModel, 23, Haus[Schleife][hX], Haus[Schleife][hY], Haus[Schleife][hZ], 0);
Update3DTextLabelText(Haus[Schleife][hText], 0xFF0000FF, Text);
Schleife++;
}
return 1;
}stock DestroyHouse(ID)
{
DestroyPickup(Haus[ID][hPickup]);
Delete3DTextLabel(Haus[ID][hText]);
return 1;
}Und wie würdet ihr das schreiben? Denn deswegen laggt der start immer.
public OnGameModeInit()
{
//MQSL
Connect_To_Database();
//Haussystem
new Hausx;
mysql_debug(1);
while(Hausx < MaxHaus)
{
LoadHouse(Hausx);
Hausx++;
}
return 1;
}public OnGameModeExit()
{
//Haussystem
new Hausy;
while(Hausy < MaxHaus)
{
DestroyHouse(Hausy);
Hausy++;
}
return 1;
} -
Alles klar, damit wäre auch meine andere Frage geklärt.
-
Danke,
und was bringt jetzt genau das "strval"?
-
Hay,
ich möchte in mein Register/Login System eine Alterabfrage reinhauen. Aber wie mache ich das, dass in denn Inputttext nur Zahlen eingegeben werden darf? Und warum kriege ich diesen Error:
//error 006: must be assigned to an array
SpielerInfo[playerid][pAlter] = inputtext; -
Ich suche ein Spiel der ARK: survival Evolved auf der höchsten oder Mittleren Qualität schafft. -> Bitte das billigste raussuchen.
-> mind. 500 GB Festplattenspeicher. -
Ich suche ein Spiel der ARK: survival Evolved auf der höchsten oder Mittleren Qualität schafft. -> Bitte das billigste raussuchen.
-> mind. 500 GB Festplattenspeicher.