Hei
Ich würde gern dieses Hausscript von der Dini auf mysql umschreiben. Komm aber bei ein paar Abfragen nicht zurecht, weil ich mich selbst noch nicht so gut mit mysql auskenn.
Hier der Script mit dini:
#define MAX_HAUS 100
enum hausEnum
{
Float:AussenX, Float:AussenY, Float:AussenZ,
Float:InnenX, Float:InnenY, Float:InnenZ,
Kaufpreis, Interior, Text3DHausLabel, Hauspick,
Besitzer[24]
};
new Haus[MAX_HAUS][hausEnum];
new hstring[64];
new unusedstring[64];
OnFilterScriptInt()
{
new h;
for(;h!=MAX_HAUS;h++)
{
format(hstring,64,"%s/Haus_%d.ini",ORDNERNAME,h);
if(dini_Exists(hstring))
{
Haus[h][AussenX] = mysql_Float(hstring,"Aussen_X");
Haus[h][AussenY] = dini_Float(hstring,"Aussen_Y");
Haus[h][AussenZ] = dini_Float(hstring,"Aussen_Z");
Haus[h][InnenX] = dini_Float(hstring,"Innen_X");
Haus[h][InnenY] = dini_Float(hstring,"Innen_Y");
Haus[h][InnenZ] = dini_Float(hstring,"Innen_Z");
Haus[h][Kaufpreis] = dini_Int(hstring,"Kaufpreis");
Haus[h][Interior] = dini_Int(hstring,"Interior");
format(Haus[h][Besitzer],24,"%s",dini_Get(hstring,"Besitzer"));
if(!strcmp(Haus[h][Besitzer],"Niemand",true))
{
format(unusedstring,64,"Haus zu verkaufen.\nKaufpreis: %d$",Haus[h][Kaufpreis]);
Haus[h][HausPickup]= CreatePickup(1273,1,Haus[h][AussenX],Haus[h][AussenY],Haus[h][AussenZ],-1);
Haus[h][HausLabel] = Create3DTextLabel(unusedstring, 0xFFFFFFFF, Haus[h][AussenX], Haus[h][AussenY], Haus[h][AussenZ], 20.0, -1);
}
else
{
format(unusedstring,64,"Dieses Haus gehört: %s",Haus[h][Besitzer]);
Haus[h][HausPickup]= CreatePickup(1272,1,Haus[h][AussenX],Haus[h][AussenY],Haus[h][AussenZ],-1);
Haus[h][HausLabel] = Create3DTextLabel(unusedstring, 0xFFFFFFFF, Haus[h][AussenX], Haus[h][AussenY], Haus[h][AussenZ], 20.0, -1);
}
}
}
return 1;
}
stock HausErstellen(Float:Aussen_X,Float:Aussen_Y,Float:Aussen_Z,Float:Innen_X,Float:Innen_Y,Float:Innen_Z,Kaufpreis_,Interior_)
{
new h;
for(;h!=MAX_HAUS;h++)
if(Haus[h][Interior] != 0)
{
Haus[h][AussenX] = Aussen_X;
Haus[h][AussenY] = Aussen_Y;
Haus[h][AussenZ] = Aussen_Z;
Haus[h][InnenX] = Innen_X;
Haus[h][InnenY] = Innen_Y;
Haus[h][InnenZ] = Innen_Z;
Haus[h][Kaufpreis] = Kaufpreis_;
Haus[h][Interior] = Interior_;
format(hstring,64,"Haus zu verkaufen.\nKaufpreis: %d$",Haus[h][Kaufpreis]);
Haus[h][HausLabel] = Create3DTextLabel(hstring,0xFFFFFFFF,Haus[h][AussenX],Haus[h][AussenY],Haus[h][AussenZ]+1.7,20.0,-1);
Haus[h][HausPickup]= CreatePickup(1273,1,Haus[h][AussenX],Haus[h][AussenY],Haus[h][AussenZ],-1);
format(hstring,64,"%s/Haus_%d.ini",ORDNERNAME,h);
dini_Create(hstring);
dini_IntSet(hstring,"Aussen_X",Aussen_X);
dini_IntSet(hstring,"Aussen_Y",Aussen_Y);
dini_IntSet(hstring,"Aussen_Z",Aussen_Z);
dini_IntSet(hstring,"Innen_X",Innen_X);
dini_IntSet(hstring,"Innen_Y",Innen_Y);
dini_IntSet(hstring,"Innen_Z",Innen_Z);
dini_IntSet(hstring,"Kaufpreis",Kaufpreis_);
dini_IntSet(hstring,"Interior",Interior_);
return 1;
}
return 0;
}
stock RemoveHaus(playerid)
{
if(IsPlayerInRangeOfAnyHaus(playerid))
{
new h = IsPlayerInRangeOfAnyHaus(playerid);
Haus[h][AussenX] = 0;
Haus[h][AussenY] = 0;
Haus[h][AussenZ] = 0;
Haus[h][InnenX] = 0;
Haus[h][InnenY] = 0;
Haus[h][InnenZ] = 0;
Haus[h][Kaufpreis] = 0;
Haus[h][Interior] = 0;
format(hstring,64,"%s/Haus_%d.ini",ORDNERNAME,h);
dini_Remove(hstring);
return 1;
}
return 0;
}
stock HausKaufen(playerid)
{
new CurrMoney = Mau5_GetPlayerMoney(playerid);
if(IsPlayerInRangeOfAnyHaus(playerid))
{
new h = IsPlayerInRangeOfAnyHaus(playerid);
if(!strcmp(Haus[h][Besitzer],"Niemand",true))
{
if(CurrMoney >= Haus[h][Kaufpreis])
{
new name[24];
GetPlayerName(playerid,name,24);
format(Haus[h][Besitzer],64,"%s",name);
format(hstring,64,"%s/Haus_%d.ini",ORDNERNAME,h);
dini_Set(hstring,"Besitzer",name);
format(unusedstring,64,"Dieses Haus gehört: %s",Haus[h][Besitzer]);
DestroyPickup(Haus[h][HausPickup]);
Update3DTextLabelText(Haus[h][HausLabel],0xFFFFFFFF,unusedstring);
Haus[h][HausPickup]= CreatePickup(1272,1,Haus[h][AussenX],Haus[h][AussenY],Haus[h][AussenZ],-1);
return 1;
}
}
}
return 0;
}
stock HausVerkaufen(playerid)
{
new h;
for(;h!=MAX_HAUS;h++)
if(Haus[h][Interior] != 0)
{
if(!strcmp(Haus[h][Besitzer],name,true))
{
format(unusedstring,64,"Dieses Haus ist zu verkaufen.\nKaufpreis: %d$",Haus[h][Kaufpreis]);
DestroyPickup(Haus[h][HausPickup]);
Update3DTextLabelText(Haus[h][HausLabel],0xFFFFFFFF,unusedstring);
Haus[h][HausPickup]= CreatePickup(1273,1,Haus[h][AussenX],Haus[h][AussenY],Haus[h][AussenZ],-1);
format(Haus[h][Besitzer],64,"Niemand");
return 1;
}
}
return 0;
}
stock IsPlayerInRangeOfAnyHaus(playerid)
{
new h;
for(;h!=MAX_HAUS;h++)
if(Haus[h][Interior] != 0)
{
if(IsPlayerInRangeOfPoint(playerid,2.5,Haus[h][AussenX],Haus[h][AussenY],Haus[h][AussenZ]))
{
return h;
}
}
return -1;
}
Nun zu meinem Problem:
1. Hier wird bei dei "OnFilterScriptInt()" abgefragt ob die dini existiert und ich weiß nicht ob bzw wie ich die Abfrage bei mysql mach.
2. Bei dem Script wird mit "dini_Float" gearbeitet. Ich hab es so versucht:
Haus[h][AussenX] = mysql_Float(hstring,"Aussen_X");//Zeile 61
Haus[h][AussenY] = mysql_Float(hstring,"Aussen_Y");//Zeile 62
Haus[h][AussenZ] = mysql_Float(hstring,"Aussen_Z");//Zeile 63
da kommt die Fehlermeldung J:\gta\0.3d\filterscripts\haustest.pwn(89) : warning 208: function with tag result used before definition, forcing reparse
J:\gta\0.3d\filterscripts\haustest.pwn(61) : warning 202: number of arguments does not match definition
J:\gta\0.3d\filterscripts\haustest.pwn(61) : warning 202: number of arguments does not match definition
J:\gta\0.3d\filterscripts\haustest.pwn(62) : warning 202: number of arguments does not match definition
J:\gta\0.3d\filterscripts\haustest.pwn(62) : warning 202: number of arguments does not match definition
J:\gta\0.3d\filterscripts\haustest.pwn(63) : warning 202: number of arguments does not match definition
J:\gta\0.3d\filterscripts\haustest.pwn(63) : warning 202: number of arguments does not match definition
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
7 Warnings.
der stock von mysql_Float:
stock Float:mysql_Float(Table[], Field[], Where[], Is[])//Zeile 89
{
new query[128], Float:sqlfloat;
mysql_real_escape_string(Table, Table);
mysql_real_escape_string(Field, Field);
mysql_real_escape_string(Where, Where);
mysql_real_escape_string(Is, Is);
format(query, 128, "SELECT %s FROM %s WHERE %s = '%s'", Field, Table, Where, Is);
mysql_query(query);
mysql_store_result();
mysql_fetch_float(sqlfloat);
mysql_free_result();
return sqlfloat;
}
Ich hoffe mir kann einer von euch helfen!
MfG