Hi,
also Ich wollte die Duty-Punkte per MySQL Laden lassen, allerdings klappt das nicht.
Weder die Punkte werden erstellt noch kann Ich den /duty Befehl benutzen.
Hier meine Codes:
//unter OngameModeInit:
LoadFraktionDutyPoints();
//Dutypoints laden
for(new i=0; i<sizeof(DutyInfo); i++)
{
CreatePickup(1247, 1, DutyInfo[i+1][Duty_X], DutyInfo[i+1][Duty_Y], DutyInfo[i+1][Duty_Z], 0);
/*if(i < 4)
{
//Cop-Duty-Points
CreatePickup(1247, 1, DutyInfo[i][Duty_X], DutyInfo[i][Duty_Y], DutyInfo[i][Duty_Z], 0);
Create3DTextLabel("/duty - In den Dienst gehen\n\
/equip - Ausrüstung entnehmen\n\
/clothes - Kleidung ändern", COLOR_RED, DutyInfo[i][Duty_X], DutyInfo[i][Duty_Y], DutyInfo[i][Duty_Z], 10, i, 1);
}
else
{
//Medic- & Ordnungsamt-Duty-Points
CreatePickup(1239, 1, DutyInfo[i][Duty_X], DutyInfo[i][Duty_Y], DutyInfo[i][Duty_Z], 0);
Create3DTextLabel("/duty - In den Dienst gehen\n\
/clothes - Kleidung ändern", COLOR_RED, DutyInfo[i][Duty_X], DutyInfo[i][Duty_Y], DutyInfo[i][Duty_Z], 10, i, 1);
}*/
}
public LoadFraktionDutyPoints()
{
new query[256];
for(new idx=1; idx<sizeof(DutyInfo); idx++)
{
format(query, sizeof(query), "SELECT * FROM dutypoints WHERE id='%i'", idx);
mysql_function_query(dbhandle, query, true, "OnFraktionDutyPointsLoad", "i", idx);
}
return 1;
}
public OnFraktionDutyPointsLoad(idx)
{
new num_rows, num_fields;
cache_get_data(num_rows, num_fields, dbhandle);
if(num_rows)
{
DutyInfo[idx][Duty_X] = cache_get_field_content_float(0, "DutyX", dbhandle);
DutyInfo[idx][Duty_Y] = cache_get_field_content_float(0, "DutyY", dbhandle);
DutyInfo[idx][Duty_Z] = cache_get_field_content_float(0, "DutyZ", dbhandle);
}
return 1;
}
ocmd:duty(playerid, params[])
{
#pragma unused params
if(!IsPlayerInAnyDepartment(playerid))return SendClientMessage(playerid, COLOR_RED2, "Du gehörst keiner Behörde an.");
new fID = pInfo[playerid][pFraktion];
if(!IsPlayerInRangeOfPoint(playerid, 2.0, DutyInfo[fID][Duty_X], DutyInfo[fID][Duty_Y], DutyInfo[fID][Duty_Z]))return SendClientMessage(playerid, COLOR_RED2, "Du befindest dich nicht an dem Ausrüstungspunkt deiner Fraktion.");
if(!IsPlayerDuty(playerid) && !IsPlayerCop(playerid))
{
//Spieler ist kein Cop
pInfo[playerid][pDuty] = true;
new string[128];
switch(fID)
{
case 4:{format(string, sizeof(string), "[Meldung] Notarzt %s befindet sich nun im Dienst. Tippe /call 112, um einen Sanitäter zu rufen.", GetSpielerName(playerid));}
case 5:{format(string, sizeof(string), "[Meldung] Ordnungsamt %s befindet sich nun im Dienst. Tippe /call 555, um einen Falschparker zu melden.", GetSpielerName(playerid));}
}
SetPlayerColor(playerid, fInfo[fID][Fraktion_Color]);
SendMessageToAll(COLOR_WHITE, string);
}
else if(IsPlayerDuty(playerid) && !IsPlayerCop(playerid))
{
//Spieler ist kein Cop
pInfo[playerid][pDuty] = false;
SetPlayerColor(playerid, COLOR_WHITE);
}
else if(!IsPlayerCopDuty(playerid) && IsPlayerCop(playerid))
{
//Spieler ist Cop
pInfo[playerid][pCopDuty] = true;
SetPlayerColor(playerid, fInfo[fID][Fraktion_Color]);
SendClientMessage(playerid, COLOR_WHITE, "* Du beginnst deine Arbeit als Beamter.");
}
else if(IsPlayerCopDuty(playerid) && IsPlayerCop(playerid))
{
//Spieler ist Cop
pInfo[playerid][pCopDuty] = false;
SetPlayerColor(playerid, COLOR_WHITE);
SendClientMessage(playerid, COLOR_WHITE, "* Du befindest dich nun nicht mehr im Dienst.");
}
return 1;
}
Info: Wenn Ich /duty an dem Punkt eingebe, an dem der Pickup sein sollte, bekomme Ich die Fehlermeldung: "Du befindest dich nicht am Ausrüstungspunkt deiner Fraktion."