Kommt davon wenn man nur Copy & Paste macht, anstatt zu lesen. Mein Fehler.
dini_IntSet(Data, "FightingStyle", GetPlayerFightingStyle(playerid));
So dürfte es passen.
EDIT:
@Aviero: Alles klar, super!
Kommt davon wenn man nur Copy & Paste macht, anstatt zu lesen. Mein Fehler.
dini_IntSet(Data, "FightingStyle", GetPlayerFightingStyle(playerid));
So dürfte es passen.
EDIT:
@Aviero: Alles klar, super!
Nein, einfach so die Schleife hier, unter die andere:
for(new i=0; i<2778; i++) Streamer_SetFloatData(STREAMER_TYPE_OBJECT, i,E_STREAMER_STREAM_DISTANCE, 2500.0);
Und das bei OnGameModeInit falls es nichts bringt:
Streamer_SetCellDistance(2500.0);
Wobei die von dir angesetzten 2500 sehr viel sind, das wird nichts bringen. Ob 500 oder 1000 oder 2500 macht keinen Unterschied, da GTA dort Limits hat.
Und besser wie bei CreateObject geht es sowieso nicht, da der Streamer das nutzt.
gSupport[i][ticketAdmin]
ist 65535, sprich dem Ticket wurde noch kein Admin zugewiesen, da du es als Admin erstellt hast klappt es nicht.
Wenn du als Admin auch Tickets aufmachen können sollst, dann schreibe es so:
Jumpin: Bei OnGameModeInit. Das mit dem E_STREAMER_STREAM_DISTANCE dort wo du die Objekte erstellst (direkt unter der anderen Schleife).
Saphire: Sag das doch gleich.
dini_IntSet(Data, "FightingStyle", GetPlayerFightingStyle(playerid)); //EDIT <-
dini_FloatSet(Data, "pSHealth", PlayerInfo[playerid][pSHealth]);
dini_FloatSet(Data, "pHealth", PlayerInfo[playerid][pHealth]);
dini_FloatSet(Data, "Pos_x", PlayerInfo[playerid][pPos_x]);
dini_FloatSet(Data, "Pos_y", PlayerInfo[playerid][pPos_y]);
dini_FloatSet(Data, "Pos_z", PlayerInfo[playerid][pPos_z]);
dini_IntSet(Data, "SpawnChange", SpawnChange[playerid]);
dini_IntSet(Data, "WantedLevel", WantedLevel[playerid]);
dini_IntSet(Data, "WantedPoints", WantedPoints[playerid]);
dini_IntSet(Data, "Offflucht", OfflineFlucht[playerid]);
dini_IntSet(Data, "Knast", Knast[playerid]);
dini_IntSet(Data, "KnastTime", KnastTime[playerid]);
dini_FloatSet(Data, "GWD", PlayerInfo[playerid][pGWD]);
Schreibs mal so (sind einige kleine Dinge geändert):
Gegenfrage: Wie willst du es denn überhaupt machen (unabhängig vom Code)? Was soll möglich sein?
@Aviero: Poste mal dein SpielerLaden, oder LoginPlayer, oder wie auch immer es heißt. Den Teil, der die Statistiken lädt. Müsste nach der Eingabe des Passworts beim Login kommen. Wie genau das bei dir heißt weiß ich nicht.
Saphire:
dini_IntSet(Data, "FightingStyle", PlayerInfo[playerid][SetPlayerFightingStyle(playerid,strval(val))]);
dini_IntSet(Data, "pSHealth", PlayerInfo[playerid][pSHealth]);
dini_IntSet(Data, "pHealth", PlayerInfo[playerid][pHealth]);
dini_IntSet(Data, "Pos_x", PlayerInfo[playerid][pPos_x]);
dini_IntSet(Data, "Pos_y", PlayerInfo[playerid][pPos_y]);
dini_IntSet(Data, "Pos_z", PlayerInfo[playerid][pPos_z]);
dini_IntSet(Data, "SpawnChange", SpawnChange[playerid]);
dini_IntSet(Data, "WantedLevel", WantedLevel[playerid]);
dini_IntSet(Data, "WantedPoints", WantedPoints[playerid]);
dini_IntSet(Data, "Offflucht", OfflineFlucht[playerid]);
dini_IntSet(Data, "Knast", Knast[playerid]);
dini_IntSet(Data, "KnastTime", KnastTime[playerid]);
dini_IntSet(Data, "GWD", PlayerInfo[playerid][pGWD]);
Die Zeilen mit den Warnungen fehlen allerdings.
Dome_: Schau mal hier rein: [ TOOL ] [INC] JunkBuster Anti-Cheat - Update 8 >>Servers-side-Waffen, -Health, Anti-Godmode und mehr!!!<<
Jumpin:
Streamer_SetCellDistance(Float:distance);
Falls es immer noch nicht klappt, versuche es zudem mit der E_STREAMER_STREAM_DISTANCE (zweite Schleife).
Die Drehung, sprich die Rotation.
X Koordinate
Y Koordinate
Z Koordinate
A = Rotation (kommt von Angle = Winkel) / Blickrichtung (zwischen 0 und 360 Grad).
Solange es im selben Callback steht (bestenfalls OnGameModeInit), ja.
Ansonsten so:
new oID[4];
oID[0] = CreateDynamicObject(19377, 1579.54602, -1750.09839, 6.48330, 0.00000, 0.00000, 0.00000);
oID[1] = CreateDynamicObject(19377, 1579.54578, -1759.72888, 6.48330, 0.00000, 0.00000, 0.00000);
oID[2] = CreateDynamicObject(19313, 1410.28198, -1715.27917, 7.91662, 0.00000, 0.00000, 83.90988);
oID[3] = CreateDynamicObject(8661, 1515.13806, -1707.89490, 12.37220, 0.00000, 0.00000, 90.00000);
for(new i=0; i<4; i++) Streamer_SetFloatData(STREAMER_TYPE_OBJECT, oID[i],E_STREAMER_DRAW_DISTANCE, 500.0);
//Anderes Callback oder so...etwas was nicht zeitgleich mit dem oben aufgerufen wird.
//LVPD
new oID[4];
oID[0] = CreateDynamicObject(19377, 1579.54602, -1750.09839, 6.48330, 0.00000, 0.00000, 0.00000);
oID[1] = CreateDynamicObject(19377, 1579.54578, -1759.72888, 6.48330, 0.00000, 0.00000, 0.00000);
oID[2] = CreateDynamicObject(19313, 1410.28198, -1715.27917, 7.91662, 0.00000, 0.00000, 83.90988);
oID[3] = CreateDynamicObject(8661, 1515.13806, -1707.89490, 12.37220, 0.00000, 0.00000, 90.00000);
for(new i=0; i<4; i++) Streamer_SetFloatData(STREAMER_TYPE_OBJECT, oID[i],E_STREAMER_DRAW_DISTANCE, 500.0);
Probiere es aber erst mal mit ein paar Objekten, nicht dass du alle änderst und dann geht es nicht.
Jumpin: Variante 2, da du sonst zwei mal von 0-3 gehst.
@Aviero: Wie lädst du denn das Admin Level aus der Datei des Spielers, bzw. aus der Datenbank? So wie es aussieht ist in der Variable gar kein Wert (daher 0 = User).
@Aviero: Was wird ausgelesen und was sollte ausgelesen werden? Wird bei allen der gleiche Rang ausgelesen?
kleinkiko: Ich würde es mit dem Map Editor versuchen, von oben Screenshots machen und diese entsprechend verkleinern. Es gibt auch für GTA einen Weitsicht-Mod, mit entsprechendem Wetter könnte es damit auch klappen, in Verbindung mit cem CamHack oder einer sonstigen freien Kamera, damit du senkrecht nach unten schauen kannst. Was anderes fällt mir nicht ein.
Jumpin: Ja so. Du darfst nicht vergessen die streamdistance in der server.cfg anzupassen. Möglicherweise musst du auch die CellSize anpassen.
Jumpin:
Schau mal hier, da haben wir das mal ausführlich besprochen: Streamer Plugin Streamrate
Allerdings sei anzumerken: Mehr als 1000 Objekte können nicht gleichzeitig geladen sein, wenn du also ganz viele Objekte auf einem kleinen Platz hast kann es schon sein, dass sie sehr spät laden.
@Aviero:Such mal nach "[playerInfo]" (ohne die " ") und poste die Zeile. Hast es hinbekommen.
kleinkiko: Mir wäre keine SA-MP seitige Lösung bekannt. Meistens werden solche Karten aus vielen Einzelbildern mit Photoshop (o.ä.) zusammengesetzt. Vielleicht fragst du mal in der Mapping Base, vielleicht weiß da jemand mehr drüber.
@Aviero:
stock GetAdminRank(playerid){
new rankname[40];
switch(SpielerInfo[playerid][AdminLevel]){ //Hier die Variable an deine Admin Level Variable anpassen
case 0: format(rankname, sizeof(rankname), "User");
case 1: format(rankname, sizeof(rankname), "Supporter");
case 2: format(rankname, sizeof(rankname), "Trial Admin");
case 3: format(rankname, sizeof(rankname), "Admin");
case 4: format(rankname, sizeof(rankname), "Head Admin");
}
return rankname;
}
Rayan:
Nutze dazu: http://wiki.sa-mp.com/wiki/SetPlayerAttachedObject
Probiere es so:
public OnQueryFinish(index[],sqlresultid,extraid,SconnectionHandle)
{
new rows,fields;
switch(sqlresultid)
{
case MySQL_Check_Ban:
{
new zeit,query[256],Admin[24],Grund[126],result[25];
cache_get_data(rows,fields);
if(rows)
{
cache_get_field_content(0,"Grund",Grund);
cache_get_field_content(0,"Admin",Admin);
cache_get_field_content(0,"Zeit",result);
printf("Grund: %s", Grund);
printf("Admin: %s", Admin);
zeit = strval(result);
printf("Zeit: %s -> %d -> %d Minuten", result, strval(result), (zeit-gettime())/60);
if(zeit == -1)
{
format(query,sizeof(query),"%s, du wurdest vom Server Gesperrt.\nFalls du zu unrecht Gesperrt wurdest,\nmelde dich bei einem Teammitglied im Forum, oder schreibe uns im Teamspeak³ an!\n\nGrund:%s\nTeammitglied:%s",Spielername(extraid),Grund,Admin);
printf("1query: %s", query);
ShowPlayerDialog(extraid,Dialog_Gebannt,DIALOG_STYLE_MSGBOX,"{FFFFFF}SmR: {308EAD}Gesperrt",query,"Verlassen","");
TogglePlayerControllable(extraid,0);
KickUser(extraid,"System", "Spieler wurde Gebannt!");
return 1;
}
else
{
if(gettime() < zeit)
{
new timebanned = zeit-gettime();
SendClientMessage(extraid,0xEE8613FF,"Verbindung unterbrochen...");
if((timebanned/86400) > 0)//Tage
{
format(query,sizeof(query),"%s, du wurdest vom Server Gesperrt.\nFalls du zu unrecht Gesperrt wurdest,\nmelde dich bei einem Teammitglied im Forum, oder schreibe uns im Teamspeak³ an!\n\nDauer: %i Tage\nGrund:%s\nTeammitglied:%s",Spielername(extraid),timebanned/86400,Grund,Admin);
printf("2query: %s", query);
}
else if((timebanned/3600) > 0)//Stunden
{
format(query,sizeof(query),"%s, du wurdest vom Server Gesperrt.\nFalls du zu unrecht Gesperrt wurdest,\nmelde dich bei einem Teammitglied im Forum, oder schreibe uns im Teamspeak³ an!\n\nDauer: %i Stunden\nGrund:%s\nTeammitglied:%s",Spielername(extraid),timebanned/3600,Grund,Admin);
printf("3query: %s", query);
}
else if((timebanned/60) > 0 || (timebanned%60) > 0)//Minuten,Sekunden
{
format(query,sizeof(query),"%s, du wurdest vom Server Gesperrt.\nFalls du zu unrecht Gesperrt wurdest,\nmelde dich bei einem Teammitglied im Forum, oder schreibe uns im Teamspeak³ an!\n\nDauer: %i Minuten %i Sekunden\nGrund:%s\nTeammitglied:%s",Spielername(extraid),timebanned/60,timebanned%60,Grund,Admin);
printf("4query: %s", query);
}
ShowPlayerDialog(extraid,Dialog_Gebannt,DIALOG_STYLE_MSGBOX,"{FFFFFF}SmR: {308EAD}Gesperrt",query,"Verlassen","");
TogglePlayerControllable(extraid,0);
KickUser(extraid,"System", "Spieler wurde Gebannt!");
}
else
{
GetPlayerName(extraid,Spieler[extraid][pName],MAX_PLAYER_NAME);
format(query,sizeof(query),"DELETE FROM `Banned` WHERE IP ='%s' OR Name = '%s'",SpielerIP(extraid),Spielername(extraid));
mysql_function_query(DBHandle,query,false,"","");
mysql_format(DBHandle, query, sizeof(query),"SELECT COUNT(*) AS `count` FROM `Accounts` WHERE `pName` = '%e'",Spieler[extraid][pName]);
mysql_function_query(DBHandle, query, true, "LoadPlayerDataSequence","dd",extraid,1);
ShowPlayerDialog(extraid,Dialog_Login,DIALOG_STYLE_INPUT,"{FFFFFF}SmR: {308EAD}Einloggen","{FFFFFF}Sie müssen von unserem System Identifiziert werden.\nGeben Sie dafür Ihr Passwort unten in das Feld ein.\n\nKlicken Sie anschließend auf Einloggen, damit Ihre Daten kontrolliert werden können.","Einloggen","Abbrechen");
}
return 1;
}
}
else
{
GetPlayerName(extraid,Spieler[extraid][pName],MAX_PLAYER_NAME);
mysql_format(DBHandle, query, sizeof(query),"SELECT COUNT(*) AS `count` FROM `Accounts` WHERE `pName` = '%e'",Spieler[extraid][pName]);
mysql_function_query(DBHandle, query, true, "LoadPlayerDataSequence","dd",extraid,1);
return 1;
}
}
}
return 1;
}
Wenn es nicht klappt, poste was im Log steht.
Ich habe auch /creport eingegeben und dann kommt im Chat:
"Irgendetwas ging schief"
Schreibe es so:
Was steht im Log, wenn du den Befehl eingibst, nachdem du ein Ticket erstellt hast?
Eddy:
Schreibe den Teil mal so:
cache_get_field_content(0,"Grund",Grund);
cache_get_field_content(0,"Admin",Admin);
cache_get_field_content(0,"Zeit",result);
printf("Grund: %s", Grund);
printf("Admin: %s", Admin);
printf("Zeit: %s -> %d", result, strval(result));
Was steht im Log, wenn der Dialog angezeigt wird?
Was sagt der MySQL Log?
James.Spader:
Ist dann das Passwort in der Datei wieder weg, wenn du das Admin Level setzt?
Sprich so?
Register => Passwort da
Log off => Passwort da
Log in => Passwort da, login geht
Set Admin => Passwort weg, Level gesetzt
Ja? Oder Nein? Wenn nein, wie ist es dann?
EDIT:
James.Spader:
Hilft dir das hier vielleicht? Das sieht mir nach dem gleichen Code aus:
Timeban System failt.
Du arbeitest mit zwei verschiedenen Systemen.
new bisgebannt = dini_Int(file,"TBan");
keytmp = ini_GetKey( PassData );
Deshalb klappt das nicht.
Ändere
keytmp = ini_GetKey( PassData );
mal zu:
keytmp = dini_Get(string2, "Key"); //Oder "Key" eben wie dein Passwort gespeichert ist ("DASHIER=passwort")
Nicht ganz richtig.
Der Teil von OnDialogResponse bei DIALOG_LOGIN.
Poste bitte mal deinen Login Teil, wo du das Passwort eingibst.