eig mal dein stock spieler speichern und laden
Beiträge von firestormZ
-
-
du musst jedem Dialog auch ne Zahl zu weisen, sprich
#define DIALOG_RADIO 23
!WICHTIG!: Die Zahlen dürfen sich nicht überschneiden also nicht jetzt 10 Dailoge mit der ID 23 definieren, muss immer ne andere sein -
zeig mal dein #define DIALOG_RADIO
-
stürzt wieder ab
also müsste ich den langen weg nehmen mit
if(strlen(HausDaten[i][Mieter]) >0)
{
printf("Haus %d geladen & erstellt! [BESITZER: %s] [Mieter: %s]", i, HausDaten[i][Besitzer], HausDaten[i][Mieter]);
}
else...
? -
dort stürzt der Pawncompiler ab..
gibst nicht irgend ne Möglichkeit es so zu machen?:
new str[10],str1[10]="hi";
format(str,sizeof(str),"%s",str1[0] ? str1: "/"); -
Tag Com,
kurze Frage, warum stürzt der PawnCompiler ab?
printf("Haus %d geladen & erstellt! [BESITZER: %s] [Mieter: %s]", i, HausDaten[i][Besitzer], HausDaten[i][Mieter][0] ? HausDaten[i][Mieter] : "/");
Wenn ich das HausDaten[i][Mieter][0] zu HausDaten[i][Mieter[0]] mach bekomm ich die errors:(6324) : error 028: invalid subscript (not an array or too many subscripts): "Mieter"
(6324) : warning 215: expression has no effect
(6324) : error 001: expected token: ";", but found "]"
(6324) : error 029: invalid expression, assumed zero
(6324) : fatal error 107: too many error messages on one line -
error zeilen?
-
danke
werd ich nutzen
-
so wie cihs jetzt gemacht hat, funktioniert es nicht, ich glaube hab mich falsch ausgedrückt
bei onplayerspawn hab ich ja ne schleife, wenn ich dann zb 2 Häuser besitze mit der ID 120 und 129,
dann möchte ich auch wenn ich auf die ID 129 klicke, dort drin spawnen(spawne aber in ID 120, da sie ja als erstes in den scriptfiles vorkommt) -
mach ich doch? ich will doch einfach nur abfragen, wie ich wissen kann , auf welche ID er geklcikt hat?
//push
-
Abend,
habn Problem,
Es werden mir jetzt alle Häuser die man besitzt angezeigt, aber wie kann ich den jetzt in der jeweiligen HausID spawnen?
Hier mein bisheriger Code:
//OnPlayerSpawn
new Haeuser[128], string[128];
for(new i = 0;i<MAX_HH;i++)
{
format(Haeuser,sizeof(Haeuser),"/Häuser/%d.ini", HausDaten[i][ID]);
if(dini_Exists(Haeuser))
{
if(!strcmp(HausDaten[i][Besitzer], SpielerName(playerid), false))
{
format(string, sizeof(string), "%s\nHausID: %d\n", string, HausDaten[i][ID]);
ShowPlayerDialog(playerid,DIALOG_SpawnHaus,DIALOG_STYLE_LIST,"Spawn Orte",string,"Spawnen","");
}
}
}
//OnDialogResponse
if(dialogid == DIALOG_SpawnHaus)
{
if(response==0)
{
SendClientMessage(playerid,ROT,"Du musst einen Spawnort auswählen!");
new Haeuser[128], string[128];
for(new i = 0;i<MAX_HH;i++)
{
format(Haeuser,sizeof(Haeuser),"/Häuser/%d.ini", HausDaten[i][ID]);
if(dini_Exists(Haeuser))
{
if(!strcmp(HausDaten[i][Besitzer], SpielerName(playerid), false))
{
format(string, sizeof(string), "%s\nHausID: %d\n", string, HausDaten[i][ID]);
ShowPlayerDialog(playerid,DIALOG_SpawnHaus,DIALOG_STYLE_LIST,"Spawn Orte",string,"Spawnen","");
}
}
}
return 1;
}
if(response==1)
{
if(listitem == 0)
{
new Haeuser[64];
for(new i = 0;i<MAX_HH;i++)
{
format(Haeuser,sizeof(Haeuser),"/Häuser/%d.ini", HausDaten[i][ID]);
if(dini_Exists(Haeuser))
{
if(!strcmp(HausDaten[i][Besitzer], SpielerName(playerid), false))
{
SetPlayerInterior(playerid,HausDaten[i][interior]);
SetPlayerVirtualWorld(playerid,HausDaten[i][virtual_world]);
SetPlayerPos(playerid,HausDaten[i][sx],HausDaten[i][sy],HausDaten[i][sz]);
SetPlayerFacingAngle(playerid,HausDaten[i][sang]);
SetCameraBehindPlayer(playerid);
PlayerPlaySound(playerid, 1054, 0.0, 0.0, 0.0);
break;
}
}
}
return 1;
}
if(listitem == 1)
{
//steht das selbe wie bei listitem 0
}
}
return 1;
} -
if(pInfo[pID][pAdmin]>pInfo[playerid][pAdmin])return SendClientMessage(playerid,ROT,"FEHLER: Du kannst keine Rang höheren Admin Bannen!"); -
warum nicht über dini_remove?
-
Kurze und knackige Frage:
Muss ich irgendwas beachten wenn ich ne Dini Datei lösche per dini_Remove(filename[]);?
Zum Beispiel vorher alle Variablen in der Datei auf 0 setzen oder die einzelnen Zeilen mit dini_Unset(filename[], key[]); löschen?
mfg -
zeig mal dein Code bisher mit den Join nachrichten
-
jop
//edit:
das hat nichts mit PAWN und deine Abspoeicherung etc. zu tun. Passiert halt mit dem normalen Standart editor -
das passiert, wenn du die datei mit dem Standart editor öffnest und bearbeitest, nutze notepad++ wordpad etc. wennn du was von hand bearbeiten willst
-
keine ahnung, villeicht wurds nicht richtig gespeichert oder so, teste es nochmal.
bin jz erstmal off, falls du weiterhin Probleme hast, ich bin morgen um 12 uhr wieder online -
du hast bestimmt
stock SpielerSpeichern(playerid);
{
...
}
so ganz am ende muss aber ein return 1 hin
stock SpielerSpeichern(playerid);
{
...
return 1;
} -
Hab übersehen, das du die Variable hVarBesitzer hast
jz müsste alles gehen, check mal und ersetz es
#define MAX_HOUSES 50
enum HausDaten
{
hBesitzer[MAX_PLAYER_NAME],
hKaufpreis,
hVarBesitzer,
Float: hIconX,
Float: hIconY,
Float: hIconZ,
hIconID,
Float: hSpawnX,
Float: hSpawnY,
Float: hSpawnZ,
hInteriorID,
HausDB
}
new HausInfo[MAX_HOUSES][HausDaten];ocmd:kaufen(playerid,params[])
{
new query[1000], string[300], string2[500];
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,Float:X,Float:Y,Float:Z);
for(new i=0;i<MAX_HOUSES;i++)
{
if(!IsPlayerInRangeOfPoint(playerid,2,HausInfo[i][hIconX],HausInfo[i][hIconY],HausInfo[i][hIconZ])) return SendClientMessage(playerid,COLOR_BLASSRED,"Hier kannst du kein Haus kaufen, du musst dich vor einem Haus stellen.");
if(HausInfo[i][hVarBesitzer] != 1) return SendClientMessage(playerid,COLOR_BLASSRED,"Das Haus ist schon verkauft.");
if(GetPlayerMoney(playerid) <= HausInfo[i][hKaufpreis]) return SendClientMessage(playerid,COLOR_BLASSRED,"Du hast nicht genug Geld um dir dieses Haus zu kaufen.");
if(GetPlayerScore(playerid) <= 3) return SendClientMessage(playerid,COLOR_BLASSRED,"Du benötigt mindestens Level 3 um dir ein eigenes Haus zu kaufen.");
if(SpielerInfo[playerid][pHaus] != 1) return SendClientMessage(playerid,COLOR_BLASSRED,"Du besitzt schon ein eigenes Haus, bitte verkaufe es vorher. [Befehle: /befehle]");
HausInfo[i][hVarBesitzer] = 1;
HausInfo[i][hBesitzer] = PlayerName[playerid];
format(query, sizeof(query), "UPDATE `Houses` SET `VarBesitzer`='%d' AND `Besitzer`='%s' WHERE `HausID` = '%d'",HausInfo[i][hVarBesitzer], PlayerName[playerid],HausInfo[i][HausDB]);
mysql_query(query);
format(query, sizeof(query), "UPDATE `Accounts` SET `Haus`='1' WHERE `Benutzername` = '%s'",PlayerName[playerid]);
mysql_query(query);
format(string,sizeof(string),"Du hast dir ein Haus für {FFCC00}$%d{FFFFFF} gekauft. Hausnummer |%d|",HausInfo[i][hKaufpreis],HausInfo[i][HausDB]);
SendClientMessage(playerid,COLOR_WHITE,string);
SendClientMessage(playerid,COLOR_WHITE,"Neue Befehle verfügbar [/befehle]");
Delete3DTextLabel(HausLabel[i]);
format(string2,sizeof(string2),"--== Verkauftes Haus ==--\nBesitzer: {FFCC00}%s{FFFFFF}",HausInfo[playerid][hBesitzer]);
HausLabel[i] = Create3DTextLabel(string2,COLOR_WHITE,HausInfo[i][hIconX],HausInfo[i][hIconY],HausInfo[i][hIconZ],15,0,1);
Update3DTextLabelText(HausLabel[i],COLOR_WHITE,string2);
GivePlayerMoney(playerid,-HausInfo[i][hKaufpreis]);
return 1;
}
return 1;
}